X-Git-Url: http://git.tuebingen.mpg.de/dss.git/log?a=blobdiff_plain;f=dss.c;h=a65967c07e41785c165deffefc69bc02fe80bef3;hb=7277dbda6f036a3953d794305cad6a3bc51c67b4;hp=3e626ab0113b1890277da115ea6c735dbdb690d7;hpb=dead9f9151ae2cf14c45e87742284e165976e8c0;p=dss.git diff --git a/dss.c b/dss.c index 3e626ab..a65967c 100644 --- a/dss.c +++ b/dss.c @@ -1500,15 +1500,18 @@ out: static void exit_hook(int exit_code) { - const char *argv[3]; pid_t pid; - - argv[0] = OPT_STRING_VAL(DSS, EXIT_HOOK); - argv[1] = dss_strerror(-exit_code); - argv[2] = NULL; - - DSS_NOTICE_LOG(("executing %s %s\n", argv[0], argv[1])); - dss_exec(&pid, argv[0], (char **)argv); + char **argv, *tmp = dss_strdup(OPT_STRING_VAL(DSS, EXIT_HOOK)); + unsigned n = split_args(tmp, &argv, " \t"); + + n++; + argv = dss_realloc(argv, (n + 1) * sizeof(char *)); + argv[n - 1] = dss_strdup(dss_strerror(-exit_code)); + argv[n] = NULL; + dss_exec(&pid, argv[0], argv); + free(argv[n - 1]); + free(argv); + free(tmp); } static void lock_dss_or_die(void)