revert last two commits. vfork cannot be used in subroutine,
it trashes stack on return

diff --git a/miscutils/crontab.c b/miscutils/crontab.c
index 4bba9fb..dc3179d 100644
--- a/miscutils/crontab.c
+++ b/miscutils/crontab.c
@@ -38,8 +38,10 @@
 static void edit_file(const struct passwd *pas, const char *file)
 {
 	const char *ptr;
-	int pid = xvfork();
+	int pid = vfork();
 
+	if (pid < 0) /* failure */
+		bb_perror_msg_and_die("vfork");
 	if (pid) { /* parent */
 		wait4pid(pid);
 		return;
@@ -63,7 +65,9 @@
 	pid_t pid;
 	char c;
 
-	pid = xvfork();
+	pid = vfork();
+	if (pid < 0) /* ERROR */
+		bb_perror_msg_and_die("vfork");
 	if (pid) { /* PARENT */
 		if (wait4pid(pid) == 0) {
 			/* exitcode 0: child says it can read */
diff --git a/miscutils/time.c b/miscutils/time.c
index 104548c..a6d158c 100644
--- a/miscutils/time.c
+++ b/miscutils/time.c
@@ -372,7 +372,9 @@
 	void (*quit_signal)(int);
 
 	resp->elapsed_ms = monotonic_us() / 1000;
-	pid = xvfork();		/* Run CMD as child process.  */
+	pid = vfork();		/* Run CMD as child process.  */
+	if (pid < 0)
+		bb_error_msg_and_die("cannot fork");
 	if (pid == 0) {	/* If child.  */
 		/* Don't cast execvp arguments; that causes errors on some systems,
 		   versus merely warnings if the cast is left off.  */