Changes since Lynx 2.8 release =============================================================================== 2000-04-23 (2.8.3rel.1) * replace LYNX_RELEASE variable in userdefs.h by functions LYVersionIsRelease() and LYVersionStatus() in LYShowInfo.c -TD * remove symbol LYNX_RELEASE_DATE, use same format for both development and release dates -LP * remove po/ChangeLog (noted by LP) 2000-04-22 (2.8.3pre.8) * update option_help.html to describe the Visited Pages settings -TD * correct order of body_attr[] and button_attr[] in HTMLDTD.c -TD * correction for IMG attributes in HTMLDTD.c -KW * tweak form-based options menu: General Preferencies now has User Mode, Editor, Searching type and Cookies (suggested by PW). Correct misspelled gettext'ed message, introduced in pre.7 -LP, DK * note in configure --help and INSTALLATION that color-style is implemented for various curses libraries but not slang -TD * add a note to INSTALLATION describing how to disable the telnet application when configuring Lynx -TD 2000-04-19 (2.8.3pre.7) * move initialization of WATT-32 "sock_init()" code in LYMain.c so it precedes Lynx's code to setup SIGINT handler, since WATT-32 installs a SIGINT handler as well. This makes Lynx's handler the default again -DK * correct handling of CHARSET attributes on LINK and A. Basically this reverts back to original 2.7.2ac logic -KW * enable handling of CHARSET attributes on LINK - it was disabled, probably accidentally -KW * prevent CHARSET attributes from modifying the charset assumption for the _current_ document -KW * correct errors in HTML.c that could result in infinite loop (iteration counter was not incremented) -KW * revert one strcpy -> StrAllocCopy change - see added comment in LYCgi.c -KW * correct limit of formatted string in status_link() -KW * change NO_FILE_REFERER default to TRUE (i.e., do not send local file name in the referer field unless explicitly specified by the user) -LP, KW * implement a workaround for gettext'd ADVANCED_COOKIE_CONFIRMATION to make it consistent with HTConfirmDefault(), fixes Debian #62105 -TD * clarify/expand notes in lynx.cfg dealing with USE_MOUSE (from comments by Morten Bo Johansen ) -TD * noted glibc 2.1.3 bug in PROBLEMS -TD * reorganize forms-based options menu: options are now grouped by sections in a more logical way (design by KW). (BTW, it is now more aligned with htmlized-cfg cattoc.html). Help files changed accordingly. A few gettext'ed messages were changed -LP * add ifdef's (USE_BLAT_MAILER and USE_ALT_BLAT_MAILER) and corresponding code for blat vs blatj mailer (request by Victor Schneider) -TD * update Lynx FAQ locations -JS 2000-04-17 (2.8.3pre.6) * change version number in remaining documentation to 2.8.3 -TD * remove redundant defines for SUPPORT_MULTIBYTE_EDIT and COLOR_TABLE from DOS/Win32 makefiles -TD * small change to configure test for REAL_UNIX_SYSTEM to accommodate linkers that allow assignment from a nonexistent extern. Also, change a few UNIX symbols in LYCurses.c and LYUtils.c to REAL_UNIX_SYSTEM to build on platforms that do not define this symbol -TD * update notes in LYMain.c and LYReadCFG.c regarding the options and config variable tables, which no longer need to be sorted -TD * htmlized lynx.cfg: add .h2 RULESFILE, remove confusing .h1 header -LP * define SUPPORT_MULTIBYTE_EDIT in userdefs.h -TH 2000-04-13 (2.8.3pre.5) * fix printing of Last-Modified field in downloaded/printed source -LP * update URL for RFC 1942 -LV, DK * update Subir Grewal's Lynx links URL to the newest location http://www.trill-home.com/lynx.html -LV, TD * move assignment to donelookup in LYGetHostByName() to avoid race with CreateThread() -Alexei Anatski * modify LYexecv() in LYLocal.c for MINGW32 -HS, Victor Schneider * re-correct logic for .h1 comments in cattoc.html by cfg2html.pl (reported by LP) -TD * move call to cleanup_files() into LYexit(), to fix stray temporary directory left, e.g,. when doing "lynx -version" -TD 2000-04-11 (2.8.3pre.4) * add to logic of --with-charsets configure option, checking for charset names that happen to be built-into UCdomap.c rather than defined via .tbl files in src/charsets (reported by HN) -TD * correct missing extern in CF_SLANG_UNIX compile-test -TD 2000-04-06 (2.8.3pre.3) * remove definitions for NCURSES and NCURSES_VERSION from top-level makefiles that really use PDCurses -TD * add USE_MOUSE symbol: cleanup/simplify ifdef'ing of mouse code, replace USE_SLANG_MOUSE / NCURSES_MOUSE_VERSION / PDCURSES_MOUSE_VERSION with USE_MOUSE (and modifier when necessary) -LP * windows makefiles: add new symbols SOURCE_CACHE and USE_PRETTYSRC, remove obsolete EXP_CHARTRANS and unused EXP_CHARTRANS_AUTOSWITCH -LP * fixed a bug with psrcview on lss-enabled lynx. Code such as (i.e. unknown attribute and then some other attribute) was causing calls to PSRCSTOP(barattr) twice (and lynx was switched to "non-preformatted" mode losing all white spaces of the document after that piece of code) -VH * add configure option --with-screen=pdcurses, mainly for checking ifdef conflicts between ncurses and pdcurses. This builds/runs with the PDCurses X11 library, but is not recommended for general use -TD * remove test-artifact in configure check for zlib.h -TD * add CF_SLANG_UNIX configure macro, to allow slang configuration to build on AIX, etc., (reported by Jens Schleusener ) -TD * update CF_CURSES_LIBS macro from CDK fixes, adds a special check for HPUX 11.x -lcur_colr library -TD 2000-04-02 (2.8.3pre.2) * fixed problem with charset handling for SOURCE_CACHE:MEMORY - if the charset was specified by Content-Type http header it won't be lost (as it was) when reparsing from source cache (applies to toggling DTD, switching to srcview, and other stuff like *,' etc) -VH * add ifdef'd call for creat() for Borland C configuration in LYExecv(), as per JS report -TD * remove definition of NCURSES_MOUSE_VERSION from makefile.bcb and makelynx.bat, which should fix compile problem reported by JS -TD * move a small number of gettext definitions into LYMessages_en.h to allow removing the associated files from POTFILES.in, which must not be larger than 1023 for Solaris (reported by JS) -TD * improve ifdef's for fallback definitions of getattrs(), getbegx(), getbegy() and getbkgd() in LYCurses.h since they may be functions rather than macros (reported by PG on os390) -TD * further restrict tildeExpand() so it allows embedded "~" only if it follows a slash, or is the first character -TD * add check for "~" as the path to be expanded in tildeExpand() (fixes problem reported by Frederic L W Meunier when TEMP_SPACE was defined to "~") -TD 2000-03-31 (2.8.3pre.1) * remove annoying trailing period from two statusline messages ending with host name ("Looking up host.foo:81." and "Making HTTP connection to foo.bar.") -LP * lynx.cfg: use two lines to separate options description in this configuration file (it looks more readable, for such a huge text) -LP * lynx.cfg: make a few corrections to reorganize .h1 sections to improve htmlized cattoc.html logic. More corrections welcome -LP * fix some compiler warnings for DECC dealing with time_t being unsigned in that environment (reported by Jerome Lauret) -TD * suppress Multinet prototypes in socket.h, to work around some places where Multinet declares parameters a void* while DECC uses char* (patch by Jerome Lauret ). * undo side-effect of config_enum() function in LYReadCFG.c from cleanup in dev.22 which made default_user_mode and source_cache values not set properly (reported by Alexei Anatski ) -TD * correct ifdef's in LYStrings.c for NCURSES_MOUSE_VERSION versus PDCURSES adding new PDCURSES_MOUSE_VERSION to cover special case of DJGPP (reported by LP, DK) -TD * add PRETTYSRC to lynx.cfg, supplementing -prettysrc commandline option -TD * add call to LYStoreCookies() from HTFWriter.c to save cookies when -source is used (patch by KW) * remove const from LYGetHostByName() parameter -TD * modify makefile.in to ensure links within htmlized lynx.cfg are updated if gzip-help is configured (reported by Ari Moisio) -TD * remove -DEXP_CHARTRANS from makefile.msc, makefile.bcb (reported by LP) -TD * trim trailing path-separator from lynx_temp_space before removing that directory, on exit -TD * ifdef'd IsOurFile() to perform only an ownership check on single-user DOS and OS/2 systems, so user can overwrite files -TD * simplified some initialization in LYMain.c with tildeExpand() -TD * change prototypes of HTSetPresentation(), HTSetSuffix5() to use double rather than float, since this is the default promotion, working better with some compilers -TD * add comments to makefile.msc to show how to build color-style version -TD * add fallback definition for getattrs(), move fallback definitions for getbegy() and getbegx() in LYCurses.h to allow building color-style version with PDCurses -TD * correct a call on lib$find_file() in HTVMSUtils.c which broke by not supplying it with a fixed-size buffer, from dev.23 changes -TD * correct an out-of-range indexing error in LYstatusline_messages_on_exit(), and add a check in to_stack() for a similar problem -TD * add definitions and description of USE_TH_JP_AUTO_DETECT, CONV_JISX0201KANA_JISX0208KANA, and KANJI_CODE_OVERRIDE to userdefs.h, along with a new file README.jp -TH 2000-03-26 (2.8.3dev.23) * make -nounderline option apply to overloading of colors 4 & 5 with underlines, in slang configuration -TD * on initialization, check if the LYNX_TEMP_SPACE denotes a directory which we cannot easily determine if someone could alter our temp-files. If so, make a subdirectory of that, with appropriate permissions -TD * disable setuid on initialization -TD * add a definition USE_MKSTEMP in userdefs.h which supersedes EXP_RAND_TEMPNAME for sys-admins who believe in mkstemp() -TD * change logic for EXP_RAND_TEMPNAME to avoid allowing fmt_tempname() to return the same name during a session. Define EXP_NAME_TEMPNAME in userdefs.h -TD * add Last-Modified header into the printed/downloaded source, in addition to the Date header (it is there for years). (Last-Modified field will not be printed if it is not present, or equal to the Date header or equal to "Thu, 01 Jan 1970 00:00:01 GMT", a common mistake in scripts) -LP * defined DIRED_SUPPORT in makefile.msc -TD * several small fixes in LYLocal.c for dired support, mostly win32-specific -TD * modify PDCurses mouse logic to use BUTTON_PRESSED mask rather than BUTTON_CLICKED, since the latter appears to not work in PDCurses 2.4 -TD * modify HTDirTitles() to fix a couple of cases for device-only pathnames, e.g., for DOS -TD * modify HTDOS_name() to put a trailing '\' on the result if only a device is given. Fix a memory leak in HTDOS_name() -TD * simplify local_dired() using new function match_op(), adding DOSPATH and __EMX__ to special case of stripping a leading '/' from parameter so dired mode works properly on Win32 and OS/2 EMX -TD * minor cleanup using new function LYformTitle() -TD * modify LYUCPushAssumed to push original assume_charset insted of anchor_UCI->MIMEname when HTCJK is JAPANESE. If this modification isn't done, Japanese strings may be mishandled when charset is not specified or assumed as Japanese charset. On the other hand, if this modification IS done, the specified charset is ignored when HTCJK is JAPANESE. # I think it's long way to improve this completely. It rarely # causes small problem in source view mode for Japanese document. # I think it can be ignored -TH * improve handling of Japanese titles in List Page, LYNXIMGMAP Page and ShowInfo Page -TH * remove spurious backslashes in sed script for adjusting link to htmlized lynx.cfg -Michael Warner * add -luser32 library for cygwin configuration, needed for WIN_EX ifdefs -DK * correct some screen handling problems when built with SLang -DK * updated the INSTALLATION file to reflect building under cygwin -DK * define WIN_EX and _WINDOWS_NSL for cygwin configuration -DK * use select_s() from WATT-32 for the DJGPP port, rather than select() from DJGPP (suggested by Gisle Vanem, to make it faster) -DK * add a configure check CF_SET_ERRNO to check if we really can set errno, even if it has been #define'd -TD * remove a redundant call to HTQuoteParameter() from LYExtern.c, which resulted in quoted-quotes (reported by Michael Warner) -TD * add configure check for syslog.h, in case --enable-syslog is given for a machine that doesn't support it -TD * add ASSUMED_COLOR variable to lynx.cfg, making the use of assume_default_colors() optional (addresses reports by LV, IC) -TD * add a configure check for the compiler option needed to find zlib.h, e.g., if it is in /usr/local/include and the compiler is not gcc -TD * disentangle some of the PDCurses ifdef's from ncurses, including the mouse handling. The symbol PDCURSES should be used for PDCurses, not NCURSES* or DOSPATH -TD * remove unused getline.c, getpass.c, crypt.c and crypt_util.c -TD * change ifdef's in LYisAbsPath() and LYisRootPath to make OS/2 EMX treated the same as DOSPATH -TD * review use of strcat/strcpy, changing as needed to avoid buffer overflows -TD 2000-03-12 (2.8.3dev.22) * modify Home_Dir() so that on DOS & Windows, if the $HOMEDRIVE variable is set, it may be used to specify the drive on which $HOME is located -TD * add configure option --enable-htmlized-cfg to install the htmlized lynx.cfg in the help directory (request by LP) -TD * suppress sleep's in crawl or traversal mode (request by LV) -TD + cleanup LYReadCFG.c, LYrcFile.c a little, using new functions putBool, getBool, putEnum and getEnum -TD * change default mode for visited-links-page to match original behavior, add visited_links to .lynxrc file (requests by KD, LP) -TD * update documentation to reflect move from sol.slcc.edu to lynx.isc.org -PG * remove obsolete files: WWW/Copyright.txt (replaced by FreeOfCharge.html) and WWW/README.txt (recommended by DK) -TD * clean up some of the loose ends, primarily in documentation. A Russian user pointed out that the DOS binary was ignoring character 0xe0. This turned out to be a bug in the PDCurses code for DOS. I modified the INSTALLATION file to reflect the patch to PDCurses. Also include the file for the public domain release of the CERN wwwlib code (FreeOfCharge.html). Other changes fix dead links, Y2K changes, and reflect newer versions of other programs -DK * comment-out/disable NO_ANONYMOUS_EMAIL definition in userdefs.h -DK * change optimization level to -O1 in makefile.dos -DK * use macro set_errno() to hide some of the clutter in HTTCP.c as well as make it simpler to build with threaded libraries -TD * ifdef'd out a "QUIT" command sent to the FTP server immediately after opening a data connection in HTFTPLoad(), since this makes the ftp.wku.edu server close the connection prematurely -TD * combine redundant HTMake_VMS_name() with HTVMS_name() -TD * review use of "%s" in sprintf, to guard against buffer overflows, modified some to use HTSprintf0 or StrAllocCopy, others to use specific lengths (KW noted a related problem in HTTP.c) -TD 2000-02-25 (2.8.3dev.21) * modify check for empty news-posting to warn but allow user to override if it contains nonspace characters -TD * add FTP_PASSIVE option to lynx.cfg, allowing installer to defer decision of whether lynx uses passive ftp connection (adapted from patch by Bernhard Rosenkraenzer ) -TD * remove duplicate definitions of HT_NON_BREAK_SPACE, HT_EN_SPACE leaving them in HTFont.h -TD * lynx.cfg option CONNECT_TIMEOUT and commandline option "connect_timeout" were added (not available for DOS port) -VH * don't perform submission of the content of disabled form fields -VH * add bindings for ^ and $ (like vi) to move the cursor to the first and last link on the current line (prompted by complaint by DH that < and > used to allow movement to the ends of a line) -TD * remove --enable-kanji option (request by TH) -TD * replace 3 CONV_JISX0201KANA_ISX0208KANA to CONV_JISX0201KANA_JISX0208KANA -TH * enable the routines to change kanji code which is used for overriding, since my last change disabled this -TH * remove redundant/conflicting definitions of ON/OFF from HTVMS_WaisUI.h -TD * fixes for K&R build on SunOS -TD 2000-02-15 (2.8.3dev.20) * ifdef fixes for CYGWIN, broken in dev.19 -TD * add make-msc.bat script, and update src/chrtrans/makefile.msc to add rules for generating header files -TD 2000-02-14 (2.8.3dev.19) * use HTAddParam/HTEndParam rather than HTSprintf0 for building external commands, protecting against badly-formatted string with more than one %s (reported by PW) -TD * update placeholder po/nl.po -JS * add configure option --enable-kanji for defining symbols related to TH's patch. * improved handling of Japanese text (patch by Hataguchi Takeshi (TH) ): + if Japanese document's charset is specified explicitly by the MIME tag or HTTP responses, Lynx will assume the charset as that value. + change the Japanese charset detection strategy when charset is not specified explicitly. + wrap a long text which includes only CJK characters in source mode. + avoid writing CJK characters at the 80th column. + improve kanji code override routine # My change seems to have broken this + change the phrase "half width kana" to "JIS x0201 Kana" in comments. # The latter has been used originally. + enable assume_charset when display charset and assume charset are Japanese. assume_charset acts like charset by META tag only when charset isn't specified by META nor HTTP responses. + change the behavior of the option menu. For example, when display charset is Japanese (EUC-JP) and CJK mode is on, changing assume_charset from iso-8859-1 to shift_jis using the option menu, old behavior: assume_charset won't be changed. CJK mode will turn off. new behavior: assume_charset will be changed to shift_jis CJK mode won't be changed. + improve handling Japanese in Visited Links Page, History Page and pages with FORM. New macros are: USE_TH_JP_AUTO_DETECT enable (2) CONV_JISX0201KANA_JISX0208KANA convert JIS X0201 Kana to JIS X0208 Kana, i.e. convert half width kana to full width. I've not tested the case not to define this well. KANJI_CODE_OVERRIDE enable kanji code override routine. The code can be changed by ^L. More precisely, this enables us to change the assumption kanji code for the document. This assumption overrides the charaset by META tag and HTTP responses. * ensure lynx_doc is writable when doing install, since it is not necessarily done as root -TD * simplify/correct ifdef'ing in reply_by_mail() -TD * add ifdef CANNOT_PIPE_MAIL to simplify ifdef'ing for systems having mailers that we can pipe to versus those that we cannot -TD * add ifdef USE_BLAT_MAILER to simplify & make consistent ifdef'ing for blat mail program -TD * correct ifdef'ing in mailform() for Unix (report by LV, analysis by KW) -TD * tweak lynx.cfg for better cfg2html.pl output -LP * fix DOS makefiles for recent renaming USE_PSRC -> USE_PRETTYSRC. Also, change optimization flag to -O1: having experience with slow 386 machine I see no visible difference in speed at run time, but this makes compilation much faster and takes less memory. Tweak INSTALLATION file accordingly -LP * ifdef'd feature for generating random temporary filenames with EXP_RAND_TEMPNAME -TD * remove duplicate S_xxx definitions from LYLocal.h, already in www_tcp.h -TD * add note about building with Visual C++ -TD * ifdef'd reference to current_codepage in LYCurses.c with PDCURSES_EXP rather than PDCURSES, since this variable is not found in any release version of PDCurses -TD * several small fixes/adjustments to reduce warnings from lint-like program 'antic' -TD * fixes to compile on VMS with UCX -TD * change LYRemoveTemp() to return a value, needed for VMS -TD * rename intl/po2tbl.sed.in to intl/po2tbl.sed_in, to allow unzip on VMS -TD * correct HTSetSuffix/HTSetSuffix5 for VMS build (reported by Dan W. Olds ) -TD * resync autoconf macros, from tin -TD 2000-01-06 (2.8.3dev.18) * correction to LYCookieSavefile so tilde expansion is done (reported by Larry Virden) -BJP * now it's guaranteed that LY_SOFT_NEWLINE could be only 0th character in line->data (it could be preceded by LY_*_START_CHAR). Bug that caused empty lines to disappear when printing files was fixed -VH * comments are now correctly converted to display charset in prettysrc mode -VH * fix "Please see" array initialization in cfg2html.pl (reported by VH, LP) -TD * small userdefs.h typo fixed -VH * added lynx.cfg setting that controls justification - maximum value for ratio of 'spaces to spread'/'max width of a line' when justification can take place -VH * change "PSRC" to "PRETTYSRC" in configuration (suggested by KW) -TD * combine a dozen of HTMLSRC_ lynx.cfg settings into PSRCSPEC setting. Old "HTMLSRC_foo:bar1:bar2" should be written as "PSRCSPEC:foo:bar1:bar2" -VH * use assume_default_colors() extension from upcoming ncurses 5.1 and related support to provide more flexible coloring. If the user's configuration files do not specify "default", the default-color support is suppressed, and the displayed colors default to white/black. The original behavior matches SVr4 curses, which assumes the default colors of the screen but does not ensure that they match the assumption -TD * modify LYsetXDisplay() to permit $DISPLAY to have an empty value, and reuse logic in forms-options from menu-options as validate_x_display() and summarize_x_display(). The forms-options will not display a warning since it exits too early, but at least one may now reset $DISPLAY to an empty string (reported by KW) -TD * add note in INSTALLATION pointing to aclocal.m4 for details of regenerating configure script -TD * add stub "po" gettext for Czech language, update other stubs -JS * undo dev.16 change to print_wwwfile_to_fd() logic for LY_SOFT_NEWLINE which resulted in dropping blank lines from printed files -TD * make off by one correction in HTDisplayPartial line counting (as discussed with LP) -KW * one invalid memory free (only reached in some (rare?) error case), two memory leaks removed in LYLocal.c -KW * date calculations for file times in FTP directory listings used cached values for the current day and year that never got reset. This could cause wrong ordering when sorting by date, and possibly other errors, especially in long-running lynx sessions. Now recalculate them for each new directory request if they are needed -KW * be slightly more tolerant about FTP directory listing file times that appear to lie in the future: allow today plus one day without assuming that it must mean a year ago, to account for possible timezone differences -KW * add comment to reload_read_cfg() listing things that are/aren't done -LP * minor lynx.cfg corections for better cfg2html.pl output -LP * restore 'from_source_cache' PRIVATE to LYMainLoop.c, add comments -LP * amend dev.16 feature for generating random temporary filenames to ensure that Lynx does not currently have the generated name open as a temporary file -TD 1999-12-15 (2.8.3dev.17) * add a caution to jumpsUnix.html -PW * ifdef LYEditKeyForAction() to compile when EXP_ALT_BINDINGS is not defined (reported by VH) -TD * add 3-valued DEFAULT_KEYPAD_MODE to lynx.cfg -TD * revert DEFAULT_KEYPAD_MODE to NUMBERS_AS_ARROWS (consensus) -TD * add COOKIE_SAVE_FILE lynx.cfg and corresponding command-line option, default it to /dev/null, which is recognized on all systems -BJP * correct typo in declaration of LYLeakSAVsprintf() -Michael Warner * remove from_source_cache_p parameters in LYMainLoop.c (request by LP) -TD * documentation updates covering the Options Menu & other changes omitted previously -PW * small correction in TRSTable.c: One of my previous changes for TRST broke inheritance of alignment for cell contents from TR elements -KW * new functions for keeping track of temp files (and some other files) for user interface pages: LYRegisterUIPage(), LYIsUIPage(). Most checks that look at the loaded document's title have been replaced by this mechanism. This also replaces various mechanism that were implemented for some specific pages -KW * also replaced some more checks that looked at the document's title by checks of the address, for pages that are always identified by a special URL scheme (LYNXCOOKIE:, LYNXKEYMAP:, LYNXMESSAGES:) -KW * now check directly in postoptions() whether the loaded document is one from which submission of option changes can be accepted, using the new tracking mechanism. Only the form-based Options Menu and Visited Links are allowed. Relying on a good random generator to prevent spoofing is not necessary. Kept the secure_string check, but it should be only regarded as an aid to the user, it prevents changing options from an instance of the form-based Options Menu that is not the most recent one (this can happen if an Options Menu page is pushed on the history stack and later returned to) -KW * honor REUSE_TEMPFILES for some more user interface pages. * prevent an obscure LYNXOPTIONS://MBM_MENU crash. * other minor additions and corrections to checks for special pages -KW * changed INSTALLATION text for --enable-internal-links -KW, HN * changes to build dev16 with color styles on DJGPP/PDCurses 2.3 (you must uncomment a line in makefiles to build lynx that way) -LP * correct a missing check in HTML.c HTML_A case against force_empty_hrefless_a (reported by KW) -VH * changed lines -> disp_lines, cols -> disp_cols in GridText.c -KW * don't reparse with SOURCE_CACHE if screen size changed only vertically (disp_lines). Also don't reparse unnecessarily in some cases of LYK_MINIMAL -KW * don't append (HEAD) to title for INFO screen if already present -KW * set newdoc.title to curdoc.title in LYMainLoop.c for SOURCE command. Otherwise INFO could show the wrong document's title -KW * made global from_source_cache PRIVATE to mainloop -KW * reset DIRED_MENU item list when lynx.cfg is reloaded -KW * new lynx.cfg option AUTO_UNCACHE_DIRLISTS for Dired mode, see lynx.cfg -KW * prevent file descriptor and inode leak in HTFWriter.c that occurred if the same resource is repeatedly downloaded (for 'd' or for passing to a viewer) -KW * corrected logic for suppressing last HTDisplayPartial call at end of file, after discussion with LP -KW * corrected line counting in HTDisplayPartial, taking into account offsets used for the various variables being compared -KW * added confirmation prompt for reloading non-safe post_data documents in form-based Options Menu change handling. Before this change, the prompt would be issued after returning to mainloop() instead, with different behavior if confirmation was denied: The document would be popped instead of keeping the current instance -KW * function confirm_post_resub made PUBLIC and moved to HTAlert.c. New function srcmode_for_next_retrieval in LYGetFile.c. Both used for the above and in LYMainLoop.c -KW * fixed behavior for various post_data confirmation prompts in connection with SOURCE_CACHE in LYMainLoop.c. Before this change, the user would be prompted to confirm reloading, yet on confirmation reparsing from the source cache would be attempted. So prompts were unnecessary and misleading -KW * try to handle some failures of errors in source cache reparsing better. Try to make sure that unsafe post_data documents don't get reloaded accidentally without confirmation if source cache reparsing fails. Treat partial data (i.e. loading from source cache probably 'z'apped by user) as successful, as HTLoadDocument does. (Various error conditions are currently only passed on to the caller by HTParseFile, not by HTParseMem. I left this apparent design decision unchanged.) -KW * source cache reparsing did not rewrite a previous cache copy when the document was reloaded from the net. This means that e.g. NOCACHE or RELOAD would force reloading from the network, but then on the next non-forced loading of the document (e.g. by toggling to SOURCE view) the old (and possibly stale) copy would again be used. Now the newer copy replaces the old copy if loading is successful (and not interrupted or aborted with 'z'). (Note that RELOAD while in source view, at least in the normal one without -preparsed or -prettysrc, does not have this effect since the document does not get pushed through the cache writer at all in that case.) -KW * if a source cache copy for a document exists, we need a way to ensure that reparsing from that copy does not try to rewrite that same copy "under our feet" while still reading from it. Previously that was done by just never rewriting an existing source cache. After changing that (see previous item), a different approach is needed to prevent such collisions. This is now solved in two ways: (a) Base a temporary new file or memory chunk for writing, and only commit it to the doc's ParentAnchor object (replacing the previous copy) at the end of the incoming data stream. This is done in CacheThru_free(), but not in CacheThru_abort(), meaning that an interrupted or otherwise aborted transmission will not replace an existing cached copy with a truncated now version - as long as such interruption gets detected and properly indicated, which is not the case for reading from the source cache with SOURCE_CACHE:MEMORY in effect, see above. (b) Change the HTParentAnchor's protocol field to indicate a non-HTTP protocol, before starting to load from source cache in HTreparse_document(). Normally, as long as DEBUG_SOURCE_CACHE is not defined, this prevents the cache writer from (re)generating a cache copy. Mechanism (b) isn't necessary (everything still works when DEBUG_SOURCE_CACHE is defined), it just avoids unnecessary work -KW * source cache files and chunks were not always being removed when they should, probably since change of 1999-06-18. A large number of cache copies could be kept around unnecessarily wasting disk or memory space. Now make sure that the source cache copy gets removed when a document is removed from the cache of rendered docs. They would never be reused anyway. New function HTAnchor_clearSourceCache. Note to other developers: HTAnchor_delete() doesn't always remove the HTParentAnchor object, see its implementation -KW * detect errors during appending to the cache copy. Previously, memory allocation errors (for SOURCE_CACHE:MEMORY) would cause program exit, and file write errors (SOURCE_CACHE:FILE, e.g. if the temp disk space was full) would go undetected and leave the cache file corrupt or truncated. Now allow the program to continue normally, just cancel the source cache generation for the current document (which may free up enough memory or disk space to remedy the immediate problem). Produce an alert message. In the case of a file error, produce the alert only once until a possibly re-reading of lynx.cfg, since Lynx should remain otherwise functional in the face of cache file writing errors -KW * extended HTChunk: added a variant for which memory allocation errors are not fatal. Used for changes described in previous item -KW * don't write raw escape sequences to trace output for lynx-keymaps if not using trace log file -KW * protect echo() in stop_curses, it could crash if stop_curses gets called without preceding start_curses -KW * save size for regular files in anchor structure (we do the stat() anyway). It shows up on INFO page as Content-Length. Also use it in partial display mode to prevent the last call to HTDisplayPartial from HTFileCopy, since a call to HText_pageDisplay will follow immediately. (But note that nothing important depends on the correct size; should it be wrong, we lose at most one partial display screen update. An equivalent suppression of the last partial update for network protocols is not recommended, since (a) the size is more unreliable and (b) the socket FIN may be delayed by the network.) -KW * split HTMIME_put_character into three functions -KW * made HTMIME.c handle folded header lines correctly (long-standing bug, reported in February by Devid Coles) -KW [ reference: http://www.flora.org/lynx-dev/html/month0299/msg00135.html ] * changed how HTTP redirection messages are handled. Don't read full message and parse buffer for some header fields in HTLoadHTTP. Use common HTMIME.c header parsing instead. Functions added/modified in HTMIME.c for storing away the Location URL (if requested and found) and for stopping after the headers. New private MIME types "message/x-http-redirection" and "www/debug" to control this via HTStreamStack. Basic approach taken from newer W3C libwww. Benefits: - Removes actual bug that was reported: "Content-Location:" was falsely recognized as "Location:". (long-standing bug) [ reference: http://www.flora.org/lynx-dev/html/month1199/msg00370.html ] - Removes potential other bugs caused by inferior header parsing in HTTP.c (including Set-Cookie/Set-Cookie2). - Should more header fields be needed in the future (also) for redirection messages, we now get them automatically instead of having to add extra code. - Trace output now shows the same kind of info as for other responses. In particular, Set-Cookie/Set-Cookie2 header fields will normally be visible. - Statusline progress messages now actually show the HTTP response line as intended, and it is recorded for LYNXMESSAGES:. (Long-standing error, previously what was shown could be an empty string, or arbitrary parts of the response, including HTML markup from the message body.) - Adding redirection support for lynxcgi would now be simpler (although currently not done) -KW * HTErrorStream(), similar to W3C libwww, used in some cases for the above -KW * remove check in HTParse() dated 98/09/08 which prevented unescaping of 8-bit data (reported by KW) * refresh screen for TRST changes in partial display mode as early as possible. This fixes a problem when the table finished below the screen bottom -LP * remove global Newline_partial, use LYGetNewline() instead -LP * adapt idea by VH as a Perl script cfg-html.pl which generates HTML form of the lynx.cfg documentation -TD 1999-11-30 (2.8.3dev.16) * added -nozap command line option -KW - In its basic form, it disables all checks for 'z' or ^G or other "immediate" keys that otherwise happen while processing a request (for name lookups, before or during loading of a document). Note that it also disables paging through an incompletely loaded document during "partial display". Normally, i.e. without this option, key input gets "swallowed" or "used up" by the quasi-asynchronous checks even if they are not 'z' etc. or keys that have meaning during partial display (meaningless keys just get ignored). With this option, key input only gets read when lynx is ready to act on it. - This can be used (a) by people who like to always have predictable type-ahead (and don't care for 'z'apping and partial display scrolling), (b) to achieve predictable reaction to keys if lynx is used under some scripting environment that feeds it input like expect, and (c) for scripting a lynx session by feeding it keyboard-like character input via input redirection from a file or pipe (a simpler alternative to b, without the need for expect or similar). - Point (c) could be called "poor man's scripting". Note that the input has to be provided in a raw form (as lynx would see it when it is actually sent by keys), including raw control characters and escape sequences if necessary. This patch does not change anything in the way such input is read and parsed, other that what is explicitly described here. (This paragraph is only here to explain the context, it does not describe new features.) P.m.s. will only work as expected if lynx, on a given platform and with the display library chosen, uses standard input for reading keyboard input. This is the case with ncurses and possibly other curses implementations, but not with slang, on Unix-like platforms, and cannot work on platforms where lynx gets keyboard input in the form of platform- or implementation-specific keycodes (DOS, Windows - except with cygwin?) instead of as an octet stream. - The -nozap option takes an argument. The basic functionality as already described gets invoked if the argument is not a specially recognized keyword (it is suggested that -nozap=full or -nozap=all be used). The only recognized keyword is "initially". With -nozap=initially, additional special behavior is invoked the first time (and *only* the first time) when lynx encounters an error or EOF when reading key input. (Currently this will not get detected if slang with USE_KEYMAPS is used.) In this, case, -nozap reverts to the default state ('z' will be checked for again). Under some conditions are true (key input was taken from stdin, and stdin was not connected to a terminal), lynx will then attempt to reopen stdin, connecting it to a terminal (stdout, stderr, and the process's controlling tty are tried, in that order - this is subject to change if something would be more reasonable). - The -nozap=initially special behavior will get triggered if input comes from a file or pipe (p.m.s. above) when the provided characters are "used up". Normally lynx should then just exit. The special behavior hands control of the session to the interactive user instead at that point. All code for -nozap is only compiled in if preprocessor symbol MISC_EXP is explicitly defined. * ifdef'd some places for MINGW32 (diffs from Victor Schneider) * remove 'host' variable in LYGetHostByName() that obscured module-level 'host[]' array in HTTCP.c for _WINDOWS_NSL configuration (patch by HS, discussion by KW) -TD * the Newline variable is now PRIVATE except the mouse code in LYStrings.c -LP * modify HTDOS.c for Wattcp targets (Watt-32 and original wattcp). When Lynx is sitting idle in getxkey() waiting for a keypress, no network functions are called. Hence no sockets are processed, "ICMP Echo replies" is sent etc. This patch has been tested with SLang and '-DDJGPP_KEYHANDLER' I'm not sure how to hook into 'SLkp_getkey()' or keyboard polling in performed under raw PDCurses (Gisle Vanem ) * update docs for -tna instead of --sticky_inputs -KW * document extended KEYMAP syntax in lynx.cfg -KW * update Users Guide for KEYMAP changes, especially the TEXTAREA-related sections -KW * move text on ^V a bit to better place, provide a couple links to it -KW * add blurb about TRST to Users Guide. Also mention external scripts for table handling -KW * revise section in Supported URLs on internal schemes. Toned down, provide rationale, give examples -KW * fix a few typos in README.TRST -LP * use 'rand()' in NewSecureValue() -TD * use a random number rather than a counter to name temporary files -TD * change LYReadCFG.c to accept any leading punctuation in lynx.cfg as a comment delimiter -TD * eliminate some clutter with typecalloc/typecallocn macros -TD * eliminate some clutter with new function LYBadHTML() -TD * add checks for null pointers in CTRACE statements in HTML.c (based on report by LV) -TD * change realloc calls in SAVE_TIME_NOT_SPACE ifdef in StrAllocVsprintf() to HTalloc, since older machines (e.g., SunOS 4.x) do not necessarily handle a null pointer parameter to realloc -TD * correct ordering of command-line options in LYMain.c -TD * updates for files in lynx_help & keystrokes -PW * clarify `General Configuration Instructions (all ports)' in INSTALLATION -PW * remove "your lynx.cfg"/"compiletime settings" from '='Info Page -LP * add a note to Lynx_Users_Guide.html#lynx.cfg on "g lynxcfg:" -LP,HN * change LYNXCOMPILEOPTS: to a link from LYNXCFG: -LP * slightly reorganize partial mode logic: 'display_partial' variable is now initialized directly in HText_new(), no need for specialized semaphore any more -LP * Allow KEYMAP directives in lynx.cfg of extended form KEYMAP:lynxkey:lynxaction:editaction[:sel], where lynxkey and lynxaction are as before, editaction is a line-editor action like FORW, BACK, ERASE etc. and sel selects the line-editor style to be affected (as a number, starting with 1 for the Default Binding; or 0 for all styles (the default); or a negative number -n meaning "all line-editor styles except n"). See Line Editor Help pages for keywords to use as editaction. This includes PASS (which was already implemented), for "passing" on the key when line-editing form fields so that the normal lynxaction will be invoked. (KEYMAP:lynxkey:lynxaction:DIRED is also still possible for defining a Dired mode binding). This is based on a patch from IZ which introduced combined definitions in a .lynx-keymaps file in the form: setkey "\200s" LAC:LEFT_LINK/BACKW # C-left setkey "\200t" LAC:RIGHT_LINK/FORWW # C-right Combined definitions in .lynx-keymaps are also supported in this patch, but the syntax was changed to use another ':' instead of '/' as separator. Note that there is no need to support .lynx-keymaps (i.e., compile with USE_KEYMAPS defined) for using the extended KEYMAP lynx.cfg directive with this patch -KW * avoid access to uninitialized members in TRSTable.c -KW * limit span values accepted for TRST with TRST_MAXCOLSPAN and TRST_MAXROWSPAN, which can be changed in userdefs.h. Without imposing a limit, attempts to trick lynx into allocating huge blocks of memory (which might cause thrashing without apparent reason) with something like ROWSPAN=10000000 are just too easy -KW * moved definition of SAVE_TIME_NOT_SPACE to userdefs.h. You may want to undefine it for a platform where running out of memory is a frequent problem (DOS?), although the effect won't be very pronounced. Used in TRST code to affect size of some allocations (also used as before for HTSprintf0/HTSprinf) -KW * implement COLSPAN=0 and ROWSPAN=0 according to HTML 4.01 (not HTML 4.0). The span extends until the end of the current column group and row group (i.e. next THEAD/TFOOT/TBODY), respectively; or until the end of the row or table, respectively, if there is no containing group (thus acting as per HTML 4.0). Also cancel effect of all ROWSPANs at a THEAD/TFOOT/TBODY boundary (problem with other browser described and behavior proposed by G. James Berigan in ) -KW * 'prev_target' is now PRIVATE to LYMainLoop.c [defined outside of mainloop()]; this undoes some dev.15 changes. -LP, KW * replace HText_pageDisplay() calls from partial mode (LYUtils.c and HTFormat.c) with LYMainLoop_pageDisplay() function implemented in LYMainLoop.c, it simply calls HText_pageDisplay() but has access to LYMainLoop.c PRIVATE variables. -LP, KW * make ^X a prefix key in all Line Edit styles. That means ^V should never be needed any more to invoke the special textarea commands (but it's still supported). Updates to help files to reflect this change -KW * don't produce a link from the KEYMAP page to a help file. The one we used to use doesn't really help -KW * correction in code executed after textarea external editing (that determines when to prompt for re-wrapping): use start_anchor not anchor_ptr. Without this correction, invalid memory access could occur. (This was probably also responsible for producing the prompt when it shouldn't be produced in some cases, as has been reported.) -KW * some tweaks of Novice mode help lines: don't show wrong key "to delete all text in field" (FORM_NOVICELINE_TWO); replaced an occurrence of with . In some cases (e.g., disabled fields), prefer no info to wrong info -KW * extended KEYMAP option: additional field can specify DIRED to request mapping in the Dired mode key_override table rather than the normal keymap table. Documented the DIRED field and default override mapping in lynx.cfg -KW * corrected KEYMAP display for dired mode. It could display the normal binding when that wouldn't actually be used, for example if a key is bound to DO_NOTHING for DIRED. The logic deciding whether to show a separate line for uppercase letters was only looking at the normal keymap -KW * reset the edit_mode flag (indication of Dired mode) in various places, so the flag doesn't stat TRUE after a new page has been loaded. For example, invoking the forms based 'O'ptions page from a Dired directory view would leave the Dired key bindings enabled within the Options page -KW * for LYNXMESSAGES: page of recent statusline messages, removed setting of the LYforce_no_cache flag in getfile(). Set the flag in LYMainLoop.c instead, but only for following a link. This makes the page act more like a normal no-cache document, for example returning to it via PREV_DOC does not cause an automatic update. The special handling in LYMainLoop.c is necessary because the link to LYNXMESSAGES: appears on the History Page, and following a link from the History Page (as well as some other generated user interface pages) normally implies overriding of no-cache behavior which we don't want in this case -KW * in LYNXMESSAGES: page, number recent statusline messages in historic order, starting with 1 for the oldest. This should make it more obvious that they are listed latest-first. Add "(No messages yet)" text if there are no messages. Removed generation of invalid
 -KW
