And committed, will be in 7.6 Thanks,
-Otto On Sun, Jun 02, 2024 at 08:32:28AM -0500, Don Wilburn wrote: > Oops. I'll try sending this to the bugs list for posterity. > > Thanks again, DW > > > On 6/2/24 3:22 AM, Otto Moerbeek wrote: > > Thanks, but please reply to the list. > > > > -Otot > > > > On Sat, Jun 01, 2024 at 09:25:26PM -0500, Don Wilburn wrote: > > > > > Thank you Otto! > > > > > > I followed your advice and successfully built a patched cribbage game. I > > > played several times and it looks right. I'd say go ahead and incorporate > > > the patch in all new releases. > > > > > > Apparently I'm the only person on earth who plays this game. I consider > > > this game a small part of BSD history, so I'm glad you kept it alive. > > > > > > Adios, DW > > > > > > > > > > > > > > > > > > > > > On 6/1/24 7:21 AM, Otto Moerbeek wrote: > > > > On Wed, May 29, 2024 at 08:05:14AM +0200, Otto Moerbeek wrote: > > > > > > > > > On Mon, May 27, 2024 at 09:21:34PM -0500, Don Wilburn wrote: > > > > > > > > > > > Dear OpenBSD, > > > > > > > > > > > > I recently upgraded from version 7.4 to 7.5. This broke the old > > > > > > cribbage > > > > > > game. This is included with OpenBSD, if you choose to install the > > > > > > games. > > > > > > > > > > > > I'm not a programmer, but I promise you this happened because > > > > > > ncurses was > > > > > > updated from version 5.7 to 6.4 > > > > > > > > > > > > The problem: > > > > > > > > > > > > Normally the game gives prompts for play options and cards. It's > > > > > > supposed > > > > > > to leave the prompt after the response, then advance to a new line. > > > > > > This > > > > > > gives a brief history of selections > > > > > > > > > > > > Now, starting with the third prompt (cut the cards), the prompts > > > > > > disappear > > > > > > when a response key is pressed. This ruins the game. The effect is > > > > > > obvious, > > > > > > even if you don't know how to play cribbage. > > > > > > > > > > > > It would be even more obvious if you have an older system to > > > > > > compare with a > > > > > > current v7.5 system. > > > > > > > > > > > > This happened to linux bsd-games many years ago. A search will > > > > > > indicate > > > > > > that I filed this same bug with Gentoo linux over 9 years ago. > > > > > > Linux > > > > > > classic bsd-games has been unmaintained since before that time. > > > > > > This is > > > > > > where I observed that the bug happened with a ncurses update. > > > > > > Nobody > > > > > > pursued the solution. > > > > > > > > > > > > I don't have the skills to butcher the game code to work with with > > > > > > the > > > > > > update of ncurses. Likewise, I don't know how to use a debugger or > > > > > > write a > > > > > > sample program to replicate the effect. I can't demonstrate WHY > > > > > > ncurses is > > > > > > the problem. Maybe it's the C compiler's fault? > > > > > > > > > > > > I still play this obsolete command line game. It's nostalgia, I > > > > > > guess. I > > > > > > know OpenBSD developers have really important things to maintain. > > > > > > If > > > > > > someone could spare some time for this little bug, I'd be happy. > > > > > > Maybe it > > > > > > could be delegated to a student? > > > > > > > > > > > > Thanks for reading, DW > > > > > > > > > > > One remains a student forever. > > > > > > > > > > Try this, it does not try to cut corners with switching windows. > > > > No response from the original reporter. > > > > > > > > Is anybody else interested in testing/reviewing? > > > > > > > > -Otto > > > > > > > > > Index: io.c > > > > > =================================================================== > > > > > RCS file: /home/cvs/src/games/cribbage/io.c,v > > > > > diff -u -p -r1.22 io.c > > > > > --- io.c 10 Jan 2016 13:35:09 -0000 1.22 > > > > > +++ io.c 29 May 2024 06:00:03 -0000 > > > > > @@ -505,14 +505,11 @@ get_line(void) > > > > > { > > > > > size_t pos; > > > > > int c, oy, ox; > > > > > - WINDOW *oscr; > > > > > - oscr = stdscr; > > > > > - stdscr = Msgwin; > > > > > - getyx(stdscr, oy, ox); > > > > > - refresh(); > > > > > + getyx(Msgwin, oy, ox); > > > > > + wrefresh(Msgwin); > > > > > /* loop reading in the string, and put it in a temporary buffer > > > > > */ > > > > > - for (pos = 0; (c = readchar()) != '\n'; clrtoeol(), refresh()) { > > > > > + for (pos = 0; (c = readchar()) != '\n'; wclrtoeol(Msgwin), > > > > > wrefresh(Msgwin)) { > > > > > if (c == -1) > > > > > continue; > > > > > if (c == ' ' && (pos == 0 || linebuf[pos - 1] == ' ')) > > > > > @@ -522,13 +519,13 @@ get_line(void) > > > > > int i; > > > > > pos--; > > > > > for (i = strlen(unctrl(linebuf[pos])); > > > > > i; i--) > > > > > - addch('\b'); > > > > > + waddch(Msgwin, '\b'); > > > > > } > > > > > continue; > > > > > } > > > > > if (c == killchar()) { > > > > > pos = 0; > > > > > - move(oy, ox); > > > > > + wmove(Msgwin, oy, ox); > > > > > continue; > > > > > } > > > > > if (pos >= LINESIZE - 1 || !(isalnum(c) || c == ' ')) { > > > > > @@ -538,12 +535,11 @@ get_line(void) > > > > > if (islower(c)) > > > > > c = toupper(c); > > > > > linebuf[pos++] = c; > > > > > - addstr(unctrl(c)); > > > > > + waddstr(Msgwin, unctrl(c)); > > > > > Mpos++; > > > > > } > > > > > while (pos < sizeof(linebuf)) > > > > > linebuf[pos++] = '\0'; > > > > > - stdscr = oscr; > > > > > return (linebuf); > > > > > } > > > > > >