crossroads

Git mirror of https://crossroads.e-tunity.com/
git clone git://git.finwo.net/app/crossroads
Log | Files | Refs

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 }