diff options
author | June McEnroe <june@causal.agency> | 2019-11-08 18:16:42 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2019-11-08 18:16:42 -0500 |
commit | ca22cbfab650ad9def1310f459d5003975a0912b (patch) | |
tree | 6660befce2045f6aea8b5f7386eb8b1188471c72 /config.c | |
parent | Only change AWAY status for registered clients (diff) | |
download | pounce-ca22cbfab650ad9def1310f459d5003975a0912b.tar.gz pounce-ca22cbfab650ad9def1310f459d5003975a0912b.zip |
Avoid calling getopt_long again after it returns -1
On GNU, calling getopt_long again will reset optind back to the first non-option argument, which would cause an infinite loop of reading the same configurtion file forever.
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/config.c b/config.c index a96cbb6..653ae16 100644 --- a/config.c +++ b/config.c @@ -42,7 +42,10 @@ int getopt_config( int argc, char *const *argv, const char *optstring, const struct option *longopts, int *longindex ) { - int opt = getopt_long(argc, argv, optstring, longopts, longindex); + static int opt; + if (opt >= 0) { + opt = getopt_long(argc, argv, optstring, longopts, longindex); + } if (opt >= 0) return opt; for (;;) { |