1/* 2 * inststr.c 3 * 4 * Little function to change the name of a process 5 * 6 * Originally from C. S. Ananian's pptpclient 7 * 8 * $Id: inststr.c,v 1.2 2004/04/22 10:48:16 quozl Exp $ 9 */ 10 11#ifdef HAVE_CONFIG_H 12#include "config.h" 13#endif 14 15#ifndef HAVE_SETPROCTITLE 16#include "inststr.h" 17#include "compat.h" 18#include <string.h> 19 20void inststr(int argc, char **argv, char *src) 21{ 22 if (strlen(src) <= strlen(argv[0])) { 23 char *ptr, **pptr; 24 25 for (ptr = argv[0]; *ptr; *(ptr++) = '\0') 26 ; 27 strcpy(argv[0], src); 28 for (pptr = argv + 1; *pptr; pptr++) 29 for (ptr = *pptr; *ptr; *(ptr++) = '\0') 30 ; 31 } else { 32 /* Originally from the source to perl 4.036 (assigning to $0) */ 33 char *ptr, *ptr2; 34 int count; 35 36 ptr = argv[0] + strlen(argv[0]); 37 for (count = 1; count < argc; count++) { 38 if (argv[count] == ptr + 1) { 39 ptr++; 40 ptr += strlen(ptr); 41 } 42 } 43 count = 0; 44 for (ptr2 = argv[0]; ptr2 <= ptr; ptr2++) { 45 *ptr2 = '\0'; 46 count++; 47 } 48 strlcpy(argv[0], src, count); 49 } 50} 51#endif /* !HAVE_SETPROCTITLE */ 52