summaryrefslogtreecommitdiffstats
path: root/sbin/sysinstall/exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/sysinstall/exec.c')
-rw-r--r--sbin/sysinstall/exec.c86
1 files changed, 0 insertions, 86 deletions
diff --git a/sbin/sysinstall/exec.c b/sbin/sysinstall/exec.c
deleted file mode 100644
index 379f41d..0000000
--- a/sbin/sysinstall/exec.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <phk@login.dkuug.dk> wrote this file. As long as you retain this notice you
- * can do whatever you want with this stuff. If we meet some day, and you think
- * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
- * ----------------------------------------------------------------------------
- *
- * $Id: exec.c,v 1.8.2.1 1994/11/21 03:11:59 phk Exp $
- *
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <string.h>
-#include <dialog.h>
-#include <errno.h>
-#include <fcntl.h>
-
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/param.h>
-#include <sys/mount.h>
-#include <sys/reboot.h>
-
-#include "sysinstall.h"
-
-int
-exec(int magic, char *cmd, char *args, ...)
-{
- int pid, w, status;
- char *argv[EXEC_MAXARG];
- int arg = 0;
- va_list ap;
- struct stat dummy;
-
- if (stat(cmd, &dummy) == -1) {
- Fatal("Executable %s does not exist", cmd);
- }
-
- va_start(ap, args);
- argv[arg++] = (char *)args;
- do {
- if (arg >= EXEC_MAXARG)
- Fatal("Too many arguments");
- } while ((argv[arg++] = va_arg(ap, char *)));
- va_end(ap);
-
- if ((pid = fork()) == 0) {
- switch (magic) {
- case 0:
- close(0); dup(debug_fd);
- close(1); dup(debug_fd);
- close(2); dup(debug_fd);
- close(debug_fd);
- break;
- case 1:
- close(2); dup(debug_fd);
- close(debug_fd);
- break;
- case 2:
- case 3:
- close(debug_fd);
- break;
- case 4:
- close(0) ; open("/stand/sysinstall",O_RDONLY);
- close(1) ; open("/mnt/stand/sysinstall",
- O_WRONLY|O_CREAT|O_TRUNC,0755);
- default:
- break;
- }
- execv(cmd, argv);
- exit(1);
- }
-
- while ((w = wait(&status)) != pid && w != -1)
- ;
- if ((status >> 8) == 20 && magic == 3) /* special case for bininst */
- reboot(RB_AUTOBOOT);
- if (w == -1)
- Fatal("Child process %s terminated abnormally\n", cmd);
- return(status);
-}
OpenPOWER on IntegriCloud