]> git.cameronkatri.com Git - bsdgames-darwin.git/commit
cgram: rewrite completely, fixing bugs and style
authorrillig <rillig@NetBSD.org>
Sun, 21 Feb 2021 20:33:42 +0000 (20:33 +0000)
committerCameron Katri <me@cameronkatri.com>
Tue, 13 Apr 2021 19:28:33 +0000 (15:28 -0400)
commit6535b2e014adf4ec8033eaf18a55e8476d124cda
tree0358a9a7bd9da6d6150fb2abe872d48b5effe236
parenteddba41ef6625aba9839b88ff828073e89008051
cgram: rewrite completely, fixing bugs and style

Fixed bugs:

Do not consider the puzzle solved if all letters in the visible area are
substituted correctly.  To be properly solved, the whole puzzle must be
solved, even those parts that are currently off-screen.

Never place the cursor at the very right edge of the screen since that
does not work well with some terminals.  The maximum valid x coordinate
is COLS - 1.

Add horizontal scrolling.  Make all coordinate handling symmetric in
regard to the horizontal and vertical axes.  Previously, lines longer
than 80 characters could not be seen on the screen.

Improvements:

Remove the arbitrary limit of 128 characters per line.  Even if
fortune(6) may never generate such long lines, the code is easy enough
to adapt to other sources.

Properly clean up the allocated memory.  Previously, only the string
arrays were freed but not the strings themselves.

Stylistic:

Add RCS ID.

Fix ctype functions in lint's strict bool mode.

Avoid excessive calls to strlen whenever the cursor moves.  Given that
the whole screen is redrawn every time a key is pressed, this is an
unnecessary optimization, but the code smelled nevertheless.
cgram/cgram.c