X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=TO-DO;h=caefedd8a9c7e04b093bcc8231d406d1c36f12c4;hp=8e4d6f27a721a6757059781c68a7bf6c35a6c09c;hb=55ccd2b959766810cf7db8d1c4462f338ce0afc8;hpb=3a9b6a3bf0269231bef7de74757a910dedd04e0c;ds=sidebyside diff --git a/TO-DO b/TO-DO index 8e4d6f27..caefedd8 100644 --- a/TO-DO +++ b/TO-DO @@ -1,90 +1,72 @@ +-- $Id: TO-DO,v 1.45 2005/08/20 20:53:04 tom Exp $ + SHORT-TERM TO-DO ITEMS: Known Problems: -* The screen optimization has been tested only in an ad hoc manner. We should ++ libtool does not work with GNAT. + ++ The screen optimization has been tested only in an ad hoc manner. We should develop a good set of regression tests to cover lib_doupdate.c and lib_mvcur.c. -* Ncurses cursor movement does not make effective use of hard tabs, as SVr4 - does. - -* Scrolling optimization has holes: for example, the ncurses 'p' test, which - exercises scrolling in a pad does not (1996/12/24) use scrolling regions. - Also, running other tests shows that scrolling optimization forces repaints - of the screen between calls to refresh(). ++ Magic cookie support does not work, since the logic does not take into + account refresh. Also, the initial optimize does not adjust the current + location when a cookie is emitted. -* The stacking order of windows on the screen does not match that implemented - in SVr4 (e.g., Solaris curses). XSI doesn't specify a stacking order, so - full compatibility for this behavior must be achieved by testing/analysis. ++ Scrolling optimization has holes: for example, it forces repaints of the + screen between calls to refresh(). -* The ncurses 'o' test does not behave the same on SVr4 (Solaris) as with - ncurses (the latter pops windows up more). The former also produces 20% - fewer characters in a 'script' output. Further analysis is needed. - -* SVr4 uses slightly different rules for determining when softkeys are shown. ++ SVr4 uses slightly different rules for determining when softkeys are shown. For example, they are initially displayed (before the ncurses 'e' test activates them), and a touchwin can apparently also force them to be displayed. -* The code departs from perfect 8-bit cleanness in one respect; you cannot - specify a character \200 as part of a capability string, because the terminfo - library interprets \200 as a request to embed NUL (\000) at that point (the - actual code that does this is in ncurses/lib_options.c:add_keytry(). - This is a legacy terminfo property we can't mess with. ++ The code departs from perfect 8-bit cleanness in one respect; you cannot + specify a character \200 as part of a capability string, because the + terminfo library interprets \200 as a request to embed NUL (\000) at that + point. This is a legacy terminfo property we can't mess with. -* Recognition of xterm mouse reports is implemented by setting the kmous - capability to the mouse-report prefix. As a result, the kmous sequence is - eaten even when mouse recognition is disabled. This could be fixed if - necessary with special code that pokes the kmous value back into the - input FIFO when KEY_MOUSE is seen and the mousemask is zero, but that would - be kind of ugly. ++ The window classes defined in the c++ subdirectory need documentation. Some + C++ programmer could earn a lot of good karma by doing this... -* The window classes defined in the c++ subdirectory need documentation. - Some C++ programmer could earn a lot of good karma by doing this... ++ The resizeterm() function does not handle ripped-off lines such as that done + for the slk_XXX functions. Portability (or lack thereof): -* Users of older System V UNIXes (but not Solaris, and probably not SVr4) - may trip over a known problem with the signal-handling code which causes - abrupt termination of ncurses applications following resume from a ^Z - suspend (this problem was first seen running lynx). You will not see - this problem if you are running Linux or one of the 4.4BSD derivatives - like FreeBSD, NetBSD, or BSDI. For details, see the analysis in the - header comment of ncurses/lib_tstp.c. ++ Users of older System V UNIXes (but not Solaris, and probably not SVr4) may + trip over a known problem with the signal-handling code which causes abrupt + termination of ncurses applications following resume from a ^Z suspend (this + problem was first seen running lynx). You will not see this problem if you + are running Linux or one of the 4.4BSD derivatives like FreeBSD, NetBSD, or + BSDI. For details, see the analysis in the header comment of + ncurses/tty/lib_tstp.c . -* In theory, vwprintw and vwscanf are supposed to use the older varargs.h ++ In theory, vwprintw and vwscanf are supposed to use the older varargs.h interface for handling variadic argument lists. Linux doesn't have - varargs.h, it has the newer X/Open-standard stdargs.h equivalent. So - these functions use stdargs instead. This is unlikely to be a problem - unless you're building ncurses on a System V old enough to only have - varargs.h. - -* If you're using a BSD earlier than 4.4BSD, or a Linux old enough not to - have a native vsscanf(3) in its library, vwscanw() will not work. You lose. - (It should work on any System V, however). If you want to fix this, add - an implementation to ncurses/vsscanf.c. + varargs.h, it has the newer X/Open-standard stdargs.h equivalent. So these + functions use stdargs instead. This is unlikely to be a problem unless + you're building ncurses on a System V old enough to only have varargs.h. + (Solaris 2.5.1 uses the stdarg.h binding as well). -* The demo build for the c++ library craps out with many link errors under gcc - 2.6.3. We're told the C++ support in 2.6.3 is broken and that the right - fix is to upgrade to 2.7.0. ++ If you're using a BSD earlier than 4.4BSD, or a Linux old enough not to have + a native vsscanf(3) in its library, vwscanw() will not work. You lose. (It + should work on any System V, however). If you want to fix this, add an + implementation to ncurses/vsscanf.c. -* Under Ultrix, configure craps out (Ultrix sh is lame). Run it under ksh. ++ The C++ binding fails to build with a few C++ compilers, mainly with + configure script problems with vsscanf(). -* We've not tested the configure script with cross-compilers. The autoconf - tests are supposed to be able to support this (please report bugs). You will - have to configure and build in two steps. The first step must create the - automatically-generated sources (e.g., comp_captab.c) on your host machine. - Then, run "make mostlyclean", remove config.* from the top-level directory - and configure for the cross-compiler. ++ terminfo.5 does not format with the SunOS (and most other platform's) tbl + utility because it relies on a diversion for each table entry. Get the + groff package. Untested features: -* The rep optimization in lib_doupdate.c is not yet thoroughly tested. ++ The code for the HP color model using set_color_pair is untested. -* The code for the HP color model using set_color_pair is untested. - -* The code for handling soft labels on a terminal type with built-in support ++ The code for handling soft labels on a terminal type with built-in support for them (num_labels > 0, label_height, label_width, label_format, label_off, label_on, plab_norm, lab_f*) has not been tested. The label_format and lab_f* capabilities aren't presently used. @@ -98,72 +80,9 @@ of the SVr4 API. The library is BASE conformant with this standard. We would like to make ncurses fully conformant at the EXTENDED level supporting internationalization. -Here are page references to all material involving wide or multi-byte -characters in Issue 4 of the XSI Curses standard, with notes on their -status in this implementation: - - Page 1 (1.1.2) New Features discussion of internationalization. - Page 12 (2.4): Definition of cchar_t, wchar_t. - Page 16 (3.3.2): Introduction of multi-column characters. - Page 17-18 (3.3.5): Description of non-spacing characters. - Page 19-21 (3.4.2): Basic character operations. - Page 34 (addnstr): These should now call underlying wide- -character functions, and do (through waddnstr) if _XOPEN_SOURCE_EXTENDED is on). - Page 35 (addnwstr): wide-character add-string functions. All macros -except waddnwstr() which is not yet defined. - Page 36 (add_wch): wide-character add-char functions. All macros -except wadd_wch() which is not yet defined. - Page 39 (attr_get): implemented -- we've just made the current- -attributes field of the window an attr_t. - Page 43 (bkgrnd): None of these are implemented. - Page 45 (border_set): Neither of these is implemented. - Page 47 (box_set): box_set implemented as macro, but the underlying -wborder_set() is not yet defined. - Page 78 (echo_wchar): echo_wchar() implemented as macro, underlying -wecho_wchar() not yet implemented. - Page 81 (erasechar): Neither entry point is implemented. - Page 87 (getbkgrnd): Not implemented. - Page 88 (getcchar): Not implemented. - Page 93 (getn_wstr): All implemented (as macros) except the -underlying wgetn_wstr(). - Page 97 (get_wch): All implemented (as macros) except the -underlying wget_wch(). - Page 99 (get_wstr): Xref to page 93. - Page 105 (hline_set): All implemented (as macros) except the -underlying whline_set(), wvline_set(). - Page 114 (innstr): Multi-byte character-completeness check is -not implemented. - Page 115 (innwstr): All implemented (as macros) except the -underlying winnw_str(). - Page 119 (insnstr): Implementation may not be correct for multi-byte -characters. - Page 120 (ins_nwstr): Not implemented. - Page 121 (insstr): Xref to page 119. - Page 122 (instr): Xref to page 119. - Page 123 (ins_wch): Not implemented. - Page 124 (ins_wstr): Xref to page 120. - Page 126 (in_wch): Not implemented. - Page 127 (in_wchnstr): Not implemented. - Page 128 (inwstr): Xref to page 115. - Page 133 (killwchar): killwchar not implemented. - Page 158 (pechochar): pecho_wchar() not implemented. - Page 176 (setcchar): Not implemented. - Page 181 (slk_attroff): slk_wset not implemented. - Page 200 (ungetch): unget_wch() not implemented. - Page 203 (vidattr): vid_attr() and vid_puts() not implemented. - Page 206 (vline_set): Xref to page 105. - Page 214 (wunctrl): Not implemented. - Page 216 (curses.h): cchar_t, wint_t, wchar_t references. - Page 220 (curses.h): KEY_CODE_YES - -Basically, the macro superstructure is there but the core is absent. We -need better multi-locale support guarantees from the OS to finish this. -If you are working on internationalization support, please contact us so -we can cooperate. - 2. DOS port -Only 16 of the 55 files in the library depend on the terminfo format. +Only a few of the files in the library depend on the terminfo format. It should be possible to further kernelize the package, then rewrite a small number of core files to produce a functionally-compatible port that would do updates to a memory-mapped screen area. The first @@ -250,5 +169,3 @@ These are the potentially important ones for ncurses. Notes: ii) We probably don't care about dest_tabs_magic_smso; only Telerays used it and they're all long obsolete. - -