Module Name:    src
Committed By:   blymn
Date:           Tue Jan 25 03:05:06 UTC 2022

Modified Files:
        src/lib/libcurses: add_wchstr.c addbytes.c background.c border.c
            clrtobot.c clrtoeol.c cr_put.c curses_private.h delch.c erase.c
            in_wch.c in_wchstr.c ins_wch.c ins_wstr.c insch.c insdelln.c
            insstr.c inwstr.c newwin.c refresh.c resize.c slk.c

Log Message:
Correct (hopefully) the handling of wide characters.

* Remove the WCOL family of macros, these were "stealing" the upper bits
  of a character attribute to store the column width of a character.  No
  warning was given about this in curses.h which meant it was easy to
  accidentally reuse the bits in use by the WCOL macros (we already did).
  Add couple of 16bit ints to the character structure iff HAVE_WCHAR is
  true to hold the display width and wide char related flags (just
  continuation at the moment)
* Convert all instances of WCOL macros to just reference the column width
  in the char structure so it is not obfuscated.
* Fix cursor positioning so placing a cursor in the middle of a wide char
  actually does just that.
* Fix plod so it understands that if the cursor is going to be positioned
  in the middle of a wide char it cannot just reprint the char to get there.
* Fix plodput so it correctly counts the number of output characters for
  wide characters.
* Fix slk routines to properly size the wctomb() buffer.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/lib/libcurses/add_wchstr.c
cvs rdiff -u -r1.60 -r1.61 src/lib/libcurses/addbytes.c
cvs rdiff -u -r1.27 -r1.28 src/lib/libcurses/background.c \
    src/lib/libcurses/clrtobot.c
cvs rdiff -u -r1.21 -r1.22 src/lib/libcurses/border.c \
    src/lib/libcurses/ins_wstr.c
cvs rdiff -u -r1.32 -r1.33 src/lib/libcurses/clrtoeol.c
cvs rdiff -u -r1.37 -r1.38 src/lib/libcurses/cr_put.c
cvs rdiff -u -r1.76 -r1.77 src/lib/libcurses/curses_private.h
cvs rdiff -u -r1.26 -r1.27 src/lib/libcurses/delch.c \
    src/lib/libcurses/insch.c
cvs rdiff -u -r1.33 -r1.34 src/lib/libcurses/erase.c \
    src/lib/libcurses/resize.c
cvs rdiff -u -r1.7 -r1.8 src/lib/libcurses/in_wch.c
cvs rdiff -u -r1.9 -r1.10 src/lib/libcurses/in_wchstr.c \
    src/lib/libcurses/insstr.c src/lib/libcurses/inwstr.c
cvs rdiff -u -r1.17 -r1.18 src/lib/libcurses/ins_wch.c
cvs rdiff -u -r1.19 -r1.20 src/lib/libcurses/insdelln.c
cvs rdiff -u -r1.63 -r1.64 src/lib/libcurses/newwin.c
cvs rdiff -u -r1.117 -r1.118 src/lib/libcurses/refresh.c
cvs rdiff -u -r1.18 -r1.19 src/lib/libcurses/slk.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Reply via email to