summaryrefslogtreecommitdiffstats
path: root/lib/libutil
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1998-04-28 06:59:14 +0000
committerdg <dg@FreeBSD.org>1998-04-28 06:59:14 +0000
commit32d2657828a12add47b942e41389eefaf8aab48d (patch)
tree3cd81c06567beb55f89ec029a30968eabde951db /lib/libutil
parentf66beda6a7ff067d589b7c68e3fc91a6b88d1e1a (diff)
downloadFreeBSD-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/libutil')
-rw-r--r--lib/libutil/setproctitle.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/libutil/setproctitle.c b/lib/libutil/setproctitle.c
index ba21d1c..e2ab614 100644
--- a/lib/libutil/setproctitle.c
+++ b/lib/libutil/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) {
OpenPOWER on IntegriCloud