summaryrefslogtreecommitdiff
path: root/lib/libutil/setproctitle.c
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>1996-02-24 14:37:30 +0000
committerPeter Wemm <peter@FreeBSD.org>1996-02-24 14:37:30 +0000
commit7350dd84a0c2e03ec519968b219eb4f4e5f81536 (patch)
tree00f5472548be9f315edc7d3c99327c3e16f41c16 /lib/libutil/setproctitle.c
parent99ac3bc8daec20f7a937487362d15fdf922d8008 (diff)
Notes
Diffstat (limited to 'lib/libutil/setproctitle.c')
-rw-r--r--lib/libutil/setproctitle.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/lib/libutil/setproctitle.c b/lib/libutil/setproctitle.c
index 2faf976b3c34..08efa993a68b 100644
--- a/lib/libutil/setproctitle.c
+++ b/lib/libutil/setproctitle.c
@@ -11,19 +11,16 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. This work was done expressly for inclusion into FreeBSD. Other use
- * is permitted provided this notation is included.
- * 4. Absolutely no warranty of function or purpose is made by the author
+ * 3. Absolutely no warranty of function or purpose is made by the author
* Peter Wemm.
- * 5. Modifications may be freely made to this file providing the above
- * conditions are met.
*
- * $Id$
+ * $Id: setproctitle.c,v 1.1 1995/12/26 22:50:08 peter Exp $
*/
#include <sys/types.h>
#include <sys/param.h>
#include <sys/exec.h>
+#include <sys/sysctl.h>
#include <vm/vm.h>
#include <vm/vm_param.h>
@@ -71,10 +68,12 @@ setproctitle(fmt, va_alist)
#endif
{
char *p;
- int len;
static char buf[SPT_BUFSIZE];
static char *ps_argv[2];
va_list ap;
+ int mib[2];
+ struct ps_strings *ps_strings;
+ size_t len;
#if defined(__STDC__)
va_start(ap, fmt);
@@ -104,13 +103,21 @@ 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;
+
/* PS_STRINGS points to zeroed memory on a style #2 kernel */
- if (PS_STRINGS->ps_argvstr) {
+ if (ps_strings->ps_argvstr) {
/* style #3 */
ps_argv[0] = buf;
ps_argv[1] = NULL;
- PS_STRINGS->ps_nargvstr = 1;
- PS_STRINGS->ps_argvstr = ps_argv;
+ ps_strings->ps_nargvstr = 1;
+ ps_strings->ps_argvstr = ps_argv;
} else {
/* style #2 */
OLD_PS_STRINGS->old_ps_nargvstr = 1;