From 9a0e68963464b6bc159cad53fd745491cd0b90f7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 30 Jun 2011 04:16:10 +0200 Subject: [PATCH] util: try harder to rename the process --- src/main.c | 2 ++ src/util.c | 17 +++++++++++++++++ src/util.h | 3 +++ 3 files changed, 22 insertions(+) diff --git a/src/main.c b/src/main.c index 045203383..e10441c86 100644 --- a/src/main.c +++ b/src/main.c @@ -1033,6 +1033,8 @@ int main(int argc, char *argv[]) { program_invocation_short_name = systemd; prctl(PR_SET_NAME, systemd); + saved_argv = argv; + saved_argc = argc; log_show_color(isatty(STDERR_FILENO) > 0); log_show_location(false); diff --git a/src/util.c b/src/util.c index a0c04e320..270c7dac7 100644 --- a/src/util.c +++ b/src/util.c @@ -64,6 +64,9 @@ #include "exit-status.h" #include "hashmap.h" +int saved_argc = 0; +char **saved_argv = NULL; + size_t page_size(void) { static __thread size_t pgsz = 0; long r; @@ -3026,6 +3029,20 @@ void rename_process(const char name[8]) { if (program_invocation_name) strncpy(program_invocation_name, name, strlen(program_invocation_name)); + + if (saved_argc > 0) { + int i; + + if (saved_argv[0]) + strncpy(saved_argv[0], name, strlen(saved_argv[0])); + + for (i = 1; i < saved_argc; i++) { + if (!saved_argv[i]) + break; + + memset(saved_argv[i], 0, strlen(saved_argv[i])); + } + } } void sigset_add_many(sigset_t *ss, ...) { diff --git a/src/util.h b/src/util.h index a26fb6f17..083da2a54 100644 --- a/src/util.h +++ b/src/util.h @@ -477,4 +477,7 @@ int signal_from_string(const char *s); int signal_from_string_try_harder(const char *s); +extern int saved_argc; +extern char **saved_argv; + #endif