chiark / gitweb /
fix an assert when forking
[elogind.git] / execute.c
index f3b4df930f24f8a768d3b7150c65573efc33f541..5def5ce1af5c8a553867168d9721ff3a1510852e 100644 (file)
--- a/execute.c
+++ b/execute.c
@@ -86,7 +86,7 @@ static int shift_fds(int fds[], unsigned n_fds) {
                         if ((nfd = fcntl(fds[i], F_DUPFD, i+3)) < 0)
                                 return -errno;
 
-                        assert_se(close_nointr(fds[i]));
+                        assert_se(close_nointr(fds[i]) == 0);
                         fds[i] = nfd;
 
                         /* Hmm, the fd we wanted isn't free? Then
@@ -112,7 +112,7 @@ int exec_spawn(const ExecCommand *command, const ExecContext *context, int *fds,
         assert(ret);
         assert(fds || n_fds <= 0);
 
-        log_debug("About to execute %s", command->path);
+        log_debug("about to execute %s", command->path);
 
         if ((pid = fork()) < 0)
                 return -errno;
@@ -193,6 +193,9 @@ int exec_spawn(const ExecCommand *command, const ExecContext *context, int *fds,
                 _exit(r);
         }
 
+
+        log_debug("executed %s as %llu", command->path, (unsigned long long) pid);
+
         *ret = pid;
         return 0;
 }