From 8e31929ef56c00cae8b19ff5dde02b880c35b1a1 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Mon, 9 Mar 2015 18:42:53 +0200 Subject: [PATCH] Define for generic usernames which prompt for name Instead of hard-coding the "play", "player", etc. usernames which will prompt the user for their name, allow defining the names in config.h --- include/config.h | 5 +++++ src/role.c | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/config.h b/include/config.h index d8b067fc7..930bd549c 100644 --- a/include/config.h +++ b/include/config.h @@ -316,6 +316,11 @@ #endif /* CHDIR */ +/* If GENERIC_USERNAMES is defined, and the user name is found + * in that list, prompt for username instead. + * A public server should probably disable this. */ +#define GENERIC_USERNAMES "play player game games nethack nethacker" + /* * Section 3: Definitions that may vary with system type. diff --git a/src/role.c b/src/role.c index 59624c528..2e2cbabae 100644 --- a/src/role.c +++ b/src/role.c @@ -1332,12 +1332,15 @@ plnamesuffix() char *sptr, *eptr; int i; +#ifdef GENERIC_USERNAMES /* some generic user names will be ignored in favor of prompting */ i = (int)strlen(plname); - if ((i >= 4 && !strncmpi(plname, "player", i)) || /* play[er] */ - (i >= 4 && !strncmpi(plname, "games", i)) || /* game[s] */ - (i >= 7 && !strncmpi(plname, "nethacker", i))) /* nethack[er] */ + eptr = GENERIC_USERNAMES; + sptr = strstri(eptr, plname); + if (sptr && ((sptr == eptr && (sptr[i] == ' ' || sptr[i] == '\0')) + || sptr[i] == ' ' || sptr[i] == '\0')) *plname = '\0'; /* call askname() */ +#endif do { if (!*plname) askname(); /* fill plname[] if necessary */ -- 2.40.0