diff options
author | dg <dg@FreeBSD.org> | 1998-04-28 06:59:14 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1998-04-28 06:59:14 +0000 |
commit | 32d2657828a12add47b942e41389eefaf8aab48d (patch) | |
tree | 3cd81c06567beb55f89ec029a30968eabde951db /lib/libc/gen/setproctitle.c | |
parent | f66beda6a7ff067d589b7c68e3fc91a6b88d1e1a (diff) | |
download | FreeBSD-src-32d2657828a12add47b942e41389eefaf8aab48d.zip FreeBSD-src-32d2657828a12add47b942e41389eefaf8aab48d.tar.gz |
Cache the results of the ps_strings sysctl so that it doesn't have to be
redone for every call of setproctitle().
Diffstat (limited to 'lib/libc/gen/setproctitle.c')
-rw-r--r-- | lib/libc/gen/setproctitle.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/libc/gen/setproctitle.c b/lib/libc/gen/setproctitle.c index ba21d1c..e2ab614 100644 --- a/lib/libc/gen/setproctitle.c +++ b/lib/libc/gen/setproctitle.c @@ -14,7 +14,7 @@ * 3. Absolutely no warranty of function or purpose is made by the author * Peter Wemm. * - * $Id$ + * $Id: setproctitle.c,v 1.5 1997/02/22 15:08:33 peter Exp $ */ #include <sys/types.h> @@ -55,9 +55,11 @@ struct old_ps_strings { #endif -#define SPT_BUFSIZE 2048 /* from other parts of sendmail */ +#define SPT_BUFSIZE 128 /* from other parts of sendmail */ extern char * __progname; /* is this defined in a .h anywhere? */ +static struct ps_strings *ps_strings; + void #if defined(__STDC__) setproctitle(const char *fmt, ...) @@ -71,7 +73,6 @@ setproctitle(fmt, va_alist) static char *ps_argv[2]; va_list ap; int mib[2]; - struct ps_strings *ps_strings; size_t len; #if defined(__STDC__) @@ -102,13 +103,14 @@ setproctitle(fmt, va_alist) va_end(ap); - ps_strings = NULL; - mib[0] = CTL_KERN; - mib[1] = KERN_PS_STRINGS; - len = sizeof(ps_strings); - if (sysctl(mib, 2, &ps_strings, &len, NULL, 0) < 0 || - ps_strings == NULL) - ps_strings = PS_STRINGS; + if (ps_strings == NULL) { + mib[0] = CTL_KERN; + mib[1] = KERN_PS_STRINGS; + len = sizeof(ps_strings); + if (sysctl(mib, 2, &ps_strings, &len, NULL, 0) < 0 || + ps_strings == NULL) + ps_strings = PS_STRINGS; + } /* PS_STRINGS points to zeroed memory on a style #2 kernel */ if (ps_strings->ps_argvstr) { |