X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=TO-DO;h=5df7f47e722e8b409736bed3068d04bee93b7851;hp=e99051f5503bf5ba58ffcf7c01a82c52f02a8bdf;hb=73ab536b636227eed291dad213ca88c93d422fb8;hpb=46722468f47c2b77b3987729b4bcf2321cccfd01 diff --git a/TO-DO b/TO-DO index e99051f5..5df7f47e 100644 --- a/TO-DO +++ b/TO-DO @@ -1,107 +1,129 @@ --- $Id: TO-DO,v 1.41 2002/08/31 21:32:43 tom Exp $ +------------------------------------------------------------------------------- +-- Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell copies -- +-- of the Software, and to permit persons to whom the Software is furnished -- +-- to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- +-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- +-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------- +-- $Id: TO-DO,v 1.57 2011/03/28 00:23:02 tom Exp $ +------------------------------------------------------------------------------- SHORT-TERM TO-DO ITEMS: Known Problems: -* GNAT does not put libraries in the correct order, so a build only links - properly if you use shared libraries since -lncurses is first. ++ libtool does not work with GNAT. -* The screen optimization has been tested only in an ad hoc manner. We should ++ 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. -* 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. ++ Magic cookie support (for nonzero xmc values) 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. -* Scrolling optimization has holes: for example, it forces repaints of the ++ Scrolling optimization has holes: for example, it forces repaints of the screen between calls to refresh(). -* 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. This - is a legacy terminfo property we can't mess with. + 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. -* 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. ++ vid_attr() should support the set_a_attributes (sgr1) string, but does not. + There appear to be no terminals that require that functionality. + ++ the configure --disable-ext-funcs option does not work for Ada95 tree. + ++ the --with-pthread configuration builds for Cygwin, but does not work + properly (test/worm.c shows all of the worms in the same location). + ++ the --enable-rpath configure option builds for the corresponding platforms; + however combining it with --with-ticlib and --with-termlib does not always + produce libraries that can be run without setting environment variables. + Building those with libtool does not work either. (This is a problem with + the BSD platforms). + ++ more work is needed to make the MinGW port support ordinary terminals. 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. - -* 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. (Solaris 2.5.1 uses the stdarg.h binding as well). - -* 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. - -* 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. This demo is also known to not build with - the Sun SPARCworks 4.1 C++ compiler, due to a problem resolving templates. - -* Under Ultrix, configure craps out (Ultrix sh is lame). Run it under ksh. - -* 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. ++ 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 using one of the 4.4BSD derivatives like such as, NetBSD, or BSDI, or + systems using that convention. 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 + interface for handling variadic argument lists (and are deprecated by X/Open + for that reason). Many newer systems do no have varargs.h, instead they have + only 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 used + the stdarg.h binding as well). + ++ If you're using a system old enough not to have a native vsscanf(3) in its + library, vwscanw() will not work. If you want to fix this, add an + implementation to ncurses/vsscanf.c. + ++ The C++ binding fails to build with a few C++ compilers. + 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. + utility because it relies on a diversion for each table entry. Get the + groff package. Untested features: -* 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. -* The wide-character input functions need testing. - LONGER-TERM TO-DO ITEMS: 1. Extended COSE conformance -There is an XPG4 standard recently released which describes a superset +There is an XPG4 standard released in 1996 which describes a superset 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. -Current status: - pecho_wchar() not implemented. - slk_wset not implemented. - 2. DOS port -Only 16 of the 55 files in the library depend on the terminfo format. -It should be possible to further kernelize the package, then rewrite +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 result of this would be a DOS port. @@ -174,10 +196,10 @@ F. Unused VDT capabilities: move_insert, dest_tabs_magic_smso, transparent_underline, needs_xon_xoff, hard_cursor. Numerics: lines_of_memory, buttons. - Strings: pkey_key, pkey_local, pkey_xmit, underline_char, - enter_xon_mode, exit_xon_mode, xon_character, xoff_character, + Strings: pkey_key, pkey_local, pkey_xmit, underline_char, + enter_xon_mode, exit_xon_mode, xon_character, xoff_character, display_clock, remove_clock, user[0-5], display_pc_char, - enter_scancode_mode, exit_scancode_mode, pc_term_options, + enter_scancode_mode, exit_scancode_mode, pc_term_options, scancode_escape, alt_scancode_esc. These are the potentially important ones for ncurses. Notes: @@ -188,4 +210,4 @@ 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. - +-- vile:txtmode