From 79ae534ac7a1e1ead80737b4b09769916c2bbb49 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Wed, 6 Jan 2010 12:27:18 +0100 Subject: ifplugd: simplify run_script() function old new delta packed_usage 26505 26518 +13 run_script 158 112 -46 Signed-off-by: Denys Vlasenko --- networking/ifplugd.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'networking/ifplugd.c') diff --git a/networking/ifplugd.c b/networking/ifplugd.c index 6efad22eb..458553013 100644 --- a/networking/ifplugd.c +++ b/networking/ifplugd.c @@ -119,29 +119,23 @@ struct globals { static int run_script(const char *action) { - pid_t pid; + char *argv[5]; int r; bb_error_msg("executing '%s %s %s'", G.script_name, G.iface, action); #if 1 - pid = vfork(); - if (pid < 0) { - bb_perror_msg("fork"); - return -1; - } - if (pid == 0) { - /* child */ - execlp(G.script_name, G.script_name, G.iface, action, G.extra_arg, NULL); - bb_perror_msg_and_die("can't execute '%s'", G.script_name); - } + argv[0] = (char*) G.script_name; + argv[1] = (char*) G.iface; + argv[2] = (char*) action; + argv[3] = (char*) G.extra_arg; + argv[4] = NULL; - /* parent */ - wait(&r); - r = WEXITSTATUS(r); + /* r < 0 - can't exec, 0 <= r < 1000 - exited, >1000 - killed by sig (r-1000) */ + r = wait4pid(spawn(argv)); - bb_error_msg("exit code: %u", r); + bb_error_msg("exit code: %d", r); return (option_mask32 & FLAG_IGNORE_RETVAL) ? 0 : r; #else /* insanity */ -- cgit v1.2.3