diff options
author | peter <peter@FreeBSD.org> | 1999-08-24 01:06:48 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1999-08-24 01:06:48 +0000 |
commit | bacd15cb1fff2dee94d390e0f84c147cd82ea148 (patch) | |
tree | ad214c5b2c8142ad6dc6d2ce3a9c83e6317d7f77 /contrib/ncurses/TO-DO | |
download | FreeBSD-src-bacd15cb1fff2dee94d390e0f84c147cd82ea148.zip FreeBSD-src-bacd15cb1fff2dee94d390e0f84c147cd82ea148.tar.gz |
Import unmodified (but trimmed) ncurses 5.0 prerelease 990821.
This contains the full eti (panel, form, menu) extensions.
bmake glue to follow.
Obtained from: ftp://ftp.clark.net/pub/dickey/ncurses
Diffstat (limited to 'contrib/ncurses/TO-DO')
-rw-r--r-- | contrib/ncurses/TO-DO | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/contrib/ncurses/TO-DO b/contrib/ncurses/TO-DO new file mode 100644 index 0000000..21e8ee0 --- /dev/null +++ b/contrib/ncurses/TO-DO @@ -0,0 +1,251 @@ +-- $Id: TO-DO,v 1.39 1998/07/12 00:25:39 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. + +* XPG4 specifies that the enhanced features are not available unless the + _XOPEN_SOURCE_EXTENDED test macro is defined by the application. Ncurses uses + this macro (incorrectly) to address a dependency upon wchar_t. The functions + which use wchar_t are not implemented, so the effect of the test macro is + pointless. + +* 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. + +* 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. + 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. + +* The window classes defined in the c++ subdirectory need documentation. + Some C++ programmer could earn a lot of good karma by doing this... + +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. + ++ 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 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 + 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. + +LONGER-TERM TO-DO ITEMS: + +1. Extended COSE conformance + +There is an XPG4 standard recently released 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. + +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. +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. + +3. X port + +It would be nice if ncurses could recognize when it was running under X and +maintain its own window. With this feature, all ncurses programs would +automatically become X programs. The challenge is to handle resize events +properly. + +4. Unused capabilities + +The currently unused capabilities fall naturally into several groups: + +A. Status-line capabilities: + + Booleans: has_status_line, status_line_esc_ok. + Numerics: width_status_line. + Strings: dis_status_line, from_status_line, to_status_line. + +System V Release 1 curses made no use of these at all. SVr4's use, if +any, is unknown. From the AT&T termcap file it looks like curses, in general, +shouldn't use them; terminal variants with status lines have their line count +decremented by 1, suggesting that curses is supposed to leave the status line +alone. + +B. Printer capabilities: + + Boolean: col_addr_glitch, cr_cancels_micro_mode, has_print_wheel, + row_addr_glitch, semi_auto_right_margin, cpi_changes_res, + lpi_changes_res. + Numeric: buffer_capacity, dot_horz_spacing, dot_vert_spacing, + max_micro_address, max_micro_jump, micro_col_size, + micro_line_size, number_of_pins, output_res_char, + output_res_line, output_res_horz_inch, print_rate, + wide_char_size, bit_image_entwining, bit_image_type. + String: down_half_line, form_feed, up_half_line, set_left_margin, + set_right_margin, clear_margins, change_char_pitch + ... set_page_length (all the SVr4 printer caps), + +Curses doesn't use these. + +C. Printer-control capabilities: + + Boolean: prtr_silent. + Strings: print_screen, prtr_on, prtr_off, prtr_non. + +Curses doesn't use these. + +D. Dialer strings: + + Strings: hangup, dial_phone, quick_dial, tone, pulse, flash_hook, + fixed_pause, wait_tone. + +Curses doesn't use these. + +E. Window and virtual-terminal capabilities: + + Numerics: maximum_windows, virtual_terminal. + Strings: req_for_input, create_window, goto_window, set_window. + +These seem to be fossils from some AT&T experiments on character-based +window systems that never escaped the lab. The virtual_terminal cap had +something to do with building terminal emulations into tty line disciplines. + +F. Unused VDT capabilities: + + Booleans: erase_overstrike, has_meta_key, insert_null_glitch, + 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, + display_clock, remove_clock, user[0-5], display_pc_char, + enter_scancode_mode, exit_scancode_mode, pc_term_options, + scancode_escape, alt_scancode_esc. + +These are the potentially important ones for ncurses. Notes: + + i) ncurses doesn't need move_insert; it never uses cup/hpa/vpa while + insert_mode is on. + + ii) We probably don't care about dest_tabs_magic_smso; only + Telerays used it and they're all long obsolete. + + |