← Commit list

53a229923

Eric Andersen
Eric Andersen
2002-01-26
FAILED Duration: 444s

Subject

Patch from Russ Dill . From the start-stop-daemon man page:

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

debianutils/start_stop_daemon.c+10 -1
@@ -22,6 +22,7 @@
static int start = 0;
static int stop = 0;
+static int fork_before_exec = 0;
static int signal_nr = 15;
static int user_id = -1;
static const char *userspec = NULL;
@@ -55,7 +56,7 @@ parse_options(int argc, char * const *argv)
int c;
for (;;) {
- c = getopt (argc, argv, "a:n:s:u:x:KS");
+ c = getopt (argc, argv, "a:n:s:u:x:KSb");
if (c == EOF)
break;
switch (c) {
@@ -81,6 +82,9 @@ parse_options(int argc, char * const *argv)
case 'x':
execname = optarg;
break;
+ case 'b':
+ fork_before_exec = 1;
+ break;
default:
show_usage();
}
@@ -255,6 +259,11 @@ start_stop_daemon_main(int argc, char **argv)
return EXIT_SUCCESS;
}
*--argv = startas;
+ if (fork_before_exec) {
+ if (daemon(0, 0) == -1)
+ perror_msg_and_die ("unable to fork");
+ }
+ setsid();
execv(startas, argv);
perror_msg_and_die ("unable to start %s", startas);
}
init/start_stop_daemon.c+10 -1
@@ -22,6 +22,7 @@
static int start = 0;
static int stop = 0;
+static int fork_before_exec = 0;
static int signal_nr = 15;
static int user_id = -1;
static const char *userspec = NULL;
@@ -55,7 +56,7 @@ parse_options(int argc, char * const *argv)
int c;
for (;;) {
- c = getopt (argc, argv, "a:n:s:u:x:KS");
+ c = getopt (argc, argv, "a:n:s:u:x:KSb");
if (c == EOF)
break;
switch (c) {
@@ -81,6 +82,9 @@ parse_options(int argc, char * const *argv)
case 'x':
execname = optarg;
break;
+ case 'b':
+ fork_before_exec = 1;
+ break;
default:
show_usage();
}
@@ -255,6 +259,11 @@ start_stop_daemon_main(int argc, char **argv)
return EXIT_SUCCESS;
}
*--argv = startas;
+ if (fork_before_exec) {
+ if (daemon(0, 0) == -1)
+ perror_msg_and_die ("unable to fork");
+ }
+ setsid();
execv(startas, argv);
perror_msg_and_die ("unable to start %s", startas);
}