summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2018-09-18 23:24:58 +0900
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-09-18 16:24:58 +0200
commit010d436e020ab4af57a8b9fc38918f551acc875b (patch)
tree01ef23937d49fa41ec7369c3a361093d905a4ea7
parent047de7e1b17ad1375502c08cc1b909f28a92bdac (diff)
downloadsystemd-010d436e020ab4af57a8b9fc38918f551acc875b.tar.gz
systemd-010d436e020ab4af57a8b9fc38918f551acc875b.tar.bz2
systemd-010d436e020ab4af57a8b9fc38918f551acc875b.zip
verbs: reset optind (#10116)
optind may be used in each verb, e.g., udevadm. So, let's initialize optind before calling verbs. Without this, e.g., udevadm -d hwdb --update causes error in parsing arguments.
-rw-r--r--src/basic/verbs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/basic/verbs.c b/src/basic/verbs.c
index 1893ea3733..34c7708080 100644
--- a/src/basic/verbs.c
+++ b/src/basic/verbs.c
@@ -59,7 +59,9 @@ int dispatch_verb(int argc, char *argv[], const Verb verbs[], void *userdata) {
assert(argc >= optind);
left = argc - optind;
- name = argv[optind];
+ argv += optind;
+ optind = 0;
+ name = argv[0];
for (i = 0;; i++) {
bool found;
@@ -116,7 +118,7 @@ int dispatch_verb(int argc, char *argv[], const Verb verbs[], void *userdata) {
}
if (name)
- return verb->dispatch(left, argv + optind, userdata);
+ return verb->dispatch(left, argv, userdata);
else {
char* fake[2] = {
(char*) verb->verb,