setprogramtitle.c (1235B)
1 /************************************************************************* 2 * This file is part of Crosroads 1.23, a load balancer and fail over 3 * utility for TCP. Copyright (c) Karel Kubat, distributed under GPL. 4 * Visit http://crossroads.e-tunity.com for information. 5 *************************************************************************/ 6 #include "crossroads.h" 7 8 void set_program_title (char const *fmt, ...) { 9 # if SET_PROC_TITLE_BY_ARGV == 1 10 11 static int orglen; 12 char *title, *name = "crossroads"; 13 int i, j, k; 14 va_list args; 15 16 /* Make the title */ 17 va_start (args, fmt); 18 title = str_vprintf (fmt, args); 19 va_end (args); 20 21 /* Reset old argv, count max length */ 22 if (! orglen) 23 for (i = 0; i < org_argc; i++) 24 orglen += (strlen(org_argv[i]) + 1); 25 26 /* Paste in our program name first */ 27 for (i = 0; i <= strlen(name) && i < orglen; i++) 28 org_argv[0][i] = name[i]; 29 30 /* Paste in the new title */ 31 for (j = 0; j < strlen(title) && i + j < orglen; j++) 32 org_argv[0][i + j] = title[j]; 33 34 /* Reset remainder of old cmd line */ 35 for (k = i + j; k < orglen; k++) 36 org_argv[0][k] = 0; 37 38 /* Free up */ 39 free (title); 40 41 # endif /* SET_PROC_TITLE_BY_ARGV */ 42 }