Changes in the development code based on Lynx v2.7. =================================================== [ This file might finally become the CHANGES file for a new Lynx release. More detailed change information may be in separate files, which could later disappear. Currently included are changes from Foteos Macrides' bugfixes, changes in chartrans code (see also CHANGES.chartrans), changes for compilation on Win32 and DOS platforms (see also README.win-386), changes for auto-configure and simple curses color (see also README.configure), and miscellaneous other changes. Note that the 2.7 -> 2.7.1 changes (which are listed at the beginning of the current CHANGES file) are duplicated here. - KW] 97-09-17 * Undo misleading/incorrect use of 'const' in HTML.c, and associated modules. - TD * merge symbols 'has_color' and 'lynx_has_color' to simplify ifdef's, and correct a problem building color-style configuration. - TD * add configure symbol for ifdef'ing presence of waitpid, which was stopping build on HP-UX. - TD * correct the symbol that is defined by CF_SIZECHANGE test, noted by failure to build SCO version after making an include for ifdef'd according to configure test. - TD * corrected check for broken (pre-1.9.9g) ncurses versions so that they can build with color support. - TD * cache state of CF_NETLIBS so that rerunning configure will yield the same results for network libraries. - TD * Add configure test for HP-UX -lHcurses library. - TD * Minor adjustments to names of configure-script variables, to make them the same as other programs (e.g., tin-unoff). - TD 97-09-15 * Recover from bad sequence "<=" in SGML.c by outputting those characters litterally. - KW * Try again after interrupted waitpid() in LYExecv(). - JED * Some tweaks in new DTD, some doc typo corrections. - KW 97-09-13 * Changes in LYConvertToURL() for better handling of the case when the pathname of the current directory (when Lynx is invoked) contains unusual, URL-reserved characters (especially '#') and we test for a relative but URL-encoded path. (no change for VMS) - KW 97-09-13 * Changes in LYStrings.c to enable keypad() processing for non-NCURSES if HAVE_KEYPAD is defined. - KW 97-09-12 * Correct mismatch/omission of HAVE_TYPE_UNIONWAIT symbol from change for wait vs waitpid. - TD 97-09-11 * Tweaks in HTMLGen.c for display of special characters and line breaking with -preparsed. - KW * Got rid of use of underlining together with reverse for non-current links for (n)curses if color is not used. - KW * Small HTMLDTD.c changes for new parsing. - KW * Change in SGML.c to always recognize SOFT HYPHEN when given as ­. - KW 97-09-10 * Modify CF_WITH_PATH to allow substitution of --libdir and other configure options pathnames, e.g., for --with-cfg-file. - TD * Include lynx_cfg.h in userdefs.h to resolve redefinition reported by AC. - TD * Remove Ultrix/sony_news -specific ifdef's for curses headers, replace with configure-tests. - TD * Remove AIX/NeXT/sony_news -specific ifdef's for wait vs waitpid, replace with configure-tests. - TD * Add/use CF_HELP_MESSAGE macro to visually break down the very long help message into sections. - TD * Move the development options to the beginning of the configure script, to facilitate adjustment of compiler options (especially for Ultrix) to reduce the number of spurious warnings from miscombining -g/-O options. - TD * Correct misplaced assignment to cf_cv_ncurses_header in configure.in, which caused misconfigure against vendor curses, reported by Hynek Med (Ultrix) and Roger Hill (HP-UX 10.x). - TD 1997-09-09 * Added arguments to the multinet_htons() and multinet_ntohs() declarations in tcp.h. - FM * Tweak of the this_MIMEcharset[] and this_LYNXcharset[] checks in makeuctb.c. - FM * Replaced the index() and bcopy() with strchr() and memcpy() in the putenv() for NeXT in LYUtils.c. - FM 1997-09-08 * Added a -preparsed flag, to be used with -source or with SOURCE view. When invoked with this flag, show HTML text as it is output from the SGML parsing stage, regenerated via HTMLGen.c functions, rather than the usual more raw rendering (in SOURCE view) or the original byte stream (as with the -source flag, possibly with BASE information prepended). Lynx will attempt to wrap the text to screen width (or 80 cols for the -source flag), but will not always succeed. Unrecognized tags and attributes as well as comments are dropped, attributes reordered, missing end tags supplied, abd other changes made, showing how Lynx internally treats the document's structure. This is probably most useful for debugging (of either Lynx's parsing or of HTML documents, although a real validator should be used for the latter!). It can also be instructive to switch the DTD parsing mode (with the ^V key) while viewing preparsed source. Note that this doesn't work so well now with character translations and entity expansion don't work well now, showing some of the same problems which appear for rendered documents and dropping some characters. Making those problems of parsing more directly visible was one of the motivations for this flag. Also note that META tags which may contain charset info are never interpreted when using -source (with or without the -preparsed flag), but when interactively switching to SOURCE view, Lynx MAY remember that charset info from the previous non-SOURCE full parsing (again this applies with or without -preparsed); the INFO screen should always show the assumption currently in effect. - KW * Updated some HTMLGenerator functions to use line wrapping logic found in newer libwww versions, and further mods in HTMLGen.c. - KW * Tweaks to use of chartrans stages, should now better preserve charset info from META tags even in compressed HTML files. - KW * Fixed a problem with LYCheckForCSI which could lead to crashes. - KW 1997-09-06 * Modifications to allow the Lynx lynxcgi feature to process PATH_INFO in addition to QUERY_STRINGS in URLs. DOCUMENT_ROOT may be set by the user in lynx.cfg and is then passed as well. If DOCUMENT_ROOT is set, then PATH_TRANSLATED is calculated and passed as well. - J. Kevin Ternes * Changes to LYPrint.c to put the variable LYNX_PRINT_TITLE into the system()'ed environment for use by post-Lynx, pre-lp formatting scripts. LYNX_PRINT_TITLE is simply generated by calling HText_GetTitle(). - JKT * Corrections to JKT's mods (to avoid memory leaks etc.). Avoid unnecessary stat() calls. Other fixes in LYCgi.c. Make setting of HTTP_ACCEPT_CHARSET actually work. Now URL-unescape the path in lynxcgi URLs before doing anything with it. Better logic for when to check for restrictions, the previous checking for !reloading could be easily circumvented. Also check whether the full path including a possible PATH_INFO passes the restrictions test by exec_ok(), to catch "../" segments. Don't try to handle a non-executable lynxcgi URL as a file URL if there was a PATH_INFO part, it gets too confusing. Strip '#' fragments from the lynxcgi path, but leave the interpretation of '#' characters after a '?' as before so that they are still regarded as part of the query or search string. If PATHINFO is present, unescaped '#' characters in it will still be rejected by exec_ok(). - KW * added a bit of text about running ./configure to INSTALLATION file. - David Combs & KW * Added a translation table for Vietnamese (VISCII), and associated code changes. See the file viscii_uni.tbl. - KW 1997-09-05 * Mods in LYGetFile.c to retain a fragment on redirection if the redirection URL does not include a fragment. - FM 97-09-04 * Correct ifdef'ing for getbkgd function calls. - TD * Correct ifdef'ing for remaining inline chmod calls. - TD * Consolidate various logic for opening secure files into utility functions, correcting portability problems as well. - TD * Add configure option --with-cfg-file to override default location of Lynx configuration file (requested by Laura Eaves). - TD * Strip -g option from CFLAGS for the non-debug version of Ultrix configuration (requested by Hynek Med). - TD * Add configure test for HP "color" curses (noting that this cannot possibly comply with XPG4 due to naming conventions, we'll expect other problems with it). - TD * Add checks to configure test for COLOR_CURSES to work around bug report for HP-UX. - TD * Don't cache configure options except where essential (e.g., the setting of 'screen'). - TD * Change some configure options to disable/enable for consistency. - TD 1997-09-03 * Tweaks in HTML_put_string() and LYUnEscapeEntities() to deal with line- breaks within attributes more consistently, and more independently of which convention is used (CRLF, CR, or LF). - KW * Tweaks to prevent a few compiler warnings. - KW * Tweaks of the iso06_uni.tbl and iso08_uni.tbl files now compiled in. Note that a replacement character or string to replace invalid or unrecognized characters chan be defiend by mapping the Unicode value U+FFFD, which is done here (for testing, and because these two charsets have a lot of undefined code points). Also some mods in default 7-bit table for some Hebrew characters and points. - KW 1997-09-02 * Mods to include "ISO 8859-6 Arabic" and "ISO 8859-8 Hebrew" in the display character set options (Note, though, that Lynx presently has no code to deal overtly with non-Latin directionalities.). - DK & FM 1997-08-31 * Mod of HTMIME.c to ignore any Content-Encoding header with a value of "identity" (case insensitive). Shouldn't happen, but better safe than sorry. - FM 1997-08-28 * Correct a quoting error in CF_RECHECK_FUNC macro. - TD 1997-08-27 * Further refine/correct configure macros for finding network and curses libraries, adding CF_RECHECK_FUNC to simplify CF_NETLIBS. - TD * Rename #define for NCURSESHEADER to HAVE_NCURSES_H, for consistency. - TD * Add-back test for -lm to support slang shared libraries. - TD * Modify test for disentangling ncurses library from mytinfo on FreeBSD to workaround linker limitation. - AC 1997-08-22 * Fixed typo in LYReadCFG.c when checking for a NOVICE mode default. - JN (Note that this and other lynx.cfg defaults which have 'o'ptions settings are overridden when the 'o'ptions are saved to the RC file. - FM) 1997-08-21 * Tweak to LYHistory.c to better remember last position on page. - KW * Eliminated two more MIME types (application/html and text/x-sgml) from the Accept header generated by default by setting the q-value to 2.0, since there are more standard alternatives for these names. - KW * Lower maximum length for generated Accept header lines from 1000 to 252, to accomodate an incompetent Windows HTTP server. - KW * Changed order of some functions in LYCharUtils.c (no other change there yet). - KW 1997-08-20 * Modify top-level install rule to depend on 'all'. - TD * Suppress check for ANSI compiler when we are using gcc. - TD * Use -g3 option in place of -O -g for Ultrix compiler --debug configuration (request by Hynek Med). - TD * Drop "-lm" library from slang configuration, since it does not seem to be used. - TD * Add configure --includedir and --oldincludedir values to header search path for ncurses and slang. - TD * Modify configure checks for ncurses and slang libraries to generate -L options as required, using new macros CF_FIND_LIBRARY and CF_LIBRARY_PATH. - TD * Add substitution for CPP in src/makefile.in so that .c.i rule works. - TD * Add configure test for lint program. - TD * Add "make depend" target to generated makefiles. This is intended only for use in editing/developing, since many of the header dependencies in chrtrans are generated during the build process and cannot be determined by makedepend in advance. - TD * Add configure option --with-zlib. - TD 1997-08-19 * Tweak of highlight() in LYUtils.c to ensure that split link names with a soft hyphen are handled identically for slang, VMS curses and Unix curses when such links are made current. - FM 1997-08-17 * Use 0.01 rather than 0.001 as the q value for the global wildcard in Accept headers. - FM * Put up correct makefile for dos port (oops) - WB 1997-08-16 * Mini tweaks for the win-dos ports. One fix for the pull down boxes and the rest mostly maintence. - WB * Fixed a bug in LYNews.c which caused overwritting of the first three characters in the Subject for a followup. - FM 1997-08-15 * Hack in highlight() to preserve a '-' character at the end of line within anchor text, which can result from splitting at the position of a ­ or or SOFT HYPHEN character. - KW * Tweaks in print_wwwfile_to_fd print_crawl_to_fd to output a soft hyphen character if it is present at the end of a line. For -dump, a raw ISO 8859 SOFT HYPHEN character may be written if the Display Character Set (default from lynx.cfg or saved value in .lynxrc) is an ISO 8859 character set, but this may be overridden with the -raw toggle. Otherwise represent soft hyphen with '-' as usual. - KW * Modified the news gateway to try XGTITLE for wildcarded lists of available newsgroups (e.g., news:bionet.* for the bionet hierarchy, or news:* for all of its served newsgroups). If that fails, Lynx retries with the old behavior of using LIST NEWSGROUPS and parsing the reply itself for the desired groups. Note that LIST NEWSGROUPS can take a wildcarded argument for some nntp servers, but not all, so we don't risk it. - FM * Fixed a bug in HTHandleAuthInfo() of yesterday's HTNews.c which could yield an infinite while() loop. - FM * Various tweaks in HTNews.c to HTHandleAuthInfo() and elsewhere, to keep connections open more often in some common cases of non-fatal errors, and also avoid trying to use the network socket after some recognized case of closing by the server. Only based on some testing with INN's nnrpd, not on any written specs. - KW 1997-08-14 * Added nntp authorization (AUTHINFO) handling to the news gateway. - FM * Added a "Loading cfg file '%s'." trace message in LYMain.c to indicate the absolute path of the configuration (lynx.cfg) file which was used at startup (if Lynx is invoked with the -trace command line switch). - FM * Added code in HTFWriter.c to avoid calling HTLoadFile() on the temporary file which results from decompression of a temporary file created by HTCompressed(), if this would just result in making a copy of the file and then invoking an external viewer. Instead the viewer command is now invoked directly from the HTFWriter_free of the HTCompressed() stream after decompression. - KW * Added code in HTFWriter.c, HTFile.c, and HTFormat.c to support reading of gzipped local files directly, using functions from the zlib library. Note that gzipped files from remote servers are still first copied to a temporary file before lynx can process them further, and an external GZIP_PATH command is still needed at least for passing such files to an external viewer, as well as for various DIRED_SUPPORT File menu functions. To activate this code, the symbol USE_ZLIB has to be defined, it is currently not set by the auto-config script. The zlib library may be already installed on your system (probably called libz.a or libz.so.1 or similar, the required header files are zlib.h and zconf.h), otherwise it is available through , it appears to support all platforms for which lynx is available (including VMS, DOS, MS Win32). Note that this library would probably also be needed if in the future support for the HTTP/1.1 "deflate" content-coding is added. - KW * Don't send MIME types in Accept headers whose q values are outside of the allowed range 0.0 <= q <= 1.0 - KW * Tweaks in HTInit.c to use the official names for image/png and image/tiff, but still support the image/x-* forms. - KW 1997-08-13 * Tweaks of LYConvertToURL() in LYUtils.c and HTParseInet() in HTTCP.c to deal more coherantly with 'z'ap attempts during gethostbyname() calls. - FM * Tweaks of split_line() and HText_endAppend() in GridText.c to handle trimming of spaces from the tails of link names more effectively. - FM * Expanded the OL nesting depth and type counters to track up to 12 list depths before punting to the lowest negative number. Note that the indentations still are limited to 6 nested depths, so use the TYPE attribute to distinquish OLs with deeper nestings. - FM 1997-08-12 * Mods of LYMainLoop.c to maintain treatment of a local startfile as text/html source when it does not have a suffix mapped to that MIME type and the -force_html switch was used. - FM * Added .phtml to the default suffix mappings for text/html. - FM * Mods of LYCurses.c to avoid using /dev/tty arbitrarily for stdin on Unix when compiling with slang versions greater than 0.99-35, based on JED's suggestion to lynx-dev. - FM * Tweaks of HTCheckFnameForCompression() in GridText.c to avoid warnings from some compilers. - FM 1997-08-09 * Changed the code of 1997-08-06 which modifies suggested filenames for a 'D'ownload to be more cautious: don't remove a '.gz', '.Z' etc. suffix if there is no header indication that we have a compressed file. Not all servers and gateways (including the internal FTP gateawy) detect and label compressed content reliably. - KW 1997-08-08 * Mods of HTTP.c so that download requests are converted to presentation requests for interactive users, and traversal requests are converted to cancels, when servers return non-success statuses with bodies which should be displayed to interactive users. - FM * Added the "DosCyrillic (cp866)" display character set to the chartrans support, and tweaked the other Cyrillic charset tables. - AAC & KW * Tweaked MULTI_SUFFIX support in HTFile.c, so that it now somewhat works. Dunno whether it's useful for anybody. - KW 1997-08-07 * Tweaks of yesterdays mods in GridText.c. - FM * Correct storage class of variables in UCMap.h, from -warn-common linker option. - TD * Refine configure tests for acs_map, ttytype to accommodate broken linker on FreeBSD 2.1.5 - TD * Modify README.configure to indicate the associated definitions for each configure option, as suggested by Klaus Weide. - TD * Correct duplicate declaration of Current_Attr, which Linux linker ignores (reported by Hynek Med). - TD * Add -G7 option to Ultrix compiler options (request by Hynek Med ). - TD * Add include for to utmp configure test (reported by Andrey A. Chernov). - TD * Add check for FreeBSD library mytinfo (reported by Andrey A. Chernov ). - TD * Modify ./makefile.in so that 'all', the default target, will build the Lynx executable. The old 'all' target is retained as "make help". - TD * Modify src/makefile.in to allow development compiles within the src directory. - TD * Mask spaces in the bkgd (background attribute) calls for color curses to make the color-style code work better with SVr4 curses. - TD * Change workaround for 8-bit acs characters by adding to the initialization a loop forcing the entries of acs_map[] to 8-bits. - TD * Many minor tweaks for the DJGPP version by DK - WB * A rename of about_lynx_dev.html to lynx_dev.html for 8.3 systems - WB 1997-08-06 * Modified HTMIME.c and LYCharUtils.c so that setting of suggested filenames via a filename=value pair in Content-Disposition headers and META elements is not restricted to the file disposition type. - FM * Mods in GridText.c, LYGetFile.c and HTAnchor.c so that suggested filenames will have appropriate suffixes when 'd'ownloading, based on whether or not the file is gzipped or Unix compressed. - FM 1997-08-05 * Mods of the lead relative symbolic element stripping for http/https URLs in cases for which they would persist when resolved to an absolute URL. The lastest URL draft is ambiguous about whether this should be considered an error, and leaves the handling of it up to the UA. So we now get rid of all lead relative symbolic elements from the resolved http/https URLs, but no others, and still issue a Bad Partial Reference statusline message. - FM * Tweaks of title handling in LYMainLoop.c and LYShowInfo.c so that the known title, or link name associated with ACTIVATE-ion, form submission, or a HEAD request, will be used in the INFO ('=') display. - FM & KW 1997-08-04 * Fixed header parsing in HTMIME.c so that "Safe:" is recognized. - KW * Changed confirmation prompts for HEAD (']') commands acting on a POST document, to reflect the fact that the POST request body will not actually be submitted in a HEAD request. - KW * Reset LYCancelDownload to FALSE at top of getfile(), to prevent delayed effect which can otherwise occur. - KW * Block URLs with port numbers outside the range of valid numbers in getfile(). - KW 1997-08-03 * Changed the NSL_FORK code in HTTCP.c so that the gethostbyname() call is retried without forking if the child process exits without returning enough data. Also added trace output, to show whether something unusual has happened to the child process. - KW * The IETF has indicated intent to adopt KW's "status 307" proposal for dealing with the status 302 problems, so HTTP.c and HTAlert.c implement that now. The 302 status is "General (temporary) Redirection" which can be handled as 303 at the UA's discretion, so we do that in all cases, rather than prompting the user whether to do that when the 302 is for a POST submission. The 307 (and 305) for POST submissions invokes a prompt whether to P)roceed or C)ancel, without the Use G)ET option. The 301 is treated as permanent, normally, but for POST submissions still is treated as temporary and invokes a prompt which includes the Use G)ET option, because scripts written to empirical behavior may still be expecting that (it's virtually never encountered in redirections of POSTs, though, because the document containing the form typically is redirected, so the user only sees the form if a local copy has been made, and it would be best to C)ancel and get a new local copy of the document from the correct http/https URL, to serve as a BASE for the form's ACTION). - FM * Changed the typedef for HTCoord in HTStyle.h from float to int, for significant speedup of rendering on machines without floating-point hardware based on DW's, KW's, BL's analyses. Note that this should be taken into account when/if external style sheet support is added for page formatting (e.g., for optimum handling by speech synthesizers and braille interfaces), beyond the current emphasis on colorizing. - FM 1997-08-02 * The cookie pre-draft has been adopted as an IETF ID: ftp://ds.internic.net/internet-drafts/draft-ietf-http-state-man-mec-03.txt so the code for combining Set-Cookie and Set-Cookie2 headers has been eliminated in LYCookie.c (see mods for 1997-07-31). - FM 1997-08-01 * Fixed typos in LYCookie.c. - FM 1997-07-31 * Mods of the cookie handling based on the latest pre-draft. Add a Cookie2: $Version="1" header in any requests that use historical cookies in the Cookie: request header, so that modern servers will use Set-Cookie2 headers with modern cookies in their subsequent replies. Limit the scheme for commentURLs to http or https, not just to network servers (e.g., gopher is now barred too). Include a $Port attribute in modern Cookie request headers if it was set via a server's reply header. The pre-draft indicates intention to drop the requirement to combine Set-Cookie2 and Set-Cookie headers if both types were received. We're still combining them, but based on bona fide one-to-one correspondence checks (which were not specified in the earlier draft), so that's OK, and we'll get rid of that needless overhead if the current pre-draft holds up and becomes an official IETF draft. - FM * Added a -nocc command line switch for disabling the Cc: prompt for self copies of mailings. Note that this does not disable any CCs that have been incorporated within a mailto URL or form ACTION. - FM * Added a NO_FORCED_CORE_DUMP compilation (userdefs.h) and configuration (lynx.cfg) symbol, normally set FALSE, which if changed to TRUE will block forced core dumps on Unix via abort() calls on fatal errors or assert() calls on potentially fatal error checks. Also added a -core command line switch for toggling the default. - FM * Updated the documentation and 'h'elp concerning the new symbol and switches. - FM 1997-07-30 * Added workaround for curses with broken handling of 8-bit acs characters (which may be used for drawing of popup boxes) to LYCurses.h. This fixes box characters and attributes/colors for solaris curses used with linux console as terminal. Currently it is not automatically enabled or configured, but can be enabled by -DBROKEN_CURSES_8BIT_ACS. - KW * Mod in HTFWriter.c to change the statusline appropriately when an uncompression has completed. - FM * Fixed code in LYOptions.c for the case when NEVER_ALLOW_REMOTE_EXEC was not defined and ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS was defined. - KW 1997-07-28 * Avoid traversing the full list of anchors each time when HText_endAnchor() is called with a non-zero anchor number, if that number corresponds to the last anchor added to the HText structure. It is is the most common case that HText_endAnchor() refers to the last anchor, and the only case that could be handled correctly before FM's changes of 1997-05-13. Avoiding the loop over the list of anchor can improve loading time significantly, especially for large files with thousands of anchors. - KW * Add progress display and 'z'appability for loading of local files. They are activated only after a few hundred k bytes have been read. Added define for HT_PARTIAL_CONTENT to HTUtils.h, used in above. (The WWW Library 5.x uses HTTP-ish status codes like this throughout. I find it much less confusing than -29998 and so on, and there's no conflict in this case. - KW * Minor LYUtils.c tweaks. - KW 1997-07-27 * Changed code for checks in LYGetFile.c for URL schemes which should be rejected when received as redirections, added checks for more schemes. - FM * Rename top-level Makefile to Makefile.old (it's obsolete) - TD * Reduce top-level targets to one, 'lynx' - TD * Move comments describing DirEd to README.configure from makefile.in, leaving only the definitions that haven't been integrated yet. - TD * Add configure options to enable/disable DirEd and its associated modes. - TD * Add configure option to enable/disable char-trans support. - TD * Correct sense of autoconf'd symbol for size-change. - TD * Accommodate systems with obsolete ncurses.h in configure tests. - TD 1997-07-26 * Changed the variable hline in LYUtils.c to hLine, so as not to conflict with a curses function or macro. - FM * Fixed an esoteric glitch in highlight() of LYUtils.c which could cause the last character of a current link to receive WHEREIS search target emphasis if it happened to be the first character of the target (though perfection is unattainable, we should strive to achieve it :). - FM * Changed the default value for STRIP_DOTDOT_URLS (lynx.cfg) to TRUE. - KW * Made some of the additional checks introduced yesterday in LYMainLoop.c for invalid links to internal dired URLs more strict, as they probably were intended. - KW * Added checks for some internal URL types, which should be rejected if received in a server redirection, to LYGetFile.c. Maybe more types should be added to the list. - KW 1997-07-25 * Map charsets of the form "ibmNNN<...>" to "cpNNN<...>" in UCdomap.c if not already recognized. Also recognize "windows-1252". - KW * Compared the hanndling of 4-way "show color (&)" in the 'o'ptions menu against FM's implementation, and made some changes (mostly in formatting, variable and constant names and usage, ordering of statements) to aid further comparison. The logic is still messy and needs further cleanup and simplification, but seems to do what it should. Note that this also handles color-curses, in a (hopefully) reasonable way. Command line flags -nocolor and (if using slang) -color override a preference found in the RC file. See updated "Lynx Users Guide" file and the comments written to the RC file. Documentation changes adapted from FM's changes. - KW * Mods of the DIRED_SUPPORT to check the actual URLs of temporary files rather than just their titles when filtering for spoofing attempts via external files with internal URLs. Also recast the PRIVATE my_spawn() to a PUBLIC LYExecv(), so that it can be used by any module (though presently it's still used only by LYLocal.c functions). - FM * Tweaks of LYCharUtils.c to handle Set-Cookie HTTP-EQUIVs in META elements without risking crashes in LYCookie.c or HTParse.c. - FM 1997-07-24 * Made "show color" option a 4-way choice, if compiled with color support and if saving of options to a .lynxrc file is allowed. - KW * Made changing file permissions with DIRED_SUPPORT work again; one of the recently added checks in LYMainLoop.c was too restrictive. Added protection to permit_location in LYLocal.c, similar to the changes of 1997-06-24 to LYDownload.c. - KW * Generate CANCELLED message when editing of a string value on the Options Screen has been cancelled (typically with ^G), instead of an inappropriate VALUE_ACCEPTED statusline. - KW 1997-07-23 * Tweaks of the strtok() calls for textarea values in HTML.c, so that they will never be repeated after NULL has been returned, and thus won't cause linux-alpha to crash. - FM * Make -nocolor command line flag work if compiled with slang. Note that -nocolor is strong, it overrides all other reasons that might otherwise turn color on. - KW * Tweaks in LYCurses.c to ensure that slang library and Lynx flags for whether color support is on stay in register. - FM * Change the default in userdefs.h for SHOW_COLOR to FALSE for USE_SLANG. Because of the different logic used for LYShowColor in the curses code vs. slang code, setting SHOW_COLOR to TRUE makes it difficult to invoke a binary compiled with slang so that color is not used on startup (except by using -nocolor). Note that reading show_color from .lynxrc is still commented out. - KW * There is now a "trailing comment" handler in LYReadCFG.c. It treats '#' as a comment token only if it is somewhere after the last colon for the lynx.cfg entry and is preceded by a space or tab. - FM * Added TT to the Utterly Tag and Attribute Soup group of HTML elements. - FM (applies only to "old" DTD in this code set, as usual - KW) 1997-07-22 * Modify curses popups in LYForms.c and LYOptions.c to use background color from main window - TD * Ifdef'd out the logic that saves "show color" to .lynxrc, since it is deemed to be confusing to users - TD * Merged FM's changes to the "show color (&)" toggle to save to .lynxrc, support slang, update online documentation - TD * Add error message to show actual context in error-checking for color parsing suggested by Filip M Gieszczykiewicz - TD * Check for/suppress duplicate -lsocket in network library configure - TD * Remove HP-UX snake2/snake3 targets from makefile.in - TD * Add configure script case for 'sequent', drop ptx, ptx2 targets from makefile.in - TD * Add logic to configure script handling of slang to suppress spurious -Ipredefined when header location is given in $CFLAGS - TD 1997-07-21 * Check for lynx_uses_color and LYShowColor in lynx_start_status_color() and lynx_stop_status_color() of LYCurses.c so that the statusline will appear reverse (or otherwise highlighted if the terminal doesn't support reverse), if color support is compiled in but not currently used. - KW * Added comments on color usage to lynx.cfg. - KW 1997-07-20 * Added command-line option "-nocolor" to disable color on terminals that would otherwise support it. Added options toggle for colors, tested with ncurses. - TD * Remove option value from configure option "--with-color-styles". - TD * Correct background of popups in LYOptions.c - TD * Add configure check for compiler options to enable prototypes - TD * Remove IRIX "-cckr" compiler flags. - TD * Correct whitespace as per LPS: LYCurses.c, LYOptions.c - TD * Tweaks of LYMainLoop.c in the code controlling how the document is reloaded due to any changes in the 'o'ption menu which require a new rendering of the document (but still without forcing a proxy cache refresh when that is inappropriate; see the 1997-05-26 mods). - FM 1997-07-18 * Mods in LYexit.c and LYCurses.c to ensure restoration of stderr (if it was changed for output to the trace log) on all exits. - BRL & FM * Include an unsigned char typecast in the HASH_FUNCTION definition for HTAtom.c - CK * Modified change to is_url() of 1997-07-13 to check for the slash after stripping any lead space characters. - FM 1997-07-16 * Added the Windows Cyrillic display character set. - AAC (Andrey A. Chernov ) 1997-07-15 * Added support for a commentURL attribute in cookies. This attribute is under discussion in the HTTP-WG and not presently in the draft (see the 1997-07-09 mods for the draft's URL), but would be extremely advantageous for multi-lingual and non-English-speaking sites because the comment attribute can have only ASCII characters in its value, whereas a request for the comment via a URL in turn allows use of charset and language negotiation for what the server returns. The value of the commentURL is resolved and retained only if it's scheme points to a server (i.e., file and special lynx URLs are rejected), and if it is retained, is included as a link in the Cookie Jar Page. If commentURL is not ultimately included in the revised State Management RFC, sites which wish to use it could do a User-Agent check for Lynx (and any other browsers which implement it). - FM * Fixed a typo in HTCompressed() of HTFWriter.c so that the last dot in a tentative temporary filename is sought via strrchr(), as is done for HTSaveAndExecute() and HTSaveToFile(). - KW 1997-07-14 * Yet more tweaks of the cookie support. We include $PATH and/or $DOMAIN attribute/value pairs in Cookie request headers only when their values were set explicitly via a server's Set-Cookie and/or Set-Cookie2 reply headers (and the cookies are $VERSION="1" or greater). - FM * Added support for IFRAME homologous (but not identical) to that for FRAME. It is handled as a block with a blank line before and after style, and with margins and default alignment inherited from the containing block, division, or span. The IFRAME rendition always begins with an emphasized "IFRAME: " label followed by the NAME attribute's value, if present, or the URL for the SRC attribute, serving as a link for the SRC, followed on a new line by any rendered IFRAME content. - FM * Added handling of LEGEND elements. The content is rendered in place, as for CAPTION elements, since we don't have multiple pass inlining capabilites. Hopefully, if the LEGEND is intended to be ALIGN-ed at the "top" or "bottom" of the associated insert, the author will place the LEGEND element above or below it, respectively. Note that LABEL elements similarly are rendered in place, and will be displayed interpretably only if the INPUT to which the LABEL's "for" attribute refers, immediately follows the LABEL element. - FM * Added recognition of BUTTON elements, and handling of them (sorta :) when they are TYPE="submit" or TYPE="reset" in forms. The default "submit" or "reset" string, or the value of a VALUE attribute, if present, is embedded in parentheses and used for the link, and the content is simply rendered and displayed in place. Until we see what kind of markup the real world puts in such elements, it's too risky to try to use that rendition as the link. Also, the W3C's HTML 4.0 draft presently is very fuzzy about whether, and if so, when, an IMG element in the BUTTON content should be treated as an image map, so the present code doesn't try to cast any submitted BUTTON name/value pairs into the format for INPUTs with TYPE="image". When the BUTTON is a script control rather than submit or reset button, a "[BUTTON]" pseudo-ALT is inserted to warn users of its presence, but the form is not disabled. The W3C's HTML 4.0 draft makes scripting intrinsic, with no SGML-based fallbacks if it is not available or is disabled by security-conscious sites. Dave Raggett of the W3C replied to criticisms of this in www-html@w3c.org by saying that he wished it have been otherwise, but "market forces" prevailed (Sigh...) - FM 1997-07-13 * Changed is_url() to return immediately if the string to check starts with a slash character. This prevents some false positives if the string contains ':' characters. - KW * Added support for "MACOS AppleShare IP FTP Server" to HTFTP.c. Only based on and tested with (the current incarnation of) . - KW 1997-07-12 * Correct some build issues with the merge (ifdefs for the curses modules) as well as minor fix for makefile distclean rule. - TD * More refinements of the cookie support in relation to recent discussions in the HTTP-WG, and for more fully effective protection against denial of service attacks. If the same attribute appears more than once for the same cookie, ensure that the first instance will be used. Limit the total number of cookies across Set-Cookie and Set-Cookie2 headers to 50 per server reply, and each cookie to a maximum of 4096 bytes. - FM 1997-07-11 * Added support for hexadecimal character references (&#xH;) as proposed in the W3C HTML 4.0 draft. - FM 1997-07-10 * Synchronized the development code against the fotemods patches up to 1997-07-06 (relevant changes listed below, as usual). Note that FM has now included the chartrans code, but has eliminated conditional compilation of it; however, in this code set setting -DEXP_CHARTRANS at compile time is still necessary (but compilation without it has not been tested). - KW * Fixed character counting logic in display_line() for lines where soft hyphens (­ or or a soft-hyphen character) are used for their intended purpose. - KW NOTE: The W3C HTML 4.0 draft explicitly specifies handling of ­, ­ (and now also ­) in the manner long implemented by Lynx (i.e., as a truly soft hyphen), and not in the brain-dead manner implemented by Netscape and MSIE. - FM * Various tweaks of the cookie support to handle likely (based on past experience in the real world :) abuses of Set-Cookie and Set-Cookie2 headers from servers. Most importantly, apply sanity checks to the values of port attributes so that any unquoted port list will not be misinterpreted as the start of a new cookie within the port list. Also added code to fold (CR LF TAB) Cookie request headers if they contain a long sequence of cookies which would exceed 1024 bytes on one line, since some servers suffer buffer overruns and crash in such cases. - FM * Modified HTNews.c to use HTmmdecode() and HTrjis() for the Subject and Author strings in listings of news articles when using a Japanese display character set. - HEN 1997-07-09 * Massive updating and revamping of the cookie support in accordance with http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-state-man-mec-02.txt which is scheduled to replace RFC 2109 on July 15, 1997. Noteworthy changes are that (1) the blanket port restriction is now lifted, and sharing of cookies among servers with matching domains but different ports is blocked only if a port attribute was included in the Set-Cookie2 header (or Set-Cookie header, though it's not expected there), with a value which defaults to the request's port, but can be a comma separated list of ports, and (2) the blanket restriction on sharing of SSL-encrypted (https) cookies with http servers is lifted, and normally depends on the Set-Cookie or Set-Cookie2 header having included a secure attribute. However, a configuration option (see lynx.cfg) to FORCE_SSL_COOKIES_SECURE is now available, and the compilation or configuration default can be toggled via a -force_secure command line switch. - FM * Make NOCACHE ('x' key) work as expected from history list for internal links. - KW * Removed bogus checking for a config file in home directory which had been introduced into the development code. - KW 1997-07-08 * Synchronized the development code against the fotemods patches up to 1997-06-24 - TD & KW 1997-07-06 * Implemented popup windows for the 'o'ptions menu, homologous to those for SELECT blocks in forms. They are implemented when select_popups is on, and include WHEREIS search and 123[g,p] features (very useful for navigating the choice list of 28 display character sets :). Use the F_LINK_NUM command ('0') to invoke the prompt for a choice list number when in NUMBERS_AS_ARROWS mode. The popups are not invoked for the simple, binary choice options. Also modified the options menu so that the cursor is positioned to the left of choices when show_curser is on (but it is still positioned initially at the endings of strings when the line editor is invoked for options that have user-entered values). - FM 1997-07-04 (KaBoom! :) * Mods of HTMIME.c and HTFile.c to ignore Content-Type parameters other than charset when charset is not present, as we do when it is present and we know we can handle it. - FM * Fixed bug in LYNews.c which could cause Lynx to crash when posting or sending followups to news groups and the Organization header was obtained from the /etc/organization file. - FM * Fixed bug in LYEdit.c which could cause Lynx to crash when an editor to which a line number is passed as an argument is used and there are no links on the current page of the document to be edited. - FM * Added information about the new $USER feature to the comments about TEMP_SPACE in userdefs.h. - FM 1997-07-03 * Tweaks of change_sug_filename() in LYUtils.c to make protections against buffer overruns explicit within the function. - FM * Tweaks of the #ifdef'ing in HTTCP.c. - FM 1997-07-02 * Mods in LYDownload.c and LYPrint.c to treat a suggested output file entry of "/dev/null" on Unix, and "nl:" or "/nl/" paths on VMS (case insensitive), as a cancel (^G). - FM * Mods in LYGetFile.c to include URLs with content from a form submission with method GET in the group for which Referer headers are never sent, because the content might include private (e.g., password or credit card) information which should not be visible in Referer logs. - FM * Added -G 7 to the LYFLAGS and MCFLAGS for the ultrix and ultrix-slang Makefile targets when using the native ultrix compiler. - HM * Added -DNSL_FORK to the LYFLAGS for all of the solaris2 and linux targets in Makefile. - FM * The above two changes don't affect the makefile used by auto-config - KW 1997-06-30 * Removed a redundant declaration in UCdomap.c which was causing some compilers to balk. - FM * Fixed typos in SGML.c which could cause echoing of numeric character references for some of the display character sets. - FM 1997-06-29 * Updated lynx.hlp, lynx.man and the online 'h'elp concerning the chartrans support. - FM 1997-06-26 * Tweak of the "tag and attribute soup" parsing mods in HTML.c so that the PLAIN attribute works for UL blocks again. - FM * More tweaks of LYMainLoop.c to issue informative statusline messages about attempts to ACTIVATE, DOWNLOAD, or submit URLs or ACTIONs which are disallowed in the current context and destined to fail, rather than acting on them and generating actual failures. - FM * Mods of LYmktime() in LYUtils.c to support dd-mm-yyyy format for expires headers and cookie attributes. - FM * Oops, hadn't included checks for whether there are links on the page in this morning's LYMainLoop.c mods to ensure appropriate statusline messages for attempts to bookmark special URLs that can't be bookmarked, which could yield a crash it there aren't any. The checks are in there now. - FM * Added ability to bookmark links from the Lynx List Page, as from the Visited Links Page, but not for those pages, themselves, since they are temporary files. Note that Lynx List Page links will not have the documents' titles, as do those in the Visited Links Page, unless you've visited them before invoking the Lynx List Page. - FM * Added explicit protections against buffer overruns in the LYDownload.c handling of suggested filenames. - FM * Changes in LYCurses.c, GridText.c, HTML.c, and LYUtils.c, and smaller changes to some other files, to fix problems with RP's style code. Color leaking should now be at least much reduced, and some possible crashes avoided. - KW 1997-06-24 * Mods in LYDownload.c to check whether the File= field in a LYNXDOWNLOAD URL has the value that was inserted into the URL via the most recent download options menu. This prevents spoofing with arbitrary LYNXDOWNLOAD URLs entered via the 'g'oto or ECGOTO commands, or ACTIVATE-ed in a file other than the most recent download options menu which was created by Lynx internally. - FM * Mods in LYMainLoop.c to ignore LYNXCOOKIE, LYNXDIRED, LYNXDOWNLOAD, and LYNXPRINT URLs if entered via a 'g'oto or ECGOTO command, and to issue a statusline message explaining that the special URL is not allowed as a goto. This is just for informational purposes, and the above anti-spoof mod is not dependent on it. - FM 1997-06-23 * remove "Styles" identifier from Lynx version string in userdefs.h since it causes "patch-o-matic" to choke. -- JES 1997-06-20 * Now that we add or subtract attributes for Unix FANCY_CURSES, as for VMS curses and slang, the 1997-05-30 mods based on LE's patch for keeping track of whether links occur in an underlining context, and if so, restoring it when a current link is made non-current, should be extended to FANCY_CURSES as well. So they are extended, now, in highlight() of LYUtils.c. - FM * Added code in LYNewsPost() of LYNews.c for converting any EUC or SJIS to JIS (ISO-2022-JP) in posts or followups to Usenet news groups if the display character set is "Japanese (EUC)" or "Japanese (SJIS)". The mods need testing by Japanese users, because the TO_JIS() function I added long ago in SGML.c has not actually been used before. - FM * Modified the hack in LYPrint.c for mailing HTML source so that it never appends a charset parameter to the "text/html" value of the Content-Type header if compiled without chartrans enabled. - FM & KW 1997-06-18 * Added a check for nonsense LINES and COLS values in setup() of LYCurses.c, homologous to the check in size_change() of LYUtils.c, and set LYlines and LYcols to the 80x24 default if they're nonsense. The slang library and most curses implementations do the equivalent themselves, but we may as well make sure it's done. - FM * Tweaks of the anti-spoof mods in HTFWriter.c for additional protection against extra %s entries in viewer command mappings. - FM 1997-06-17 * Came up with a low overhead way to restore the emphasis for WHEREIS search targets when links are made current or non-current and the target string starts before and/or extends past the end of the link name (hightext or hightext2) string (see 1997-06-14 mods), so the restoration works in that case as well, now. - FM 1997-06-14 * Fixed a longstanding bug in highlight() of LYUtils.c which caused seeking of a column position less than 0 and strange behavior when a link is made current, if show_cursor is on and the link begins at column 0 (as can happen in PRE blocks). We now position the cursor on the first character of such links, so the current link will remain clear for those with speech or braille interfaces. - FM * Added functions in LYCurses.c, along the lines of those in the development code, so that the [w]start_foo() and [w]stop_foo() functions no longer just replace character attributes for Unix FANCY_CURSES, but now add or subtract them as for VMS curses and slang. - FM * More mods in GridText.c and LYUtils.c so that the handling of WHEREIS search target emphasis when links are made current and non-current is the full equivalent for Unix FANCY_CURSES of that for VMS curses and slang. Note that the restoration of search target emphasis does not succeed if the hit started before or extends beyond the link name (hightext or hightext2 string). What it would take to succeed in that case as well doesn't seem worth the overhead, but I'm still thinking about it. Also note that we still do not emphasize search target hits, but only do link or page re-positioning, for Unix curses when only standout() and standin() are supported. In that case, standout() is being used for all links, including the current (with the latter indicated via cursor position by turning show_cursor on), so we don't want to create a totally confusing situation by using standout() for search target hits as well. The code is still designed to degrade gracefully when the terminal does not have the capabilities of the curses or slang with which Lynx was built. - FM 1997-06-13 * Tweak of yesterday's LYGetFile.c mods. Lost a lynx_edit_mode = FALSE statement that is still needed when DIRED_SUPPORT is defined. - FM * Mods in LYForms.c so that the cursor is positioned at the left of the current option in select popup windows when show_cursor is on, as when the cursor is used to indicate the current link in the main document. This is important when Lynx is used with a speech or braille interface, or a terminal which does not respond to the highlighting/color for the current option. When show_cursor is off, the cursor is still positioned to the right of the current option for curses, and is fully "hidden" in the lower right corner for slang, so that the hightlighting or color of the current option can be used without the distraction of a blinking cursor in the left-to-right reading field. - FM * Added ability to change the show_cursor setting via the 'o'ptions menu and to save that as the default in the RC file (otherwise, the default is still that set in userdefs.h or lynx.cfg). The -show_cursor command line switch toggles the default, however obtained, homologously to the -popup toggle. Updated the online 'h'elp accordingly (option_help.html and Lynx_users_guide.html). - FM 1997-06-12 * Tweaks of the 1997-06-04 mods for restoring emphasis of WHEREIS search targets in link names when they are changed to the current link or again made non-current. When the link is made current, the first and last characters of the link name never are emphasized, so they'll retain the attributes/color for the current link, and the user can see (if sighted) that the link was made current. With this change, the restoration of emphasis also is interpretable with Unix FANCY_CURSES, so the block for that is lifted. Note that I figured out why the bold+reverse+underline combination doesn't work for that. The vanilla and this Lynx code are not adding or subtracting attributes for their start_foo() and stop_foo() functions (as is done for slang and VMS curses), but are replacing them, so you always end up with the last attribute in a series of start_foo() calls (underlining for the search target emphasis). I don't know if ability to sum attributes applies to all Unix curses flavors for which FANCY_CURSES is defined in the Makefile, so I left the Unix, non-slang start_foo() and stop_foo() functions the way they are, for now. - FM * Mods in LYGetFile.c so that any '~' in file URLs is handled as when in startfile, home page, or 'g'oto commands. Only the first '~' is converted to Home_Dir(), and only for the first symbolic element in the URL, and if it is followed by a username, that username is stripped (so that the "~username" becomes a reference to the home of the account running Lynx, as if only '~' had been used, and can't be used as a reference for an arbitrary home). Note that we don't do this stripping for ftp URLs, because the ftp server should decide, itself, whether to grant access to arbitrary homes, based on the username and password that were used to log in. Note, also, that if the account running Lynx is allowed access to the root of the file system for its home, then access to any arbitrary home in that file system can be gained from there. Access to the root never is allowed for file URLs in the for-VMS code, but depends on the root's protection in the for-Unix code. Also, any arbitrary path in file URLs will be attempted if it is specified as an absolute path. The stripping of the username from "~username" in most cases on Unix only protects against probing for homes in other file systems, without the user knowing the corresponding absolute path. - FM 1997-06-11 * Mods in HTAABrow.c, HTTP.c and HTAlert.c so that auth_proxy is no longer a module wide global, and the structures which handle/create authentication/authorization headers maintain separate setup trees for proxy authentication/authorization versus for protected limbs of http/https data trees (realms) on the same server. This ensures that each proxy's template, which is the global '*' for all paths (that are in fact full URLs) in its proxying requests, are kept distinct from the templates for true paths of the protected limbs on the same saver, even if the user fails to include that proxy in the no_proxy list, or the server's WebMaster fails to do the equivalent configuration for the server, and the realm names overlap. Also modified the prompt strings for the username and password to be encrypted for protected document requests versus for proxy access so that they indicate explicitly whether the user's entries will be used for one or the other. - FM * Added a -pauth=id:pw switch for proxy servers, homologous to the -auth=id:pw switch for protected documents, along the lines of AJL's patch. Note that the -pauth value is used only for authorization headers to the first protected proxy server encountered, and the -auth value is used only for the authorization headers in document requests for the first protected limb encountered. Now that we have an explicit switch for proxy authentication, it should be used explicitly for that, instead of still allowing use of the -auth=id:pw switch for either (IMHO). Also, there's no serious need to make inclusion of the code for handling these switches a compilation option, because they are only available to users with shell access. Updated the help files concerning these switches, and included advice to make sure any script files which use these switches have restricted access. - FM 1997-06-09 * More refinements of the code in GridText.c, HTML.c and LYCharUtils.c for handling visible versus hidden links, blank lines, stripping of the numbered brackets for links, and the interactions of these things with soft hyphens. - FM 1997-06-06 * Fixed typos in LYrcFile.c which caused failure to start two comments on new lines when writing to the RC file. - FM * Fixed a typo in the lead dot pair stripping code in LYLegitimizeHREF() of LYCharUtils.c. - FM * Tweak of code in GridText.c for handling soft hyphens so that we don't display a hyphen if it's the first character in the line, or is preceded by a space, even if it is followed by a newline. - FM * Mods of the hidden link handling and numbered bracket stripping code in GridText.c so that it succeeds no matter how many blank lines are in the anchor content. - FM 1997-06-04 * Mods in LYLegitimizeHREF() of LYCharUtils.c for dealing more effectively with fragments which have illegal characters, as is becoming common due to authoring tools such as MicroSoft's Frontpage and Netscape's HTML editor. The actual URL-reference is still handled so as to yield a fully legitimate absolute URL, without any unescaped spaces, but the fragment is checked only for problem characters such as tab or newline, and otherwise is unmodified. (Try the vanilla versus modified code with the http://www.cnib.org/library/ww_flw96.htm atrocity, brought to you discourtesy of Frontpage. :) - FM * Worked into the fotemods code use of bold+reverse+underline highlighting of WHEREIS search hits for VMS curses, and slang on both VMS and Unix (with or without the color mode on), and added code in highlight() of LYUtils.c for restoring that highlighting when links are made current or non-current if the string for the hit was contained within the string for the link (won't be restored if the hit's string starts before or extends past the link's string). Couldn't get any of this to work with curses and the solaris2 target, so for Unix curses the hit string still is just underlined and not restored when links are made current or non-current. - FM * Fixed typo in the 1997-06-01 LYOptions.c mods. - FM 1997-06-03 * Mods in LYList.c to skip setting up a list block for visible links if the document has only hidden links, and in HTML.c to include a notice about this with a suggestion to use the 'l'ist command. Try it with the http://www.sony.com/ atrocity. - FM * Tweak in LYMainLoop.c to fix a longstanding bug which would cause the curdoc.line and curdoc.link numbers to be mishandled, and thus cause the wrong page and current link to be restored on return to the document via PREV_DOC or the History Page, if the document was fetched originally with a fragment and a link on its first page had been activated. - FM * Tweaks in GridText.c so that returns from image map menus to parent documents are not treated as if a different document is being sought, and thus any no-cache directives associated with the parent will be ignored unless another fetch is initiated within the parent or via another, externally existing document. - FM * Added SEEK_FRAG_MAP_IN_CUR and SEEK_FRAG_AREA_IN_CUR configuration (lynx.cfg) options for how to resolve USEMAP attribute values in IMG or OBJECT tags and HREF attribute values in AREA tags when they consist solely of a fragment (USEMAP="#frag" or HREF="#frag"). The compilation default is TRUE, i.e., they are resolved with respect to the current document's URL, even if the base is different, as is being done for the HREF attribute values of Anchors and LINKs. The compilation default seems to be working out, even though most of the currently deployed browsers still use the base. - FM 1997-06-02 * Mods in LYMain.c so as not to require that a lone "-" argument for invoking input of command line arguments from stdin be the only argument on the actual command line. That requirement preluded use of this feature when the command for invoking Lynx was aliased so as to include arguments, because the lone "-" then could not be the only argument. Also tweaked the code so that any stdin-derived arguments which need to be processed early in main() are so processed. The vanilla code had severly flawed logic in this respect. The security considerations associated with switch handling have gotten hairy beyond reasonable bounds, but I think I've thought it all through (we'll see :), and have plugged some holes in the vanilla code for this feature. Redirection of stdout and/or stderr to a file now also works reliably in conjunction with this feature. - FM * Added an explanation in the PROBLEMS file of the bad getsockname() and getpeername() functions within SOCKETSHR 0.9D which affect the ftp gateway, and the URLs for Andy Harper's (A.HARPER@kcl.ac.uk) fixes of the SOCKETSHR 0.9D sources. - FM * Cast LYLocal.c into the Lynx programming style. - FM 1997-06-01 * Added support for numbered form fields, and options in SELECT popups, based on LE's patch. The LINKS_AND_FORM_FIELDS_ARE_NUMBERED keypad mode can be defined in userdefs.h and via the 'o'ptions menu. When in SELECT popups, the F_LINK_NUM ('0') command can be used in any mode to invoke a "Select option (or page) number:" prompt, which can take 'g' or 'p' suffixes, homologously to the "Follow link (or goto link or page) number:" prompt in the main document with popups retracted. Note that when in the main document, the F_LINK_NUM command has an implied 'g' suffix for form links (i.e., will position you on the form link, not, for example, ACTIVATE a submit button), but *not* in popup windows (i.e., without a 'g' suffix, the option corresponding to the number will be selected, and the popup will be retracted, as if you had pressed ACTIVATE when positioned on that option). The 123p feature is quite useful in popups with a very large number of options, and supplements the HOME, END and WHEREIS functions for seeking positions in the list (again, regardless of keypad mode, if F_LINK_NUM is used to invoke the prompt). A "page" is defined as the number of lines within the vertical dimension of the popup box. - FM * Mods in LYEdit.c to seek the current page and line when the editor is sedt on VMS. - FM * Updated the online 'h'elp concerning the "Follow link (or page) number:" and "Select option (or page) number:" features (Lynx_users_guide.html, follow_help.html, keystroke_help.html and other_help.html). - FM * changes to help files to reflect the different prompt string. - KW 1997-05-30 * Worked in LE's patch for keeping track of whether links occur in an underlining context, and if so, restore it when slang color is on and a current link is made non-current, thereby actually dealing with the longstanding bug discussed in the 1997-05-27 mods (This is just a hobby, and I always reserve the right to change my mind! :). - FM * Mods of LYForms.c and LYStrings.c to deal with form field values too long to fit in the line editor's buffer (such as long TEXTAREA values which have no newlines in them). As much of the tail as fits in the buffer is offered for editing, with statusline messages explaining the situation. If the tail is modified, it is combined with the unmodified head when the form field is made non-current. The result can be edited further by making the form field current again. If the form has a Reset button, it can be used to restore the original value. The vanilla code would crash on buffer overflow (Ugh! A potential security hole.). - FM 1997-05-29 * Restored underlining in conjunction with reversing for the current link with slang when colors are being used, but not otherwise. - FM * The 1997-05-26 mods to bypass screen redraws on retractions of SELECT popups when the selected OPTION was not changed worked properly only for VMS curses. Tweaked the for-slang code so that it now works like VMS curses (though not as efficiently). However, with Unix curses, the delwin() - refresh() sequence does not restore what was there before the popup was invoked, and none of the tweaks I tried got that to work, so the poor Unix folks using Unix curses are now stuck again with screen redraws for every popup retraction. - FM 1997-05-27 * Eliminated in the fotemods code underlining in conjunction with reversing for the current link with slang, to avoid the longstanding bug of underlining being lost (and distracting color changes occurring) when that link ceases to be current and it was embedded in an underlined region of text. The attributes of the current link can be better handled in the development code based on configureable style sheets, so there's no point letting this bug ride, nor trying to deal with it through temporary internal mods, in the fotemods code set. - FM 1997-05-26 * Mods of display_title() in GridText.c to eliminate the "format" mask as in KW's 1997-05-14 development code mods, and to make the memory management more efficient. - FM * Mods of change_form_link() in LYForms.c to bypass the screen redraw on retraction of a SELECT popup if the SELECT block is DISABLE-ed or the selected OPTION was not changed. Note that the complete elimination of the screen redraw in the 1997-05-20 development code mods, i.e., even when the selected OPTION was changed, results in the change not being made evident to the user in the retracted popup unless the screen is redrawn fortuituously (e.g., due to subsequent paging). - FM * Modified the caching-related changes of 1997-05-15 to LYMainLoop.c, handling automatic reloading after a change of the User-Agent string like after comparable other option changes. We force a reload if "preferred document lan(G)uage" or "preferred document c(H)arset" are changed via the 'o'ptions menu, and to set the "reloading" flag for forcing a proxy cache refresh if those or "user (A)gent" are changed and the current document has an http, https or lynxcgi scheme, but not force a proxy cache refresh if we're reloading due to an INLINE_TOGGLE, IMAGE_TOGGLE, or RAW_TOGGLE command. - KW & FM 1997-05-25 * Mods in LYMain.c to convert $USER if present in the TEMP_SPACE definition or LYNX_TEMP_SPACE environment variable to the string returned by getenv("USER"). - FM * Fixed two typos for me->inFONT settings in HTML.c - TD * Added chmod(file, 0600) calls for most files created by Lynx. - FM 1997-05-24 * integrate patch JED's mods which support mouse for slang as well as add new functions to encapsulate differences between slang/curses. - TD 1997-05-21 * Mods in HTML.c and LYCharUtils.c so that TABLE blocks are treated as divisions in the DIV nest, with a default alignment of HT_LEFT if the TABLE start tag lacks an ALIGN attribute, and otherwise, that attribute's value. Nested TABLEs extend the DIV nest. This avoids the problem in the vanilla code of TABLE content inheriting the alignment of a containing CENTER or DIV which is intended for alignment of the TABLE as a whole. Also added support for ALIGN attributes in TR elements. If the TR has no ALIGN attribute, it inherits that of the current division, which should be that of the current TABLE. This, of course, still does not yield true TABLEs for truly tabular content, but makes TABLEs used for formatting more readable. - FM 1997-05-20 * correct 2 occurrences of "me->inFONT == TRUE;" in HTML.c - TD * add configure --with-color-style option to merge RP's alpha changes for color styles (this works only with ncurses, since it does not initialize the window background, leaving it null, thereby exploiting a bug in ncurses which sets null backgrounds to a space). Also some whitespace (and renamed CS to make this build w/o ncurses) - TD * test-built with ncurses 1.8.7, 1.9.4, 1.9.9e and 4.0, as well as bsd 4.4 curses and slang - TD * Tweak of HTFWriter.c so that it does the anti-spoof tests normally done by tempname() (see the 1997-05-19 mods) in all cases for which it changes the temporary file suffix from any of those checked by tempname() itself. At this point, every way I've thought of for trying to spoof Lynx via links for temporary files is blocked, but people should beat on today's code to see if there's any spoofing strategy I haven't yet blocked. - FM * Modified the Lynx Trace Log handling so that it doesn't use actual redirection of stderr via freopen() calls, and restores the original value of stderr during any escape to shell. This avoids the problem on Unix that sh and ksh send their prompt strings to stderr, and that bash sends both its prompt and command line echo to stderr, so they end up in the log instead of being visible. I had tested the initial design on VMS and with csh on Unix, and thus didn't notice this foolishness for the other Unix shells. Anyway, it's OK for all of them now. - FM * Tweaked SIGTSTP interrupt handler in the USE_SLANG for-unix code, so that it gets set to SIG_DFL when stop_curses() is called, to prevent strange interferences experienced when ^Z is used while a helper process is in the foreground. - KW * Change in LYForms.c to prevent forced screen refresh after selection from a popup box. - KW 1997-05-19 * Recognize linux console F1 key in LYgetch() (applies if -DNO_KEYPAD is in effect, as for all binaries built with slang). - KW * Protect LYgetch() against returning raw values of keypad() symbols which are invalid when used later as an index into keymap[], override[], etc. - KW * in the USE_SLANG for-unix start_curses(), honor the no_suspend flag if set. This implements -restrictions=suspend handling for slang (although it was intended for curses implementations which have problems with ^Z within Lynx; see the PROBLEMS file). Note that the no_suspend flag cannot be suspected to have the desired effect if lynx is executed from a shell script, unless the shell process forked for the script also ignores the SIGTSTP signal generated (usually) by the ^Z key. Also if the user is allowed to execute any helper process (VIEWER, PRINTER, etc.) which does allow suspending while no_suspend is in effect for the Lynx parent process (by overriding the SIG_IGN setting done by Lynx or by other means), then suspending may still be possible, in addition to strange effects either immediately or when the process or process group is continued (wrong tty and screen state, zombie processes, total hang of the session without any way to interrupt - you get the idea...). Trying to use the suspend restriction in order to prevent users from getting a shell prompt doesn't make much sense anyway when they are allowed access to execute commands which may be interrupted or allow escaping to a shell... - KW * Tweak of HTFile.c so that we no longer lose an LYforce_HTML_mode directive if the file is gzipped or compressed and the uncompressed suffix is not mapped to text/html. - FM * Modified tempname() in LYUtils.c so that it checks whether files with the current PID and target count already exist, and if so, increments the count until a name for a non-existing file has been created. - FM 1997-05-18 * Mods in LYMainLoop.c and LYClean.c so that Control-G is treated as a synonym for 'n'o in quit confirmation prompts. - FM * Mods in LYPrint.c to strip any gzip or compress suffix from the suggested filename, on the assumption that we're deal with a text/html or text/plain file that had a corresponding Content-Encoding and no Content-Disposition: file; filename=name.suffix header indicating the appropriate filename after uncompression. This assumption does apply for our current ftp gateway, and for most present-day http servers. This mod in turn ensures that text/html files which are not being printed as source will have their uncompressed suffixes converted to .txt, indicated that they are rendered. - FM 1997-05-17 * Fixed long-standing bug in display_page() of GridText.c. When it was updating the links structures, it wasn't re-initializing the form element if the links structure is not for a form field. - FM * Mods in HTML.c to deal more effectively with H# headers used instead of LH in lists. We now, in effect, treat them fully as if they were LH, so that their left indentations are in register with the current list nesting depth, and we apply better error recovery in cases where the author is mis-using H# for a FONT change rather than as an actual header. - FM 1997-05-16 * Changed the line where a WHEREIS search target should preferably be displayed to the 4th line (not counting the title line). This can be changed by redefining SEARCH_GOAL_LINE in userdefs.h. SEARCH_GOAL_LINE can also be a simple expression in terms of the variable display_lines, e.g. `#define SEARCH_GOAL_LINE (display_lines/3)', this should then automatically adapt to screen size changes (provided the display system can deal with that...) Note that this this goal line will normally not be used if the next target, according to the algorithm Lynx uses, is already on the displayed screen. Also, when the displayed page changes to show a search result, there is no guarantee that it will end up on the line set by SEARCH_GOAL_LINE. It should rather be regarded as a maximum. For example the presence of anchors on the line with the target or on the preceding lines will change the positioning. - KW * The SEARCH_GOAL_LINE line will also be used for "going to" a link with 'g' suffix at the "Follow link ..." prompt, although the algorithm is quite different. As for a search target, this only applies when Lynx has to position to a different page of the document, and then is only a maximum. - KW * Enabled the no-cache setting for the pseudo document Lynx creates for a client-side image map in LYMap.c, for now. - KW * Minor typo fix for the proxy authentication mods. - FM * Tweak of PRE block handling in HTML.c to ensure an implied paragraph after the block if it is in a list and not followed by an LI. - FM * Tweaks of SGML.c and LYCharUtils.c to allow any non-digit to terminate a numeric character reference once at least one digit has been found in the reference. - FM * Change in LYUnEscapeToLatinOne() to use isdigit() instead of isalnum() for recognizing numeric character references like LYUnEscapeEntities() does. - KW 1997-05-15 * Worked in JED's mods for taking a suspend into account during select() calls. - FM * Mods in LYMainLoop.c to not force a cache refresh on a proxy any more when INLINE_TOGGLE, IMAGE_TOGGLE, RAW_TOGGLE are used. On the other hand, do force a proxy cache refresh after one of the variables relevant for content negotiation `language' or `pref_charset' has been changed from the Options screen, if the current document is from a http, https, or lynxcgi resource. - KW * Set HTTP_ACCEPT_CHARSET environment variable for the child process in LYCgi.c if pref_charset is not NULL. - KW * (chartrans) Write a META tag with the current display character sets to the files generated for Bookmarks, List, Info, History, and Visited Links pages, so title strings contained in those files will (hopefully) not get erroneously translated again. Use new function add_META_charset_to_fd() in LUCharUtils for this purpose. - KW * (chartrans) makeuctb now sets RawUni to UCT_ENC_8BIT if not otherwise set and if there are char values above 127. - KW * (chartrans) Change in HTuncache_current_document() to prevent caching of UCStages info which should be discarded. Still allow caching for this in the node_anchor for source display, so that a META tag in the parsed HTML can influence the display after using the SOURCE '\' key. - KW 1997-05-14 * Don't use title in showlist() if it is empty, to prevent "hidden links" on the List Page itself caused by documents with . - KW * Changed display_title() in GridText.c to not rely on sprintf() to get the number of blanks right. - KW * (chartrans) Added new lynx.cfg symbols ASSUME_CHARSET, ASSUME_LOCAL_CHARSET, and ASSUME_UNREC_CHARSET. They are only recognized if compiled with -DEXP_CHARTRANS. They correspond to the command line options -assume_charset, -assume_local_charset, and -assume_unrec_charset. The default for ASSUME_CHARSET is iso-8859-1 (corresponding to display character set "ISO Latin 1"). If no ASSUME_LOCAL_CHARSET is set, the explicit or default value for ASSUME_CHARSET will also be used for local files. ASSUME_UNREC_CHARSET has no default. See added text in lynx.cfg. - KW * (chartrans) Changes in LYCharSets.c to HTMLSetCharacterHandling() and HTMLSetUseDefaultRawMode() to support (hopefully) more consistent and user-friendly handling of raw mode and its default. Note that the following description does not apply if the display character set is one of the CJK settings. In that case, -raw and the corresponding Options setting is used as a CJK toggle as before. Note that the -raw flag is a toggle. It changes the "raw mode" setting from the default. The current setting of "raw mode" can be seen on the Options screen, and is also shown in a statusline message when the RAW_TOGGLE key (normally '@') is used. The default depends on the display character set (as previously) but now also on the ASSUME_CHARSET setting (as determined by a setting in lynx.cfg, possibly overridden by -assume_charset on the command line, or the default iso-8859-1). When the display character set corresponds to the ASSUME_CHARSET, the default for "raw mode" is ON, otherwise it is OFF. The effect of "raw mode" on the interpretation of documents which have no explicit charset label (from HTTP headers, a META tag, or otherwise) is as follows. There is an internal "assume charset" which may differ from the user-specified ASSUME_CHARSET value. When "raw mode" is set ON, the internal variable is set to correspond to the display character set. When "raw mode" is set OFF, the internal variable changes to the user-specified ASSUME_CHARSET or, if that also corresponds to the display character set (so that otherwise there would be no change), reverts back to the iso-8859-1 Web default. Raw mode doesn't imply total rawness. HTML character entities may be expanded and translated with either setting, 8-bit characters which are inappropriate for the display character set will not be sent to the terminal. For a "more raw" setting, try the "Transparent" pseudo display character set. - KW 1997-05-13 * Changed the compilation default in userdefs.h for USE_TRACE_LOG to FALSE, for now. - KW * Code for "fixing" of relative http and https URLs which start with a ../ segment from FM added, but it has to be enabled with the new lynx.cfg symbol STRIP_DOTDOT_URLS (default currently set to FALSE). See FM's description under 1997-04-23. - KW * Changed the test for dot segment fixing in LYLegitimizeHREF() so that now (if enabled) it also applies when the http or https base URL in effect does have a non-empty path but without any slashes in it (beyond the initial one between host and path). The test was too narrow before and did not recognize this case, so that an unmodified URL with ../ in it would still be sent to the server and without generating a statusline message. - KW * Tweak of case LYK_REFRESH: in LYMainLoop.c so that the REFRESH command still invokes an obligatory, complete refresh of the screen for slang on Unix with the new LY_SLclear() function (see 1997-05-09 mods), by using scrollok() if USE_SLANG is defined. - FM * Changed the local variable name, lines, in follow_link_number() of LYGetFile.c to nlines, to deal with the AIX 4.2 bug of treating lines as a macro. Also changed the variable name, pages, to npages for logical complementarity (they both refer to the total number). - FM * Mods in HTML.c, LYCharUtils.c and GridText.c to deal with links for positioning, specified via NAME or ID attributes, when they are embedded in Anchors which have an HREF, so that they now don't force premature closing of those Anchors. Also tweaked the code for creating links for the sources of images or other for-GUI embedded objects when clickable images ('*') is toggled on, so they use those mods as well, when possible. Note, however, that the clickable images feature is creating Anchors with HREFs which aren't actually there, and still can create technically invalid markup, on occassion, when the non-doctored markup actually is valid. The latter mods still need some improvements in the formatting, but are OK to use for now, and my brain hurts from trying to think through all the possible markup we might encounter. - FM * Tweaks of the Lynx Trace Log handling to deal with reloads when the HText structure for the log has been dumped. Made the first letter of the filename uppercase (Lynx.trace), complementary to Lynx.leaks. Eliminated the log from the Visited Links Page so it can't be sought there as a forward link. Use the History Page if you want to 'd'ownload the log, or use the 'p'rint option while viewing the log. Note that suffix maps do tail matching, and thus the so-called suffixes need not begin with a dot. If you want to use an external viewer for the log, you can put: SUFFIX:Lynx.trace:application/x-LynxTrace VIEWER:application/x-LynxTrace:most +s %s in your lynx.cfg, or their equivalents in your mime.types and mailcap files. - FM * Tweaks in LYMainLoop.c to set newdoc.title for various special pages generated by Lynx (History Page, Info Page, etc.) and when following a link. - FM * Small change to the heuristics for New_DTD in start_element() in SGML.c (try a bit more to close containing element if it's the same tag) - KW 1997-05-12 * Added support for proxy authentication. - AJL & FM * Updated follow_help.html to indicate that 0 is the universal F_LINK_NUM mapping for invoking the "Follow link (or ...) number:" prompt. - FM 1997-05-11 * Tweaks in LYMainLoop.c to ensure that the LYforce_HTML_mode flag is reset reliably, so it doesn't carry over to requests for text/plain documents, as it was doing under some circumstances in the vanilla code, e.g., when a bookmark file was used as the startfile via a file://localhost/path URL rather than via the -book switch. - FM * Very minor change in Lynx_users_guide.html, added two words - KW 1997-05-10 * Fixed a typo in statusline() of LYUtils.c. The check for whether the string is zero length before bothering to convert CJK multi-bytes was checking a holding buffer instead of the string. - FM * Fixed a bug in LYHandleMETA() of LYCharUtils.c. The check for a URL following the SECONDS value in REFRESH directives was not taking into account that an EOL might follow the digits for the SECONDS value. - FM * Changed the behavior of boolean_choice() in LYOptions.c so that the cursor is positioned immediately at the option display line instead of staying at the statusline instructions until an initial entry is made, and modified the statusline instructions accordingly. - LE & FM * Added a check for a NULL pointer in the LYCookie.c code for blocking sharing of SSL encrypted cookies with http servers, based on a patch from RT, and added a comment on why code for a block based on the scheme is there, despite its being redundant with the current blanket restriction based of the ports. - FM * Mapped 0 to F_LINK_NUM (as suggested by KW), so that 0 invokes the "Follow link (or goto link or page) number:" prompt under all circumstances (but with the 0 not treated as the first digit of the number entry). That's a better way to do it, because then the F_LINK_NUM command and explanation always appears in the "Current Key Map" display, and only the mappings of numbers to functions drop out when going from NUMBERS_AS_ARROWS to LINKS_ARE_NUMBERS mode (as they should, 'cuz the numbers no longer are mapped to functions; though maybe they should stay mapped to functions now that we have an explicit command key for invoking the prompt; something to think about...). - FM * Updated the PROBLEMS file to indicate that you should try changing -lresolve to -lbind if you have upgraded to the bind-8.1 or later library on a Sun system and keep getting the message "Alert!: Unable to connect to remote host". - FM 1997-05-09 * Typo fix in follow_help.html. - FM * Added an LY_SLclear() function in LYCurses.c as a more efficient substitute for slang of the curses clear(), based on a patch from JED. - FM * Added a USE_TRACE_LOG compilation (userdefs.h) symbol and -tlog command line toggle of the compilation default (normally TRUE), for directing syserr messages to a lynx.trace file in the user's home directory when TRACE mode has been turned on (either via the -trace command line switch, or the TOGGLE_TRACE (Control-T) command. Also added a TRACE_LOG command (normally ';') for viewing the "Lynx Trace Log" (lynx.trace) at any time, if one has been initiated during the current session. The trace log feature is disabled automatically in anonymous or validation accounts, and should not be used in any account which could have different users simultaneously. The mods work well to the extent I've exercised them thus far on VMS and for the solaris2 target, but possibly need more refinements, depending on the behavior for other Unix flavors of freopen(), which is used for redirecting stderr to the log. Updated lynx.man, lynx.hlp, and the online 'h'elp to describe these new features. - FM 1997-05-08 * Made the handling of hidden links dependent on a new command line option. With -hiddenlinks=listonly hidden links are only shown on 'l'ist screens and listings generated by -dump or from the 'p'rint menu, but appear separately at the end of those lists. With -hiddenlinks=ignore they don't appear even in listings. With -hiddenlinks=merge hidden links are treated as before, i.e. they show up as bracketed numbers if LINKS_ARE_NUMBERED is on, and are numbered together with other links in the sequence of their occurence in the document. The default is -hiddenlinks=listonly. Changed the new follow_help.html file accordingly. This may help obviate an apparent need to call something a bug which others regard as a feature... - KW * Function HText_AreDifferent() updated as in FM's code, but still unused. - KW 1997-05-07 * Added another argument in follow_link_number() of LYGetFile.c for returning the number entered at the "Follow link (or page) number:" prompt to the mainloop(), and modified the statusline error messages that may be issued from the mainloop() in conjunction the with 'g' or 'p' suffixes so that they report that number when appropriate. - FM * Changed the prompt to "Follow link (or goto link or page) number:" - KW * Tweaked case HTML_DD: in HTML.c so that it checks whether a wrap has just occurred naturally before imposing a newline for DD start tags. Without that check, seemingly random, extra newlines could occur in the DL/DT/DD blocks. - FM * Created a follow_help.html for the keystroke_commands subdirectory of the online 'h'elp, describing the "Follow link (or page) number:" features, and added links to it in Lynx_users_guide.html and keystroke_help.html. - FM * Changed the help description according to what is implemented here - KW 1997-05-06 * Further tweaked KW's mainloop() tweak (see yesterday's entry), so that newdoc.link is reinitialized properly when we're going to, but not ACTIVATE-ing, a link in the current page due to a 'g' suffix for a "Follow link (or page) number:" entry. Otherwise, if the number with a 'g' suffix was used to make the last link on the current page the current link, and then a NEXT_LINK command was used, one could end up on a link beyond the first one in the next page. Also added a statusline message if the 'g' suffix is used with a number which corresponds to a link that already is current. - FM * Tweaked yesterday's LYList.c mods so that an OL with the CONTINUE attribute is used when a "Hidden links:" list is appended to a "Visible links:" list and NUMBERS_AS_ARROWS mode is on. This allows you to see the number to enter at "Follow link (or page) number:" prompts, as when LINKS_ARE_NUMBERED mode is on. - FM * Mods in HTML.c for LI and LH handling so that a pointless wrap will not occur at the spacer following the bullet in UL blocks or the Arabic number, Roman numeral, or upper- or lowercase letter in OL blocks if the subsequent text has no spaces, itself, up to the right margin. In such cases, that text now stays on the initial LI or LH line, and wraps at the right margin to the left indentation for a second or greater line in the LI or LH. - FM * Changes to avoid memory leaks in LYCookie.c - KW * Escape '<' and '>' characters (using the LYEntify functions) in URL strings written to the temporary files for LIST and INFO screens, to avoid invalid HTML and corrupted display as a result of URLs which contain these characters (although they shouldn't) and have not been escaped earlier. - KW * Changed the label for the currently selected link from "Filename:" to "URL:", and fixed an alignment glitch for the 9th item on the History and Visited Links pages. - KW * Changed an "8-bit" occurring in HtInit.c to "8bit", tweaked LYKeymap.c comments. - KW 1997-05-05 * Added HText_AddHiddenLink(), HText_HiddenLinkCount(), and HText_HiddenLinkAt() functions in GridText.c for keeping track of the addresses (URL, plus fragment if present) for links that were converted to hidden by HText_endAnchor() due to their having no visible link name, and modified showlist() and printlist() in LYList.c so that if any hidden links were create during the rendition, the "References in this document:" menu for the 'l'ist command or appendix on dumps segregates and clearly labels the visible versus hidden links. - FM * Plugged a memory leak in LYEntify() of LYCharUtils.c. - FM * Modified experimental DTD info to not close anchors when an invalid P, H1-H6, or ADDRESS start tag is encountered, and to change error recovery for P and MAP. - KW * Modified experimental DTD info and HTML.c to not close PRE when an invalid FORM start tag is encountered, and to use the appropriate handling for preformatted text if PRE is in effect but is not the top element on HTML.c's stack. The HTStyle structure's freeFormat (which wasn't used anywhere before) is now used as one test whether we are within preformatted text, also corrected the style setting of freeFormat for PRE in DefaultStyle.c. - KW * Changed internal gateways (in HTNews.c, HTFile.c, HTWAIS.c, HTWSRC.c) to end LI, DT, and DD elements if they are not declared SGML_EMPTY, so that HTML.c's stack won't get overloaded in this case. - KW * Tweaks in mainloop() handling of DO_GOTOLINK_STUFF and DO_GOTOPAGE_STUFF. Going to a link with the 'g' suffix and then immediately ACTIVATing that link could previously show the wrong page of the new document, since newdoc.line was not being reset. - KW 1997-05-03 * (chartrans) Now always check for LYlowest_eightbit[current_char_set] near the top of HText_appendCharacter(), to prevent writing C1 control chars to the terminal if they are not valid as displayabable characters according to the selected "display character set" Option. All this should be handled earlier in processing, and this check may disappear again for testing, but somebody asked for it... - KW * (chartrans) Small changes to README files. - KW * In the section of HTUtils.h for non-autoconf builds, don't set HAVE_KEYPAD or HAVE_TTYTYPE if USE_SLANG is defined. - KW * Modified HText_LinksInLines() to not count hidden form fields. - KW * Added support for setting an anchor's no_cache element based on a comparison between Expires and Date headers if both were received and we didn't set it based on a Cache-Control directive. Also added equivalent support for a comparison between an Expires value from a META tag and a Date header. We still compare Expires header or META values versus the system time if no Date header was received, and still do not accept Date values from META tags because they are unlikely to be reliable. - FM 1997-05-02 * Fixed a bug in LYAddImageMap() of LYMap.c which could cause multiple insertions of the same MAP into the LynxMaps structure, and crashes on some systems due to the consequent multiple FREE()'s at exit. - FM 1997-05-01 * More mods in HTML.c, LYCharUtils.c and GridText.c for rational handling of potentially wrapped form fields in PRE blocks. We now artificially wrap the line if the form field would start within 6 columns from the right margin. This makes sure that editing windows and the highlighted segments of submit or reset buttons will not ever be ridiculously short, and is homologous to our use of a collapsible space before input fields and buttons when not in PRE blocks to promote a wrap there instead of within the fields or buttons. - FM * Expanded the WHEREIS query support so that it also locates the values of form fields within the current document and repositions or pages accordingly, as for normal (Anchor) links and for text strings. Note that if the hit was for an OPTION value in a retracted SELECT popup, you are positioned on the retracted window, and must pop it up and search again to be positioned on the OPTION value with the hit, unless it already is the selected OPTION. The mods are hairy enough without trying to do the latter automatically, at least for now. - FM 1997-04-30 * Quote the URL for external command (not for VMS or DOS or Windows) to avoid dangerous chars and shell spoofing. - KW * Escape characters properly when constructing URLs from filenames in LYConvertToURL. If a string given for startfile, home page, or a goto command which does not already have the form of an absolute URL starting with an URL scheme and which does not start with '~' (but may start with '/') specifies an existing file or directory in valid Unix-like format for the native filesystem, i.e. without using escaping, it gets URL-escaped, otherwise it is assumed to already be URL-escaped. - KW 1997-04-29 * Updated RP Styles 0.2 code, don't allow comma as separator between fg and bg colors after all, fix the LYNX_VERSION string generation in userdefs.h to have `-Styles' appended *within* the quoted string. - KW * Added support for a 'p' suffix, like the 'g' suffix for making a link number the current link rather than ACTIVATE-ing it, but for displaying the page indicated by the number preceding the 'p' suffix entered at the "follow link (or goto link or page) number:" prompt. [...] If the number entered at the prompt is '1' or less followed by the 'p' suffix, or only 'p' is entered, you get the same behavior as for the HOME command. If the number is equal to or greater than the number of pages, you get the last page displayed as you would if you had used successive PAGE_DOWN commands from the HOME position to reach it. This differs from the END command, which fills the screen with lines from the end of the document if you are not already displaying the end of the document. Note that if you enter a number without a suffix (to ACTIVATE the link with that number) or with the 'g' suffix (to make the link with that number the current link) it must correspond to a valid link number or an error statusline message will be issued, in contrast to the 'p' suffix for which an out of range number is treated as a request to display the first or last actual page in the current document. - FM * Fixed some typos in lynx.man. - LWV * More modifications of the anchor counting code for HTGetLinkInfo() in GridText.c so that it properly skips hidden form fields and anchors without selectable text. - KW * More modifications in GridText.c and HTML.c so that it deals rationally with submit or reset button values, and the underscore placeholders for other form fields, when in versus not in PRE blocks. The entire submit or reset button values are now always displayed, whether or not a portion of it was wrapped, but we still can only highlight the portion before the wrap to indicate a link for submission of the form or for resetting the form field values. - FM * Undid some mysterious changes in SIGHUP setting (SIG_IGN vs. SIG_DFL) which had sneaked in in connection with adding the NOSIGHUP conditional. - KW * Tweaks to New DTD's extra info for CENTER and H1..H6 - KW * New function HText_AreDifferent() from FM added to GridText.c, but not used yet. - KW * Tweaks to WB's additions for external command: use strncasecomp, add LYExtern.o to src/makefile.in, changed test for empty command. - KW * Changed LYKeymap.h and LYKeymap.c so they agree about the symbols assigned to the new keys (SWITCH_DTD, EXTERN). - KW * correct minor syntax err that caused SCO 3.x to fail make-include autoconf test. also, eliminate whitespace before '#' that causes compile-fail on K&R compilers. - TD 1997-04-28 * Updated lynx_url_support.html so as to make clear that the offer to include the currently displayed document with right-angle-bracket prefixing for mailto, newsreply, and snewsreply URLs is made only if the user has defined an external editor via the Options Menu, and that the user is expected to edit this inclusion so that it retains only those passages relevant to the email or followup message which the user will add. - FM * Tweak of INPUT handling in HTML.c so that we use nbsp instead of any spaces when loading a submit or reset button's actual value instead of a series of underscores into the HText structure, so that we still promote a wrap, if needed, at the space we ensured would be present before each INPUT. - FM * Made first_option a structure member rather than a static variable in HTML.c - KW 1997-04-27 * Tweak of Control-C and Control-G handling for popup_options() in LYForms.c. They were being sought improperly as command keys rather than as raw keyboard entries. Note that only Control-G should be used as "cancel" within popup windows on Unix, because Control-C is not being trapped to a handler as on VMS. - LE & FM * Tweak of the anchor counting code for HTGetLinkInfo() in GridText.c so that it takes form fields into account when making a link current based on a "Follow link number" entry with the 'g' suffix. Also added comments to that code. - KW 1997-04-25 * Added information in the "Lynx bookmarks" section of the Users Guide about appropriate versus unsupported modifications when editing the bookmark files. - FM * RP Styles 0.2 fixed a bit and brought up to current experimental code level (no autoconfig or simple-curses, only older version of Wayne's mods, maybe something else is missing, too). No documentation, no detailed checking, no real cleanup. Makefile slightly adapted, but still needs changing for new systems - see comments there. - KW 1997-04-24 * Tweaks for enhanced mouse support in Win32 and hooks for 386 which doesn't have mouse support yet. - WB * External command added. See LYExtern.* in src and lynx.cfg. You need to define USE_EXTERNALS to compile this in. - WB 1997-04-23 * Modified LYCharUtils.c, HTML.c and LYMessages_en.h so that if a partial reference (HREF or SRC value) would be resolved to an http or https URL which has only two dots as the first symbolic element in the path (e.g., http://host/../foo.html), such that the server would reject the request, that element is excluded from the resultant URL, but a statusline message is issued (once per document) about a bad partial reference, as immediate feedback which might lead to the document provider correcting the bad partial reference(s). We still retain that first symbolic element, in compliance with the IETF RFCs and IDs for resolving URLs, with other URL schemes (e.g., ftp). - FM * Added a skip_stack int to the HTML.h struct _HTStructured, to use for flagging that the next call to HTML_start_element or HTML_end_element is an internal shortcut and should skip pushing or popping the HTML.c paragraph style stack even for elements that are not declared SGML_EMPTY. Added a SET_SKIP_STACK macro to HTML.c to set the flag, use it. - KW * Changes to HTML.c to better deal with a number of elements which may or may not have been declared SGML_EMPTY in HTMLDTD.c: if the last stacked element is HTML_OPTION, treat text as for HTML_SELECT in HTML_put_character and HTML_put_character and HTML_put_string. Added handling code for

