Hello fellow hackers, I spotted this small detail this morning and applied this change. It is always a good thing in my opinion to be able to carve off an unnecessary local variable.
To be precise, I think this can be considered the first patch of this year's slcon3 hacking sessions. ;) With best regards FRIGN -- FRIGN <[email protected]>
>From 6365fab78c11e8269447cf0cfcbb1aeac618488b Mon Sep 17 00:00:00 2001 From: FRIGN <[email protected]> Date: Fri, 23 Sep 2016 09:37:59 +0200 Subject: [PATCH] Use switch for fork() This saves us one local variable and 2 lines of code, while improving readability by using the switch-style we are used to from other suckless projects. We are allowed to check against -1, as POSIX clearly mandates for the RETURN VALUE: "Upon successful completion, fork() shall return 0 to the child process and shall return the process ID of the child process to the parent process. Both processes shall continue to execute from the fork() function. Otherwise, -1 shall be returned to the parent process, no child process shall be created, and errno shall be set to indicate the error." [http://pubs.opengroup.org/onlinepubs/9699919799/functions/fork.html] This way, checking against < 0 was overdoing it and it's sufficient to compare against -1, justifying the switch statement here. --- sinit.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sinit.c b/sinit.c index e338f35..93f9925 100644 --- a/sinit.c +++ b/sinit.c @@ -74,16 +74,14 @@ sigreboot(void) static void spawn(char *const argv[]) { - pid_t pid; - - pid = fork(); - if (pid < 0) { - perror("fork"); - } else if (pid == 0) { + switch (fork()) { + case 0: sigprocmask(SIG_UNBLOCK, &set, NULL); setsid(); execvp(argv[0], argv); perror("execvp"); _exit(1); + case -1: + perror("fork"); } } -- 2.7.3
