mirror of
https://github.com/troglobit/finit.git
synced 2026-10-05 23:33:36 +07:00
Refactor popen()/pclose() logic in ifupdown calls
Currently no code checks the return code of ifupdown at runlevel changes, but for future reference this code has been refactored to match the changes made in cbdb949 to fix issue #400. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
+10
-9
@@ -522,9 +522,10 @@ void networking(int updown)
|
||||
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
int rc = EX_OSERR;
|
||||
const char *cmd;
|
||||
char buf[256];
|
||||
FILE *pp;
|
||||
int rc;
|
||||
|
||||
setsid();
|
||||
sig_unblock();
|
||||
@@ -539,16 +540,16 @@ void networking(int updown)
|
||||
cmd = "ifdown -a -f 2>&1";
|
||||
|
||||
pp = popen(cmd, "r");
|
||||
if (pp) {
|
||||
char buf[256];
|
||||
if (!pp)
|
||||
_exit(EX_OSERR);
|
||||
|
||||
while (fgets(buf, sizeof(buf), pp))
|
||||
logit(LOG_NOTICE, "network: %s", chomp(buf));
|
||||
while (fgets(buf, sizeof(buf), pp))
|
||||
logit(LOG_NOTICE, "network: %s", chomp(buf));
|
||||
|
||||
rc = pclose(pp);
|
||||
}
|
||||
|
||||
_exit(rc);
|
||||
rc = pclose(pp);
|
||||
if (rc == -1)
|
||||
_exit(EX_OSERR);
|
||||
_exit(WEXITSTATUS(rc));
|
||||
}
|
||||
cgroup_service("network", pid, NULL);
|
||||
print(pid > 0 ? 0 : 1, "%s network interfaces ...",
|
||||
|
||||
Reference in New Issue
Block a user