--- /dev/null
+--- busybox-1.00/debianutils/start_stop_daemon.c.orig 2006-07-23 00:06:14.000000000 +0200
++++ busybox-1.00/debianutils/start_stop_daemon.c 2006-07-23 00:21:39.000000000 +0200
+@@ -160,7 +160,7 @@
+ }
+
+
+-static void
++static int
+ do_stop(void)
+ {
+ char what[1024];
+@@ -183,7 +183,7 @@
+ if (!found) {
+ if (!quiet)
+ printf("no %s found; none killed.\n", what);
+- return;
++ return -1;
+ }
+ for (p = found; p; p = p->next) {
+ if (kill(p->pid, signal_nr) == 0) {
+@@ -200,6 +200,7 @@
+ printf(" %d", -p->pid);
+ printf(").\n");
+ }
++ return killed;
+ }
+
+
+@@ -209,6 +210,7 @@
+ { "background", 0, NULL, 'b' },
+ { "quiet", 0, NULL, 'q' },
+ { "make-pidfile", 0, NULL, 'm' },
++ { "oknodo", 0, NULL, 'o' },
+ { "startas", 1, NULL, 'a' },
+ { "name", 1, NULL, 'n' },
+ { "signal", 1, NULL, 's' },
+@@ -223,6 +225,7 @@
+ #define SSD_OPT_BACKGROUND 4
+ #define SSD_OPT_QUIET 8
+ #define SSD_OPT_MAKEPID 16
++#define SSD_OPT_OKNODO 32
+
+ int
+ start_stop_daemon_main(int argc, char **argv)
+@@ -234,7 +237,7 @@
+ bb_applet_long_options = ssd_long_options;
+
+ bb_opt_complementaly = "K~S:S~K";
+- opt = bb_getopt_ulflags(argc, argv, "KSbqma:n:s:u:x:p:",
++ opt = bb_getopt_ulflags(argc, argv, "KSbqmoa:n:s:u:x:p:",
+ &startas, &cmdname, &signame, &userspec, &execname, &pidfile);
+
+ /* Check one and only one context option was given */
+@@ -265,8 +268,8 @@
+ user_id = my_getpwnam(userspec);
+
+ if (opt & SSD_CTX_STOP) {
+- do_stop();
+- return EXIT_SUCCESS;
++ int i = do_stop();
++ return (opt & SSD_OPT_OKNODO) ? 0 : (i <= 0);
+ }
+
+ do_procinit();
+@@ -274,7 +277,7 @@
+ if (found) {
+ if (!quiet)
+ printf("%s already running.\n%d\n", execname ,found->pid);
+- return EXIT_SUCCESS;
++ return (opt & SSD_OPT_OKNODO) ? EXIT_SUCCESS : EXIT_FAILURE;
+ }
+ *--argv = startas;
+ if (opt & SSD_OPT_BACKGROUND) {