]> git.sur5r.net Git - openldap/commitdiff
Add setproctile to liblutil
authorKurt Zeilenga <kurt@openldap.org>
Wed, 4 Nov 1998 01:36:44 +0000 (01:36 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 4 Nov 1998 01:36:44 +0000 (01:36 +0000)
include/ac/setproctitle.h [new file with mode: 0644]
libraries/liblutil/setproctitle.c [new file with mode: 0644]

diff --git a/include/ac/setproctitle.h b/include/ac/setproctitle.h
new file mode 100644 (file)
index 0000000..ac1c6a2
--- /dev/null
@@ -0,0 +1,18 @@
+/* Generic setproctitle.h */
+
+#ifndef _AC_SETPROCTITLE_H
+#define _AC_SETPROCTITLE_H
+
+#ifdef LDAP_PROCTITLE
+
+#if defined( HAVE_LIBUTIL_H )
+#      include <libutil.h>
+#else
+       /* use lutil version */
+       void setproctitle LDAP_P((const char *fmt, ...));
+       extern int Argc;
+       extern char **Argv;
+#endif
+
+#endif /* LDAP_PROCTITLE */
+#endif /* _AC_SETPROCTITLE_H */
diff --git a/libraries/liblutil/setproctitle.c b/libraries/liblutil/setproctitle.c
new file mode 100644 (file)
index 0000000..8c5ed07
--- /dev/null
@@ -0,0 +1,78 @@
+#include "portable.h"
+
+#ifndef HAVE_SETPROCTITLE
+
+#include <stdlib.h>
+
+#if defined( HAVE_STDARG_H ) && __STDC__
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+#include <ac/setproctitle.h>
+
+/*
+ * Copyright (c) 1990,1991 Regents of the University of Michigan.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that this notice is preserved and that due credit is given
+ * to the University of Michigan at Ann Arbor. The name of the University
+ * may not be used to endorse or promote products derived from this
+ * software without specific prior written permission. This software
+ * is provided ``as is'' without express or implied warranty.
+ */
+
+char   **Argv;         /* pointer to original (main's) argv */
+int    Argc;           /* original argc */
+
+/*
+ * takes a printf-style format string (fmt) and up to three parameters (a,b,c)
+ * this clobbers the original argv...
+ */
+
+/* VARARGS */
+void setproctitle
+#if defined( HAVE_STDARG_H ) && __STDC__
+       ( const char *fmt, ... )
+#else
+       ( fmt, va_alist )
+const char *fmt;
+va_dcl
+#endif
+{
+       static char *endargv = (char *)0;
+       char    *s;
+       int             i;
+       char    buf[ 1024 ];
+       va_list ap;
+
+#if defined( HAVE_STDARG_H ) && __STDC__
+       va_start(ap, fmt);
+#else
+       va_start(ap);
+#endif
+
+       buf[sizeof(buf) - 1] = '\0';
+       vsnprintf( buf, sizeof(buf)-1, fmt, ap );
+
+       va_end(ap);
+
+       if ( endargv == (char *)0 ) {
+               /* set pointer to end of original argv */
+               endargv = Argv[ Argc-1 ] + strlen( Argv[ Argc-1 ] );
+       }
+       /* make ps print "([prog name])" */
+       s = Argv[0];
+       *s++ = '-';
+       i = strlen( buf );
+       if ( i > endargv - s - 2 ) {
+               i = endargv - s - 2;
+               buf[ i ] = '\0';
+       }
+       strcpy( s, buf );
+       s += i;
+       while ( s < endargv ) *s++ = ' ';
+}
+#endif /* NOSETPROCTITLE */