Summary of changes in Lynx v2.8.5 This list only summarizes some changes, for a detailed history of changes see the [1]CHANGES file. In preparing this release, we built/ran on * Linux (ncurses, ncursesw, PDCurses, slang), * FreeBSD 3.1, 4.1, 4.9, 5.1 (ncurses, ncursesw), * NetBSD 1.5, 1.6 (curses) * OpenBSD 2.8 (curses/ncurses). * OpenVMS (curses), * OS/2 EMX (ncurses), * win32 (Visual C++ 6.0 and Borland C++, Cygwin, MinGW32, DJGPP), * AIX 4.3, 5.1 (curses), * Darwin 5.5 (ncurses), * HPUX 11 (curses), * QNX 6.1 (ncurses), * IRIX 6.5 (curses), * SunOS 4.1.4 (curses) * Solaris 8, 9 (curses) * Tru64 4.0d, 5.1 (cc, curses), New features (some are compile-time options): * file-upload is supported, configured-in by default. * implement support for bzip compression by internal calls to libbz2 * add configure option --enable-locale-charset, which adds configure settings and an option-menu checkbox telling lynx if it should use the function call nl_langinfo(CODESET) to find the display character set rather than rely on the user to set it via lynx.cfg or the options menu * lots of changes to improve performance. Other enhancements: * improve SSL support: + modify configure script and related ifdef's to build with gnutls 0.8.9 + add configure option --with-gnutls, to allow lynx to be built with gnutls. Used gnutls 0.8.6 on Redhat 8.0 to login at yahoo (gnutls is not very portable, so this is an experimental option) + add FORCE_SSL_PROMPT setting to lynx.cfg, allowing for manipulation in the options menu and (if LYNXRC_ENABLE is set) via the .lynxrc file. This lets the user decide whether to ignore prompting for questionable aspects of an SSL connection. If the prompts are ignored, a corresponding message is displayed + check for no common name (CN) in certificate when connecting via SSL. + share SSL handle between HTTP.c and HTAAUtil.c so that call of HTAA_shouldRetryWithAuth() from HTLoadHTTP() updates the handle used in that function. This makes lynx able to get the user/password prompt for https://enter.nifty.com/iw/ + modify version shown for SSL to be derived from runtime SSLeay_version() function if linked with OpenSSL or SSLeay. Add corresponding definition for GNU TLS + improved certificate handling (case-insensitive domain-comparison, strip port-numbers from comparison). + add docs/README.sslcerts + add docs/README.rootcerts * improve HTML interpretation: + do not strip parameters from refresh-URL + correct logic used for trimming TEXTAREA introduced in 2.8.4pre.3, which did not trim carriage-return characters if TRIM_INPUT_FIELDS was false. + modify HTLoadHTTP() to omit "Accept-Encoding: gzip" if command-line "-base" option is given. This makes lynx -base -source excite.com work as expected. Otherwise, excite.com will transmit the document gzip'd, and the ensuing logic in HTSaveToFile() would see the mime-type as gzip rather than text/html, and not prepend the base URL + add NcFTP-style ftp-URLs which are supported by Netscape and wget + suppress "charset=" clause on form submission if it is iso-8859-1 + modify CacheThru_new() to accept "https:" URLs for source-caching + modify logic for S_litteral case in SGML_character() to recover from spaces between the '<', '>' and the corresponding end of the tag, e.g., < /style > < /style > match "" + recognize charset value in meta description even if content-type is not given. + quote field-names used when submitting form-data as suggested in RFC 2068 + modify logic that handles goto-fragment (e.g., G #foo) to update the URL shown in the info page. + construct "Accept-Encoding" gzip/compress parameters based on whether lynx is built with zlib and/or gzip/compress paths are defined. + add check for HTTP headers using Netscape extension "Refresh", and if found, add a corresponding refresh-URL at the beginning of the document. + recognize local .php files as HTML files. * improvements to character sets and display: + add PT154 charset support. See http://www.iana.org/assignments/charset-reg/PTCP154 for more information. + add alias for charsets "ISO-8859-8-I" and "ISO-8859-8-E" to "iso-8859-8" + several new message files for localization: ca.po, cs.po, et.po, hu.po, it.po, tr.po uk.po, zh_CN.po, zh_TW.po * improvements to color-style: + modify parse_style() function to operate on a copy of its parameter, to avoid changing it. Otherwise, when parse_style() is executed as a side effect of start_curses(), its data is modified and not valid on successive calls. + added hot.paste style which puts a right-arrow at the UR corner (which is currently unused). Clicking on it initiates a GOTO to the current selection (same as PASTE_URL action). The hot.paste style is disabled unless STYLES and CUT_AND_PASTE are both enabled, and the user defines hot.paste in the ".lss" file * improve interaction with user: + allow more than two lines to be highlighted in links + promote a few configure script defaults to "enable": source-cache, prettysrc and read-eta. + add traces for lynx.cfg and .lynxrc to report lines which are not found in the symbol table, to help diagnose when a user adds lynx.cfg information to .lynxrc + modify dired support to allow sorting by a variety of things in addition to the existing sort into files versus directories. This is saved in ~/.lynxrc as dir_sort_order. + modify LYdownload_options(), adding a link to view the temporary file if the downloaded file is text or html. + modify LYwouldPush(), omitting the download page from list of user-interface pages which should not be pushed onto the history stack when visiting another page, such as info or help. Otherwise the downloaded file is discarded. + modify -dump, -source and related options which set dump mode to also set -nopause + for configurations that provide scrollbar, add a checkbox to the Options menu to enable or disable it + localized displayed strings used for popups in options menu + split up remove_file() in LYLocal.c so directory removal is performed in a separate function remove_directory(). Neither will perform an "rm -rf", but only single operations "rm" and "rmdir". The original behavior can be obtained by setting RMDIR_PATH to point to a script which does "rm -rf" in lynx.cfg . + use keycode bound to ^Q to control whether table cells are centered. The command-line -center option also controls this behavior. + add SHOW_KB_NAME to allow user to decide whether to display "KB" or "Kib" or even "Kilobytes" for the progress message + add command-line & menu option/config variables to replace the compile-time UNDERLINE_LINKS definition. + modify prompt for file- or directory-name in rename/move operation to provide a default based on the selected file/directory + add popen-based support for cut/paste. This is a slightly reworked patch to GNU readline. If RL_PASTE_CMD and RL_CLCOPY_CMD are defined in the environment, lynx will use them as commands to do cut&paste. The simplest such commands could just store/retrieve things from /tmp/.clipboard_user-name; more advanced ones could use X clipboard * improve interaction with other programs: + Change configure script so that dired support for chmod, copy, mkdir, and touch to use built-in functions rather than external programs + add check for broken ProFTPD 1.2.5rc1, e.g., at ftp://ftp.oldskool.org/pub, and force a reconnection if an error 550 is detected when doing RETR. This is ifdef'd with BROKEN_PROFTPD and checks version + change default ftp mode to passive. + if ftp connection fails, automatically retry, switching between passive and active modes. Do this retry switching only when connecting to a different host. + modify configure check for tar to test several common variants including star, modify makefile.in to use the configured 'tar' program. * improve cookie support: + add FORCE_COOKIE_PROMPT setting to lynx.cfg, allowing for manipulation in the options menu and (if LYNXRC_ENABLE is set) via the .lynxrc file. This lets the user decide whether to ignore prompting for cookies with invalid syntax. If the prompts are ignored, a corresponding message is displayed + revert 2.8.4dev.21 change to avoid truncating cookie path. The server that wouldn't work with the current lynx behavior is identified as "Oracle_Web_Listener/4.0.8.2.3EnterpriseEdition". + modify to trim carriage-returns as well as line-feeds, making it possible to share cookie files between platforms that have different line-terminations. * improvements to debug/traces: + define additional -trace-mask option, 8=config + add environment variable LYNX_TRACE_FILE which, if given, overrides the compiled-in value of Lynx.trace (or LY-TRACE.LOG). This specifies the name of the trace file relative to the home directory. + allow trace file to be written when one already exists. + add command-line option --find-leaks to disable the memory leak checking code, allowing one to build an executable which is useful for both normal and leak-checking. * improvements to scripting/logging: + implement a "set" command for command-scripts, allowing the script writer to manipulate the sleep-times for messages + implement an "exit" command for command-scripts. + stop reading from the command script when an end-of-file is detected. + change LYKeycodeToString() to provide a default translation for characters which are not key-symbols, etc., so they may be used in command scripts with the -cmd_script option + add REPLAYSECS config value to allow slowing command scripts down, for testing + add -delay option, to make progress messages slow, along with corresponding code for lynx.cfg New sample files: * add samples/keepviewer script, to illustrate how to retain a temporary file for use in an external viewer * add samples/lynxdump script, to illustrate how to use lynx -dump with no link references * add two test files for testing UTF-8, based on Markus Kuhn's demos (quickbrown.html and utf-8-demo.html), tested with ncurses' wide-character configuration on XFree86 xterm. * add koi8-r.html as a test for non-ANSI 8-bit displays. New ports: * none (it seems to run everywhere, but there are a few possibilities) Improvements to existing ports: * UNIX: + modify configure script to accept --with-screen=ncursesw, to build with the wide-character version of ncurses + fix ifdef's for alloca(), e.g., on AIX 4 + fix initialization of LYlines and LYcols for curses configurations other than ncurses which implement pads + modify local directory sort by type to ignore leading '.' characters when looking for filetype * WIN32: + several small fixes to HTFile.c to make directory listings work properly on win32, e.g., stat'ing a directory with a trailing slash failed. + change HTURLPath_toFile() to keep local URLs distinct from remote ones, so win32 version will not display misleading drive letter on ftp listings. + undef conflicting symbols "small" and FILE_DOES_NOT_EXIST which are misdefined in Cygwin's w32api headers + modify expansion of %s for WIN_EX EXTERN commands so that short names (used when the command begins with an uppercase character) are not quoted, and use backslashes. The normal %s expansion uses forward slashes and may quote the name if it contains a blank + rewrote function that gives the home-directory string, adding checks for "My Documents" on Windows 2000, and ensuring that the resulting directory actually exists. + modify LYGetHostByName() in HTTCP.c to use the threaded _WINDOWS_NSL code for all Cygwin machines. The ability to interrupt nameserver lookup has not worked in Win98 using the Cygwin port, despite defining _WINDOWS_NSL. It looks like the threaded code was only for WinNT. At least under Cygwin, that code also seems to work fine under Win98 + modify logic of HTDirEntry() to avoid storing a trailing backslash (DOS-style path separator) in the anchor URL for local directory entries + add -scrsize option and corresponding SCREEN_SIZE value to lynx.cfg to allow lynx's screensize to be specified. To display background color properly, this also requires a patch to PDCurses: http://www.t3.rim.or.jp/~patakuti/tmp/lynx/PDCurses-2.5.patch .resize This requires PDCurses 2.5 and higher * DJGPP: + modified to use the configure script + support DJGPP's two forms of file addressing, [a-zA-Z]:[/\\] and /dev/[a-zA-z]/ + 'z' can abort connection attempt as on UNIX. + fix inability to break out of a hung nameserver lookup or hung connection attempt without aborting lynx entirely. + added some fixes for "/" vs "\" handling in pathnames so that non-DJGPP programs will see standard DOS pathnames when called. + for DJGPP, escape all backslashes in commands given to LYSystem() when a Unix-style shell is given in $SHELL + enable -connect_timeout option for DJGPP * OS/2: + add environment variable LYNX_LOCALEDIR to simplify configuration on OS/2 EMX. + modify remove_bookmark_link() to assume that OS/2 EMX does not allow rename of a file overwriting an existing one. * VMS: + modified VMS build scripts to allow linking with OpenSSL. Improvements for maintainability and testing: * add project version & date to lynx.cfg * add some simple statistics to summary in Lynx.leaks report * add malloc-sequence number to Lynx.leaks report, to help with debugging * modify po/makefile.inn to substitute the PACKAGE and VERSION strings into lynx.pot automatically, and to remove the unused boilerplate header comment * change the install procedure for lynx.cfg to attempt to update the file with the user's customizations if any, and to save the old configuration information in a series, e.g., lynx.cfg-1, lynx.cfg-2, etc. * add configure options to link with dbmalloc and dmalloc debugging libraries which offer different features than --enable-find-leaks * collect names of lynx.cfg and .lynxrc variables into LYrcFile.h, to simplify checks for matching spelling, e.g., against the values used in LYOptions.c As well as security-related changes: * modify a syslog() call to guard against possible '%' in its parameter. * strip username from URLs used in an HTTP GET, and warn about this condition. The example given was "http://www.microsoft.com&item%3dq209354@212.254.206.213/1338825GHU _98.asp" the text of which could mislead a user into believe it was an official site * escape blanks and other non-7bit graphic characters in startfile and similar addresses to guard against interpreting the address as multiple lines during a GET, etc. And finally: * A lot of bug fixes * A lot of documentation changes. * A lot of dead code removed http://lynx.isc.org/lynx2.8.5/features.html Page maintained by Thomas Dickey ([2]dickey@invisible-island.net). Copyright© 2004, Thomas Dickey Last Updated: 2004-02-04 Valid HTML! [3]Re-validate References 1. file://localhost/hpss/mirrors/lynx/www/htdocs/lynx2.8.5/lynx2-8-5/CHANGES 2. mailto:dickey@invisible-island.net 3. http://validator.w3.org/check?uri=http://lynx.isc.org/lynx2.8.5/features.html