aboutsummaryrefslogtreecommitdiff
path: root/libbb/vfork_daemon_rexec.c
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-07-28 07:40:39 +0000
committerEric Andersen <andersen@codepoet.org>2003-07-28 07:40:39 +0000
commit35e643b39f6cc77b702c714cfa8e70f1e10601a9 (patch)
treead6b608081a4dde117563a1f1e9a6e3892a8752c /libbb/vfork_daemon_rexec.c
parent4f4631732cab5886105d8809d4e9b17711def65b (diff)
downloadbusybox-35e643b39f6cc77b702c714cfa8e70f1e10601a9.tar.gz
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.c27
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 */