diff options
-rw-r--r-- | pies/pies.c | 2 | ||||
-rw-r--r-- | pies/progman.c | 20 |
2 files changed, 15 insertions, 7 deletions
diff --git a/pies/pies.c b/pies/pies.c index 52035e0..46df904 100644 --- a/pies/pies.c +++ b/pies/pies.c @@ -1252,8 +1252,10 @@ main (int argc, char **argv) { int rc; int index; + extern char **environ; mf_init_nls (); + mf_proctitle_init (argc, argv, environ); if (!program_invocation_short_name) program_invocation_short_name = argv[0]; argp_program_version_hook = version; diff --git a/pies/progman.c b/pies/progman.c index 213b06a..4fa6c81 100644 --- a/pies/progman.c +++ b/pies/progman.c @@ -162,13 +162,14 @@ static char * retr_tag (const char *tag, int type) { static char *retrstr[2] = { "stdout", "stderr" }; - size_t taglen = strlen (tag) + 1 + strlen (retrstr[type]); - char *retr_tag = xmalloc (taglen + 1); - - strcpy (retr_tag, tag); - strcat (retr_tag, "/"); - strcat (retr_tag, retrstr[type]); - return retr_tag; + char *str = NULL; + if (type < MU_ARRAY_SIZE(retrstr)) + asprintf (&str, "%s/%s", tag, retrstr[type]); + else + asprintf (&str, "%s/%d", tag, type); + if (!tag) + xalloc_die (); + return str; } void @@ -355,6 +356,7 @@ open_retranslator (struct prog *master, int type) size_t size = 0; pid_t pid; int i; + char *tag; if (master->v.p.comp->retr[type] == -1) return -1; @@ -363,6 +365,10 @@ open_retranslator (struct prog *master, int type) { case 0: /* Retranslator process */ + tag = retr_tag (master->tag, type); + mf_proctitle_format ("pies: %s retranslator", tag); + free (tag); + for (i = getmaxfd (); i >= 0; i--) { if (i != p[0]) |