Loading...
--- setprogname.c.orig 2005-10-19 15:16:49.000000000 -0700 +++ setprogname.c 2005-10-19 15:17:10.000000000 -0700 @@ -3,6 +3,10 @@ #include <stdlib.h> #include <string.h> +#include <sys/param.h> +#include <sys/sysctl.h> +#include <crt_externs.h> +#define __progname (*_NSGetProgname()) #include "libc_private.h" @@ -10,10 +14,20 @@ setprogname(const char *progname) { const char *p; - + char buf[2*MAXCOMLEN+1]; + int mib[2]; + p = strrchr(progname, '/'); if (p != NULL) - __progname = p + 1; + __progname = (char *)(p + 1); else - __progname = progname; + __progname = (char *)(p = progname); + + strlcpy(&buf[0], (char *)(p), sizeof(buf)); + + mib[0] = CTL_KERN; + mib[1] = KERN_PROCNAME; + + /* ignore errors as this is not a hard error */ + sysctl(mib, 2, NULL, NULL, &buf[0], 2*MAXCOMLEN); } |