]> andersk Git - openssh.git/blobdiff - openbsd-compat/setproctitle.c
- jmc@cvs.openbsd.org 2010/01/09 03:36:00
[openssh.git] / openbsd-compat / setproctitle.c
index 32e987deb213dcf2c5e422be1efc6e77c51d0261..2965f689e702f9545bc2401fe5add5f2bbd43405 100644 (file)
 #ifndef HAVE_SETPROCTITLE
 
 #include <stdarg.h>
+#include <stdlib.h>
 #include <unistd.h>
 #ifdef HAVE_SYS_PSTAT_H
 #include <sys/pstat.h>
 #endif
+#include <string.h>
+
+#include <vis.h>
 
 #define SPT_NONE       0       /* don't use it at all */
 #define SPT_PSTAT      1       /* use pstat(PSTAT_SETCMD, ...) */
@@ -119,7 +123,7 @@ setproctitle(const char *fmt, ...)
 {
 #if SPT_TYPE != SPT_NONE
        va_list ap;
-       char buf[1024];
+       char buf[1024], ptitle[1024];
        size_t len;
        extern char *__progname;
 #if SPT_TYPE == SPT_PSTAT
@@ -140,14 +144,16 @@ setproctitle(const char *fmt, ...)
                        vsnprintf(buf + len, sizeof(buf) - len , fmt, ap);
        }
        va_end(ap);
+       strnvis(ptitle, buf, sizeof(ptitle),
+           VIS_CSTYLE|VIS_NL|VIS_TAB|VIS_OCTAL);
 
 #if SPT_TYPE == SPT_PSTAT
-       pst.pst_command = buf;
-       pstat(PSTAT_SETCMD, pst, strlen(buf), 0, 0);
+       pst.pst_command = ptitle;
+       pstat(PSTAT_SETCMD, pst, strlen(ptitle), 0, 0);
 #elif SPT_TYPE == SPT_REUSEARGV
 /*     debug("setproctitle: copy \"%s\" into len %d", 
            buf, argv_env_len); */
-       len = strlcpy(argv_start, buf, argv_env_len);
+       len = strlcpy(argv_start, ptitle, argv_env_len);
        for(; len < argv_env_len; len++)
                argv_start[len] = SPT_PADCHAR;
 #endif
This page took 0.035906 seconds and 4 git commands to generate.