X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fdaemonize%2Ftest%2Frun.c;h=73f021118a8c77505136fe25e0b6a3eb9b2eeed8;hb=c656dceb3f04c2e3da7af40824c97eff5119a0b9;hp=a471268d3ef172995fd4a0088cd70c9266c75383;hpb=cd13fd53487ba6f10b78ab1ffd625cb3da7ab22a;p=ccan diff --git a/ccan/daemonize/test/run.c b/ccan/daemonize/test/run.c index a471268d..73f02111 100644 --- a/ccan/daemonize/test/run.c +++ b/ccan/daemonize/test/run.c @@ -5,6 +5,7 @@ #include #include #include +#include struct child_data { pid_t pid; @@ -19,7 +20,7 @@ int main(int argc, char *argv[]) struct child_data daemonized; pid_t pid; - plan_tests(6); + plan_tests(5); if (pipe(fds) != 0) err(1, "Failed pipe"); @@ -34,14 +35,20 @@ int main(int argc, char *argv[]) char buffer[2]; pid = getpid(); daemonize(); + /* Keep valgrind happy about uninitialized bytes. */ + memset(&daemonized, 0, sizeof(daemonized)); daemonized.pid = getpid(); daemonized.in_root_dir = (getcwd(buffer, 2) != NULL); daemonized.read_from_stdin = read(STDIN_FILENO, buffer, 1) == -1 ? errno : 0; daemonized.write_to_stdout = write(STDOUT_FILENO, buffer, 1) == -1 ? errno : 0; - daemonized.write_to_stderr - = write(STDERR_FILENO, buffer, 1) == -1 ? errno : 0; + if (write(STDERR_FILENO, buffer, 1) != 1) { + daemonized.write_to_stderr = errno; + if (daemonized.write_to_stderr == 0) + daemonized.write_to_stderr = -1; + } else + daemonized.write_to_stderr = 0; /* Make sure parent exits. */ while (getppid() == pid) @@ -57,11 +64,13 @@ int main(int argc, char *argv[]) err(1, "Failed read"); ok1(daemonized.pid != pid); +#if 0 /* Believe it or not, this fails under Ubuntu 13.10 (Upstart) */ ok1(daemonized.ppid == 1); +#endif ok1(daemonized.in_root_dir); ok1(daemonized.read_from_stdin == EBADF); ok1(daemonized.write_to_stdout == EBADF); - ok1(daemonized.write_to_stderr == EBADF); + ok1(daemonized.write_to_stderr == 0); return exit_status(); }