summaryrefslogtreecommitdiffstats
path: root/libdaemon/dexec.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-06-11 15:16:09 +0000
committerLennart Poettering <lennart@poettering.net>2007-06-11 15:16:09 +0000
commitb45cd330549c234d0c061602d6239b083ddb9978 (patch)
tree019ed7655be9ce4a62f718f1d55490e00277b569 /libdaemon/dexec.c
parente64d682f16b36ca16c6e8b2dada36520243a3d1c (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.c17
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;
+}