* use a temporary file instead of the normal .lynxrc file for saving and
  restoring current settings in reload_read_cfg().  This avoids unexpected side
  effects of lynx.cfg reloading (LYNXCFG://reload action), i.e.  silent
  modification or first-time generation of .lynxrc contents.  In principle this
  should make reloading of lynx.cfg usable for accounts that don't allow saving
  of personal settings (i.e.  option_save restriction, implied by -anonymous)
  if other restrictions don't forbid it; but currently the option_save
  restriction is still obeyed for saving to the temporary file (so that
  reloading of lynx.cfg is prevented) -KW
* tweaks for LYNXCFG:  and LYNXCOMPILEOPTS:  pages:  honor REUSE_TEMPFILES
  setting if pages need to be regenerated, and clean up the memory for holding
  the file URLs in free_lynx_cfg().  Recover if the tempfile has unexpectedly
  disappeared, by regenerating it.  Also regenerate tempfile if NOCACHE key
  ('x') is used.  Added extra checks before doing automatic uncaching of
  previous page in LYNXCFG://reload code, to test whether the previous page is
  really a LYNXCFG:  view -KW
* corrected problems with "show color" in forms Options page.  Omit "ON" choice
  if color is not possible (but saving allowed).  When option_save restriction
  was in effect, the ON/OFF initialization was wrong (resulting in unwanted
  toggling of color each time options were changed in an anonymous account) -KW
* tweaks of reload_read_cfg() for retaining "show color" setting and for
  updating display_lines (user_mode may have changed) -KW
* change for HTParse: if there is a hostname part, recognize a '?' as ending
  it if there are no further slash characters -KW
* tweaks in configure.in and INSTALLATION: describe correctly what
  --disable-dired-override does.  Rename --disable-dired-archive to
  --disable-dired-dearchive.  Clarified INSTALLATION text for
  --disable-full-paths.  Changed some "define" to "prevent defining" -KW
* don't try to put cursor in last screen position for hiding in
  show_main_statusline if -show_cursor/SHOW_CURSOR is on.  The show_cursor
  behavior may have been turned on to avoid problems with curses libs or
  terminal types that cannot deal with it correctly.  On pages with no links,
  for example SOURCE display, this may leave the cursor at the end of the
  statusline message if show_cursor is on.  This just restores previous
  versions' behavior in that case.  On pages with links, the movement is
  unnecessary anyway since the cursor will move again to the current link -KW
* removed a bug in automatic textarea growing.  Textarea would grow by
  one line unnecessarily if enter was used on the last input line on a
  screen (if that was not actually the last line in the textarea).  New
  function HText_TAHasMoreLines() to help with this -KW
* revision of "nonsticky" behavior / options.  Got rid of "sticky" terminology.
  Renamed the controlling option to TEXTFIELDS_NEED_ACTIVATION and command line
  flag -tna.
  Compiling in of this mode can be disabled, see in userdefs.h under
  TEXTFIELDS_MAY_NEED_ACTIVATION.  Two versions of "Textfields Need
  Activation" mode are provided.  The default mode (simpler yet better IMO)
  highlights an inactive selected text input fields like a current normal
  anchor.  The alternative variant (may go away later?) behaves like VH's
  previous implementation and gets used when compiling with
  -DINACTIVE_INPUT_STYLE_VH.
  Many bugs that would occur in somewhat unusual circumstances are fixed, for
  both variants.  (Action of various commands on TEXT_SUBMIT_TYPE fields,
  interaction with mouse selection, ...) Selecting an inactive input field with
  the mouse will activate it.  Various tweaks to make sure selecting a field in
  this way will put the editing cursor at the right position (even if the line
  had been scrolled / might be scrolled on entering the line editor), at least
  with NCURSES mouse support.  Also, -show_cursor now in general works as
  expected.  (In the INACTIVE_INPUT_STYLE_VH variant, cursor may sometimes end
  up on the statusline after error messages.) -KW
* treat input lines of the same textarea more like one entity, as far as
  "Textfields Need Activation" is concerned, as long as movement among those
  lines is with PREV_LINK/UP_LINK/LPOS_PREV_LINK/NEXT_LINK/DOWN_LINK/
  LPOS_NEXT_LINK or ACTIVATE keys (the last one only if TEXTAREA_AUTOGROW is
  defined, for consistency with line-appending behavior).  I.e.  moving among
  textarea lines with those keys automatically activates ('enters') the new
  field for line editing if the previous one was activated -KW
* modified statusline messages to be more appropriate and specific on non-
  activated form fields.  (The additional messages are not used or compiled
  in if TEXTFIELDS_MAY_NEED_ACTIVATION isn't defined.)  Avoid unnecessary
  repainting/refreshing of the physical statusline in many cases of moving
  among fields and links.  Make sure the additional lines shown in Novice
  mode are also appropriate -KW
* modified line editor behavior on "disabled" form text fields:  instead of
  disabling all non-terminating edit keys, allow those that never modify the
  field contents.  The user can now scroll through a long value in a disabled
  field with the arrow keys, rather than being stuck at the end -KW
* the ncurses mouse popup window would overlap the statusline in Novice mode.
  Limit the overlap to border area (so at least no significant text gets
  corrupted) -KW
* modified code for stickiness of the second kind (ex-STICKY_FIELDS) according
  to preliminary proposal from Vlad.  Named LEFTARROW_IN_TEXTFIELD_PROMPT.
  Does not depend on any conditional compilation symbols, and is now unrelated
  to the other kind of "stickiness" discussed above.  See lynx.cfg.  This isn't
  optimal yet (LAKABOFTIF discussion etc..), but better than leaving it as it
  was -KW
* made default width of textarea fields (if no COLS attribute given) depend on
  window or screen width, instead of using a fixed default of "60".  I.e.  for
  wider windows make better use of available space, and for narrows windows
  avoid wrapped textarea lines.  Take the usual left/right margins (depending
  on current block style) into account.  But for -dump don't make fields longer
  than 60 anyway (they will just show up as blocks of underscores anyway, not
  showing text content) -KW
* changes in code used to create new bookmark file after a bookmark has been
  'R'emoved.  Change should only affect Unix.  Basically, revert back to
  behavior used before 2.8.1dev.8 for "normal" files (no symlinks or extra
  hard links).  I.e. use rename / maybe try "mv" instead of "cp", then change
  permission bits explicitly.  Using "cp" means running the risk of losing or
  truncating the user's bookmark file if for example the disk became full
  (although these occasions should be rare - the scratch file we are trying
  to copy or rename was written just before without error, usually on the
  same filesystem).  Some more comments in LYBookmark.c.  Note: if you like
  your bookmark files, make backup copies of them anyway... -KW
* changed F1 key bindings so it always invokes DWIMHELP, also in the Line
  Editor (for all three Binding tables).  This means that pressing F1 (if you
  have it, and it is correctly mapped and recognized) while in a text form
  field will now bring up the Line Editor Help Page for the currently selected
  line edit style.  Other keys bound to HELP by default ('?', 'h') remain
  unchanged, they still always go to the main Help Page -KW
* don't let DWIMHELP show Line Editor help for a text input field that is
  disabled -KW
* don't mangle a -cookie_file like /home/user/.lynx_cookies.~1~, only interpret
  the '~' as reference to HOME if it's right at the beginning and followed by
  '/' and then some more.  There are probably other instances where '~' gets
  mistreated (in addition to the intentional dropping of "user" from something
  like "~user/" in file URLs etc.) -KW
* changed type of EXP_KEYBOARD_LAYOUT tables to LYKbLayout_t.  They hold
  Unicode values, any similarity to LYKeymap_t is just accidental -KW
* changed EXP_KEYBOARD_LAYOUT logic so that input characters that are
  unrepresentable in the current display character set (unless it is UTF-8) get
  transformed into '?' instead of some accidentally chosen 8-bit character.
  For UTF-8, convert to UTF-8 encoding instead.  Note the Line Editor isn't yet
  UTF-8 aware; with some care it is possible to enter UTF-8 text, but the
  display will be messed up, esp.  the cursor position will be shown wrong -KW
* some corrections for TPOS, YANK enhanced lineedit functions -KW
* added back in a block in LYmbcsstrlen that got lost somehow -KW
* fix an array boundary accident in GridText.c -JB
* reiterate that LYNXCGI_LINKS is set by the configure script -PW
* note that patches should be generated by "diff -u" -PG
* modify HTReadProgress so that setting SHOW_KB_RATE false will let the
  amount read be shown in bytes/sec -DK
* modify mkdirs.sh to ignore DOS-style device -IZ
* modify CF_PATH_SYNTAX configure macro to accept DOS-style path syntax, for
  use in OS/2 EMX port -IZ
* fix some memory leaks in visited-pages tree -IZ
* correct recent change to LYEditmap.c for EBCDIC -PG
* change 'elf32ppc' to 'elf32ppc*' in config.guess to work on MkLinux DR3
  (reported by Christopher Conrade Zseleghovski (kkz@MIMUW.EDU.PL>)
* add check to HTConfirmDefault() to ensure that NLS form of "yes" and "no"
  are distinct in the first character, revert to English if not -TD
* add configure test for wredrawln, and use CF_CURSES_FUNCS -TD
* improve CF_TERMCAP_LIBS configure test -TD
1999-11-17 (2.8.3dev.15)
* add popup in options menu to control alternate organizations of the
  visited links page -IZ
* reformatted src/makefile.dos and src/makefile.dsl to make them simpler to
  modify -TD
* add -DOK_OVERRIDE to DIRED_DEFS for djgpp -LP
* change the samples in "URL Schemes Supported in Lynx" so they would appear
  without //user:passw@ but //user@ with the explanation of yet another
  possibility added in words...  So user will not get a wrong impression if
  reading that document not so carefully (you know, samples are so easy
  remembered without details), -KW, LP
* ifdef bkgd() call in force_repaint that accommodated pre-ncurses 4.1 bugfix,
  from early 1997.  With current code, a ^L when a popup is displayed causes
  the screen colors to be reset (reported by KW) -TD
* undo recent no_color_video check for A_BOLD, A_UNDERLINE since this did not
  have the intended effect (reported by KW) -TD
* add note to lynx_url_support.html about lynxcgi -PW
* add user search in partial mode (while loading of the document is in
  progress).  Scrolling to the string in question is not working properly yet
  if you repeat 'n' next time.  More work required -LP
* improved makelynx.bat ()
* fixed bug that corrupted memory (resulting in crashes) in situations when
  line ends with LY_SOFT_HYPHEN -VH
* correct comment in userdefs.h regarding renaming of
  LINKS_AND_FORM_FIELDS_ARE_NUMBERED to LINKS_AND_FIELDS_ARE_NUMBERED and
  change DEFAULT_KEYPAD_MODE to LINKS_AND_FIELDS_ARE_NUMBERED -PW
* fix bug that caused lss-enabled lynx to crash on growing textarea or
  inserting file into it -VH
* new lynx.cfg option REFERER_WITH_QUERY:[SEND|PARTIAL|DROP] -KW
* don't send Referer if we have to load a document again that we got
  from the history stack.  Lynx would send the URL of the current
  document (the one "later" in history) which could only accidentally
  be right -KW
* changed default for PERSISTENT_COOKIES from TRUE to FALSE, since
  persistent cookie support is now configured in by default -KW
* new functions (key_for_func_ext) to return a "best" key (or key pair) to
  invoke a given lynx  action, either in the Line Editor or in normal mode.
  Currently only used for a couple of statusline messages (those that had ^V
  hardcoded).  The statusline info while in a textarea now gives the right
  key(s) for invoking external editing, or omits the info if appropriate
  (no key bound, or no editor defined or allowed) -KW
* doc updates for TEXTAREA special functions -KW
* moved #defines for TEXTAREA_EXPAND_SIZE, AUTOGROW, AUTOEXTEDIT from
  LYMainLoop.h to userdefs.h, the latter two renamed to TEXTAREA_AUTOGROW
  and TEXTAREA_AUTOEXTEDIT, added description -KW
* minor tweaks: -accept_all_cookies help string, some formatting changes,
  minor text additions and corrections -KW
* set $(PROG_EXT) variable in makefiles for cygwin -TD
* define __CYGWIN__ if needed, e.g., for betas that define __CYGWIN32__ -TD
* workaround cygwin b19.1 problem generating cfg_defs.h because it did not
  properly export $PATH -TD
1999-11-03 (2.8.3dev.14)
* modify no_color_video check for A_UNDERLINE so it is active for any
  combination that uses underlining (reported by KW) -TD
* modified HTML.c so configure --enable-internal-links builds -TD
* improved 'lynx.patch' rule in makefile.in -PG
* add rough version of makelynx.bat for use with Khan's MingW32 (from Victor
  Schneider )
* update dependencies in makefile.bcb for src/TRSTable.c -HS
* fix PDCurses ifdef's in LYCurses.c to work with WATT-32 -DK
* correct ifdef's in LYPrint.c so that send_file_to_mail() works with DJGPP -DK
* modify DOS makefiles for PDCURSES for watt-32 and some of the other recent
  changes to lynx.  Included some of the EXP_ defines that DOS users may want.
  Changed the -O3 back to -O2, since -O3 has no advantage under djgpp -DK
* remove a useless ';', use FREE() instead of free() - JB
* correct spelling lexem/lexeme (reported by KW) -TD
* split-out function check_history() in LYMainLoop.c -TD
* add configure check for vasprintf -TD
* add configure check for _GNU_SOURCE -TD
* minor fixes for configure script macros CF_TERMCAP_LIBS, CF_DISABLE_ECHO,
  CF_GCC_ATTRIBUTES, CF_GCC_WARNINGS -TD
* fixed bug in psrcmode code.  Now htmlsrc_tag encloses only tagname, not
  everything in generalized brackets <,>, (reported by KW) -VH
* fixed a bug with 'g' command (reported by KW) -VH
* default value for 'OPT' in SGML.c made '1', removed alternatives to code
  surrounded by #if OPT1
* notes (VH):
  + Seems that 'OPT' stuff doesn't contain errors. Let's enable it for several
    releases, and then remove alternative code.
  + Added comments about pools.
  + Docs updated to reflect new functionality of -dont-wrap-pre
* old psrcview bug fixed  - markup was unbalanced in some situations -VH
* content of SAMP tag made justifiable -VH
* implemented HTStyleChange pooling - sizeof(HTStyleChange) is 4 times smaller
  than before, and only necessary number of stylechanges is allocated now,
  instead of some constant (1024 by default) -VH
* functionality of dont-wrap-pre improved and extended. Now it's possible to
  avoid wrapping the document being dumped completely (size of the non-wrapped
  line before the patch was limited by MAX_LINE = 1024 by default). Specifying
  -dont-wrap-pre with interactive session enables wrapped lines (in PRE) to
  be marked as in source view - with '+' in normal view -VH
* functionality of -force-empty-hrefless-a was cleaned up,
  #ifndefs NO_EMPTY_HREFLESS_A and endif's were removed -VH
* colorstyle changes are not emitted in HTML_end_element if me->skip_stack was
  >0 on entry to this function. This caused some glitches if
  -force-empty-hrefless-a was enabled -VH
* LYPrettySrc.c was slightly cleaned up, added support for lynx.cfg reloading,
  memory deallocation -VH
* possible bug in print_wwwfile_to_fd fixed - when quoting the page, seems that
  several '>'s could be emitted on the long line formed by concatenating lines
  with LY_SOFT_NEWLINEs at the begining of them -VH
* general notes -VH:
  + users of lss-enabled lynx should consider on upgrading the lynx - at least
    those who use lynx for viewing huge files.  By default, each line on the
    screen took 1K for colorstyles (on x86).  With new approach colorstyle
    changes take 24 bytes (on x86) per line in average document.  Old lynx with
    900K html file loaded as startfile occupied 30M of virtual memory, lynx
    with patch applied occupied 5 Mb on the same file.  Old code is still
    accessible by defining OLD_STYLECHANGE.
  + I spent 4 hours debugging attempting to write/fix code that cleans up the
    memory allocated in LYPrettySrc.c, but Lynx.leaks shows that I didn't
    succeeded.  I fear that leak detection stuff is broken - I checked/traced
    the code very carefully several times.
> the remainder (most) of this patch from KW:
* for confirmation prompts (HTConfirm), also accept English letters 'Y', 'y',
  'N', 'n' as responses.  If characters different from those are derived from
  the first letters of the translation of "yes" and "no" in a localized lynx,
  the latter will still be the ones that appear in the prompt text and will
  have precedence.  Message translations using multibyte character sets should
  continue to *not* translate "yes" and "no".  Added a note to that effect.
* small update for some chartrans tables, minor comment changes.
* for Unix, use LYSystem instead of system for invoking telnet, rlogin,
  rtn3270 commands.
  [ For some non-Unix systems, LYSystem messes around with the passed command
    string in various ways, and does some other stuff for DJGPP.  So no change
    for those, since I assume it worked before.  For Unix the change prevents
    the following occurring with ncurses (at least if USE_SIGACTION is
    defined):
     - access some (valid) telnet://some.host URL.
     - within telnet client, escape to command level (usually '^]')
     - suspend (usually 'z' or ^Z)
     - resume (fg).  Lynx process gets woken up, redraws lynx screen,
       screen & tty state get messed up. ]
* another tweak for display refreshing when text previously displayed
  had UTF-8 (for ncurses) - a check in display_page was missing.
* corrected stupid problem in LYGetFileInfo - invalid memory access.
* corrected and extended handling for textarea INSERTFILE and EDITTEXTAREA
  (or DWIMEDIT), the previous patch wasn't quite right:
  - now really truncate very long lines as intended for INSERTFILE, instead of
    wrapping with loss of one character.
  - for EDITTEXTAREA (DWIMEDIT), implement wrapping instead of truncation
    (Rationale for the difference:  user's editing work shouldn't be lost if we
    can avoid it; it is only temporarily stored in a file which may be
    unrecoverable, different from the typical INSERTFILE case.) If, upon
    returning from the external editor, lines are encountered that don't fit in
    the displayed width of the textarea fields, the user may be given the
    option to wrap to that width.  (This prompt may not be given when the first
    such line has no suitable spaces for breaking - the file may be binary
    garbage after all, not worth fixing up too much.) Line breaking is
    attempted at spaces if possible (using isspace() for checking), but not if
    the only available spaces are close to the beginning of a line.  An attempt
    is made to join the wrapped part of a line (if not too long) with the next
    line if it is not indented, by suppressing the next line break (if not too
    far away).  Some other heuristics are used that work reasonably well for
    normal text paragraphs.
    If the above mechanisms fail, or the user did not confirm wrapping when
    prompted, very long lines will still be wrapped to fit into the buffer size
    (around 1024 chars).
  [ The wrapping works quite nicely in "normal" cases - please try it! ]
* mouse action in popups would lead to call of fancy_mouse() with wrong row
  number, which could lead to messed-up display as well as invalid memory
  access.
* The previous changes in link redrawing made things worse instead of better
  for UTF-8 display with ncurses (without color style).  This time (using
  wredrawln, not touchline) it should really get better...
  [ The UTF-8 related changes would need testing with non-ncurses curses libs,
    if anyone has one of those AND a working UTF-8 environment - late xterm
    betas(?) from Tom's site should do.  If the functions used for ncurses are
    available in other curses libs, the code should probably look the same as
    for ncurses.  ]
* SGML.c to compile without --enable-prettysrc (reported by HN) -KW
* fixes an invalid memory problem from previous patch
* adds alignment inheritance from COLGROUP / COL / THEAD / TFOOT / TBODY.
* remove some logic from LYmbcsstrlen() that gave an incorrect count for
  the number of cells displaying multibyte characters, resulting in too-few
  cells being highlighted (reported by HN, HS) -KW
* added support for ROWSPAN attribute of TD and TH to TRST.  This only
  reserves the appropriate amount of space in subsequent lines.
  [ Pages that show off ROWSPAN nicely:
    
    and related ones for other "domain"s.  (Verify that there really
    is a ROWSPAN= in the current version.)  View with a screen width
    of 100.  With 80 there is some kind of problem, compare both
    ^V settings... ]
* some corrections in TRST code.
* change initialization order of key escape sequence mappings for slang, so
  that terminfo/termcap information always overrides defaults that may
  conflict.
* minimal memory cleanup / leak prevention for EXP_FILE_UPLOAD error
  cases in GridText.c.
* in HText_SubmitForm, don't change the post_content_type of the
  passed in newdoc structure unless that is really wanted.
* tweaked UTF-8 prevention of display library wrapping/truncation to make
  better use of available width for centered text, and to not apply if dumping
  to stdout.
* for UTF-8 output with ncurses, do a clearok in display_page also if the page
  that was *previously* displayed had UTF-8 characters.  Without this there
  were still display glitches.
* made previous changes to SGML.c and HTMLDTD for handling OBJECT more generic.
* minor tweaks, cleanups, glitch removal in previous changes.
* better tracking of HTSprintf0/HTSprintf with --enable-find-leaks
  (-DLY_FIND_LEAKS).  This can be disabled in LYLeaks.h by removing the
  definition of LY_FIND_LEAKS_EXTENDED.
* added variant behavior in StrAllocVsprintf to make HTSprintf0/HTSprintf use
  less memory allocation calls and keep its temporary string buffers across
  calls.  The buffers then only grow and never get cleaned up.  This is enabled
  by defining SAVE_TIME_NOT_SPACE in HTString.c, disable the definition there
  in case of problems.
* added code so HTSprintf0/HTSprintf can use vasprintf() in some situations,
  which should be more efficient.  It also works with --enable-find-leaks
  (EXTENDED or not).  This only comes into play if USE_VASPRINTF is defined
  (not defined automatically anywhere).
  [ For me (some Debian glibc version), the prototype for this function
    is in stdio.h but only gets included with an explicit -D_GNU_SOURCE. ]
  [ Which of the four combinations with/without vasprintf, with/without
    SAVE_TIME_NOT_SPACE is better (if any) remains to be tested.  I have seen
    drastic differences under leak tracking, but that's just too much
    different from a normal situation to count for anything. ]
* Some minor leaks fixed. (LYMainLoop.c)

[ Had to make owner_address and ownerS_address file-wide PRIVATE's
 instead of auto to unleak them.  Could be taken out of more
 argument lists now. ]

* HTFile.c: correction in FormatNum (could duplicate fields for some
  LIST_FORMAT settings), avoid some HTSprintf0 calls in FormatStr.
* replaced calls to HTSprintf with calls to HTSprintf0 in various files.
* added missing include of LYLeaks.h in LYPrettySrc.c.  But disabled memory
  tracking there, too many allocations show up as leaks.
* allow digits in tagspec for -prettysrc.
* the 'fixit' change of 1999-05-16 didn't really let LYConvertToURL() revert to
  the right old behavior in the non-'g' use.  Now return a file URL for the
  nonexisting file in the relevant situation again, as before 1998-03-25,
  instead of an erroneous "file://localhost" which (on Unix-like systems at
  least) would result in access to the root directory.  This change (like the
  changes of 1999-05-16 and 1998-03-25) only matters for strings that aren't
  already in absolute URL form, don't start with a slash (or, for DOSPATH
  systems, other path separator) either, and don't get turned into remote URLs
  by successful 'guessing' and DNS lookup.  None of the changes affect VMS.
* protect INSERTFILE and EDITTEXTAREA from generating memory access violations
  if the inserted file has lines that are too long for the buffer used.  An
  alert message is issued and the long lines are truncated.  Also don't exit if
  memory allocation fails for the buffer to hold the whole file, since the only
  reason for the failure may be that the file is too huge when otherwise lynx
  has enough memory.
* improved handling of some invalid constructs in SGML, especially
  '<' followed by various characters; don't lose those characters from
  what gets displayed for -prettysrc.
* a pre-filled TEXTAREA text that needed charset translation could cause
  use of an invalid pointer when building the page, resulting in garbage
  data being displayed (or worse).  The problem was in HTML.c, not related
  to TEXTAREA editing or other related new functions.
  [ preceding three were partially already in previous patch ]
* recognize '' as for
  a completely invalid tag.  Within PCDATA elements the PI is now also ignored
  instead of being treated as character data, this makes a difference for
  example in a TEXTAREA in SortaSGML mode.  (PI's aren't really expected to
  occur in the middle of HTML, but are used at the beginning of XHTML documents
  and other XML documents.)
* the earlier change of TEXTAREA handling (treating as SGML_PCDATA, SortaSGML
  only) created a problem, some lynx special characters were passed on as data
  characters in the field contents and would mess up line editing and possibly
  the submitted form data.  Actually the problem also existed before, but only
  for non break space, soft hyphen etc.  encoded directly as character data
  (not NCRs or entities).  Resolved by telling SGML.c not to generate lynx
  special chars for some element contents (currently only TEXTAREA), with new
  flag Tgf_nolyspcl.
* corrected some logic errors in LYUCFullyTranslateString.  Special attribute
  characters are now more often translated to real characters when 'Back' flag
  is set, and should now be translated to the *right* characters for the target
  charset.  (They were sometimes converted to ISO-8859-1 values when the 'to'
  charset was different.)
* added a missing significant cast in UCReverseTransChar.
* for scrollbar mouse clicking, use codes that work independent of current
  line-editor key bindings.
* better calculation of "subjective distance" from next anchor for mouse.
  Change of 1999-07-30 had various problems, it wasn't quite intuitive.  Use
  scaled numbers for finer granularity.  Don't make "basin of attraction" too
  wide, or it becomes hard to find a "background" spot to click on that doesn't
  affect a link if a page has a high density of links.
  [ For example with a pair of fields:
         Submit Reset
                xxx
  clicking in any of the positions marked 'x' on the next line would
  select the first field, not the second. That was not an improvement. ]
* functions LYmbcsstrlen, LYno_attr_mbcs_case_strstr, and LYno_attr_mbcs_strstr
  in LYStrings.c where unclear about the concept of 'printable' or 'physical'
  used for some returned values in the CJK case.  Callers expected number of
  display cells, implemented was number of 'characters' counting full-width
  characters as 1 instead of 2.  Now these functions take an additional
  argument 'count_gcells' that tells them how to count.
  This removes some long-standing, somewhat obscure problems with search target
  highlighting under CJK display character sets, as well as new (and less
  obscure) CJK problems introduces by the latest changes for highlighting.
  Also fixed some details in the *strstr functions.  The positioning of the
  highlighting in CJK mode should now be correct and work as expected (as for
  other display character sets) for anchors, search targets, and combinations
  of both.
* reorganized LYOpenTempRewrite.  It should finally make sense for systems
  without HAVE_TRUNCATE defined.
* corrected SNACat (was unused).
* changes for SUP and SUB:  Render SUP visibly as a '^' character if it needs
  to be separated from a preceding character in order to prevent
  misinterpretation.  The test currently used is isxdigit for the the preceding
  character.  Render  and  always as brackets '[' and ']'
  respectively.  SUB is mostly used in technical material while SUP occurs
  frequently in pages of general nature where it is not essential, therefore
  the different treatment.
1999-10-21 (2.8.3dev.13)
* revert a change from dev.4 which disabled getbkgd support in PDCurses -DK
* modify ifdef for USE_QUOTED_PARAMETER to include __CYGWIN__, else names such
  as "telnet.sh" are translated to "telnet" -DK
* improve/simplify scrollbar support -IZ
* implement LYNXMESSAGES:/ page using non-tempfile approach -LP
* correct an assignment to last_kcode, broken by restructuring of LYMainLoop.c
  in dev.11 -HS
* tweak LYExecv() to exclude SH_EX conditional (dired commands didn't work
  on non-Windows platforms when SH_EX defined) -LP
* fix a potential out-of-range pointer in HTParse - JB
* fix a small leak in the statusline history page - JB
* restore DELEL lineedit key binding in the Alternate map (which apparently was
  changed in -dev.4 to the DELNW function) to the ^K key -KED
* LYMainLoop.c:  remove a dozen of unnecessary `refresh_screen' flags from
  LYK_HISTORY, LYK_PRINT, LYK_LIST, LYK_ADDRLIST, LYK_VLINKS where a new html
  page is generated (any document update that may be displayed in "partial
  display" mode need not set `refresh_screen' flag) -LP
* correct some typos in cernrules.txt -VH
* move declaration of LastDisplayChar to make GridText.c compile with DJGPP -LP
> the remainder (most) of this patch from KW:
* HTFTP.c: (already sent w/o description - this is updated to dev.10)
  - interrupted_in_next_data_char was not being reset.  That could make all
    subsequent FTP directory listings fail (by showing an empty directory)
    after receipt of one directory listing had been interrupted.
  - be nice, send quit before closing at least in the normal (non-interrupted
    and successful) case.  Some servers (wu-ftpd at least) otherwise complain
    with "You could at least say goodbye" which in turn causes unnecessary RST
    packets.  To minimize round-trip delays, the QUIT is sent before we start
    reading the returned data (but after the initial response to our retrieval
    command).
  - always close data connection immediately after we are done reading from it,
    also for directory requests.  This was already the case for file requests.
    Some servers (including recent wu-ftpd beta) wait for indication that we
    closed before proceeding.
  - keep better track of closed sockets.  Some more trace messages.
    Some comments corrected.
* tabular representation for simple tables.  See included file README.TRST.
* made User-Agent warning more friendly, and more specific.  Tell the user what
  lynx expects in order to avoid the warning.  On the other hand, issue an
  equivalent warning when -useragent is used.  Change documentation
  accordingly.
* don't send User-Agent header at all if it somehow would be blank.
* indicate on forms 'O'ptions Screen which options are not saved to .lynxrc.
* disable the form fields in the 'O'ptions Screen if the screen is generated
  when FORMS_OPTIONS code is compiled in but not actually active.
* LYPrint.c: In subject_translate8bit (see OUTGOING_MAIL_CHARSET
  option), use higher level function to charset-translate mail Subject
  line, rather than low-level UCTransCharStr.
* UPPER8, UCForce8bitTOUPPER:  was severely broken for UTF-8 display, making
  WHEREIS search for strings containing non-ASCII characters impossible (and
  probably with other bad effects).  Now case mapping may still be wrong, but
  at least identical strings compare as equal.
* LYHistory.c:  Entification for saved statusline messages happened twice by
  mistake.
* HTFWriter.c:  Made code for automatic decompression of bzip2 files
  conditional on BZIP2_PATH.  Such files should be treated as normal binary
  files on systems without bzip2.  The configure seems to always define
  BZIP2_PATH, but it could be undefined manually.
* HTFWriter.c:  Use LYRemoveTemp instead of remove in some cases, to avoid
  keeping those files in the temp file list after they are long gone.
* HTTCP.c: Check whether port numbers in URLs are really numbers.
* HTPlain.c:
  - deal with backspace formatting as used in formatted man pages.
    (No highlighting, only avoid double output of characters)
  - pass on 0xAD (soft hyphen) character in more cases.
* HTNews.c:  Prevent some ways that could trick lynx into treating a regular
  "news:" or "nntp:" URL as something else, like snewspost.  Extra check in
  LYNews.c whether posing is allowed.  Return with an error message in some
  cases of URLs that are too long, instead of silently truncating.  Make HEAD
  work again on news articles.  Some memory leaks in error path removed.  A
  message tweak.
* HTFormat.c:  HTStreamStack:  avoid some unnecessary work, add a trace message
  to show what is returned.
* SGML.c:  some cleanup of ugly ifdefs, and of unnecessary abuse of global
  variables.  (still a lot left!)
* handle INCLUDE and CDDATA marked sections: output the contents.
* parse various elements differently that had/have special requirements or
  hacks.  Extend meaning of Tgf_strict for literal-like content modes.  Use
  SGML_CDATA in some cases (and treat it similar to SGML_LITTERAL), use
  SGML_PCDATA for literal-like parsing (but if modified by Tgf_strict it's
  more like regular SGML_MIXED).  A '<' that would start a tag gets displayed
  (since not element content is allowed that's just error recovery).  Comments
  now work in TEXTAREA instead of getting displayed as text (SortaSGML mode
  only).
* minor tweak of sorta SGML handling for invalid end tag if start tag could be
  validly omitted.
* more consistent and correct recognition of element names.  The characters
  "_-.:" don't end tag names.
* improved handling of '/' after element name in a tag:  "" is treated as
  an empty element (as in XML).  If we recognize "foo" as an empty element, do
  nothing special; and if we recognize "foo" as a non-empty element; convert to
  "".  "bar" (for non-empty and recognized "foo").  This is not
  general as it would have to be for or real SGML parser, in particular '/' is
  only treated this way if it directly follows the element name, and it may not
  even be quite right.  It is better than the recovery lynx previously did in
  these cases though.
* changed handling of include buffer which is used to pass back data
  from HTML.c to SGML.c.  Passing data upstream now works without strange
  reordering effects even when SGML_character was already parsing data from
  a previous include buffer.
  Character set translation would happen several times on data passed back
  to SGML_character in the include buffer for re-parsing.  This is now
  avoided.  Well at least in most cases, and for characters that *can* be
  translated, there are likely combinations of input and output character
  sets where the assumptions made are still wrong.
* the start_element and end_element methods of structured stream class now
  return a status code.  Currently only used for the OBJECT stuff below.
* mostly HTML.c, SGML.c: Changed handling of OBJECT and MAP.
  - avoid using the include buffer mechanism as much as possible.  This
    involves introducing some new special handling in SGML.c to change parsing
    mode for element contents, and a way for HTML_{start,end}_element to signal
    to SGML_character what it should do.  In most cases when the OBJECT element
    content should be parsed and displayed, SGML_character now only needs one
    pass through the data.
  - don't lose content when several OBJECTs are nested.
  - in HTML 4, an OBJECT with USEMAP attribute can refer to a MAP within the
    OBJECT's content, possibly within nested inner OBJECTs.  Lynx would fail to
    find the MAP in that case, now it doesn't.
  - in HTML 4, MAP can contain arbitrary block elements in addition to AREA.
    Lynx now shows such block content, even if it occurs within (possibly
    nested) OBJECTs with USEMAP whose contents we would otherwise skip.
    Sometimes we may show too much now, by generating a LYNXIMGMAP link as well
    as showing block content or by showing more of the OBJECT content than what
    is within a MAP, but that is preferable to losing data.
  - treat an A tag with COORDS attribute as equivalent to an AREA when it is
    within MAP, for the purpose of collecting links for LYNXIMGMAP.
  - as a fallback, internally redirect a LYNXIMGMAP request to the position of
    the MAP element in the normally rendered text of the document containing
    the MAP, if it is known that the MAP element exists and just doesn't
    contain any AREA (or equivalent A-with-COORDS) links.  It is assumed that
    in such a case there is some block content within the MAP that is rendered
    normally.
* HTFile.c: new function LYGetFileInfo.
* HTAnchor.c: new function HTAnchor_findSimpleAddress.
* new function HTStartAnchor5.
* modified the way link text is (re-)drawn by function highlight.  The bulk of
  processing now happens in new function LYMoveToLink.  The data of the
  containing line is now scanned from the beginning, using the same logic as in
  display_line to make sure that lynx and the display library have the same
  idea of where in the line the link starts.  In UTF-8 output mode, parts of
  the line preceding the link are also repainted if this is necessary.
  Refreshing of the physical line is forced if necessary in UTF-8 mode.  For
  anchors split across lines, the new approach is currently only used for the
  first line.
  This change is not in effect for lynx with color style.  In that case
  highlighting already is sometimes done in a similar similar, but not quite
  the same, separate function.
* modified WHEREIS target highlighting for hypertext links.  Now this is done
  in the same pass as drawing the normal link text, in LYMoveToLink.  This
  avoids problems in UTF-8 display mode.  It also avoids a lot of complicated
  and extremely hard to understand older code in highlight(), but that code is
  still there for use by lynx with color style and for other remaining cases
  (non-hypertext anchors, second line highlighting).
* modified WHEREIS target highlighting for general text.  Instead of first
  writing each line's characters in display_line, then scanning again through
  the line's data for portions to highlight and repainting those parts after in
  display_page, this is now done in one pass within display_line.  However,
  this isn't (yet?) done for lynx with color style which still uses the old
  code.
* these last three changes reduce problems that occur when using UTF-8 display
  character set (in an appropriate terminal environment that understands it, of
  course).  Most of them don't apply with color style lynx, so it continues to
  have more UTF-8 problems.  Pages with mostly ASCII characters should be more
  or less ok.  Problems that otherwise are not visible become apparent in
  search highlighting, and after ^Z / fg.
* GridText.c:  More changes to deal with problems caused by using UTF-8 output
  with a display library that isn't aware of it.  Break line with UTF-8 before
  curses does it.  This causes lines that are too short, effectively the
  rightmost part of a line cannot be used if there are UTF-8 encoded
  characters.  The alternative, letting curses wrap the line when it thinks it
  got too long, is worse, so do it in lynx code instead.
* avoid memory overrun for very long lines in UTF-8 mode.  Avoid splitting line
  in the middle of a multibyte UTF-8 character.
* test for SHOW_WHEREIS_TARGETS instead of 'defined(FANCY_CURSES) ||
  defined(USE_SLANG)'.
* initialize new textarea lines created by insert_new_textarea_anchor with
  current display character set for value_cs.  (The "cloned" value can be stale
  in some cases if the user changed the display character set after the
  document was last loaded - normally that should not happen).  For a file
  inserted into a textarea with INSERTFILE use new function LYGetFileInfo
  instead to determine the file content's charset.  Thus -assume_local_charset
  and conventions based on file suffix should be honored.
* for Unix, added more specific error message if calling external editor for
  textarea failed, based on the status returned by system().
* it is possible to require an additional prompt before Enter in
  an input field causes form submission: define TEXT_SUBMIT_CONFIRM_WANTED,
  explained in userdefs.h.
* some small changes to prevent overstepping string boundary (HTParse.c)
* extended SUFFIX option, added SUFFIX_ORDER option, see documentation in
  lynx.cfg.  The long list of built-in file suffix rules in HTInit.c can now be
  disabled, either at compile time - see userdefs.h - or at run time.  The
  equivalent functionality is now available in lynx.cfg for those who want it.
  Added comments, see HTFileInit in HTInit.c.
* various tweaks of built-in file suffix rules.
* allow XLOADIMAGE_COMMAND to be empty (in lynx.cfg) or NULL (in userdefs.h),
  just don't use a default X viewer for image types in that case.
* moved UCGetUniFromUtf8String from LYCharUtils.c to UCAux.c.
* renamed LYUCFullyTranslateString -> LYUCTranslateHTMLString, and
  LYUCFullyTranslateString_1 -> LYUCFullyTranslateString.
* tweaks for special chars in (what is now) LYUCFullyTranslateString, in
  obscure cases (input fields of type password prefilled with unusual content)
  lynx would pass text back to the server with special characters (soft hyphen
  or non-break space) expressed as lynx-internal code values.
* added some replacement characters or strings to various chartrans tables.
* experimental command line option -convert_to, only compiled in if new
  MISC_EXP symbol is defined.  This takes a string in the form of a MIME type,
  which can also be combined with an appended ";charset=" parameter.  (This
  needs shell quoting of course).  The charset value can be used to set the
  display character set from the command line.  The MIME type can be one of the
  non-official types used internally, for some interesting effects (crashing
  lynx not excluded).  Try www/download, www/source, www/dump, or some
  unrecognized string.
* fixed HTMainText_Get_UCLYhndl, it was returning the wrong kind of charset
  handle (a "UChndl", which is different from a "LYhndl" or "UCLYhndl" etc.,
  and shouldn't be directly accessed by arbitrary bits of lynx code - it should
  be regarded as private to the chartrans mechanism).
* protect various printf-like calls against crashes from strings with '%':
  LYSyslog.
* LYDownload.c: made parsing of LYNXDOWNLOAD: URL slightly more robust.
* disabled some broken pieces.
1999-10-14 (2.8.3dev.12)
* fixes for restructured LYMainLoop.c (reported by PG, LP) -TD
* minor fix for makeutcb, to compile with K&R C -TD
1999-10-13 (2.8.3dev.11)
* restructured LYMainLoop.c, so the main switch statement calls functions
  rather than doing everything inline.  This greatly reduces memory required
  to compile that module, as well as making the compile 3-4 times faster -TD
* tweak CJK_EX code for incorrect x-transparent charset handler - it now
  depends on --with-charsets= configure flag -LP
* tweak comments in UCDomap.c to be consistent with KW changes as of
  2.8.3dev7 -LP
* define DECL_ERRNO for Borland compiler, so errno will be declared (report
  by JS) -TD
* add definition for DJGPP so truncate() function is used there, needed for
  LYOpenTempRewrite() function -LP
* correct character set for lines added in an external editor (Marek Kubita
  , KW, KED)
* remove a couple more duplicate includes -LP
* remove a couple of duplicate includes (JB - John Bley )
* fix some missing ifdef's for win32 versus DOS, as well as change calls to
  strcasecomp() to strncasecmp() -Hiroyuki
* undo spurious change from win32 integration in dev.5 to HTSprint0() which
  causes a memory leak (reported by John Bley, analysis KW) -TD
* prevent embedded "%s" in generated messages from causing a core dump in
  exit_immediately_with_error_message by using fputs rather than fprintf/printf
  (reported by KW) -TD
* Changes in UCAuto.c for --enable-font-switch:  Support some more code pages
  if available.  Check return code from setfont invocation, and use it to
  determine whether font and/or translation map loading was successful.
  Warning, this is not based on any documented interface but on
  experimentation, so may not work for long or for anyone but me; it shouldn't
  be worse than before though.  Better logic for keeping track of state, some
  parts just didn't work right.  Workaround for wrong data in some distributed
  font files.  Minor memory leak removed -KW
* modify test/c1.html to use tabs for better formatting, added comments -KW
* modify HTFTP.c for better conformance with RFC959.  Among other things, one
  major purpose was ending the control conversation cleanly, at least in the
  normal case, to get rid of the "221 You could at least say goodbye.."
  responses from wu-ftpd servers and resulting RST traffic.  In response to the
  problem with ftp.wu-ftpd.org, made one small change to when the data_soc is
  closed.  This was done early for some specially code server types, apparently
  those that has caused the same type of problem in the past; just changed it
  to close data_soc at that point independent of server type -KW
* set CDPATH to . in the makefile.in's that use cd, in case user has set
  CDPATH without . at the beginning -TD
1999-09-29 (2.8.3dev.10)
* change CTRACE macro to double-parenthesis form, to allow ifdef'ing most
  trace statements -TD
* fix the creation of a new bookmark file and takes care that older bookmarks
  files do not fall into the same bug anymore by making sure the 
    tag is in a line by itself. This correction will only be activated when the first bookmark is attempted to be erased (patch by Eduardo Chappa L) * change a trace/error message in HTInit.c to say "Lynx" rather than "metamail", to avoid confusion -HN * change formatting in user's guide, etc., to
     sections, thereby
      appeasing Dave Raggett's "tidy" program -TD
    1999-09-13 (2.8.3dev.9)
    * add -nobold, -noreverse, -nounderline options to disable corresponding
      video attributes (based on a patch by John Hawkinson ) -TD
    * add STICKEY_FIELDS to lynx.cfg, which tells lynx whether to activate the
      previous document when an extra key-left is given -VH,TD
    * minor cleanup of run_external(), use single return, HTSprintf0 -TD
    * for WATT32 configuration, call _eth_release() and _eth_init() in HTTelnet.c
      to make telnet work properly -DK
    * correct redefinition of u_long for WATT32 -LP
    * modify syslog change to make it more specific, based on comments by KW -TD
    * fix potential security problem with SYSLOG_REQUESTED_URLS, which would let
      syslog() send sensitive information as broadcast to any syslog daemon that
      care to listen.
      E.g. URLs with embedded passwords are sent to syslog:
        Sep 11 12:26:06 lynx[16177]: ftp://joe:password@host/~joe
      The patch masks the password by breaking up the URL and replacing
      the password with "******" (Gisle Vanem ).
    * fix mismatch of const's from call of map_string_to_keysym() in
      lkcstring_to_lkc() -TD
    * supply trailing slash for protocol_proxy settings (whether environment
      variables or lynx.cfg) in HTAccess.c if the slash was omitted and if the
      content otherwise looks normal (starts with http, no superfluous slashes) -KW
    * add links for "Free WWW E-mail services" to online help -PW
    * add links in online help to FAQ-o-matic -JS
    * more fixes to build with slang under cygwin32 - DK
    * add/use LYwaddstr(), etc to fix more const-casts (reported by PG) -TD
    * modify HTTCP.c to prevent telnet and similar applications from inadvertently
      using hostname tokens which look like command-line options -KW
    * modify configure script's --with-charsets option so that if the option
      --without-charsets is selected, then it will use a 'minimal' set.  The
      keyword 'minimal' is recognized as the list us-ascii,iso-8859-1,utf-8
      (request by KW, HN) -TD
    * ifdef'd recursive calls on UCGetLYhndl_byMIME() for charsets that may be not
      present (--with-charsets), and add getLYhndl_byCP() to cover a special case
      of recursion which was also a preexisting hole (reported by Frederic L W
      Meunier, analysis by KW) -TD
    * replace fr.po with a placeholder.  Add placeholders for ru.po, pt_BR.po -JS
    * review/modify HTNews.c to avoid potential buffer overflows, as well as reduce
      the number of embedded constants that make it difficult to adjust fixed
      buffer sizes -TD
    1999-08-28 (2.8.3dev.8)
    * correct ifdef's combining HAVE_POPEN and __CYGWIN__ in LYPrint.c, which would
      link popen() code when it was not available -TD
    * correct order of ifdef's for __CYGWIN__ in LYGlobalDefs.h, which would result
      in a syntax error if the symbol __CYGWIN__ were undefined when __CYGWIN32__
      was defined -TD
    * change hardcoded ifdef for  include to autoconf'd form -TD
    * modify makeuctb to add ifdef's allowing most charsets to be suppressed at
      compile time.  Use similar ifdef's in UCdomap.h to suppress registration
      of non-uctb charsets.  Add configure option --with-charsets to specify list
      of charsets which are not suppressed (def7_uni is always active) -TD
    * change makeuctb to generate the name of the output file, simplifying all of
      the build scripts in chartrans -TD
    * correct a syntax error in crypt_util.c from dev.7 and an ifdef in LYCurses.c
      that sets the codepath -SH
    * use macro TABLESIZE throughout for consistency -TD
    * revert use of TYPECAST for parameter of 'FREE()' macro, since that puts a
      cast on the parameter as an lvalue (reported by LV) -PG
    * correct improperly-nested ifdef EXP_CHARSET_CHOICE in ifdef for USE_PSRC
      in LYReadCFG.c -TD
    1999-08-26 (2.8.3dev.7)
    * tweak ifdef'ing of `debug_delay' (only available with SH_EX _and_ WIN_EX) -LP
    * tweak src/Xsystem.c (extern system_is_NT is now ifdef'ed with WIN_EX) so
      exec_command() can also be used with DJGPP when compiled with _WIN_CC symbol
      (though choice of _WIN_CC is questionable) -LP
    * simplified ifdef'ing for resolv() vs LYGetHostByName() for DJGPP -TD
    * DJGPP with WATT32 now does DNS lookup via LYGetHostByName()/gethostbyname()
      like other lynx ports so we get reasonable error recovery when DNS lookup
      fails.  (For example, we now avoid a hang when wattcp.cfg is not configured
      properly - a typical situation when playing with nullpkt.com).  Build with
      -DNSL_FORK (in both src and WWW makefiles) is recommended:  this will prevent
      unexpected 1 second curses delay when alerting a wrongly configured tcp.  (No
      real fork() in DJGPP, unfortunately:  this function always returns -1 and set
      'errno' to ENOMEM, as MS-DOS does not support multiple processes.  It exists
      only to assist in porting Unix programs) -LP
    * alternative patch (replaces HN's) for UCdomap.c -KW
    * modify initialization of lynx_temp_space in case the given name has
      embedded "~", ifdef'd for WIN_EX -SH
    * fix a problem hanging caused by allowing some unknown entities in an ALT
      string.  The "hang" problem was caused by a combination of removing too much
      under 'case S_check_name' in 'LYUCFullyTranslateString_1', _and_ having
      having some Latin 1 character codes that are untranslatable to the display
      character set -KW
    * added lynx.cfg setting PSRCVIEW_NO_ANCHOR_NUMBERING that inhibits link
      numbering when in psrc mode if set to TRUE (default is FALSE) -VH
    * fixes for justification code (anchor position recalculation) and the
      GridText.c:*TrimHightext (it was not designed to support LY_SOFT_NEWLINES),
      correcting rendering of links on wrapped lines in psrc mode -VH
    * fixes to www_tcp.h, LYUtils.c and UCdomap.c to build on BeOS 4.5 -TD
    * fixes for CYGWIN with Slang, mainly due to platform differences in Slang -DK
    * fixes for DJGPP, missing headers and declarations -DK
    * let CJK charsets default to 7 Bit Approximations.  Needed to display entities
      in the decimal 160-255 range.  (Restore behavior before the changes made to
      declarations of charsets on 1999-03-04) -HN
    * rename -number_links_forms to -number_fields -TD
    * add the -number_links_forms command line option (John Hawkinson
      ).
    * modify configure script so --enable-change-exec sets default for
      the --enable-exec-links and --enable-exec-scripts options -TD
    * modify ifdef's for ENABLE_OPTS_CHANGE_EXEC since one or both of EXEC_LINKS
      and EXEC_SCRIPTS must also be defined to make this effective (reported by
      KED).
    * add explanations of the various choices for revealing/not images, to Users
      Guide, Options Help & lynx.cfg -PW
    * fix LYgetstr() to disable saving of input text on LYE_ENTER state when the
      input is supposed to be hidden -KW
    * add/use LYaddstr() to fix some const-casts -TD
    * move dependency of "lynx$x" from "install" to
      "install-bin:" in top-level makefile.in -PG
    * corrected display of SGML_LITTERAL content -VH
    * now LY_SOFT_NEWLINE is used in psrc mode to denote wrapped lines (as in plain
      source mode) -VH
    * add configure option --enable-scrollbar -TD
    * make the charset-choice code lynx.cfg-reloading-safe -VH
    * add experimental code to allow users to specify that a subset of the
      compiled-in charset definitions are available for selection for display
      (ifdef'd with EXP_CHARSET_CHOICE, added configure option
      --enable-charset-choice -TD) -VH
    * add/use ANSI_PREPRO symbol to simplify ifdef's concerning preprocessor token
      substitution/concatenation -TD
    * modify ifdef of code that shows current CJK code in the title area under
      SH_EX as well as CJK_EX -TD
    * modify HTMLDTD.c to set canclose for  inside 
     -VH
    * correct ifdef'ing of set_ws_title(), which should be applied only on win32
      (reported by Frederic L W Meunier) -LP, TD
    * reduce compiler warnings from Borland C++Builder.  Most of these are casts,
      with boolean constructs dominating -JS
    1999-08-13 (2.8.3dev.6)
    * workarounds in LYMain.c and LYMainLoop.c for excessive compiler warnings due
      to defective design of glibc2 -TD
    * modify logic for EXP_JUSTIFY_ELTS in GridText.c to change a raw
      LY_NONBREAK_SPACE to ' ', to work better for tables -VH
    * add/clarify user's guide for command line option syntax -DK, KW
    * add a new command line toggle for DOS to control debugging of packets under
      WATTCP and WATT-32.  Under WATT-32, once dbug_init is called, debugging
      cannot be turned off (although output can be sent to /dev/null).  This new
      option "-wdebug" controls whether debugging is active, is off by default -DK,
      Gisle Vanem
    * allow ':' as a separator between the option and its value -DK
    * corrected install rule using symbolic link for copyright files (reported by
      HN, KED) -TD
    * reset "stalled for xxx" counter from IZ's ETA change in dev.5 between ftp
      requests -VH
    * add support for scrollbars, ifdef'd with USE_SCROLLBAR.  Use command-line
      options -scrollbar and -scrollbar_arrow or corresponding lynx.cfg to enable
      it.  Requires ncurses; may be further tuned if color-style configuration
      is used -IZ
    * LYCopyFile():  Thanks to Hiroyuki Senshu, DOS-based systems need no cp.exe
      binary any more.  The code was originally ifdef'ed with SH_EX; now defined
      with DOSPATH so is used automatically by any dos/windows port, not used for
      UNIXes (permissions?) -LP
    * a few includes labeled with _WIN_CC now tweaked with WIN_EX as should be -LP
    * adjustments to SH_EX, CJK_EX ifdef's in LYMainLoop.c and LYUtils.c to aid in
      porting -LP
    * improved logic in status_link() for -short_url option (patches from
       and Eduardo Chappa L)
    * modify display_page() to not necessarily call lynx_force_repaint() to make
      highlighting work when displaying UTF-8 -Christian Weisgerber, KW
    * add check in read_directory() if transfer was interrupted -KED
    1999-07-30 (2.8.3dev.5)
    * add/use LYHideCursor() macro to accommodate position in older curses -TD
    * add configure option --enable-cjk to compile-in CJK_EX logic -TD
    * add -short_url option and associated logic to elide middle of long urls
      (adapted from patch by Eduardo Chappa L ) -TD
    * ifdef'd read-progress changes with EXP_READPROGRESS, add configure option
      --enable-read-eta to turn this on -TD
    * enhanced read-progress logic (Ilya Zakharevich)
      a) makes size/transfer rate reports use format "8.3 KB" (instead
         of "8 KB") if numbers are below 10 KB and reports are in KB;
      b) makes transferred/expected/transfer-rate use bytes/KB independently
         so "236 bytes of 56 KB" is possible, as is
         "8.3 of 56 KB, 456 bytes/sec";
      c) adds "ETA 23 sec" info if available;
      d) adds " (stalled for 75 sec)" info if available (updated each 5
         sec or so);
      e) uses gettimeofday() if present (instead of current hacks) to get more
         frequent updates.
    * fixes for OS/2 and ncurses from Ilya Zakharevich:
      a) Makes lynx ignore mouse events which are not clicks (filtering through
         ncurses does not work as expected).
      b) Makes mouse-clicks "basin of attraction" of a link wider (the area where
         clicks make the link a current link).  It was 2 units vertically and
         horizontally, make it 2 units vertically, and 6 units horizontally.  This
         leads to "more intuitive selection".
      c) Make processing of .lynx-keymap write messages to trace buffer;
      d) LAC-keybindings were not working;
      e) Allow .lss files include one another via INCLUDE:/file/name
      g) Allow a change of default color in .lss files (not the color of attributes
         text, but colors for a style if "default" is specified); This (together
         with "e") allows for a simple modification of a color scheme
         Here is an example of a .lss file with a changed default
         foreground/background and a handful of other declarations fine-tuned for
         this change.  (It implements "Commander" style).  "Overriding"
         declarations should be put before INCLUDE:, and the "default:" declaration
         should be the last one.
    		status:reverse:yellow:black
    		h1:bold:yellow:black
    		em.a:reverse:black:blue
    		em.b:reverse:white:black
    		font.letter:normal:default:black
    		link.blue:bold:white:brightblue
    		link.blue.prev:bold:yellow:brightblue
    		title:normal:magenta:black
    		i:bold:white
    		table:normal:white
    		blockquote:normal:white
    		li.blue:bold:blue:black
    		link.blue.next:bold:blue:black
    		normal:normal:default:default
    		INCLUDE:F:/emx.add/lib/lynx.lss
    		default:normal:brightcyan:blue
      h) Improve algorithm for allocation of color-pairs;
      i) Lynx was not recognizing HOME directory on EMX;
      j) UP_LINK and DOWN_LINK now actually move along a vertical line (as far as
         it is possible), including an arbitrary sequence of such keypresses.
    * modify LYIsPathSep() macro to include '\' for OS/2 EMX -TD
    * correct a problem with spurious cookie names when reloading lynx.cfg (Michael
      Warner & KW)
    * add check for too-long line in HText_ExtEditForm(), splitting it if needed
      (reported by ) -TD
    * move NO_GROUPS definitions from HTFile.c to HTFile.h to make them available
      for use in LYUtils.c on DOS -LP
    * correct several minor problems with integration of HS's changes in
      GridText.h, HTAlert.c and LYPrint.c (reported by LP) -TD
    * restore dev.3 interface to LYLowerCase and LYUpperCase and do casts
      internally to work on unsigned chars -PG
    * corrected typos in some messages (reported by Dmitry Sivachenko
      ).
    * changes for win32 -SH
      + added ifdef's using _WIN_CC (for Borland C) to some places in prettysrc
        definitions which use the __STDC__ symbol.
      + renamed makefile.w32 to makefile.bcb
      + renamed src/chrtrans/makefile.w32 to src/chrtrans/makefile.bcb
    * the DOS port compiled with WATT-32 now works in a DOS window under Windows
      3.11 and Windows for Workgroups 3.11.  It still needs its own packet driver
      and does not use any native winsocks and  has only been tested with Toni
      Lopez's DOSPPP.  This does fill a void for those running Win3.x, who
      previously had to close Windows and go back to plain DOS before they could
      run lynx.  Updated the help files, reflecting current platform support -DK
    * corrected definitions in HTTP.c and HTDOS.h to build with old TCP library -LP
    * When keypad_mode was changed from forms options menu
      set_numbers_as_arrows()/reset_numbers_as_arrows() was not reinitialized
      (reported by KED) - LP
    * SOURCE_CACHE: add one more parse setting member (keypad_mode)
      to HText structure -LP
    * SOURCE_CACHE:  fix updating the document when "display charset" was changed
      from Options Menu by user:  FREE(anchor->UCStages) call from
      HTuncache_current_document() now duplicated in HTreparse_document().
      (problem reported by KW) - LP.
    * tweak trace message in scan_cookie_sublist():  limit trace output by trying
      LYstrstr() as a first approximation before host_matches() -LP
    * open temp-file in LYNewsPost() in binary mode for DJGPP to avoid translation
      of \r\n vs \n -DK
    * add note about potential conflicts with cookie files to description of
      --disable-persistent-cookies -BJP
    * added status message to indicate state of text inputs -VH
    * added ability to make text inputs non-sticky (i.e., user will have to
      activate them explicitly via an LYK_ACTIVATE action) - seems useful for
      people navigating with alphanumeric keys.  Default is 'sticky' - i.e., old
      behavior.  Behavior is controlled via command line option '--sticky-inputs'
      and STICKY_INPUTS in lynx.cfg -VH
    * added conditionals to 'userdefs.h' that disable support for
      force-empty-hrefless-a mode if lynx is configured without lss (it's not
      useful for such setup) -VH
    * minor change to prettysrc mode, writing comments one character at a time
      to avoid translation of \r\n to \n\n in HText_appendText() -VH
    * correct rendering of DL in EXP_JUSTIFY_ELTS, will inhibit justification of
      DT's content -VH
    * other modifications to EXP_JUSTIFY_ELTS logic, to use information associated
      with each element that indicates whether it can be justified -VH
    * modify HTMLDTD.c so that "center" is not treated with EXP_JUSTIFY_ELTS -VH
    * fix for core-dump in EXP_JUSTIFY_ELTS -VH
    * modify signal handling in LYSystem to workaround competing SIGTSTP handlers
      when a subprocess is active.  This adds a new function LYToggleSigDfl(),
      using sigaction as an alternative to signal to save/restore as much of the
      signal state as possible -KW
    * add configure option --enable-justify-elts (request by VH) -TD
    * add configure test for sigaction function and related structs -TD
    * restore hardcoded escape sequences on Unix in setup_vtXXX_keymap()
      inadvertently dropped in dev.4, to accommodate users of slang library who
      have their $TERM set incorrectly -TD
    * correct ifdef's for resizeterm() call to allow Lynx to build with old
      versions of ncurses -TD
    1999-07-14 (2.8.3dev.4)
    * minor fixes to build with SunOS K&R compiler -TD
    * cleanup unbalanced curly braces from other recent experimental options -TD
    * rename internal definition for LINKS_AND_FORM_FIELDS_ARE_NUMBERED to
      LINKS_AND_FIELDS_ARE_NUMBERED to keep it shorter than 32 characters -TD
    * change ifndef's for NO_JUSTIFY to ifdef EXP_JUSTIFY_ELTS since something in
      VH's recent code causes core dumps, by crosslinking the state of two parts of
      the parser -TD
    * modify slang code to recognize F1 from terminfo/termcap on Unix (John Davis)
    * changes to use the WATT-32 tcp library, making a DOS port that does http,
      ftp, news, mailto, and telnet -DK
      Remaining work includes:
      * This has been tested only with slang and the djgpp_keyhandler code.  There
        will probably need to be more changes to have this work properly with
        PDCurses.
      * There is at least one bug.  When set to use http_proxy, there seems to be a
        long wait between socket connect and write if the proxy is accessed too
        rapidly in succession.  It seems that if it is accessed more frequently
        than about 20 seconds, there is a timeout of up to about 85 seconds.
      * some problems with ctrl-break handling, will report to the watt-32 list.
    * rename tcp.h to www_tcp.h -DK
    * fix typo in manpage description of -color (Christian Hudon
      ).
    * add $(LDFLAGS) to chrtrans/makefile.in, for NetBSD -JS
    * use symbolic link rather than hard link for installing copyright files -TD
    * now dashes and underscores can be intermixed in commandline options, and in
      -restriction option, ifdef'd with OPTNAME_ALLOW_DASHES -VH
    * added commandline switch '-dont_wrap_pre' that will inhibit line wrapping in
      
     when -dump'ing and -crawl'ing.  (But maximal length of line on output
      can't exceed MAX_LINE (1023 by default)) -VH
    * lynx.man updated to reflect new option -dont_wrap_pre and to note that gnu
      style of options (with two dashes) is also supported -VH
    * some small developer's docs tweaks -VH
    * added text justification (controlled by commandline switch '-justify' and
      from lynx.cfg too), ifdef'd with NO_JUSTIFY -VH
    * added support for emitting backspaces (a-la man) - commandline option is
      '-with-backspaces', ifdef'd with NO_DUMP_WITH_BACKSPACES -VH
    * added support for forcing-empty-HREFless-As - ie A element that doesn't
      contain HREF will be closed after it was seen (without waiting for ) -
      this fixes rendering of documentation, produced by broken translators that
      don't emit balanced 'A's (eg RedHat docs produced by 'dlh', Sybase docs) -
      commandline option is --force-empty-hrefless-a, and force_empty_hrefless_a in
      lynx.cfg, ifdef'd with NO_EMPTY_HREFLESS_A -VH
    * incorporate changes for win32 by Hiroyuki Senshu 
      (SH) from
        ftp://crab.it.osha.sut.ac.jp/pub/Win32/develope/senshu/Lynx/
      based on his patch against 2.8.2pre.6
      Most changes are ifdef'd
        #define _WIN_CC=    .... for Windows C Compiler
        #define CJK_EX      .... CJK EXtension
        #define SH_EX       .... Senshu Hiroyuki EXtension
        #define WIN_EX      .... Windows EXtension
    * add missing null-pointer check in MakeNewMapValue(), for verbose-images
      (from Debian bug report #39596) -TD
    * test/build with gettext-0.10.35 -TD
    * renamed uppercase makefiles and .bat files to lowercase, change the makefiles
      consistently to Unix-style format -TD
    1999-06-29 (2.8.3dev.3)
    * move HTAlert call so we don't get it each time we run the options menu -TD
    * entify messages in LYshow_statusline_messages() -LP
    * add -DNO_PORT to WWW/*/djgpp makefiles -DK
      This is to make ftp work with new version of the WATTCP library as revised by
      Igor Poretsky for building lynx with DJGPP.  The old version has been renamed
      to "tcplibdj-old.zip".  For the new package, go to:
        "http://www.rahul.net/dkaufman/tcplibdj.zip" or
        "ftp://ftp.rahul.net/pub/dkaufman/tcplibdj.zip"
    * new option REUSE_TEMPFILES, see comments in lynx.cfg -KW
    * use P instead of invalid TR for right-aligned "LYNXMESSAGES:" link in HISTORY
      page -KW
    * better support for accessing FTP directory listings on Windows NT FTP
      servers:  try to switch MSDOS-like directory output off with SITE DIRSTYLE.
      The price to pay for this is one or (probably more often) two more command/
      response round trips -KW
    * added support for accessing FTP directory listings in "dls" style sent by
      some OS/2 servers.  Only one server was known and used for testing, so the
      heuristics used may not be quite general enough.  File date/time is not shown
      since it doesn't seem to be part of the basic format -KW
    * in lynx.man removed bogus "ID:" for -assume_charset,
      -assume_local_charset -KW
    * in a list, render a 
    that doesn't have an ALIGN="center" or ALIGN="right" attribute like a

    in that situation: break the line if necessary but don't create an empty line, an keep list indentation. This addresses Debian bug #21331 -KW * other changes for DIV: it's a block element, so make sure its contents doesn't get rendered inline, even for nested DIVs that don't change text alignment. Try to avoid improperly kept change of DIV styles' alignment by a

    or

    in its content -KW * make "treating H# in a list as an LH" work also for SortaSGML parsing, previously it only worked with TagSoup -KW * removed special handling for empty last field from LYstrsep(), which made it act differently from (GNU) C library's strsep() -KW * macro DEFAULT_INVCHECK_BV for default invalid cookie checking behavior, can be changed at top of LYCookie.c for those who really want that -KW * reorganize code for invalid cookie checking / prompting somewhat, it is hopefully easier to follow now, and should result in more logical prompting (or not) if a cookie is invalid for more than one reason -KW * change invalid cookie confirmation prompts to default to "no" answer. This can prevent the impression that Lynx hangs because the prompt is not completely visible. There should be a better way to ensure that all prompts are recognizable as such (at least with "normal" screen widths) -KW * use more of the available statusline width for showing cookie name and value in normal cookie prompts -KW * handle \" in quoted cookie values, so that the quote char doesn't end the value string -KW * write quoted cookie values to cookie file with the quotes ('"' chars). When the cookie file is read, assume that quoted strings are quoted cookie values. It would be better to have a separate flag stored, but we are limited by the choice of the Netscape-compatible file format. This should resolve Debian bug #35523 -KW * handle empty value strings like any other cookie values: they can be kept in the cookie jar (in memory), and can be written to and read from the cookie file -KW * more checking whether a line read from a cookie file is complete -KW * write out second field in cookie file lines a TRUE or FALSE depending on whether the domain can be used for suffix matching or has to match completely. This seems to be how Netscape uses it. We don't actually use this field when reading a file (presence of a leading dot in the domain value tells us what we need to know), but this should improve behavior for people sharing a cookie file between Lynx and a Netscape browser (although such sharing shouldn't be recommended) -KW * treat case as insignificant in cookie domains more consistently -KW * remove remnants of FROM_FILE domain behavior, it was unused -KW * add some clarifications in lynx.cfg regarding cookies -KW * entify strings when adding them to LYNXMESSAGES: stack -KW * save HTAlwaysAlert messages for LYNXMESSAGES: page -KW * generate TRACE output for prompts that use HTConfirm() or HTConfirmDefault -KW * make sure force_old_UCLYhndl_on_reload is initialized and reset properly -KW * minor tweaks (LYCharUtils.c, LYMain.c, LYPrint.c) -KW * flush Lynx.leaks file after writing each memory leak record but before freeing the memory block, to ensure the info is on disk if something goes seriously wrong (i.e., FREE causes a signal) -KW * more general checking in postoptions - `lynx LYNXOPTIONS:foo' now doesn't crash -KW * revived dired "install" functionality, more or less as it was (apparently) originally meant to be used, but with various checks added. Compilation is now conditional on new symbol OK_INSTALL. The "install" function is the closest we have to a "copy file" function, and could be used instead; the actual command executed depends on macros INSTALL_PATH and possibly INSTALL_ARGS, one can define INSTALL_PATH for example to "/bin/cp" before compilation to effectively get something like a dired "copy" function. Note the the "install" function requires a special file in the home directory, which can be customized, see samples/installdirs.html -KW * new function HTURLPath_toFile in HTFile.c. Use it if we don't have a full URL where HTnameOfFile_WWW was used previously, this avoids misparsing of some unusual URL forms for files -KW * other changes for dired support (KW): - various corrections with respect to URL-unescaping: don't escape too often or too little, dired operations could fail on filenames with special characters - avoid some unnecessary copying and allocation for filenames - avoid some more static buffers - add some buffer overflow checks * make local directory display somewhat interruptible even without partial page display -KW * make do_readme in HTFile.c 8-bit clean -KW * tweak in HTTP.c to avoid doing strlen() on received data that are to be passed on raw; raw NUL bytes within the first block read could lead to data loss -KW * change newly introduced CAN_ANONYMOUS_* at end of userdefs.h to be FALSE by default, to get behavior with -anonymous that is equivalent to 2.8.2 -KW * handle some more common forms of mailcap $DISPLAY tests internally in HTInit.c -KW * correct a problem which appears when the curses library causes FANCY_CURSES to be defined but not COLOR_CURSES: the code can call attrset() twice for the same characters, thus replacing the original attribute with the new one. Fix by using attron() instead (patch by Julian Coleman ) * modify LYonedot() so it does not change its parameter, avoiding corrupting the name to be zipped (reported by DK) -TD * modify LYDownload.c to skip over delimiter for file://localhost to avoid treating it as part of the DOS filename -DK * alter LYExecv() to only do an HTAlert if the return-code is zero, i.e., an error was reported. This lets us reuse (and free) memory pointed to by tmpbuf (reported by DK) -TD * remove redefinition of lstat() and change test of stat() function with DJGPP, which returns nonzero rather than negative on failure -DK 1999-06-18 (2.8.3dev.2) * move some of the path-manipulation from the DJGPP dired change into new functions LYisAbsPath, LYisRootPath and LYLastPathSep -TD * integrated patch adapted by DK from Igor B Poretsky for dired support with DJGPP. (Some corrections/rework by TD also - must retest). Some notes from DK: + since this is DJGPP based, it may be incompatible with a called program that uses a WATCOM DOS extender. I think I had this problem with a precompiled binary for zip. The current zip binary doesn't have this problem. + The key to making this work with DJGPP is the __sysflags = 0x501d in LYMain.c, since this lets the system() call handle multiple commands on one line and allows the cd command to work across disks. + I didn't look at Igor's changes to LYMainLoop.c as regards to the HTUncache calls. He said he wasn't sure about this. + This was tested with Info-Zip's zip and unzip, GNU tar, gzip, comp430d, PKZIP, and PKUNZIP. This was only tested when built with slang. I don't see where PDCurses is likely to cause a problem, however. Problems: + To make this work, I made lynx_edit_mode = TRUE in LYMainLoop.c. This does not seem to be the correct solution. It seems that this should be handled by the code in HTAccess.c, but I don't understand how this works. If lynx_edit_mode isn't true, the dired menu doesn't appear with the "f" invocation of LYK_DIRED_MENU. + I'll try to explain this briefly, but this bug is very reproducible. If a program is invoked from the dired menu which needs to interact with the user, the system sometimes freezes and has to be rebooted. For example, a call to unzip a zip archive where the files already exist has zip ask if the file should be overwritten. If done initially after lynx is started, no keystrokes are accepted and the system always hangs. If, however, any file has been moved or had its name changed via the dired menu, then the above problem doesn't occur. I have tried to see what changes after the name change that fixes this problem, but I am stumped. Gzip and unzip seem to have this problem, but PKUNZIP doesn't. * correct most-recent LYNX_RELEASE_DATE (reported by KW) -TD * change touchline() call in LYOptions.c to touchwin() in case anyone wants to compile with BSD 4.4 curses (reported by IC) -TD * modified ifdef for DECL_ERRNO to allow for errno to be a macro -TD * ifdef'd the extern declaration of h_errno in HTTCP.c in case that name is also a macro, e.g., for threaded code (reported by Mike Gravitz on AIX 4.3.1.0) -TD * rename ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS to keep the names less than 31 characters, and add configure option --enable-change-exec to set the ENABLE_OPTS_CHANGE_EXEC ifdef -TD * correct syntax of popup_choices() within ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS ifdef (reported by IC) -KW * modified some message texts, mostly for consistency -KW * correct display of local file times in INFO screen -KW * add null-pointer checks for buf2 variable in exit_immediately_with_error_message(). Invalid memory access happens if access to startfile fails but first_file is not true -KW * change all ifdef's except on for VAX Ultrix that use the presumed predefined symbol 'unix' to 'UNIX', which the configure script sets. Not all Unix systems define this in their compiler -TD From compiler warning on NetBSD 1.4 (report by JS): deprecated symbol "unix" is no longer predefined * add experimental file-upload, ifdef'd with EXP_FILE_UPLOAD and configured with --with-file-upload (adapted from patch by RP) -TD * document use of '|' pipes in PRINTER commands in lynx.cfg -TD * add shell script man2hlp.sh, used that to generate lynx.hlp from lynx.man -TD * SOURCE_CACHE: source_cache_file and source_cache_chunk are now members of HTParentAnchor (where they should belong, not HText nor mutable globals). Add one more parse setting member (verbose_img) to HText structure -LP * correct spelling of ifdef for reload_read_cfg() (reported by KW) -LP * minor docs tweaks -LP * test/{sgml.html, unicode.html} files were badly broken for tagsoup mode (incorrect html: extra
    ..
    were added inside PRE mode in dev26) -LP * fix back-slashes conversion for DOSPATH systems when expanding ~ to local path (mostly affects information screen) -LP * correct default value for --disable-persistent-cookies configure option (reported by HenSiong Tan ) -TD * uncomment --with-libjs configure option -TD 1999-06-11 (2.8.3dev.1) (This is KW's patch, with minor corrections) * Key handling changes: - Extended lynxkeycodes: a bit flag is used to indicate that the lower bits of the value already are a lynxactioncode and need not be looked up again. Reduces need for back and forth forward and reverse binding lookups; currently only used in some places. - Extended lynxkeycodes: several (currently three) bit flags are used to indicate key modifiers. - Added some macros for manipulating and mapping of these codes, see especially LYKeymap.h, LKC_TO_LAC() etc. Added some comments about the various kinds of codes. - Added several editaction codes and flags for setting key modifier on next key (i.e. for declaring keys as prefix keys, for the purposes of line editing); for flagging a key for different action if same key is repeated; for exiting input field line editing and passing a specific lynxactioncode on; and for undoing 8-bit C1 -> 7-bit replacement transformation for some chars. Added code to line-editor implementation to react to these new editactions. Note that the mapping of lynxkeycode to lynxactioncode outside of line editing, i.e. KEYMAP in lynx.cfg etc., ignores the modifiers. The main loop just drops modifier flags or ignores the modified key; modifier flags cannot be used in lynx.cfg KEYMAP 'keystroke' values. - An ESC not recognized as part of an escape sequence can set the appropriate modifier flag in LYgetch(), except for SLANG which normally uses a different LYgetch() implementation. Interpreting an ESC prefix as modifier is very useful for situations where a held-down Alt key (or some other key) is encoded this way: linux console, kermit with emacs key mappings, possibly xterm with '*eightBitInput: false'. OTOH it doesn't work for all characters or in all situations. - Extended syntax recognized in .lynx-keymaps file (which is only used if compiling with USE_KEYMAPS defined, which in turn depends on slang and ncurses version): (a) Meta-foo can be used to map an escape sequence to a key + modifier. (b) LAC:foo can be used to map an escape sequence directly to a lynxactioncode (actually, to an extended lynxkeycode that encapsulates a lynxactioncode). See examples added to samples/lynx-keymaps. - Extended syntax of KEYMAP option, additional field can override line-editor behavior. PASS documented in lynx.cfg. - Extended syntax that can be used for specifying key in KEYMAP, some of the forms allowed in .lynx-keymaps file are now additionally recognized, but only if compiling with USE_KEYMAPS defined. Left undocumented in lynx.cfg (maybe subject to change). - New "Bash-like" Line Editor binding. Adds several new emacs-like editing functions. Adds tables for keys with modifiers (actually the same table is currently used for all modifiers, to save some space). Most notably, ^X is a prefix key to set a modifier flag. Keys with second function when pressed twice are ^E^E and ^K^K. ESC is also recognized as setting a modifier flag, in case it gets through without been having been handled in LYgetch(). See new file keystrokes/bashlike_edit_help.html for more info. The Bash-like Line Editor Bindings are only compiled in if compiled with -DEXP_ALT_BINDINGS / configured with --enable-alt-bindings (but not subject to a new macro). Implementation code for the new emacs-like functions additionally ifdef'd with ENHANCED_LINEEDIT. - Avoid dependency on DNARROW key binding when form field line-editing is ended with Enter or Return key. - Take setting of real_c/old_c into consideration after return from form field line-editing. Previously there were some strange effects: statusline messages would sometimes not appear when they should, the KEYMAP command would sometimes not work when invoked with ^Vk while in a form field. - Make NOCACHE ('x') work for TEXT_SUBMIT_TYPE form fields (i.e. forms with a single text input field where Enter automatically submits). Of course 'x' has to be typed as ^Vx while line-editing the field (or NOCACHE mapped to a different key). Similarly allow DOWNLOAD, and HEAD to work for such fields. Try to ensure that all permission checks that apply to other form submissions are also done for TEXT_SUBMIT_TYPE fields, this wasn't the case before. - New key actions LPOS_PREV_LINK and LPOS_NEXT_LINK. They are like PREV_LINK and NEXT_LINK, with the difference that, when moving to a form input or textarea line, the last column position (relative to the field) is remembered. They are not mapped by default, but mentioned in lynx.cfg. - New key action DWIMHELP. It should give some context-sensitive help. Currently t