summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-11-08 18:16:42 -0500
committerJune McEnroe <june@causal.agency>2019-11-08 18:16:42 -0500
commitca22cbfab650ad9def1310f459d5003975a0912b (patch)
tree6660befce2045f6aea8b5f7386eb8b1188471c72
parentOnly change AWAY status for registered clients (diff)
downloadpounce-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 '')
-rw-r--r--config.c5
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 (;;) {
of chat.hJune McEnroe 2020-02-11Fix whois idle unit calculationJune McEnroe 2020-02-11Cast towupper to wchar_tJune McEnroe 2020-02-11Cast set but unused variables to voidJune McEnroe 2020-02-11Declare strlcatJune McEnroe 2020-02-11Check if VDSUSP existsJune McEnroe 2020-02-11Fix completeReplace iterationJune McEnroe 2020-02-11Use pkg(8) to configure on FreeBSDJune McEnroe 2020-02-11Remove legacy codeJune McEnroe 2020-02-11Add INSTALLING section to READMEJune McEnroe