The following commit has been merged in the master branch:
commit f29e54ab5ccf99376dfb3a9ac824ea795c260e10
Author: Guillem Jover <[EMAIL PROTECTED]>
Date: Mon Nov 24 06:25:52 2008 +0200
libdpkg: Move subprocess related functions from mlib.c to subproc.c
diff --git a/ChangeLog b/ChangeLog
index b7414a7..722b63a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2008-12-05 Guillem Jover <[EMAIL PROTECTED]>
+ * lib/mlib.c: Remove <sys/wait.h> include.
+ (checksubprocerr, waitsubproc): Move to ...
+ * lib/subproc.c (checksubprocerr, waitsubproc): ... here.
+ Include <sys/types.h> and <sys/wait.h>.
+
+2008-12-05 Guillem Jover <[EMAIL PROTECTED]>
+
* lib/mlib.c (checksubprocerr): Split unrelated conditionals for n
and PROCPIPE.
diff --git a/lib/mlib.c b/lib/mlib.c
index b315e70..ac5436f 100644
--- a/lib/mlib.c
+++ b/lib/mlib.c
@@ -32,7 +32,6 @@
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
-#include <sys/wait.h>
#include <sys/types.h>
#include <dpkg.h>
@@ -118,45 +117,6 @@ void m_pipe(int *fds) {
ohshite(_("failed to create pipe"));
}
-int checksubprocerr(int status, const char *description, int flags) {
- int n;
- if (WIFEXITED(status)) {
- n = WEXITSTATUS(status);
- if (!n)
- return 0;
- if (flags & PROCNOERR)
- return -1;
- if (flags & PROCWARN)
- warning(_("%s returned error exit status %d"), description, n);
- else
- ohshit(_("subprocess %s returned error exit status %d"), description, n);
- } else if (WIFSIGNALED(status)) {
- n = WTERMSIG(status);
- if (!n)
- return 0;
- if ((flags & PROCPIPE) && n == SIGPIPE)
- return 0;
- if (flags & PROCWARN)
- warning(_("%s killed by signal (%s)%s"),
- description, strsignal(n), WCOREDUMP(status) ? _(", core
dumped") : "");
- else
- ohshit(_("subprocess %s killed by signal (%s)%s"),
- description, strsignal(n), WCOREDUMP(status) ? _(", core dumped")
: "");
- } else {
- ohshit(_("subprocess %s failed with wait status code
%d"),description,status);
- }
- return -1;
-}
-
-int waitsubproc(pid_t pid, const char *description, int flags) {
- pid_t r;
- int status;
-
- while ((r= waitpid(pid,&status,0)) == -1 && errno == EINTR);
- if (r != pid) { onerr_abort++; ohshite(_("wait for %s failed"),description);
}
- return checksubprocerr(status,description,flags);
-}
-
void setcloexec(int fd, const char* fn) {
int f;
diff --git a/lib/subproc.c b/lib/subproc.c
index 009b9f2..3b855ec 100644
--- a/lib/subproc.c
+++ b/lib/subproc.c
@@ -24,6 +24,8 @@
#include <dpkg-i18n.h>
+#include <sys/types.h>
+#include <sys/wait.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
@@ -68,3 +70,58 @@ cu_subproc_signals(int argc, void **argv)
}
}
+int
+checksubprocerr(int status, const char *description, int flags)
+{
+ int n;
+
+ if (WIFEXITED(status)) {
+ n = WEXITSTATUS(status);
+ if (!n)
+ return 0;
+ if (flags & PROCNOERR)
+ return -1;
+ if (flags & PROCWARN)
+ warning(_("%s returned error exit status %d"),
+ description, n);
+ else
+ ohshit(_("subprocess %s returned error exit status %d"),
+ description, n);
+ } else if (WIFSIGNALED(status)) {
+ n = WTERMSIG(status);
+ if (!n)
+ return 0;
+ if ((flags & PROCPIPE) && n == SIGPIPE)
+ return 0;
+ if (flags & PROCWARN)
+ warning(_("%s killed by signal (%s)%s"),
+ description, strsignal(n),
+ WCOREDUMP(status) ? _(", core dumped") : "");
+ else
+ ohshit(_("subprocess %s killed by signal (%s)%s"),
+ description, strsignal(n),
+ WCOREDUMP(status) ? _(", core dumped") : "");
+ } else {
+ ohshit(_("subprocess %s failed with wait status code %d"),
+ description, status);
+ }
+
+ return -1;
+}
+
+int
+waitsubproc(pid_t pid, const char *description, int flags)
+{
+ pid_t r;
+ int status;
+
+ while ((r = waitpid(pid, &status, 0)) == -1 && errno == EINTR) ;
+
+ if (r != pid) {
+ onerr_abort++;
+ ohshite(_("wait for %s failed"), description);
+ }
+
+ return checksubprocerr(status, description, flags);
+}
+
--
dpkg's main repository
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]