diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-03-21 10:05:33 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-03-29 10:34:41 +0900 |
commit | ef9c12b157a50d63e8a8eb710c013d16c2cea319 (patch) | |
tree | 62406cd13da67e6aadd80b2fad3bf2b5d31aa313 /src/udev | |
parent | dd2d3e975e80f5ae3b64bd9c2b63d866415c764e (diff) | |
download | systemd-ef9c12b157a50d63e8a8eb710c013d16c2cea319.tar.gz |
tree-wide: reset optind to 0 when GNU extensions in optstring are used
Otherwise, if getopt() and friends are used before parse_argv(), then
the GNU extensions may be ignored.
This should not change any behavior at least now, as we usually use
getopt_long() only once per invocation. But in the next commit,
getopt_long() will be used for other arrays, hence this change will
become necessary.
Diffstat (limited to 'src/udev')
-rw-r--r-- | src/udev/udevadm-lock.c | 3 | ||||
-rw-r--r-- | src/udev/udevadm.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/udev/udevadm-lock.c b/src/udev/udevadm-lock.c index d19e7561f8..6d8a5c336f 100644 --- a/src/udev/udevadm-lock.c +++ b/src/udev/udevadm-lock.c @@ -75,6 +75,9 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); + /* Resetting to 0 forces the invocation of an internal initialization routine of getopt_long() + * that checks for GNU extensions in optstring ('-' or '+' at the beginning). */ + optind = 0; while ((c = getopt_long(argc, argv, arg_print ? "hVd:b:t:p" : "+hVd:b:t:p", options, NULL)) >= 0) switch (c) { diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c index 30a72f2a42..b803f7bb0f 100644 --- a/src/udev/udevadm.c +++ b/src/udev/udevadm.c @@ -62,6 +62,9 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); + /* Resetting to 0 forces the invocation of an internal initialization routine of getopt_long() + * that checks for GNU extensions in optstring ('-' or '+' at the beginning). */ + optind = 0; while ((c = getopt_long(argc, argv, "+dhV", options, NULL)) >= 0) switch (c) { |