From 575b76afc37c7f3dfc4998c953d9c365d8f6caf4 Mon Sep 17 00:00:00 2001 From: PatR Date: Fri, 1 Apr 2022 05:22:20 -0700 Subject: [PATCH] sengr_at() schizophrenia sengr_at() is used as a boolean, declared as int, and returns FALSE if there is no engraving present. Change the declaration to boolean. Also, using fuzzymatch() without any list of ignorable characters just to get case-insensitve matching didn't make sense so switch to strcmpi(). --- include/extern.h | 2 +- src/engrave.c | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/extern.h b/include/extern.h index afc254024..73c108b8b 100644 --- a/include/extern.h +++ b/include/extern.h @@ -778,7 +778,7 @@ extern void cant_reach_floor(int, int, boolean, boolean); extern const char *surface(int, int); extern const char *ceiling(int, int); extern struct engr *engr_at(xchar, xchar); -extern int sengr_at(const char *, xchar, xchar, boolean); +extern boolean sengr_at(const char *, xchar, xchar, boolean); extern void u_wipe_engr(int); extern void wipe_engr_at(xchar, xchar, xchar, boolean); extern void read_engr_at(int, int); diff --git a/src/engrave.c b/src/engrave.c index 9e6384cb2..5f071a3dc 100644 --- a/src/engrave.c +++ b/src/engrave.c @@ -268,16 +268,15 @@ engr_at(xchar x, xchar y) * If strict checking is requested, the word is only considered to be * present if it is intact and is the entire content of the engraving. */ -int +boolean sengr_at(const char *s, xchar x, xchar y, boolean strict) { register struct engr *ep = engr_at(x, y); if (ep && ep->engr_type != HEADSTONE && ep->engr_time <= g.moves) { - return strict ? (fuzzymatch(ep->engr_txt, s, "", TRUE)) - : (strstri(ep->engr_txt, s) != 0); + return (strict ? !strcmpi(ep->engr_txt, s) + : (strstri(ep->engr_txt, s) != 0)); } - return FALSE; }