diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2018-09-18 23:24:58 +0900 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2018-09-18 16:24:58 +0200 |
commit | 010d436e020ab4af57a8b9fc38918f551acc875b (patch) | |
tree | 01ef23937d49fa41ec7369c3a361093d905a4ea7 | |
parent | 047de7e1b17ad1375502c08cc1b909f28a92bdac (diff) | |
download | systemd-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.c | 6 |
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, |