From 423bce2bf62abe1b941f452695f106bd30f32f4c Mon Sep 17 00:00:00 2001 From: PatR Date: Wed, 6 Nov 2019 10:06:59 -0800 Subject: [PATCH 1/2] fix #H9407 - "butterfiles" Feedback when playing music while hallucinating misspelled "butterflies". Other bits in the same code (not part of #H9407): All feedback messages while impaired gave "You produce " which was immediately followed by many of the instruments giving their own "You produce ." Change the verb for the playing-while-impaired messages to avoid having two consecutive "you produce" ones. Also, multiple impairments (two or more of stunned, confused, and hallucinating) always gave the generic "what you produce is far from music" message. Have them sometimes ignore excess impairments to give the message for one of those. --- doc/fixes36.3 | 3 ++- src/music.c | 27 ++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 5443c831e..709d11a3d 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.159 $ $NHDT-Date: 1572892926 2019/11/04 18:42:06 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.161 $ $NHDT-Date: 1573063606 2019/11/06 18:06:46 $ This fixes36.3 file is here to capture information about updates in the 3.6.x lineage following the release of 3.6.2 in May 2019. Please note, however, @@ -217,6 +217,7 @@ some other deafness-related message corrections when dipping into holy/unholy water while blind (where the glow message is suppressed), clear dipped item's bknown flag unless water potion's bless/curse state is known +playing music while hallucinating: message misspelled "butterflies" Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/src/music.c b/src/music.c index 53baeb42e..4f125793b 100644 --- a/src/music.c +++ b/src/music.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 music.c $NHDT-Date: 1572833563 2019/11/04 02:12:43 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.58 $ */ +/* NetHack 3.6 music.c $NHDT-Date: 1573063606 2019/11/06 18:06:46 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.60 $ */ /* Copyright (c) 1989 by Jean-Christophe Collet */ /* NetHack may be freely redistributed. See license for details. */ @@ -511,24 +511,41 @@ struct obj *instr; if (Hallucination) mode |= PLAY_HALLU; + if (!rn2(2)) { + /* + * TEMPORARY? for multiple impairments, don't always + * give the generic "it's far from music" message. + */ + /* remove if STUNNED+CONFUSED ever gets its own message below */ + if (mode == (PLAY_STUNNED | PLAY_CONFUSED)) + mode = !rn2(2) ? PLAY_STUNNED : PLAY_CONFUSED; + /* likewise for stunned and/or confused combined with hallucination */ + if (mode & PLAY_HALLU) + mode = PLAY_HALLU; + } + + /* 3.6.3: most of these gave "You produce " and then many of + the instrument-specific messages below which immediately follow + also gave "You produce ." That looked strange so we + now use a different verb here */ switch (mode) { case PLAY_NORMAL: You("start playing %s.", yname(instr)); break; case PLAY_STUNNED: if (!Deaf) - You("produce an obnoxious droning sound."); + You("radiate an obnoxious droning sound."); else You_feel("a monotonous vibration."); break; case PLAY_CONFUSED: if (!Deaf) - You("produce a raucous noise."); + You("generate a raucous noise."); else You_feel("a jarring vibration."); break; case PLAY_HALLU: - You("produce a kaleidoscopic display of floating butterfiles."); + You("disseminate a kaleidoscopic display of floating butterflies."); break; /* TODO? give some or all of these combinations their own feedback; hallucination ones should reference senses other than hearing... */ @@ -537,7 +554,7 @@ struct obj *instr; case PLAY_CONFUSED | PLAY_HALLU: case PLAY_STUNNED | PLAY_CONFUSED | PLAY_HALLU: default: - pline("What you produce is quite far from music..."); + pline("What you perform is quite far from music..."); break; } #undef PLAY_NORMAL From d13911495c8ec69bcf113f9228039c3834dd3887 Mon Sep 17 00:00:00 2001 From: PatR Date: Wed, 6 Nov 2019 10:52:48 -0800 Subject: [PATCH 2/2] unix USE_FCNTL vs 'perm' Reported directly to devteam, the POSIX_TYPES subset (most? all these days?) of Unix that defines USE_FCNTL was unlocking lock file 'perm' when done with it but wasn't explicitly closing it unless the unlocking failed. Triggered a valgrind complaint and could have posed a problem if restart gets implemented for this configuraiton. --- doc/fixes36.3 | 3 ++- src/files.c | 15 ++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 709d11a3d..d9db05039 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.161 $ $NHDT-Date: 1573063606 2019/11/06 18:06:46 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.162 $ $NHDT-Date: 1573066356 2019/11/06 18:52:36 $ This fixes36.3 file is here to capture information about updates in the 3.6.x lineage following the release of 3.6.2 in May 2019. Please note, however, @@ -269,6 +269,7 @@ EDIT_GETLIN: using 'O' to set message types or menu colors was overloading the during repeat prompting EDIT_GETLIN: for paranoid confirmation, if answer was neither "yes" nor "no", don't supply the rejected answer as the default when retrying +USE_FCNTL: nethack wasn't closing lock file 'perm' curses: very tall menus tried to use selector characters a-z, A-Z, and 0-9, but 0-9 should be reserved for counts and if the display was tall enough for more than 62 entries, arbitrary ASCII punctuation got used diff --git a/src/files.c b/src/files.c index f89e5e061..c8bdb8ce1 100644 --- a/src/files.c +++ b/src/files.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 files.c $NHDT-Date: 1571347976 2019/10/17 21:32:56 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.254 $ */ +/* NetHack 3.6 files.c $NHDT-Date: 1573066357 2019/11/06 18:52:37 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.260 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Derek S. Ray, 2015. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1644,7 +1644,7 @@ boolean uncomp; static int nesting = 0; #if defined(NO_FILE_LINKS) || defined(USE_FCNTL) /* implies UNIX */ -static int lockfd; /* for lock_file() to pass to unlock_file() */ +static int lockfd = -1; /* for lock_file() to pass to unlock_file() */ #endif #ifdef USE_FCNTL struct flock sflock; /* for unlocking, same as above */ @@ -1756,7 +1756,7 @@ int retryct; return FALSE; } #else - register int errnosv = errno; + int errnosv = errno; switch (errnosv) { /* George Barbanis */ case EEXIST: @@ -1867,9 +1867,10 @@ const char *filename; if (nesting == 1) { #ifdef USE_FCNTL sflock.l_type = F_UNLCK; - if (fcntl(lockfd, F_SETLK, &sflock) == -1) { - HUP raw_printf("Can't remove fcntl lock on %s.", filename); - (void) close(lockfd); + if (lockfd >= 0) { + if (fcntl(lockfd, F_SETLK, &sflock) == -1) + HUP raw_printf("Can't remove fcntl lock on %s.", filename); + (void) close(lockfd), lockfd = -1; } #else lockname = make_lockname(filename, locknambuf); @@ -1881,7 +1882,7 @@ const char *filename; if (unlink(lockname) < 0) HUP raw_printf("Can't unlink %s.", lockname); #ifdef NO_FILE_LINKS - (void) nhclose(lockfd); + (void) nhclose(lockfd), lockfd = -1; #endif #endif /* UNIX || VMS */