From: PatR Date: Sat, 29 Oct 2022 06:26:39 +0000 (-0700) Subject: fix RC file CHOOSE '[section] #comment' X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ad74d9e4070cf3e27712afd31b7b0cc0eaa7645b;p=nethack fix RC file CHOOSE '[section] #comment' Two years ago I modified the parsing for [section] labels for the config file's CHOOSE directive to allow end-of-line comments, but the code used had a logic error (don't think I can blame it on copy+paste). It looked for '#' after ']' but allowed anything-- rather than just spaces--in between. "[section-name]abc#comment" would become "section-name" as if the trailing junk hadn't been present. Parsing that should produce "section-name]abc" and get rejected as invalid. --- diff --git a/src/files.c b/src/files.c index 7642c3a8e..464aecde7 100644 --- a/src/files.c +++ b/src/files.c @@ -2317,8 +2317,8 @@ free_config_sections(void) with spaces optional; returns pointer to "anything-except..." (with trailing " ] #..." stripped) if ok, otherwise Null */ static char * -is_config_section(char *str) /* trailing spaces will be stripped, - ']' too iff result is good */ +is_config_section( + char *str) /* trailing spaces are stripped, ']' too iff result is good */ { char *a, *c, *z; @@ -2332,7 +2332,8 @@ is_config_section(char *str) /* trailing spaces will be stripped, z = index(a, ']'); if (!z) return (char *) 0; - for (c = z + 1; *c && *c != '#'; ++c) + /* comment, if present, can be preceded by spaces */ + for (c = z + 1; *c == ' '; ++c) continue; if (*c && *c != '#') return (char *) 0;