From ee6d233d247808b254649478a975c92a4b29b9ab Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Sun, 12 Jul 2015 14:46:50 +0200 Subject: [PATCH hurd] fix set name --- exec/exec.c | 47 ++++++++++++++++++++++++++++++----------------- startup/startup.c | 1 - 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/exec/exec.c b/exec/exec.c index ee500d7..59270dd 100644 --- a/exec/exec.c +++ b/exec/exec.c @@ -686,6 +686,33 @@ finish (struct execdata *e, int dealloc_file) } } +static void +set_name (task_t task, const char *exec_name, pid_t pid) +{ + char *name; + int size; + + if (pid) + size = asprintf (&name, "%s(%d)", exec_name, pid); + else + size = asprintf (&name, "%s", exec_name); + + if (size > 0) + { + /* This is an internal implementational detail of the gnumach kernel. */ +#define TASK_NAME_SIZE 32 + if (size < TASK_NAME_SIZE) + task_set_name (task, name); + else + { + char *abbr = name + size - TASK_NAME_SIZE + 1; + abbr[0] = abbr[1] = abbr[2] = '.'; + task_set_name (task, abbr); + } +#undef TASK_NAME_SIZE + free (name); + } +} /* Load the file. */ static void @@ -1173,24 +1200,10 @@ do_exec (file_t file, if (e.error) goto out; - char *name; - int size = asprintf (&name, "%s(%d)", argv, pid); - if (size > 0) - { -/* This is an internal implementational detail of the gnumach kernel. */ -#define TASK_NAME_SIZE 32 - if (size < TASK_NAME_SIZE) - task_set_name (newtask, name); - else - { - char *abbr = name + size - TASK_NAME_SIZE + 1; - abbr[0] = abbr[1] = abbr[2] = '.'; - task_set_name (newtask, abbr); - } -#undef TASK_NAME_SIZE - free (name); - } + set_name (newtask, argv, pid); } + else + set_name (newtask, argv, 0); /* Create the initial thread. */ e.error = thread_create (newtask, &thread);