move everything to new NOMMU helpers, except udhcp
diff --git a/miscutils/crond.c b/miscutils/crond.c
index 1ab0038..9d511f9 100644
--- a/miscutils/crond.c
+++ b/miscutils/crond.c
@@ -136,75 +136,43 @@
 {
 	unsigned opt;
 	char *lopt, *Lopt, *copt;
+	USE_DEBUG_CROND_OPTION(char *dopt;)
 
-#if ENABLE_DEBUG_CROND_OPTION
-	char *dopt;
-
-	opt_complementary = "f-b:b-f:S-L:L-S:d-l";
-#else
-	opt_complementary = "f-b:b-f:S-L:L-S";
-#endif
-
+	opt_complementary = "f-b:b-f:S-L:L-S" USE_DEBUG_CROND_OPTION(":d-l");
 	opterr = 0;			/* disable getopt 'errors' message. */
-	opt = getopt32(ac, av, "l:L:fbSc:"
-#if ENABLE_DEBUG_CROND_OPTION
-							"d:"
-#endif
-							, &lopt, &Lopt, &copt
-#if ENABLE_DEBUG_CROND_OPTION
-							, &dopt
-#endif
-		);
-	if (opt & 1) {
+	opt = getopt32(ac, av, "l:L:fbSc:" USE_DEBUG_CROND_OPTION("d:"),
+			&lopt, &Lopt, &copt USE_DEBUG_CROND_OPTION(, &dopt));
+	if (opt & 1) /* -l */
 		LogLevel = xatou(lopt);
-	}
-	if (opt & 2) {
-		if (*Lopt != 0) {
+	if (opt & 2) /* -L */
+		if (*Lopt)
 			LogFile = Lopt;
-		}
-	}
-	if (opt & 32) {
-		if (*copt != 0) {
+	if (opt & 32) /* -c */
+		if (*copt)
 			CDir = copt;
-		}
-	}
 #if ENABLE_DEBUG_CROND_OPTION
-	if (opt & 64) {
+	if (opt & 64) { /* -d */
 		DebugOpt = xatou(dopt);
 		LogLevel = 0;
 	}
 #endif
 
-	/*
-	 * change directory
-	 */
-
-	xchdir(CDir);
-	signal(SIGHUP, SIG_IGN);	/* hmm.. but, if kill -HUP original
-								 * version - his died. ;(
-								 */
-	/*
-	 * close stdin and stdout, stderr.
+	/* close stdin and stdout, stderr.
 	 * close unused descriptors -  don't need.
 	 * optional detach from controlling terminal
 	 */
+	if (!(opt & 4))
+		bb_daemonize_or_rexec(DAEMON_CLOSE_EXTRA_FDS, av);
 
-	if (!(opt & 4)) {
-#ifdef BB_NOMMU
-		if (!re_execed)
-			vfork_daemon_rexec(1, 0, av);
-#else
-		xdaemon(1, 0);
-#endif
-	}
+	xchdir(CDir);
+	signal(SIGHUP, SIG_IGN); /* ? original crond dies on HUP... */
 
-	(void) startlogger();	/* need if syslog mode selected */
+	startlogger();	/* need if syslog mode selected */
 
 	/*
 	 * main loop - synchronize to 1 second after the minute, minimum sleep
 	 *             of 1 second.
 	 */
-
 	crondlog("\011%s " VERSION " dillon, started, log level %d\n",
 			 applet_name, LogLevel);
 
diff --git a/miscutils/watchdog.c b/miscutils/watchdog.c
index e3d77d1..28ae9bd 100644
--- a/miscutils/watchdog.c
+++ b/miscutils/watchdog.c
@@ -29,29 +29,21 @@
 	unsigned timer_duration = 30; /* Userspace timer duration, in seconds */
 	char *t_arg;
 
+	opt_complementary = "=1"; /* must have 1 argument */
 	opts = getopt32(argc, argv, "Ft:", &t_arg);
 
 	if (opts & OPT_TIMER)
 		timer_duration = xatou(t_arg);
 
-	/* We're only interested in the watchdog device .. */
-	if (optind < argc - 1 || argc == 1)
-		bb_show_usage();
-
 	if (!(opts & OPT_FOREGROUND)) {
-#ifdef BB_NOMMU
-		if (!re_execed)
-			vfork_daemon_rexec(0, 1, argv);
-#else
-		xdaemon(0, 1);
-#endif
+		bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
 	}
 
 	signal(SIGHUP, watchdog_shutdown);
 	signal(SIGINT, watchdog_shutdown);
 
 	/* Use known fd # - avoid needing global 'int fd' */
-	dup2(xopen(argv[argc - 1], O_WRONLY), 3);
+	xmove_fd(xopen(argv[argc - 1], O_WRONLY), 3);
 
 	while (1) {
 		/*
@@ -63,6 +55,5 @@
 	}
 
 	watchdog_shutdown(0);
-
 	/* return EXIT_SUCCESS; */
 }