diff options
author | Eric Andersen <andersen@codepoet.org> | 2003-07-28 11:40:39 +0400 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2003-07-28 11:40:39 +0400 |
commit | 35e643b39f6cc77b702c714cfa8e70f1e10601a9 (patch) | |
tree | ad6b608081a4dde117563a1f1e9a6e3892a8752c /libbb/vfork_daemon_rexec.c | |
parent | 4f4631732cab5886105d8809d4e9b17711def65b (diff) |
last_patch95 from vodz:
Hi.
Last patch have new libbb function
vfork_rexec() for can use daemon() to uClinux system.
This patched daemons: syslog, klogd, inetd, crond.
This not tested! I havn`t this systems.
Also. Previous patch for feature request MD5 crypt password for
httpd don`t sended to this mailist on 07/15/03
(mailist have Pytom module problem?).
The previous patch included, and have testing.
--w
vodz
Diffstat (limited to 'libbb/vfork_daemon_rexec.c')
-rw-r--r-- | libbb/vfork_daemon_rexec.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c new file mode 100644 index 000000000..c8f9d277e --- /dev/null +++ b/libbb/vfork_daemon_rexec.c @@ -0,0 +1,27 @@ +/* + * Rexec program for system have fork() as vfork() with foregound option + * Copyright (C) Vladminr Oleynik and many different people. + */ + +#include <unistd.h> +#include "libbb.h" + + +#if defined(__uClinux__) +void vfork_daemon_rexec(int argc, char **argv, char *foreground_opt) +{ + char **vfork_args; + int a = 0; + + vfork_args = xcalloc(sizeof(char *), argc + 3); + while(*argv) { + vfork_args[a++] = *argv; + argv++; + } + vfork_args[a] = foreground_opt; + execvp("/proc/self/exe", vfork_args); + vfork_args[0] = "/bin/busybox"; + execv(vfork_args[0], vfork_args); + bb_perror_msg_and_die("execv %s", vfork_args[0]); +} +#endif /* uClinux */ |