summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-07-28 23:25:33 +0200
committerLennart Poettering <lennart@poettering.net>2008-07-28 23:25:33 +0200
commit16a09253a2e225ae8a8bee76c4d7f6e3767a7e04 (patch)
treef5e1b36588a4bc2fd7dd326f47fb76590354e8a6
parentf5477752e18df32571728e36772db1cf1038a7b8 (diff)
save and restore errno where necessary
-rw-r--r--libdaemon/dfork.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libdaemon/dfork.c b/libdaemon/dfork.c
index 14d2238..ff58659 100644
--- a/libdaemon/dfork.c
+++ b/libdaemon/dfork.c
@@ -316,7 +316,10 @@ pid_t daemon_fork(void) {
dpid = (pid_t) -1;
}
+ saved_errno = errno;
close(pipe_fds[0]);
+ errno = saved_errno;
+
return dpid;
}
}
@@ -329,6 +332,8 @@ int daemon_retval_init(void) {
}
void daemon_retval_done(void) {
+ int saved_errno = errno;
+
if (_daemon_retval_pipe[0] >= 0)
close(_daemon_retval_pipe[0]);
@@ -336,6 +341,8 @@ void daemon_retval_done(void) {
close(_daemon_retval_pipe[1]);
_daemon_retval_pipe[0] = _daemon_retval_pipe[1] = -1;
+
+ errno = saved_errno;
}
int daemon_retval_send(int i) {