Introduction
Introduction Statistics Contact Development Disclaimer Help
Use switch for fork() - sinit - suckless init
git clone git://git.suckless.org/sinit
Log
Files
Refs
README
LICENSE
---
commit 731f65fc82afcd474f4c682f9f0069e5c80c86dd
parent 40a9fd323646b680a4eb046076c606339fd7501e
Author: FRIGN <[email protected]>
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:
M sinit.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");
}
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.