summaryrefslogtreecommitdiffstats
path: root/src/libopkg/.svn/text-base/xsystem.c.svn-base
diff options
context:
space:
mode:
Diffstat (limited to 'src/libopkg/.svn/text-base/xsystem.c.svn-base')
-rw-r--r--src/libopkg/.svn/text-base/xsystem.c.svn-base73
1 files changed, 0 insertions, 73 deletions
diff --git a/src/libopkg/.svn/text-base/xsystem.c.svn-base b/src/libopkg/.svn/text-base/xsystem.c.svn-base
deleted file mode 100644
index ae7ca87..0000000
--- a/src/libopkg/.svn/text-base/xsystem.c.svn-base
+++ /dev/null
@@ -1,73 +0,0 @@
-/* xsystem.c - system(3) with error messages
-
- Carl D. Worth
-
- Copyright (C) 2001 University of Southern California
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-*/
-
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <unistd.h>
-
-#include "xsystem.h"
-#include "libbb/libbb.h"
-
-/* Like system(3), but with error messages printed if the fork fails
- or if the child process dies due to an uncaught signal. Also, the
- return value is a bit simpler:
-
- -1 if there was any problem
- Otherwise, the 8-bit return value of the program ala WEXITSTATUS
- as defined in <sys/wait.h>.
-*/
-int
-xsystem(const char *argv[])
-{
- int status;
- pid_t pid;
-
- pid = vfork();
-
- switch (pid) {
- case -1:
- opkg_perror(ERROR, "%s: vfork", argv[0]);
- return -1;
- case 0:
- /* child */
- execvp(argv[0], (char*const*)argv);
- _exit(-1);
- default:
- /* parent */
- break;
- }
-
- if (waitpid(pid, &status, 0) == -1) {
- opkg_perror(ERROR, "%s: waitpid", argv[0]);
- return -1;
- }
-
- if (WIFSIGNALED(status)) {
- opkg_msg(ERROR, "%s: Child killed by signal %d.\n",
- argv[0], WTERMSIG(status));
- return -1;
- }
-
- if (!WIFEXITED(status)) {
- /* shouldn't happen */
- opkg_msg(ERROR, "%s: Your system is broken: got status %d "
- "from waitpid.\n", argv[0], status);
- return -1;
- }
-
- return WEXITSTATUS(status);
-}