symset parsing
Add support for character enclosed within single quotes. Single character without quotes would work for most characters, but not '#' and possibly not '^' or '\\'. All the values in dat/symbols are specified via backslash+digits so it isn't obvious that some other form of value is allowed. I think this parsing accepts all valid values. It doesn't reject all invalid ones: opening quote followed by valid escape sequence followed by junk followed by closing quote will ignore the junk. I don't think there's any pressing need to worry about that.
This commit is contained in:
17
src/files.c
17
src/files.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 files.c $NHDT-Date: 1455835581 2016/02/18 22:46:21 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.204 $ */
|
||||
/* NetHack 3.6 files.c $NHDT-Date: 1459987580 2016/04/07 00:06:20 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.205 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -2820,14 +2820,13 @@ int which_set;
|
||||
mungspaces(buf);
|
||||
if (!*buf || *buf == '#' || !strcmp(buf, " "))
|
||||
return 1;
|
||||
/* remove trailing comment, if any */
|
||||
if ((commentp = rindex(buf, '#')) != 0) {
|
||||
*commentp = '\0';
|
||||
/* remove space preceding the stripped comment, if any;
|
||||
we know 'commentp > buf' because *buf=='#' was caught above */
|
||||
if (commentp[-1] == ' ')
|
||||
*--commentp = '\0';
|
||||
}
|
||||
/* remove trailing comment, if any (this isn't strictly needed for
|
||||
individual symbols, and it won't matter if "X#comment" without
|
||||
separating space slips through; for handling or set description,
|
||||
symbol set creator is responsible for preceding '#' with a space
|
||||
and that comment itself doesn't contain " #") */
|
||||
if ((commentp = rindex(buf, '#')) != 0 && commentp[-1] == ' ')
|
||||
commentp[-1] = '\0';
|
||||
|
||||
/* find the '=' or ':' */
|
||||
bufp = index(buf, '=');
|
||||
|
||||
Reference in New Issue
Block a user