diff options
author | Lennart Poettering <lennart@poettering.net> | 2007-06-11 15:16:09 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2007-06-11 15:16:09 +0000 |
commit | b45cd330549c234d0c061602d6239b083ddb9978 (patch) | |
tree | 019ed7655be9ce4a62f718f1d55490e00277b569 /libdaemon/dexec.c | |
parent | e64d682f16b36ca16c6e8b2dada36520243a3d1c (diff) |
add daemon_logv()
git-svn-id: file:///home/lennart/svn/public/libdaemon/trunk@116 153bfa13-eec0-0310-be40-b0cb6a0e1b4b
Diffstat (limited to 'libdaemon/dexec.c')
-rw-r--r-- | libdaemon/dexec.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/libdaemon/dexec.c b/libdaemon/dexec.c index 3726565..10c757c 100644 --- a/libdaemon/dexec.c +++ b/libdaemon/dexec.c @@ -44,14 +44,13 @@ #define MAX_ARGS 100 -int daemon_exec(const char *dir, int *ret, const char *prog, ...) { +int daemon_execv(const char *dir, int *ret, const char *prog, va_list ap) { pid_t pid; int p[2]; unsigned n = 0; static char buf[256]; int sigfd, r; fd_set fds; - va_list ap; assert(daemon_signal_fd() >= 0); @@ -93,12 +92,10 @@ int daemon_exec(const char *dir, int *ret, const char *prog, ...) { chdir("/"); } - va_start(ap, prog); for (i = 0; i < MAX_ARGS-1; i++) if (!(args[i] = va_arg(ap, char*))) break; args[i] = NULL; - va_end(ap); execv(prog, args); @@ -128,7 +125,6 @@ int daemon_exec(const char *dir, int *ret, const char *prog, ...) { return -1; } - if (FD_ISSET(p[0], &qfds)) { char c; @@ -190,3 +186,14 @@ int daemon_exec(const char *dir, int *ret, const char *prog, ...) { } } } + +int daemon_exec(const char *dir, int *ret, const char *prog, ...) { + va_list ap; + int r; + + va_start(ap, prog); + r = daemon_execv(dir, ret, prog, ap); + va_end(ap); + + return r; +} |