ifplugd: simplify run_script()
function old new delta packed_usage 26505 26518 +13 run_script 158 112 -46 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
aa4977d8e5
commit
79ae534ac7
@ -130,7 +130,7 @@
|
|||||||
"Options:" \
|
"Options:" \
|
||||||
"\n -v VAR=VAL Set variable" \
|
"\n -v VAR=VAL Set variable" \
|
||||||
"\n -F SEP Use SEP as field separator" \
|
"\n -F SEP Use SEP as field separator" \
|
||||||
"\n -f FILE Read program from file" \
|
"\n -f FILE Read program from FILE" \
|
||||||
|
|
||||||
#define basename_trivial_usage \
|
#define basename_trivial_usage \
|
||||||
"FILE [SUFFIX]"
|
"FILE [SUFFIX]"
|
||||||
@ -291,7 +291,7 @@
|
|||||||
"chat '' ATZ OK ATD123456 CONNECT '' ogin: pppuser word: ppppass '~'" \
|
"chat '' ATZ OK ATD123456 CONNECT '' ogin: pppuser word: ppppass '~'" \
|
||||||
|
|
||||||
#define chattr_trivial_usage \
|
#define chattr_trivial_usage \
|
||||||
"[-R] [-+=AacDdijsStTu] [-v version] files..."
|
"[-R] [-+=AacDdijsStTu] [-v VERSION] [FILE]..."
|
||||||
#define chattr_full_usage "\n\n" \
|
#define chattr_full_usage "\n\n" \
|
||||||
"Change file attributes on an ext2 fs\n" \
|
"Change file attributes on an ext2 fs\n" \
|
||||||
"\nModifiers:" \
|
"\nModifiers:" \
|
||||||
@ -4777,9 +4777,9 @@
|
|||||||
"\n -H,-h,--hostname=HOSTNAME Client hostname" \
|
"\n -H,-h,--hostname=HOSTNAME Client hostname" \
|
||||||
"\n -c,--clientid=CLIENTID Client identifier" \
|
"\n -c,--clientid=CLIENTID Client identifier" \
|
||||||
"\n -C,--clientid-none Suppress default client identifier" \
|
"\n -C,--clientid-none Suppress default client identifier" \
|
||||||
"\n -p,--pidfile=file Create pidfile" \
|
"\n -p,--pidfile=FILE Create pidfile" \
|
||||||
"\n -r,--request=IP IP address to request" \
|
"\n -r,--request=IP IP address to request" \
|
||||||
"\n -s,--script=file Run file at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" \
|
"\n -s,--script=FILE Run FILE at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" \
|
||||||
"\n -t,--retries=N Send up to N discover packets" \
|
"\n -t,--retries=N Send up to N discover packets" \
|
||||||
"\n -T,--timeout=N Pause between packets (default 3 seconds)" \
|
"\n -T,--timeout=N Pause between packets (default 3 seconds)" \
|
||||||
"\n -A,--tryagain=N Wait N seconds (default 20) after failure" \
|
"\n -A,--tryagain=N Wait N seconds (default 20) after failure" \
|
||||||
@ -4806,9 +4806,9 @@
|
|||||||
"\n -H,-h HOSTNAME Client hostname" \
|
"\n -H,-h HOSTNAME Client hostname" \
|
||||||
"\n -c CLIENTID Client identifier" \
|
"\n -c CLIENTID Client identifier" \
|
||||||
"\n -C Suppress default client identifier" \
|
"\n -C Suppress default client identifier" \
|
||||||
"\n -p file Create pidfile" \
|
"\n -p FILE Create pidfile" \
|
||||||
"\n -r IP IP address to request" \
|
"\n -r IP IP address to request" \
|
||||||
"\n -s file Run file at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" \
|
"\n -s FILE Run FILE at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" \
|
||||||
"\n -t N Send up to N request packets" \
|
"\n -t N Send up to N request packets" \
|
||||||
"\n -T N Try to get a lease for N seconds (default 3)" \
|
"\n -T N Try to get a lease for N seconds (default 3)" \
|
||||||
"\n -A N Wait N seconds (default 20) after failure" \
|
"\n -A N Wait N seconds (default 20) after failure" \
|
||||||
|
@ -119,29 +119,23 @@ struct globals {
|
|||||||
|
|
||||||
static int run_script(const char *action)
|
static int run_script(const char *action)
|
||||||
{
|
{
|
||||||
pid_t pid;
|
char *argv[5];
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
bb_error_msg("executing '%s %s %s'", G.script_name, G.iface, action);
|
bb_error_msg("executing '%s %s %s'", G.script_name, G.iface, action);
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
pid = vfork();
|
|
||||||
if (pid < 0) {
|
|
||||||
bb_perror_msg("fork");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pid == 0) {
|
argv[0] = (char*) G.script_name;
|
||||||
/* child */
|
argv[1] = (char*) G.iface;
|
||||||
execlp(G.script_name, G.script_name, G.iface, action, G.extra_arg, NULL);
|
argv[2] = (char*) action;
|
||||||
bb_perror_msg_and_die("can't execute '%s'", G.script_name);
|
argv[3] = (char*) G.extra_arg;
|
||||||
}
|
argv[4] = NULL;
|
||||||
|
|
||||||
/* parent */
|
/* r < 0 - can't exec, 0 <= r < 1000 - exited, >1000 - killed by sig (r-1000) */
|
||||||
wait(&r);
|
r = wait4pid(spawn(argv));
|
||||||
r = WEXITSTATUS(r);
|
|
||||||
|
|
||||||
bb_error_msg("exit code: %u", r);
|
bb_error_msg("exit code: %d", r);
|
||||||
return (option_mask32 & FLAG_IGNORE_RETVAL) ? 0 : r;
|
return (option_mask32 & FLAG_IGNORE_RETVAL) ? 0 : r;
|
||||||
|
|
||||||
#else /* insanity */
|
#else /* insanity */
|
||||||
|
Loading…
Reference in New Issue
Block a user