From 000f2395349552a9c1a08f634f1c5d1ed5417b1f Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Thu, 12 Apr 2007 10:40:51 +0000 Subject: Fix getopt a little --- src/mountinfo.c | 5 ++--- src/runscript.c | 27 ++++++++++++++++----------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/mountinfo.c b/src/mountinfo.c index 50e0716d..b7cc1b14 100644 --- a/src/mountinfo.c +++ b/src/mountinfo.c @@ -36,7 +36,6 @@ static char **find_mounts (regex_t *node_regex, regex_t *fstype_regex, int nmnts; int i; char **list = NULL; - char c; if ((nmnts = getmntinfo (&mnts, MNT_NOWAIT)) == 0) eerrorx ("getmntinfo: %s", strerror (errno)); @@ -155,7 +154,7 @@ int main (int argc, char **argv) { NULL, 0, NULL, 0} }; - while ((c = getopt_long (argc, argv, "F:N:S;fnr", + while ((c = getopt_long (argc, argv, "F:N:S:fnr", longopts, (int *) 0)) != -1) switch (c) { case 'F': @@ -182,7 +181,7 @@ int main (int argc, char **argv) } break; - case 'R': + case 'S': if (skip_regex) free (skip_regex); skip_regex = rc_xmalloc (sizeof (regex_t)); diff --git a/src/runscript.c b/src/runscript.c index 24512e25..ee32253a 100644 --- a/src/runscript.c +++ b/src/runscript.c @@ -824,13 +824,11 @@ int main (int argc, char **argv) { "nocolor", 0, NULL, 'C'}, { "nocolour", 0, NULL, 'C'}, { "nodeps", 0, NULL, 'D'}, + { "quiet", 0, NULL, 'q'}, { "verbose", 0, NULL, 'v'}, { NULL, 0, NULL, 0} }; - applet = strdup (basename (service)); - atexit (cleanup); - /* Show help if insufficient args */ if (argc < 3) { execl (RCSCRIPT_HELP, RCSCRIPT_HELP, service, (char *) NULL); @@ -838,6 +836,9 @@ int main (int argc, char **argv) applet, strerror (errno)); } + applet = strdup (basename (service)); + atexit (cleanup); + #ifdef __linux__ /* coldplug events can trigger init scripts, but we don't want to run them until after rc sysinit has completed so we punt them to the boot runlevel */ @@ -911,19 +912,15 @@ int main (int argc, char **argv) free (eb); } - /* Save the IN_BACKGROUND env flag so it's ONLY passed to the service - that is being called and not any dependents */ - if (getenv ("IN_BACKGROUND")) { - in_background = rc_is_env ("IN_BACKGROUND", "true"); - ibsave = strdup (getenv ("IN_BACKGROUND")); - unsetenv ("IN_BACKGROUND"); - } - #ifdef __linux__ /* Ok, we are ready to go, so setup selinux if applicable */ setup_selinux (argc, argv); #endif + /* Punt the first arg as it's our service name */ + argc--; + argv++; + /* Right then, parse any options there may be */ while ((c = getopt_long (argc, argv, "dhCDNqv", longopts, (int *) 0)) != -1) @@ -951,6 +948,14 @@ int main (int argc, char **argv) exit (EXIT_FAILURE); } + /* Save the IN_BACKGROUND env flag so it's ONLY passed to the service + that is being called and not any dependents */ + if (getenv ("IN_BACKGROUND")) { + in_background = rc_is_env ("IN_BACKGROUND", "true"); + ibsave = strdup (getenv ("IN_BACKGROUND")); + unsetenv ("IN_BACKGROUND"); + } + if (rc_is_env ("IN_HOTPLUG", "1")) { if (! rc_is_env ("RC_HOTPLUG", "yes") || ! rc_allow_plug (applet)) eerrorx ("%s: not allowed to be hotplugged", applet); -- cgit v1.2.3