sinit

suckless init
git clone git://git.suckless.org/sinit
Log | Files | Refs | README | LICENSE

commit 731f65fc82afcd474f4c682f9f0069e5c80c86dd
parent 40a9fd323646b680a4eb046076c606339fd7501e
Author: FRIGN <dev@frign.de>
Date:   Fri, 23 Sep 2016 09:37:59 +0200

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.

Diffstat:
Msinit.c | 10++++------
1 file changed, 4 insertions(+), 6 deletions(-)

diff --git 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"); } }