to HTML_end_element (similar but not identical to that for P in HTML_start_element). Added check whether a SELECT is still open to FORM handling in HTML_end_element. Added check whether a FORM is open to SELECT handling in HTML_end_element. Added cases for end tags of TABLE-related elements (TR, THEAD, TFOOT, TBODY, COLGROUP, TH, TD) and of DT, DD, LH, LI, FONT, OVERLAY to the switch in HTML_end_element, currently just break from the switch. - KW * Some tweaks and corrections to the additional element info and to the content types used with New_DTD, in HTMLDTD.c. Made OPTION non-empty. - KW * Now changed the tags_old[] in HTMLDTD.c, which is used with the switchable "old" SGML parsing, to follow the changes for A, B, BLINK, CITE, EM, FONT, I, STRONG, and U mentioned in the entry of 1997-04-15. These, together with FORM and P, are all declared as SGML_EMPTY now when the "old" SGML parsing is in effect, but not with new parsing. - KW * Changes to LYMail.c and LYPrint.c to send Content-Transfer-Encoding headers and/or a charset parameter when mailing, based on idea from Hynek Med. Don't use charset if we only have 7-bit characters anyway. If compiled with EXP_CHARTRANS, use MIME name corresponding to display character set if it looks valid (not "x-"), otherwise only an explicitly given document charset. In the chartrans case, don't send charset parameter for CJK since it may be wrong... - KW * Added TRACE output to UCAuto.c - HM 1997-04-22 * refined check for slang libraries/headers by checking if $CFLAGS has been set so that slang.h is in the search path - TD * add check to allow use of broken ncurses 1.9.9e's color - TD * add check for NGROUPS, TRUE, FALSE macro definitions - TD * remove top-level makefile.in targets that can be combined with the generic target (more work required on the remaining ones) - TD. * Plugged memory leak in deleteLinks() of HTAnchor.c. - KW * When dumping or outputting a rendered document via the 'p'rint menu, Lynx would use the underscore placeholders for submit/image/reset buttons as for other INPUT fields. We now load the values of submit/image/reset buttons instead of placeholders into the HText structure, so the values will be seen when dumping or outputting via the 'p'rint menu. See the comments under case HTML_INPUT: in HTML.c for the still less than optimal things that happen if a wrap occurs within the INPUT value or placeholder strings, as might happen in PRE blocks, or for strings wider than the screen. - LE & FM * SGML_abort() did not free memory used by the SGML.c parser stack. Now it does, but still doesn't call HTML_end_element() for the stacked elements (it's an abort after all...) - KW 1997-04-21 * Tweaks of the 1997-04-11 and 1997-04-09 mods in HText_endAnchor() of GridText.c so as to take possible wrapping of Anchor content into account when deciding whether or not to implement the Anchor as an ACTIVATE-able link. - FM * New SGML.c parser, and new HTMLDTD.c with additional element info. Extra content information for each tag is now included in the HTTag structure, and given in an extended tags_new[] table in HTMLDTD.c. Modified start_element() and end_element() in SGML.c to perform some heuristic wind-downs of the parsing stack, based on the extra element info. - KW * Revert treatment of some tags which were treated as SGML_EMPTY before to their "natural" content model. No changes made to HTML.c to accomodate this change, so results may differ where HTML.c relies on previous hacks or has now handling code for end tags of elements which were previously SGML_EMPTY. - KW * Made SGML parsing switchable between old and new HTMLDTD info and SGML.c code, controlled by a New_DTD global variable and LYK_SWITCH_DTD toggle key. Use (temporarily?) ^V for the toggle key. This is not yet changable via command line, lynx.cfg, etc., and the default is New_DTD==YES (so that it gets tested :-) ). - KW * Made some of the error messages before exit in LYMainLoop.c and LYMain.c go to stderr instead of stdout, but only for UNIX and, in the case of the LYMainLoop.c messages, only if dump_output_immediately was in effect. - KW 1997-04-20 * Tweaks in LYCharUtils.c to bind META CONTENT to a header value only via an HTTP-EQUIV attribute (i.e., not via a NAME attribute). - FM * Mod in HTAccess.c to ignore the anchor's no_cache element if we're seeking a position in the currently loaded document. - FM * Commented out the above change in HTAccess.c. There's a more complete mechanism for it already in this code... - KW * Fixed a typo in the bookmark file lead text. - DK 1997-04-19 * Changed the inappropriate StrAllocCat() to StrAllocCopy() for loading the XLOADIMAGE_COMMAND in LYReadCFG.c. - PC 1997-04-18 * Based on recent discussions in www-html@w3.org, added HY and SHY to the DTD (treated as synonyms; one or the other is most likely to be used in future HTML specs, so for now, we support both), as markup equivalent to the named entity ­ and numeric character reference ­ (soft hyphen). Note that Lynx implements soft hyphens as specified in IETF RFC 2070 (link "HTML i18n" in the Users Guide). Use of a tag instead of entity is preferable for a soft hyphen because browsers which do not support soft hyphen will ignore it as an "unknown tag" instead of inappropriately inserting a hyphen or displaying the raw entity. Also added WBR, which is handled like soft hyphen (indicating a permissible wrap point), but does not insert a hyphen at the wrap. - FM 1997-04-17 * Mods in HTML.c, HTML.h, and LYMessages_en.h to issue an HTML stack overrun message only once per document, and as a statusline message if not in TRACE mode, and to check in HTML_end_element() for correspondence between the SGML and HTML stacks if an overrun should occur. - FM * Corrections in HTML.c for the bounds checks associated with DIV and CENTER nesting levels, and for an HTML stack underrun. - KW * Plugged a memory leak under case HTML_IMG: of HTML_start_element() in HTML.c, and removed an inappropriate if(){} in HText_endAnchor() of GridText.c. - FM & KW * Modified the lead text created for bookmark files in LYBoomark.c so that it indicates that an editor can be used to delete or reorder the links, but that the format within lines should not be changed, nor other HTML markup added. Note that the new lead text will be used only when new bookmark files are created via the 'a'dd bookmark link command. A new bookmark file is not created if the one being sought already exists, so existing ones will still have the old lead text. - FM 1997-04-16 * Extensive changes to try to keep track of whether a document (or a location within it) was reached by an internal (fragment-only) URL reference or not. The basic idea is to be serious about I-D (currently) draft-fielding-url-syntax-04.txt. URL references starting with '#' are always to the current document (from which the reference is made). This leads to a lot of hackery in HTML.c, LYMainLoop.c, LYHistory.c, etc. etc... to distinguish a doc that was reached by an "internal" reference from others. But it seems necessary to keep track of how the reference to a fragment was specified, whether with a non-empty "real" URL (possibly relative) preceding the '#' or without it, all the way way from the HTML parsing to the mainloop. Only then can the mainloop decide to not start a new retrieval for an internal reference without skipping a new retrieval if a full URL reference with fragment is made to a location in the same document (which may be non-cachable or the result of a POST)... This code prevents unnecessary/inappropriate POST form resubmissions on following an internal link in a POST response, as they are present for example in WebTechs validation results. - KW * A "Goto numbered link" feature. The user interface could be improved... Start typing the link number, then add 'g' before hitting enter. * Some improvements to WHEREIS search. Will not always position found string on first line (details depend on whether anchors are present, usually will position in top third of screen), and avoid some unnecessary screen updates. - KW 1997-04-15 * Miscellanous additional tweaks in HTML.c for more robust error recovery from bad HTML involving emphasis or style elements (B, BLINK, CITE, EM, FONT, I, STRONG, and U), or HREF-less NAME-ed Anchors without matching end tags. - FM * Modified the declarations in HTMLDTD.c and code in SGML.C, HTML.c, and GridText.c to handle A, B, BLINK, CITE, EM, FONT, I, STRONG, and U container elements homologously to the modified handling of FORM (see 1997-04-05 mods) so that if they are invalidly interdigitated or have spurious end tags in the markup, substitutions of the "expected" end tags by the SGML.c stack-based parser will not be made, and without messing up the HTML.c stack-based parser. Appears to work reliably for all of the elements, and to be reasonably crash safe (hopefully as safe as the vanilla v2.7.1), but there are no guarantees. - FM * Only *some* (most?) of the changes described in the above two entries are used, as far as they change HTML.c. Not yet using the changes to HTMLDTD.c and SGML.c. - KW * refined logic of SVr4 curses color support to test the no_color_video attribute - TD * ifdef'd NCURSES_MOUSE_VERSION logic to allow build with ncurses 1.9.4 - TD * ifdef'd wgetbkgd misspelling to allow build with ncurses prior to 1.9.9g - TD * document USE_MOUSE configuration-option - TD * modify configure script and makefile.in templates to make BSDI_Makefile obsolete - TD * rename config.h to lynx_cfg.h to minimize conflict when configuring against ncurses or slang in nonstandard locations - TD * new autoconf macro CF_HEADER_PATH is used to make header-search for slang the same as ncurses - TD * modify CF_CURSES_LIBS, CF_NCURSES_LIBS and CF_SLANG_LIBS to accommodate predefinition of $LIBS variable - TD * corrected autoconf'd compiler flags for Ultrix - TD * add config.guess & config.sub to allow specialized host-type checks - TD * guard against redefinition of NO_FILIO_H - TD * use new autoconf macro CF_SYSTEM_MAIL_FLAGS /jes 1997-04-14 * Tweaked LYAddImageMap() in LYMap.c so that it removes all pre-existing AREA element entries when updating MAP element content, and set the no_cache anchor element in LYLoadIMGmap() so that the updated MAPs always will be used when rendering. - FM * Not using the no_cache change from last entry, until further investigation. - KW * Removed two spurious lines under case LYK_PRINT: in LYMainLoop.c (from an old cut and paste from case LYK_HISTORY: done too late at night 8-). - FM 1997-04-13 * Modified the handling of BASE for resolving HREFs in relation to MAP and AREA elements, and USEMAPs in IMG and OBJECT elements. The formally released code was treating such links equivalently to the handling of fragments for positioning the display to ID-ed elements or NAME-ed Anchors, and assuming they're in the same document if the associated HREF value begins with a '#', rather than resolving versus the BASE, and was always resolving versus the BASE for MAP ID or NAME attributes, and for the AREA HREFs in MAP content. We now always resolve the MAP ID or NAME attributes versus the current stream's address (since the MAP must be in it or we wouldn't be handling it) [...] According to the original draft and the current HTML 3.2 Proposed Standard, MAPs need not be in the same document as the IMG or OBJECT elements which specify links to the MAPs. Because MAPs are "deferred objects", they logically should be placed above any IMG or OBJECT elements which reference them in the same document (as is done for SCRIPTs), but this isn't stated in the specs, nor always done in practice. [...] ([A]uthors who place the MAPs further down in the same document should be informed about "deferred objects" and encouraged to move them up 8-). - FM * Use logical extension of the rules for HREF references also for USEMAP references to MAPs: relative URL references are resolved with respect to a BASE element if one is present in the document where they occur, unless they are URL references without a URL, i.e. only a fragment starting with '#'. In the latter case they are taken as internal references referring to a MAP in the same ocument where the USEMAP occurs, whether the MAP occurs before the USEMAP (as it should, according to previous entry) or after the USEMAP. HREF's in AREA elements follow the same rules. - KW * Fixed bug in HTML_free() for the case when LYMapsOnly is set. We didn't create an HText structure for the stream (just scanned it for MAPs and processed them into LYMap.c's LynxMaps structure), nor do we want to create a blank one (as was being done) since we didn't render the stream, nor would we have a me->target set. So we just free any me elements that might still be allocated (though they should have been freed already), and return rather than continuing through the rest of the HTML_free() code. - FM 1997-04-11 * Fixed bugs in Gridtext.c and HTML.c which could cause mishandling of anchors in LINKS_ARE_NUMBERS mode if a line wrap occurred in the numbered bracket or the anchor content following the bracket, and failures to suppress the numbered bracket if the anchor content was empty due to ALT="" in an IMG tag, or if Lynx was configured or toggled to suppress the link for the server-side image map if both ISMAP and USEMAP attibutes were present in the IMG tag. - FM * Only using the number-removing code under additional conditions: ISMAPs which appear together with USEMAPs and which are suppressed with LYNoISMAPifUSEMAP in LINKS_ARE_NUMBERS mode. - KW * Extended the disk_save restriction to the print menu as well as the download menu, and accordingly updated lynx.hlp, lynx.man, and Lynx_users_guide.html. - NHE & FM 1997-04-09 * Many changes to further the Win32 and 386 ports. An emulation of the HTVMS_ calls was used to try and cover all the DOS'izms. A specialized ifdef for pdcurses color mapping added. Some keypad tweaks. More generalized process spawing. .lynrc is lynx.rc for 386. - WB * Tweak to ensure that a newline isn't inserted by virtue of a FORM start tag if it's in the first line of a list element and no text precedes it other than a UL's bullet or OL's number on that line. - FM * Added pauses for the "Bad HTML" statusline messages under cases HTML_HTML and HTML_BODY in HTML_end_element(), and eliminated their checks for an unclosed FORM because we no longer expect that to cause a serious problem. - LE & FM * Added a NO_ISMAP_IF_USEMAP configuration symbol and -ismap command line toggle for suppressing inclusion of a link for the server-side-image-map if an IMG or OBJECT element has both ISMAP and USEMAP attributes such that a client-side-image-map link is created. Updated lynx.man, lynx.hlp and Lynx_users_guide.html accordingly. - FM * Fixed a glitch in HText_endAnchor() of Gridtext.c which could cause dangling Anchors in LINKS_ARE_NUMBERED mode if the Anchor's content was handled in a manner which caused it to become zero length. - FM * Moved handling for NEWS_POSTING in LYReadCFG.c to the right place, so that it can actually have an effect. - LWV * Typo fixes for the comment concerning NO_ANONYMOUS_EMAIL in userdefs.h - NHE & FM 1997-04-08 * New translation table koi8r_uni for KOI8-R charset. Lynx can now translate between iso-8859-5 and KOI8-R, at least for the cyrillic characters present in both. - KW * New translation table def7_uni with default 7-bit mappings (replacement representation). Based on RFC1345 and mnemonic,ds from ftp://dkuug.dk/i18n/ and previous Lynx replacements in LYCharSets.c and IPA FAQ convention and stuff for Ethiopic and KOI8-R. It maps many of the accented Latin characters present in Unicode to their unaccented counterparts. This table is now used for the "7 bit approximations" display "character set". - KW * Entities for Latin2 characters added to HTMLDTD.c These also include many entity names for ASCII characters, and characters which are in both iso-8859-1 and iso-8859-2. - Hynek Med * Changes to the non-chartrans translation tables in LYCharSets.c for Đ, Ð, and ð. Treat Đ more like an entity for the (Latin-2) Unicode character U+0110, since that seems to be SGML standard usage. - KW * Added mappings for some "smart quote" characters to several translation tables. - KW * Make makeuctb slightly more flexible (accept unicode range for mapping to single code point). - KW 1997-04-07 * Took out special-case handling in the curses-color code for underlining when lynx is running under linux using the linux console with color. The code was introduced on 1997-03-12 and would ignore "smul" capability info from terminfo or termcap under those circumstances, always using bold instead of underline. - KW * Slightly modified the FORM handling patch of 1997-04-05, as follows: Use a generic test for a non-SGML_EMPTY element for bypassing the stack pop in HTML_end_element() of HTML.c instead of an explicit test for HTML_FORM. - KW 1997-04-06 * Patch for IMG elements which have both ISMAP and USEMAP in effect. In HTML_start_element() don't generate the "[ISMAP]-" string for output in this case, unless clickable_images is set TRUE. - KW 1997-04-05 * Patch for Lynx v2.7.1 to handle invalidly interdigitated container elements or spurious container end tags without substitutions of "expected" FORM end tags by the SGML.c stack-based parser, and without messing up the HTML.c stack-based parser. Reliably succeeds in not closing FORMs before all of the FORM elements, including submit buttons, have been processed. Should be reasonably crash safe (hopefully as safe as the vanilla v2.7.1), but there are no guarantees. - FM 1997-04-04 ======================================================================= --- Release of Lynx2-7 + BUGFIXES as Lynx v2.7.1 (April 4, 1997) --- ----------------------------------------------------------------------- Changes listed below were made to the development code in parallel to the bugfixes which resulted in 2.7.1, and include those bugfixes (or equivalent changes). ======================================================================= 1997-04-02 * add Andrew Kuchling's patch to support mouse-clicks with ncurses. - TD * refine tests that address porting problems to SCO (detecting struct winsize, workaround for misdefinition of 'remove') * refine CF_COLOR_CURSES test to avoid ncurses 1.9.9e bugs. - TD * refine CF_PATH_PROG to allow for machines that haven't the given programs, by using only the program name and added configure option --disable-full-paths to enforce this behavior. - TD * fixes for some gcc compiler warnings (missing prototypes, unused variables, unintialized variables, shadowed variables). - TD * Fixed typos in LYHistory.c, LYMail.c and LYMain.c which caused failures of flag setting in the distributed code. - TD * correct cast in HTFWriter.c that may break if atoi() is not prototyped. - TD * add top-level makefile target 'maintainer-clean', use this to remove Lynx.prj - TD 1997-03-31 * Added a missing check for whether the fragment token is NULL in LYConvertToURL() of LYUtils.c. Without the check, the for-Unix code could crash if a local file spec was entered as a startfile or goto with escaped characters. - KW * Mod in HTML.c to retain "[INLINE]" as the default ALT string if an IMG element has an ISMAP attribute but is not in Anchor content such that it could not in fact function as a server-side image map. - FM 1997-03-27 * In mainloop(), after the call to HText_pageDisplay() following a change of the document view, ensure that curdoc.link does not remain set to -1 if there are any links on the screen. This would otherwise happen if a document is pushed to the history stack while there are no links, and later popped (and refreshed) after one or more links have been created. This change prevents segmentation faults which occurred after creation of a new file in a previously empty directory via the DIRED menu. The access to invalid memory only occurred if the screen showing the empty directory did not have a parent dir reference link (which is always the case if NO_PARENT_DIR_REFERENCE was specified at compilation time). - KW * In LYLocal.c, modified the code handling DIRED_MENU to do more careful checking of the selected file. In addition to "TAG", "FILE", and "DIR", DIRED_MENU definitions in lynx.cfg now also recognize LINK as a type. DIRED_MENU definitions with a type field of "LINK" are only used if the current selection is a symbolic link ("FILE" and "DIR" definitions are not used in that case). The default menu definitions have been updated to reflect this change, and to avoid the showing of menu items whose action would always fail - KW * Some cleanup to eliminate compiler warnings, remove some unused variables - KW * Fixed a typo and added comments for the code in LYMainLoop.c which decides whether to load the URLs for homepage and/or startfile into the goto buffer at startup. The typo in the distributed code caused the startfile URL always to be added to the goto buffer, even if it had POST content such that it could be resent inappropriately as a GET request via the goto buffer. - FM * Added a bsdi-slang target to the Makefile. - Laura Eaves 1997-03-26 * Changed highlighting of strings found by a WHEREIS ('/') search. Now uses Christmas tree attribute combination ("all bits are on"), which with color support translates to COLOR:7. - KW * Modified the HTStream structure and associated code in src/HTFWriter.c so that we save and use the relevant content of the associated HTPresentation structure as two HTFormat elements rather than via a pointer to the HTPresentation structure itself, because the latter structure might not be valid under some circumstances when HTFWriter_free() is called. The distributed code might indirectly result in segmentation faults during downloading on linux and some other flavors of Unix (though they don't occur for most flavors, or on VMS). - KW 1997-03-23 * Further reduction of top-level makefile.in by moving definitions out of WWW/Implementation/*/Makefile, so only one is needed for autoconfigured build (i.e., WWW/Implementation/unix/Makefile). This highlights the remaining differences between the top-level targets - TD * Make configure script generate Unix makefiles in subdirectories, a step toward being able to run make from any directory, for development - TD * Add autoconf tests for paths of programs, including sendmail vs mmdf - TD * Add configure script options for development (--disable-echo, --enable-debug, --enable-find-leaks, --enable-warnings) - TD * Allow user to override search path for ncurses header by setting $CFLAGS or $CPPFLAGS - TD * Correct array limit in LYCurses.c for SVr4 color support - TD * Use addstr rather than printw in popup-forms to address concern about 8-bit characters - TD 1997-03-21 * Changes in auto config handling of ncurses header location, function used for reading terminal input, some other system dependent tweaks (including SCO broken remove, time.h) - TD * Fix for popup handling with late ncurses versions (uses wprintw instead of waddstr in LYForms.c) - TD * Mods in LYPrint.c to use ".txt" as the output file extension for all rendered text/html files regardless of their original extension. The distributed code was doing this only for ones with an extension of ".html". The original extension still is retained if the file is being output as source. - FM * Added protection against passing a NULL pointer for path_url to render_item() from dired_options() in LYLocal.c. - GN 1997-03-20 * Tweaked the protection against URLs directed to port 19 or port 25 so that it can't be circumvented via lead zeros in the port numbers. - FM * Changed the compilation default so as not to send From MIME headers to http or https servers. The default can still be changed via lynx.cfg. Replaced the -nofrom disabling switch to a -from switch for toggling the compilation or configuration default. Sending the From header has become widely regarded as an invasion of privacy risk, particularly in conjunction with cookie support. - FM * Corrected a typo in the lynx.cfg comments concerning TRUSTED_LYNXCGI rules. - KW 1997-03-17 * Mods of LYNews.c and LYMail.c to prepend a "-- " separator before appending the LYNX_SIG_FILE signature file to news and email messages. - FM * Made the installation mode 755 in the top-level Makefile. The distributed code used 555, and some install commands were unable to do the strip. - LWV 1997-03-14 * Corrected typos and expanded the comments concerning lynxcgi symbols in userdefs.h and lynx.cfg. - FM * Modified SGML.c to handle the numeric character reference ™ as the named entity ™ also in the non-chartrans case. The trademark character (given by ™ or ™) will be shown as "(TM)" as the ASCII substitution unless the current display character has a code point for the trademark character or unless overridden by a chartrans translation table. The code of 1997-02-25 prevented showing the trademark sign as "(R)" but did not work in all non-chartrans cases. - KW * Include time.h via tcp.h for SVR4 systems. The tcp.h header does include sys/time.h for Unix systems, but this apparently doesn't get struct tm and extern char * ctime() declared for SVR4. - FM 1997-03-13 * Added protection in LYGetFile.c against connections to the port 25 ESMTP service. - FM 1997-03-12 * (chartrans) Make compilation in src/chrtrans less verbose, no more generating automatic *.h_old backup copies. - KW * Refinement to the SVr4 (ncurses) color support, allowing it to more closely model the slang support. - TD 1997-03-11 * Tweak for command line parsing of files with no URL in LYUtils.c. Also added ability to pass partial domain names in the DJGPP version. - WB * Added the closing function for Win32 TCP in LYExit.c (did anyone see a difference?!). - WB * Altered LYCurses.c so that the DJGPP version could spawn other programs without certain death. - WB * Ignoring the whole ~/lynx.cfg problem (expanding '~') entirely for the Win32 version for now. - WB * Some other tweaks for Win32 and DJGPP - WB * Added protection in LYGetFile.c against denial of service attacks via the port 19 CHARGEN service. The distributed code left Lynx or proxies vulnerable to such attacks via direct or redirection URLs. - FM 1997-03-10 * Fixed error in the handling of numeric character references with values greater than 255 in SGML.c. The distributed code was breaking after substitutions instead of falling through to reset the string chunk and recycle the terminator if not a semi-colon. - FM 1997-03-09 * Integrated (simple) color, auto-configure patches with 2.7 following chrtrans patch - T.Dickey, J.Spath. 1997-03-08 * Fixed error in the switch positioning of checks for XLOADIMAGE_COMMAND and wais_proxy in LYReadCFG.c. The distributed code had them reversed under case 'W' versus case 'X'. - PDS * Expanded the copyright and licensing statements in the -version output. - FM 1997-03-04 * Corrected the offset computation in textsearch() of LYSearch.c so that WHEREIS searches repeated on a page with no links seek the target starting at the line immediately following the last displayed. The distributed code was setting a greater offset. - JS 1997-03-02 * Don't entify post content for the showinfo display, now that we are making it an XMP block in that display to handle all of the supported enctypes. - FM * Patches to fix mail and FTP for Win32 (LYMail.c, HTFile.c). - WB * Makefiles to compile chartrans code for Win32. - WB * (chartrans) Minor cleanups (makeuctb.c, chrtrans/Makefile, HTPlain.c) to enable successful compilation on Win32. - KW 1997-02-28 * Changed all references to "image/*" to just "image" in the userdefs.h and lynx.cfg comments about XLOADIMAGE_COMMAND. The "/*" within the userdefs.h comments was generating warnings from some compilers. - FM * Added a snake-slang target to the Makefile, and added -DUNIX to the LYFLAGS for the snake3 and snake3-slang targets (HP-UX apparently does not define "unix" itself with the -Ae switch, and thus needs to have that definition forced via -DUNIX). - HL * Merged with patches and makefiles from Wayne Buttles (buttles@wsb.champlain.edu) to enable compilation in two new environments: Win32 (95/NT) with Borland C++ 4.52 compiler, and 386 DOS with DJGPP compiler. See README.win-386 for more info. Separate utility programs needed for compiling and running Lynx on those platforms are available from Wayne at . - WB, KW * Fixed Telnet for Win32 - WB * (chartrans) Small correction in SGML.c (set_chartrans_handling) - KW 1997-02-26 * Close both descriptors of the pipe() for the NSL_FORK enabled code in HTTCP.c. The distributed code was closing only one of them on completed gethostbyname() calls, and neither on 'z'aps. - FM * Changed the HREF for the "Lynx FAQ" link in the online 'h'elp to its new URL (http://www.slcc.edu/lynx/faq.html). - FM 1997-02-25 * More reverse engineering to cope with Netscape's bogus cookie header parsing. The parser must not require an '=' between the expires attribute name and value, because Set-Cookie headers are being transmitted without it (e.g., by http://law.agps.gov.au). So Lynx now treats that as another special case. - FM * Cope with invalid use of expires attributes in Version 1 cookies. An -06 State Management draft recommends that for "backward compatibility", and has been severely criticized in the HTTP-WG, but it would be foolish not to assume Netscape will do that. See the expanded comments in LYSetCookie() of LYCookie.c for more information. Note that "expires" thus cannot be used as a Version 1 cookie name, but a provider would be foolish to use that, anyway. Note also that the possibility of using different header names for Version 1 versus Version 0 (a.k.a., "Netscape") cookies is being discussed in the HTTP-WG, which might have been better to do in the first place, but the -05 draft has been approved as RFC 2109: http://info.internet.isi.edu/in-notes/rfc/files/rfc2109.txt so it would be a while before that were done, if ever. - FM * chartrans code for translation of character sets, handling of Unicode, and i18n updated for Lynx 2.7. Support for CHARSET attribute on A tags. New directory src/chrtrans with table files. Compilation flags -DEXP_CHARTRANS, -DEXP_CHARTRANS_AUTOSWITCH (for linux), -DSLANG_MBCS_HACK (for raw unicode console). New command line options when compiled with -DEXP_CHARTRANS: -assume_charset, -assume_local_charset, -assume_unrec_charset. See README.chartrans and README files in src/chrtrans for more info. - KW * No showing of ™ or ™ as (R) any more, use (TM) instead. - KW * Prefer HTTP-EQUIV over NAME in META tags. - KW 1997-02-22 * Fixed a memory management glitch which could cause a crash if the MIME type of a reply to a FORM submission with METHOD=POST caused a download offer to be invoked. - FM * Don't simplify ftp URLs by trimming trailing slashes if the URL is being proxied. The Netscape proxy server for some unknown reason can return redirection for ftp URLs with the slash appended, and trimming it can result in a redirection loop. Based on a posted patch from KW. - FM * Fixed two typos in the checks for HTPassHighCtrlRaw in LYExpandString() of LYCharUtils.c. - KW * Fixed typo in the equality check on line 1553 in HTGopher.c. - AM 1997-02-19 * Reset the host string after an '@', if present, when trimming default ":port" fields in the new code aimed at compliance with the Masinter and Fielding URL drafts, expected to replace RFCs 1738 and 1808. The distributed code neglected to do that, and was ending up on a ":password" field, if present, instead of on the ":port" field, causing the username to be treated as the host name. - FM * Expand the default port trimming so as to include all of the registered URL schemes which support a port field in the v2.7 release. - FM * Correctly uncache the current directory listing when invoking an 'u'pload, so that it will be updated to include the uploaded file if placed in the current directory. The released code attempted to do this in a manner which prevented a pop, so that the directory listing couldn't be restored on return from the uploader menu. - FM * Recognize a bookmark file used as the startfile, whether it resides in the home directory or in a subdirectory off home. The released code failed if the file was in home, and not in a subdirectory, unless the -book switch was used instead of a startfile entry or WWW_HOME variable. - FM