]> granicus.if.org Git - nethack/commitdiff
tty_askname() fix [#if UNIX || VMS]
authornethack.rankin <nethack.rankin>
Tue, 12 Dec 2006 05:15:07 +0000 (05:15 +0000)
committernethack.rankin <nethack.rankin>
Tue, 12 Dec 2006 05:15:07 +0000 (05:15 +0000)
     Typing a response at the "Who are you?" prompt didn't allow digits in
the character's name under Unix and VMS; something like "arc15" came out
as "arc__".  This allows them to be used anywhere except for the first
character.  "arc15" now works; "15arc" ends up as "_5arc" so that there
still won't be a leading digit abutting the uid value when they're joined
to form the save file name.

doc/fixes34.4
win/tty/wintty.c

index 75733ed1a9894f2f85e908418be8329e681a31d9..e9bad346256462ce76c6c0eab20d1fde7438a86e 100644 (file)
@@ -296,6 +296,7 @@ tty: when loading user's run-time configuration, explicitly negating one of
        to regular ASCII and left the earlier option inaccurately set to "on"
 unix: remove use of parentheses in nethack man page usage that confused a
        man page conversion tool
+unix,vms: allow digits after first character in name at "Who are you?" prompt
 winCE: disable processing of double-click messages if the first click
        causes map to scroll
 Windows, probably MSDOS and OS/2: attempting to use very first false rumor
index d7815381ab133cc84293136d2a31b93b1b5e7b8d..e67ba77df9056bf003621625bcb16af7178432bc 100644 (file)
@@ -754,7 +754,11 @@ tty_askname()
                }
 #if defined(UNIX) || defined(VMS)
                if(c != '-' && c != '@')
-               if(c < 'A' || (c > 'Z' && c < 'a') || c > 'z') c = '_';
+               if (!(c >= 'a' && c <= 'z') && !(c >= 'A' && c <= 'Z') &&
+                   /* reject leading digit but allow digits elsewhere
+                      (avoids ambiguity when character name gets
+                      appended to uid to construct save file name) */
+                   !(c >= '0' && c <= '9' && ct > 0)) c = '_';
 #endif
                if (ct < (int)(sizeof plname) - 1) {
 #if defined(MICRO)