mirror of
https://github.com/troglobit/finit.git
synced 2026-10-02 14:02:52 +07:00
initctl: iterate command over all args, e.g. delete foo bar baz
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
+12
-10
@@ -737,8 +737,6 @@ static int do_help(char *arg)
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int interactive = 1, c;
|
|
||||||
char *cmd, arg[120];
|
|
||||||
struct command command[] = {
|
struct command command[] = {
|
||||||
{ "debug", toggle_debug },
|
{ "debug", toggle_debug },
|
||||||
{ "help", do_help },
|
{ "help", do_help },
|
||||||
@@ -783,6 +781,8 @@ int main(int argc, char *argv[])
|
|||||||
{ "verbose", 0, NULL, 'v' },
|
{ "verbose", 0, NULL, 'v' },
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
int interactive = 1, c;
|
||||||
|
char *cmd;
|
||||||
|
|
||||||
if (transform(progname(argv[0])))
|
if (transform(progname(argv[0])))
|
||||||
return reboot_main(argc, argv);
|
return reboot_main(argc, argv);
|
||||||
@@ -831,21 +831,23 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(arg, 0, sizeof(arg));
|
|
||||||
cmd = argv[optind++];
|
cmd = argv[optind++];
|
||||||
while (optind < argc) {
|
|
||||||
strlcat(arg, argv[optind++], sizeof(arg));
|
|
||||||
if (optind < argc)
|
|
||||||
strlcat(arg, " ", sizeof(arg));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (c = 0; command[c].cmd; c++) {
|
for (c = 0; command[c].cmd; c++) {
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
if (!string_match(command[c].cmd, cmd))
|
if (!string_match(command[c].cmd, cmd))
|
||||||
continue;
|
continue;
|
||||||
if (!command[c].cb)
|
if (!command[c].cb)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
return command[c].cb(arg);
|
/* no arg, just a command, e.g. initctl ls */
|
||||||
|
if (optind >= argc)
|
||||||
|
return command[c].cb(NULL);
|
||||||
|
|
||||||
|
/* >=1 arg, e.g., initctl del foo bar baz */
|
||||||
|
while (optind < argc)
|
||||||
|
rc |= command[c].cb(argv[optind++]);
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
return usage(1);
|
return usage(1);
|
||||||
|
|||||||
Reference in New Issue
Block a user