diff -Naur vixie-cron-3.0.1-original/cron.8 vixie-cron-3.0.1/cron.8
--- vixie-cron-3.0.1-original/cron.8	2002-12-14 18:01:26.000000000 -0700
+++ vixie-cron-3.0.1/cron.8	2002-12-14 20:10:12.000000000 -0700
@@ -22,11 +22,13 @@
 .SH NAME
 cron \- daemon to execute scheduled commands (Vixie Cron)
 .SH SYNOPSIS
-cron
+cron [\-n]
 .SH DESCRIPTION
 .I Cron
 should be started from /etc/rc or /etc/rc.local.  It will return immediately,
-so you don't need to start it with '&'.
+so you don't need to start it with '&'.  The \-n option changes this default
+behavior causing it to run in the foreground.  This can be useful when 
+starting it out of init.
 .PP
 .I Cron
 searches /var/spool/cron for crontab files which are named after accounts in
diff -Naur vixie-cron-3.0.1-original/cron.c vixie-cron-3.0.1/cron.c
--- vixie-cron-3.0.1-original/cron.c	2002-12-14 18:01:26.000000000 -0700
+++ vixie-cron-3.0.1/cron.c	2002-12-14 18:32:58.000000000 -0700
@@ -47,7 +47,7 @@
 
 static void
 usage() {
-	fprintf(stderr, "usage:  %s [-x debugflag[,...]]\n", ProgramName);
+	fprintf(stderr, "usage:  %s [-x debugflag[,...]] [-n]\n", ProgramName);
 	exit(ERROR_EXIT);
 }
 
@@ -66,6 +66,7 @@
 	setlinebuf(stderr);
 #endif
 
+	NoFork = 0;
 	parse_args(argc, argv);
 
 #ifdef USE_SIGCHLD
@@ -91,7 +92,7 @@
 	if (0) {
 # endif
 		(void) fprintf(stderr, "[%d] cron started\n", getpid());
-	} else {
+	} else if (NoFork == 0) {
 		switch (fork()) {
 		case -1:
 			log_it("CRON",getpid(),"DEATH","can't fork");
@@ -310,7 +311,7 @@
 {
 	int	argch;
 
-	while (EOF != (argch = getopt(argc, argv, "x:"))) {
+	while (EOF != (argch = getopt(argc, argv, "nx:"))) {
 		switch (argch) {
 		default:
 			usage();
@@ -318,6 +319,9 @@
 			if (!set_debug_flags(optarg))
 				usage();
 			break;
+		case 'n':
+			NoFork = 1;
+			break;
 		}
 	}
 }
diff -Naur vixie-cron-3.0.1-original/cron.h vixie-cron-3.0.1/cron.h
--- vixie-cron-3.0.1-original/cron.h	2002-12-14 18:01:26.000000000 -0700
+++ vixie-cron-3.0.1/cron.h	2002-12-14 17:14:29.000000000 -0700
@@ -256,6 +256,7 @@
 char    *SyslogName;
 int	LineNumber;
 time_t	TargetTime;
+int	NoFork;
 
 # if DEBUGGING
 int	DebugFlags;
@@ -272,6 +273,7 @@
                 *SyslogName;
 extern	int	LineNumber;
 extern	time_t	TargetTime;
+extern	int	NoFork;
 # if DEBUGGING
 extern	int	DebugFlags;
 extern	char	*DebugFlagNames[];
