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);
> > > > >    }
> > > > > 
> 

Reply via email to