about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>1998-09-07 10:39:47 -0400
committerThomas E. Dickey <dickey@invisible-island.net>1998-09-07 10:39:47 -0400
commit5816641fc3a761e00d154c4dea9551a0027a7c63 (patch)
tree5008269ea8500d473cb7ba650b68e177102b9e66
parent7faa97b815d7f35ffbbb978e5fef1bd25c420ef5 (diff)
downloadlynx-snapshots-5816641fc3a761e00d154c4dea9551a0027a7c63.tar.gz
snapshot of project "lynx", label v2-8-1dev_25
-rw-r--r--CHANGES95
-rw-r--r--INSTALLATION17
-rw-r--r--LYMessages_en.h1
-rw-r--r--WWW/Library/Implementation/HTInit.c176
-rw-r--r--WWW/Library/Implementation/HTStream.h2
-rw-r--r--WWW/Library/Implementation/HTTelnet.c5
-rw-r--r--WWW/Library/Implementation/tcp.h52
-rw-r--r--config.hin5
-rwxr-xr-xconfigure903
-rw-r--r--configure.in22
-rw-r--r--docs/IBMPC-charsets.announce15
-rw-r--r--docs/README.chartrans40
-rw-r--r--lynx.cfg122
-rw-r--r--lynx_help/Lynx_users_guide.html398
-rw-r--r--lynx_help/keystrokes/option_help.html6
-rw-r--r--makefile.in9
-rw-r--r--src/GridText.c143
-rw-r--r--src/GridText.h47
-rw-r--r--src/HTFWriter.c16
-rw-r--r--src/HTInit.c17
-rw-r--r--src/HTML.c153
-rw-r--r--src/LYBookmark.c7
-rw-r--r--src/LYCgi.c4
-rw-r--r--src/LYCharSets.c89
-rw-r--r--src/LYCharUtils.c9
-rw-r--r--src/LYCookie.c12
-rw-r--r--src/LYCurses.c20
-rw-r--r--src/LYCurses.h1
-rw-r--r--src/LYDownload.c46
-rw-r--r--src/LYEdit.c8
-rw-r--r--src/LYExtern.c13
-rw-r--r--src/LYGetFile.c58
-rw-r--r--src/LYGlobalDefs.h10
-rw-r--r--src/LYHistory.c61
-rw-r--r--src/LYHistory.h10
-rw-r--r--src/LYList.c26
-rw-r--r--src/LYLocal.c58
-rw-r--r--src/LYMail.c54
-rw-r--r--src/LYMain.c150
-rw-r--r--src/LYMainLoop.c47
-rw-r--r--src/LYNews.c3
-rw-r--r--src/LYOptions.c829
-rw-r--r--src/LYPrint.c37
-rw-r--r--src/LYReadCFG.c25
-rw-r--r--src/LYShowInfo.c8
-rw-r--r--src/LYSystem.h10
-rw-r--r--src/LYUpload.c17
-rw-r--r--src/LYUtils.c303
-rw-r--r--src/LYUtils.h114
-rw-r--r--src/LYrcFile.c53
-rw-r--r--src/UCAuto.c18
-rw-r--r--src/chrtrans/README.tables1
-rw-r--r--src/chrtrans/cp1250_uni.tbl2
-rw-r--r--src/chrtrans/cp1251_uni.tbl2
-rw-r--r--src/chrtrans/cp1252_uni.tbl2
-rw-r--r--src/chrtrans/cp1253_uni.tbl4
-rw-r--r--src/chrtrans/cp1255_uni.tbl2
-rw-r--r--src/chrtrans/cp1256_uni.tbl2
-rw-r--r--src/chrtrans/cp1257_uni.tbl2
-rw-r--r--src/chrtrans/cp437_uni.tbl2
-rw-r--r--src/chrtrans/cp737_uni.tbl2
-rw-r--r--src/chrtrans/cp775_uni.tbl2
-rw-r--r--src/chrtrans/cp850_uni.tbl2
-rw-r--r--src/chrtrans/cp852_uni.tbl2
-rw-r--r--src/chrtrans/cp862_uni.tbl2
-rw-r--r--src/chrtrans/cp864_uni.tbl2
-rw-r--r--src/chrtrans/cp866_uni.tbl2
-rw-r--r--src/chrtrans/cp869_uni.tbl2
-rw-r--r--src/chrtrans/iso01_uni.tbl2
-rw-r--r--src/chrtrans/iso02_uni.tbl2
-rw-r--r--src/chrtrans/iso03_uni.tbl2
-rw-r--r--src/chrtrans/iso04_uni.tbl2
-rw-r--r--src/chrtrans/iso05_uni.tbl2
-rw-r--r--src/chrtrans/iso06_uni.tbl2
-rw-r--r--src/chrtrans/iso07_uni.tbl2
-rw-r--r--src/chrtrans/iso08_uni.tbl2
-rw-r--r--src/chrtrans/iso09_uni.tbl2
-rw-r--r--src/chrtrans/iso10_uni.tbl2
-rw-r--r--src/chrtrans/koi8r_uni.tbl2
-rw-r--r--src/chrtrans/utf8_uni.tbl2
-rw-r--r--userdefs.h102
81 files changed, 2425 insertions, 2080 deletions
diff --git a/CHANGES b/CHANGES
index f7f2f1d7..e821ac89 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,99 @@
 Changes since Lynx 2.8 release
 ================================================================================
 
+1998-09-06 (2.8.1dev.25)
+* corrected compiled-in path for lynx_site.txt - TD
+* implement logic for exec-links in forms-options page - TD
+* add configure options --enable-exec-links and --enable-exec-scripts - TD
+* correct logic for show-color in forms-options page (reported by DK) - TD.
+* implement logic to set $DISPLAY in forms-options page - TD
+* add/use functions LYsetXDisplay() and LYgetXDisplay() to reduce clutter - TD
+* retain help-link on internal pages only for those where the pages would be
+  pushed onto the history stack, and only in novice mode - TD
+* absorb LYSystem.h into LYUtils.h, adding LYSystem() and LYSysShell functions
+  to LYUtils.c to hide djgpp clutter - TD
+* limit strings passed to mailer in LYMail.c to 7-bit ASCII, converting other
+  characters to '?'.  This guards against trash on the end of the mailing
+  address in a mailto link (from Duncan Simpson <dps@io.stargate.co.uk>).
+* add fallback definitions for <sys/stat.h> S_xxx macros to tcp.h (from report
+  by Francisco A Tomei Torres <fatomei@sandburg.unm.edu> that OpenStep 4.0
+  lacks definition for S_IWOTH) - TD
+* modify quote_pathname() so that for DJGPP it does not put single-quotes
+  around the result - DK
+* correct a missing assignment to turn bold off in split_line (GridText.c) - LE
+* Fixed: forms input in display_partial mode! Previously hightext was printed
+  at wrong positions while loading was in process (try -debug_partial to see
+  the bug).  Fix made in HText_pageDisplay:  we call HText_trimHightext() which
+  was the main part of HText_endAppend() before.  People, no more problems
+  reported from incremental rendering mode!  - LP
+* set PARTIAL mode ON by default, unless it disabled in lynx.cfg or by
+  configure --disable-partial option - LP
+* restore temporary -debug_partial switch, broken in dev.23. - LP
+* made trace in HText_appendCharacter() a little more readable
+  for lynx special characters - LP
+* chartrans:  human-readable character set names in Options Menu now changed
+  according to Netscape 4.x style - "language (MIMEname)", it looks more useful
+  and reduce chaos in people's heads.  Documentation corrected
+  (option_help.html/Lynx_User_guide.html).  Minor tip:  "Central and Eastern
+  European" was truncated to "Eastern European" because of space limitation in
+  popup menu.  (Changes in chrtrans/*.tbl, LYCharSets.c, also docs including
+  userdefs.h/lynx.cfg).  Since names were changed, users on display other than
+  iso-8859-1 should go to options menu and resave .lynxrc (and probably correct
+  lynx.cfg - character_set now uses MIME notation in sync with other charset
+  settings, although complete name string is still acceptable for this field).
+  - LP
+* an attempt made to tweak the code replacing lynx internal 'main' charset '0'
+  (iso-8859-1 in fact) with its MIME name. - LP
+* rename ifdef EXP_8BIT_TOUPPER in favor of lynx.cfg switch FORCE_8BIT_TOUPPER
+  - LP
+* remove a lot of "(char **)" casts from HTML.c which obscured some type
+  mismatches - TD
+* add/use functions LYIsHtmlSep, LYAddHtmlSep, LYTrimHtmlSep, LYIsPathSep,
+  LYAddPathSep, LYTrimPathSep to reduce clutter - TD
+* fix a bug, present at least since dev.17, where lynx can't download files if
+  it is started from one of the root directories of a disk drive, since it is
+  trying to write to "c:\\file.ext", rather than "c:\file.ext" - DK
+* correct a comment in userdefs.h; commercial Japanese sites are named with
+  co.jp, not com.jp (Larry Virden).
+* correct some debug messages in LYCookie.c - BJP
+* fix a missing </h1> in ShowInfo.c - SKY
+* modified '+'->' ' conversion to allow Unix commands to have '+' beginning
+  options - TD
+* sorted all option items (i.e., static variables, postoptions(), gen_options())
+  according to the sections they are in - SKY
+* added '+'->' ' conversion for forms-options values - SKY
+* centered 'save to disk' and put a dash between 'accept' and 'reset' for
+  clarity - SKY
+* add "-cookie_file=" commandline option to specify cookie file - BJP
+* add "cookie_file=" option to .lynxrc - BJP
+* add "cookie_file:" option to lynx.cfg - BJP
+* change default cookie file to "Home_Dir()/cookies" (or sys$login:cookies
+  for VMS, which may or may not work, DOS also needs to be checked) - BJP
+* add cookies switch to options menu - LP
+* Security considerations and form-based options:  items restricted in
+  gen_options() should be ALSO restricted under the same conditions in
+  postoptions() to prevent a limited access user to edit option's HTML code
+  manually and submit a restricted items.  This may be not a good idea to have
+  two functions in sync but those functions are synchronized anyway.  Please
+  read comments inside the functions if change something!  - LP
+* add new functions BeginInternalPage and EndInternalPage to reduce clutter in
+  code that sets up internal pages (email from LP).
+* change version in makefile.in to 2-8-1 (reported by DK).
+* the code in GridText that adds control characters to the current line
+  does not test for buffer overflow.  Normally Lynx gets away with this because
+  it will wrap the current line as soon as the line exceeds the display width,
+  but if you have a file with nothing but control characters with no
+  displayable text in-between (a few thousand hidden links will do), then Lynx
+  bombs.  Modified to silently ignore excess control characters as well as add
+  a few extra bytes when allocating the line buffer to allow for a bunch of
+  control characters followed by a kanji or utf-8 sequence.  (patch by Dick
+  Wesseling <ftu@fi.uu.nl>)
+* remove WWW/Library/Implementation/HTInit.c, which is not used, since
+  src/HTInit.c has this functionality - TD
+* change ID="<number>" in Lynx_users_guide.html to ID="<name>" to appease
+  weblint; tested with IE&NS - TD.
+* Al's convention of '#<number>' into '#<id name>' in Lynx_users_guide.html is
+  included - SKY
 1998-08-31 (2.8.1dev.24)
 * re-correct DH's patch for COLLAPSE_BR_TAGS (reported by Larry Virden) - TD
 1998-08-29 (2.8.1dev.23)
@@ -29,8 +122,6 @@ Changes since Lynx 2.8 release
   'config.cache'.  Its corresponding makefile macro is 'install-log' - SKY
 * New Form-based options page is re-organized; logical sections are introduced
   and sorted alphabetically (except for 'User Mode' - SKY
-* Al's convention of '#<number>' into '#<id name>' in Lynx_users_guide.html is
-  included - SKY
 * All links in the help files are marked, i.e., each
   'href="../_filename.html_#section"' is converted to
   'href="../@FILENAME@#section"'.  This is useful if a help filename or
diff --git a/INSTALLATION b/INSTALLATION
index bc23c434..1067ec73 100644
--- a/INSTALLATION
+++ b/INSTALLATION
@@ -222,10 +222,9 @@ II. Compile instructions -- UNIX
 	Turn off code that lets Lynx display parts of a long page while loading
 	it.
 
-  --enable-8bit-toupper			(define EXP_8BIT_TOUPPER)
-	Use experimental 8-bit case-conversion for case-insensitive
-	searches in non-ASCII display character set, this overrides locale
-	settings.
+  --enable-cgi-links                    (define LYNXCGI_LINKS)
+	Allows lynx to access a cgi script directly without the need for
+	a http daemon.
 
   --enable-color-style			(define USE_COLOR_STYLE)
   	Use this option to enable optional and *experimental* color style.
@@ -239,6 +238,12 @@ II. Compile instructions -- UNIX
 	configuration supports the use of 'default' for colors even without
 	this option.
 
+  --enable-exec-links                   (define EXEC_LINKS)
+	Allows lynx to execute programs by accessing a link.
+
+  --enable-exec-scripts                 (define EXEC_SCRIPTS)
+	Allows lynx to execute programs inferred from a link.
+
   --enable-externs			(define USE_EXTERNALS)
 	Use this option to enable external application support. (See lynx.cfg.)
 
@@ -258,10 +263,6 @@ II. Compile instructions -- UNIX
 	a feature which could, however, compromise a secure transaction by
 	forcing inappropriate resubmission of form content.
 
-  --enable-cgi-links                    (define LYNXCGI_LINKS)
-	Allows lynx to access a cgi script directly without the need for
-	a http daemon.
-
   --enable-nsl-fork			(define NSL_FORK)
 	Disabled by default, this allows interruption of NSL requests,
 	so that `z' will stop the `look-up' phase of a connection.
diff --git a/LYMessages_en.h b/LYMessages_en.h
index 65b5eddb..8d09adad 100644
--- a/LYMessages_en.h
+++ b/LYMessages_en.h
@@ -129,6 +129,7 @@
  "Reloading document.  Any form entries will be lost!"
 #define CANNOT_TRANSCODE_FORM "Warning: Cannot transcode form data to charset %s!"
 #define BAD_FORM_MAILTO "Malformed mailto form submission!  Cancelled!"
+#define MAILTO_SQUASH_CTL "Warning! Control codes in mail address replaced by ?"
 #define FORM_MAILTO_DISALLOWED "Mail disallowed!  Cannot submit."
 #define FORM_MAILTO_FAILED "Mailto form submission failed!"
 #define FORM_MAILTO_CANCELLED "Mailto form submission Cancelled!!!"
diff --git a/WWW/Library/Implementation/HTInit.c b/WWW/Library/Implementation/HTInit.c
deleted file mode 100644
index d367ca06..00000000
--- a/WWW/Library/Implementation/HTInit.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/*		Configuration-specific Initialialization	HTInit.c
-**		----------------------------------------
-*/
-
-/*	Define a basic set of suffixes and presentations
-**	------------------------------------------------
-**
-*/
-
-#include <HTUtils.h>
-
-/* Implements:
-*/
-#include <HTInit.h>
-
-#include <HTML.h>
-#include <HTPlain.h>
-#include <HTMLGen.h>
-#include <HTFile.h>
-#include <HTFormat.h>
-#include <HTMIME.h>
-#include <HTWSRC.h>
-#include <HTFWriter.h>
-
-#include <LYLeaks.h>
-
-PUBLIC void HTFormatInit NOARGS
-{
-#ifdef NeXT
-    HTSetPresentation("application/postscript", "open %s", 1.0, 2.0, 0.0, 0);
-    /* The following needs the GIF previewer -- you might not have it. */
-    HTSetPresentation("image/gif", 		"open %s", 0.3, 2.0, 0.0, 0);
-    HTSetPresentation("image/x-tiff", 		"open %s", 1.0, 2.0, 0.0, 0);
-    HTSetPresentation("audio/basic", 		"open %s", 1.0, 2.0, 0.0, 0);
-    HTSetPresentation("*", 			"open %s", 1.0, 0.0, 0.0, 0);
-#else
-    if (getenv("DISPLAY")) {	/* Must have X11 */
-	HTSetPresentation("application/postscript", "ghostview %s",
-							 1.0, 3.0, 0.0, 0);
-	HTSetPresentation("image/gif", 		"xv %s", 1.0, 3.0, 0.0, 0);
-	HTSetPresentation("image/x-tiff", 	"xv %s", 1.0, 3.0, 0.0, 0);
-	HTSetPresentation("image/jpeg", 	"xv %s", 1.0, 3.0, 0.0, 0);
-    }
-#endif
-    HTSetConversion("www/mime",			"*",		HTMIMEConvert,
-    							1.0, 0.0, 0.0, 0);
-    HTSetConversion("application/x-wais-source","*",		HTWSRCConvert,
-    							1.0, 0.0, 0.0, 0);
-    HTSetConversion("text/html",		"text/x-c",	HTMLToC,
-    							0.5, 0.0, 0.0, 0);
-    HTSetConversion("text/html",		"text/plain",	HTMLToPlain,
-    							0.5, 0.0, 0.0, 0);
-    HTSetConversion("text/html",		"www/present",	HTMLPresent,
-    							1.0, 0.0, 0.0, 0);
-    HTSetConversion("text/plain",		"text/html",	HTPlainToHTML,
-    							1.0, 0.0, 0.0, 0);
-    HTSetConversion("text/plain",		"www/present",	HTPlainPresent,
-    							1.0, 0.0, 0.0, 0);
-    HTSetConversion("application/octet-stream",	"www/present",	HTSaveLocally,
-    							0.1, 0.0, 0.0, 0);
-    HTSetConversion("www/unknown",		"www/present",	HTSaveLocally,
-    							0.3, 0.0, 0.0, 0);
-    HTSetConversion("www/source",		"www/present",	HTSaveLocally,
-    							0.3, 0.0, 0.0, 0);
-}
-
-
-
-/*	Define a basic set of suffixes
-**	------------------------------
-**
-**	The LAST suffix for a type is that used for temporary files
-**	of that type.
-**	The quality is an apriori bias as to whether the file should be
-**	used.  Not that different suffixes can be used to represent files
-**	which are of the same format but are originals or regenerated,
-**	with different values.
-*/
-
-#ifndef NO_INIT
-PUBLIC void HTFileInit NOARGS
-{
-    /*		Suffix     Contenet-Type	Content-Encoding  Quality			*/
-
-    HTSetSuffix(".mime",   "www/mime",			"8bit",   1.0);	/* Internal -- MIME is	*/
-                                                                        /* not recursive	*/
-    HTSetSuffix(".bin",    "application/octet-stream",	"binary", 1.0); /* Uninterpreted binary	*/
-    HTSetSuffix(".oda",    "application/oda",		"binary", 1.0);
-    HTSetSuffix(".pdf",    "application/pdf",		"binary", 1.0);
-    HTSetSuffix(".ai",     "application/postscript",	"8bit",   0.5);	/* Adobe Illustrator	*/
-    HTSetSuffix(".PS",     "application/postscript",	"8bit",	  0.8);	/* PostScript		*/
-    HTSetSuffix(".eps",    "application/postscript",	"8bit",   0.8);
-    HTSetSuffix(".ps",     "application/postscript",	"8bit",   0.8);
-    HTSetSuffix(".rtf",    "application/x-rtf",		"7bit",   1.0);	/* RTF			*/
-    HTSetSuffix(".Z",      "application/x-compressed",	"binary", 1.0);	/* Compressed data	*/
-    HTSetSuffix(".csh",    "application/x-csh",		"7bit",   0.5);	/* C-shell script	*/
-    HTSetSuffix(".dvi",    "application/x-dvi",		"binary", 1.0);	/* TeX DVI		*/
-    HTSetSuffix(".hdf",    "application/x-hdf",		"binary", 1.0);	/* NCSA HDF data file	*/
-    HTSetSuffix(".latex",  "application/x-latex",	"8bit",   1.0);	/* LaTeX source		*/
-    HTSetSuffix(".nc",     "application/x-netcdf",	"binary", 1.0);	/* Unidata netCDF data	*/
-    HTSetSuffix(".cdf",    "application/x-netcdf",	"binary", 1.0);
-    HTSetSuffix(".sh",     "application/x-sh",		"7bit",   0.5);	/* Shell-script		*/
-    HTSetSuffix(".tcl",    "application/x-tcl",		"7bit",   0.5);	/* TCL-script		*/
-    HTSetSuffix(".tex",    "application/x-tex",		"8bit",   1.0);	/* TeX source		*/
-    HTSetSuffix(".texi",   "application/x-texinfo",	"7bit",   1.0);	/* Texinfo		*/
-    HTSetSuffix(".texinfo","application/x-texinfo",	"7bit",   1.0);
-    HTSetSuffix(".t",      "application/x-troff",	"7bit",   0.5);	/* Troff		*/
-    HTSetSuffix(".roff",   "application/x-troff",	"7bit",   0.5);
-    HTSetSuffix(".tr",     "application/x-troff",	"7bit",   0.5);
-    HTSetSuffix(".man",    "application/x-troff-man",	"7bit",   0.5);	/* Troff with man macros*/
-    HTSetSuffix(".me",     "application/x-troff-me",	"7bit",   0.5);	/* Troff with me macros	*/
-    HTSetSuffix(".ms",     "application/x-troff-ms",	"7bit",   0.5);	/* Troff with ms macros	*/
-    HTSetSuffix(".src",    "application/x-wais-source",	"7bit",   1.0);	/* WAIS source		*/
-    HTSetSuffix(".zip",    "application/zip",		"binary", 1.0);	/* PKZIP		*/
-    HTSetSuffix(".bcpio",  "application/x-bcpio",	"binary", 1.0);	/* Old binary CPIO	*/
-    HTSetSuffix(".cpio",   "application/x-cpio",	"binary", 1.0);	/* POSIX CPIO		*/
-    HTSetSuffix(".gtar",   "application/x-gtar",	"binary", 1.0);	/* Gnu tar		*/
-    HTSetSuffix(".shar",   "application/x-shar",	"8bit",   1.0);	/* Shell archive	*/
-    HTSetSuffix(".sv4cpio","application/x-sv4cpio",	"binary", 1.0);	/* SVR4 CPIO		*/
-    HTSetSuffix(".sv4crc", "application/x-sv4crc",	"binary", 1.0);	/* SVR4 CPIO with CRC	*/
-    HTSetSuffix(".tar",    "application/x-tar",		"binary", 1.0);	/* 4.3BSD tar		*/
-    HTSetSuffix(".ustar",  "application/x-ustar",	"binary", 1.0);	/* POSIX tar		*/
-    HTSetSuffix(".snd",    "audio/basic",		"binary", 1.0);	/* Audio		*/
-    HTSetSuffix(".au",     "audio/basic",		"binary", 1.0);
-    HTSetSuffix(".aiff",   "audio/x-aiff",		"binary", 1.0);
-    HTSetSuffix(".aifc",   "audio/x-aiff",		"binary", 1.0);
-    HTSetSuffix(".aif",    "audio/x-aiff",		"binary", 1.0);
-    HTSetSuffix(".wav",    "audio/x-wav",		"binary", 1.0);	/* Windows+ WAVE format	*/
-    HTSetSuffix(".gif",    "image/gif",			"binary", 1.0);	/* GIF			*/
-    HTSetSuffix(".ief",    "image/ief",			"binary", 1.0);	/* Image Exchange fmt	*/
-    HTSetSuffix(".jpg",    "image/jpeg",		"binary", 1.0);	/* JPEG			*/
-    HTSetSuffix(".JPG",    "image/jpeg",		"binary", 1.0);
-    HTSetSuffix(".JPE",    "image/jpeg",		"binary", 1.0);
-    HTSetSuffix(".jpe",    "image/jpeg",		"binary", 1.0);
-    HTSetSuffix(".JPEG",   "image/jpeg",		"binary", 1.0);
-    HTSetSuffix(".jpeg",   "image/jpeg",		"binary", 1.0);
-    HTSetSuffix(".tif",    "image/tiff",		"binary", 1.0);	/* TIFF			*/
-    HTSetSuffix(".tiff",   "image/tiff",		"binary", 1.0);
-    HTSetSuffix(".ras",    "image/cmu-raster",		"binary", 1.0);
-    HTSetSuffix(".pnm",    "image/x-portable-anymap",	"binary", 1.0);	/* PBM Anymap format	*/
-    HTSetSuffix(".pbm",    "image/x-portable-bitmap",	"binary", 1.0);	/* PBM Bitmap format	*/
-    HTSetSuffix(".pgm",    "image/x-portable-graymap",	"binary", 1.0);	/* PBM Graymap format	*/
-    HTSetSuffix(".ppm",    "image/x-portable-pixmap",	"binary", 1.0);	/* PBM Pixmap format	*/
-    HTSetSuffix(".rgb",    "image/x-rgb",		"binary", 1.0);
-    HTSetSuffix(".xbm",    "image/x-xbitmap",		"binary", 1.0);	/* X bitmap		*/
-    HTSetSuffix(".xpm",    "image/x-xpixmap",		"binary", 1.0);	/* X pixmap format	*/
-    HTSetSuffix(".xwd",    "image/x-xwindowdump",	"binary", 1.0);	/* X window dump (xwd)	*/
-    HTSetSuffix(".html",   "text/html",			"8bit",   1.0);	/* HTML			*/
-    HTSetSuffix(".c",      "text/plain",		"7bit",   0.5);	/* C source		*/
-    HTSetSuffix(".h",      "text/plain",		"7bit",   0.5);	/* C headers		*/
-    HTSetSuffix(".C",      "text/plain",		"7bit",   0.5);	/* C++ source		*/
-    HTSetSuffix(".cc",     "text/plain",		"7bit",   0.5);	/* C++ source		*/
-    HTSetSuffix(".hh",     "text/plain",		"7bit",   0.5);	/* C++ headers		*/
-    HTSetSuffix(".m",      "text/plain",		"7bit",   0.5);	/* Objective-C source	*/
-    HTSetSuffix(".f90",    "text/plain",		"7bit",   0.5);	/* Fortran 90 source	*/
-    HTSetSuffix(".txt",    "text/plain",		"7bit",   0.5);	/* Plain text		*/
-    HTSetSuffix(".rtx",    "text/richtext",		"7bit",   1.0);	/* MIME Richtext format	*/
-    HTSetSuffix(".tsv",    "text/tab-separated-values",	"7bit",   1.0);	/* Tab-separated values	*/
-    HTSetSuffix(".etx",    "text/x-setext",		"7bit",   0.9);	/* Struct Enchanced Txt	*/
-    HTSetSuffix(".MPG",    "video/mpeg",		"binary", 1.0);	/* MPEG			*/
-    HTSetSuffix(".mpg",    "video/mpeg",		"binary", 1.0);
-    HTSetSuffix(".MPE",    "video/mpeg",		"binary", 1.0);
-    HTSetSuffix(".mpe",    "video/mpeg",		"binary", 1.0);
-    HTSetSuffix(".MPEG",   "video/mpeg",		"binary", 1.0);
-    HTSetSuffix(".mpeg",   "video/mpeg",		"binary", 1.0);
-    HTSetSuffix(".qt",     "video/quicktime",		"binary", 1.0);	/* QuickTime		*/
-    HTSetSuffix(".mov",    "video/quicktime",		"binary", 1.0);
-    HTSetSuffix(".avi",    "video/x-msvideo",		"binary", 1.0);	/* MS Video for Windows	*/
-    HTSetSuffix(".movie",  "video/x-sgi-movie",		"binary", 1.0);	/* SGI "moviepalyer"	*/
-    
-    HTSetSuffix("*.*",     "application/octet-stream",	"binary", 0.1);
-    HTSetSuffix("*",       "text/plain",		"7bit",   0.5);
-
-}
-#endif /* NO_INIT */
-
diff --git a/WWW/Library/Implementation/HTStream.h b/WWW/Library/Implementation/HTStream.h
index 4588568e..d2025274 100644
--- a/WWW/Library/Implementation/HTStream.h
+++ b/WWW/Library/Implementation/HTStream.h
@@ -23,7 +23,7 @@ typedef struct _HTStream HTStream;
    for end_document which must be called before free.  It should be merged with free in
    fact:  it should be dummy for new streams.
    
-   The put_block method was write, but this upset systems whiuch had macros for write().
+   The put_block method was write, but this upset systems which had macros for write().
    
  */
 typedef struct _HTStreamClass {
diff --git a/WWW/Library/Implementation/HTTelnet.c b/WWW/Library/Implementation/HTTelnet.c
index 6ed9a738..f37a632a 100644
--- a/WWW/Library/Implementation/HTTelnet.c
+++ b/WWW/Library/Implementation/HTTelnet.c
@@ -14,6 +14,7 @@
 */
 
 #include <HTUtils.h>
+#include <LYUtils.h>
 
 /* Implements:
 */
@@ -50,10 +51,6 @@ PRIVATE int remote_session ARGS2(char *, acc_method, char *, host)
 	enum _login_protocol { telnet, rlogin, tn3270 } login_protocol =
 		strcmp(acc_method, "rlogin") == 0 ? rlogin :
 		strcmp(acc_method, "tn3270") == 0 ? tn3270 : telnet;
-#ifdef VMS
-	extern int DCLsystem PARAMS((char *command));
-#define system(a) DCLsystem(a) /* use LYCurses.c routines for spawns */
-#endif /* VMS */
 
 	/*
 	 *	Modified to allow for odd chars in a username only if exists.
diff --git a/WWW/Library/Implementation/tcp.h b/WWW/Library/Implementation/tcp.h
index 5df279ef..608b3bda 100644
--- a/WWW/Library/Implementation/tcp.h
+++ b/WWW/Library/Implementation/tcp.h
@@ -534,6 +534,58 @@ typedef int pid_t;
 #define S_ISREG(m)	(((m) & S_IFMT) == S_IFREG)
 #endif /* S_ISREG */
 
+#ifndef S_ISUID
+#define S_ISUID  0004000
+#endif
+#ifndef S_ISGID
+#define S_ISGID  0002000
+#endif
+#ifndef S_ISVTX
+#define S_ISVTX  0001000
+#endif
+
+#ifndef S_IRWXU
+#define S_IRWXU 00700
+#endif
+
+#ifndef S_IRUSR
+#define S_IRUSR 00400
+#endif
+#ifndef S_IWUSR
+#define S_IWUSR 00200
+#endif
+#ifndef S_IXUSR
+#define S_IXUSR 00100
+#endif
+
+#ifndef S_IRWXG
+#define S_IRWXG 00070
+#endif
+
+#ifndef S_IRGRP
+#define S_IRGRP 00040
+#endif
+#ifndef S_IWGRP
+#define S_IWGRP 00020
+#endif
+#ifndef S_IXGRP
+#define S_IXGRP 00010
+#endif
+
+#ifndef S_IRWXO
+#define S_IRWXO 00007
+#endif
+
+#ifndef S_IROTH
+#define S_IROTH 00004
+#endif
+#ifndef S_IWOTH
+#define S_IWOTH 00002
+#endif
+#ifndef S_IXOTH
+#define S_IXOTH 00001
+#endif
+
 #ifndef WEXITSTATUS
 #ifdef sony_news
 #define WEXITSTATUS(s) WIFEXITED(s)
diff --git a/config.hin b/config.hin
index fdcbb5d9..31c07103 100644
--- a/config.hin
+++ b/config.hin
@@ -17,7 +17,8 @@
 #undef DIRED_SUPPORT		/* AC_ARG_WITH(dired) */
 #undef DISP_PARTIAL		/* CF_ARG_ENABLE(partial) */
 #undef DONT_TRACK_INTERNAL_LINKS /* CF_ARG_DISABLE(internal-links) */
-#undef EXP_8BIT_TOUPPER		/* AC_ARG_ENABLE(8bit-toupper) */
+#undef EXEC_LINKS		/* CF_ARG_ENABLE(exec-links) */
+#undef EXEC_SCRIPTS		/* CF_ARG_ENABLE(exec-scripts) */
 #undef EXP_CHARTRANS_AUTOSWITCH	/* AC_ARG_ENABLE(font-switch) */
 #undef EXP_FORMS_OPTIONS	/* AC_ARG_ENABLE(forms-options) */
 #undef EXP_PERSISTENT_COOKIES	/* AC_ARG_ENABLE(persistent-cookies) */
@@ -129,8 +130,6 @@
 /* FIXME:DECLARE_WAIS_LOGFILES */
 /* FIXME:DGUX */
 /* FIXME:DGUX_OLD */
-/* FIXME:EXEC_LINKS */
-/* FIXME:EXEC_SCRIPTS */
 /* FIXME:HP_TERMINAL */
 /* FIXME:NOPORT */
 /* FIXME:POSIX_JC */
diff --git a/configure b/configure
index 2a840018..0ba20fa5 100755
--- a/configure
+++ b/configure
@@ -195,11 +195,10 @@ Basic Configuration Options:
   --with-screen=XXX       select screen type
                           (XXX is curses (default), ncurses or slang)
 Miscellaneous Options:
-  --enable-8bit-toupper   use experimental 8-bit case-conversion (default: off)
   --enable-forms-options  use experimental forms-based options (default: off)
+  --enable-persistent-cookies   use experimental persistent-cookie support (default: off)
 EOF
 cat <<EOF
-  --enable-persistent-cookies   use experimental persistent-cookie support (default: off)
   --enable-color-style    use optional/experimental color style (default: off)
   --disable-partial       use partial-display logic (default: on)
   --enable-default-colors enable use of default-colors (ncurses/slang) (default: off)
@@ -207,12 +206,14 @@ cat <<EOF
   --enable-externs        use external commands (default: off)
   --enable-font-switch    use Linux setfont for character-translation (default: off)
   --enable-cgi-links      support cgi links w/o a http daemon (default: off)
+  --enable-exec-links     support cgi links w/o a http daemon (default: off)
+  --enable-exec-scripts   support cgi links w/o a http daemon (default: off)
   --enable-internal-links handle following links to same doc differently (default: off)
   --enable-nsl-fork       fork NSL requests, allowing them to be aborted (default: off)
   --enable-syslog         log URL requests via syslog (default: off)
-  --enable-underlines     underline links rather than using boldface (default: off)
 EOF
 cat <<EOF
+  --enable-underlines     underline links rather than using boldface (default: off)
   --enable-gzip-help      install gzip'ed help files (default: off)
   --with-zlib             use zlib for decompression of some gzip files
 Directory Editor Options:
@@ -224,9 +225,9 @@ Directory Editor Options:
   --disable-dired-tar     disable "tar" command (default: on)
   --disable-dired-uudecode disable "uudecode" command (default: on)
   --disable-dired-zip     disable "zip", "unzip"  commands (default: on)
-  --disable-dired-gzip    disable "gzip", "gunzip" commands (default: on)
 EOF
 cat <<EOF
+  --disable-dired-gzip    disable "gzip", "gunzip" commands (default: on)
   --disable-long-list     disable long "ls -l" directory listings (default: on)
   --disable-parent-dir-refs
                           disable "Up-to" links in directory listings (default: on)
@@ -595,7 +596,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:599: checking host system type" >&5
+echo "configure:600: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -620,7 +621,7 @@ echo "$ac_t""$host" 1>&6
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:624: checking for $ac_word" >&5
+echo "configure:625: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -649,7 +650,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:653: checking for $ac_word" >&5
+echo "configure:654: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -697,7 +698,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:701: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:702: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -707,11 +708,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
 cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 711 "configure"
+#line 712 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -731,12 +732,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:735: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:736: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:740: checking whether we are using GNU C" >&5
+echo "configure:741: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -745,7 +746,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:750: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -760,7 +761,7 @@ if test $ac_cv_prog_gcc = yes; then
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS=
   echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:764: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:765: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -788,7 +789,7 @@ else
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:792: checking how to run the C preprocessor" >&5
+echo "configure:793: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -803,13 +804,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 807 "configure"
+#line 808 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -820,13 +821,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 824 "configure"
+#line 825 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:830: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:831: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -851,7 +852,7 @@ echo "$ac_t""$CPP" 1>&6
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:855: checking for $ac_word" >&5
+echo "configure:856: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -878,7 +879,7 @@ else
 fi
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:882: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:883: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -906,7 +907,7 @@ fi
 
 
 echo $ac_n "checking for style of include in makefiles""... $ac_c" 1>&6
-echo "configure:910: checking for style of include in makefiles" >&5
+echo "configure:911: checking for style of include in makefiles" >&5
 
 make_include_left=""
 make_include_right=""
@@ -967,7 +968,7 @@ echo "$ac_t""${make_include_left}file${make_include_right}" 1>&6
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:971: checking for a BSD compatible install" >&5
+echo "configure:972: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1021,7 +1022,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1025: checking for $ac_word" >&5
+echo "configure:1026: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1054,7 +1055,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1058: checking for $ac_word" >&5
+echo "configure:1059: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LINT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1084,9 +1085,9 @@ done
 
 
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:1088: checking for AIX" >&5
+echo "configure:1089: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 1090 "configure"
+#line 1091 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -1108,7 +1109,7 @@ rm -f conftest*
 
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1112: checking for POSIXized ISC" >&5
+echo "configure:1113: checking for POSIXized ISC" >&5
 if test -d /etc/conf/kconfig.d &&
   grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
 then
@@ -1134,7 +1135,7 @@ fi
 
 
 echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6
-echo "configure:1138: checking if you want to see long compiling messages" >&5
+echo "configure:1139: checking if you want to see long compiling messages" >&5
 
 # Check whether --enable-echo or --disable-echo was given.
 if test "${enable_echo+set}" = set; then
@@ -1182,7 +1183,7 @@ fi
 
 
 echo $ac_n "checking if you want to check memory-leaks""... $ac_c" 1>&6
-echo "configure:1186: checking if you want to check memory-leaks" >&5
+echo "configure:1187: checking if you want to check memory-leaks" >&5
 
 # Check whether --enable-find-leaks or --disable-find-leaks was given.
 if test "${enable_find_leaks+set}" = set; then
@@ -1206,7 +1207,7 @@ EOF
 
 
 echo $ac_n "checking if you want to enable debug-code""... $ac_c" 1>&6
-echo "configure:1210: checking if you want to enable debug-code" >&5
+echo "configure:1211: checking if you want to enable debug-code" >&5
 
 # Check whether --enable-debug or --disable-debug was given.
 if test "${enable_debug+set}" = set; then
@@ -1251,7 +1252,7 @@ fi
 if test -n "$GCC"
 then
 echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6
-echo "configure:1255: checking if you want to turn on gcc warnings" >&5
+echo "configure:1256: checking if you want to turn on gcc warnings" >&5
 
 # Check whether --enable-warnings or --disable-warnings was given.
 if test "${enable_warnings+set}" = set; then
@@ -1291,9 +1292,9 @@ EOF
 if test -n "$GCC"
 then
 	echo "checking for gcc __attribute__ directives" 1>&6
-echo "configure:1295: checking for gcc __attribute__ directives" >&5
+echo "configure:1296: checking for gcc __attribute__ directives" >&5
 	cat > conftest.$ac_ext <<EOF
-#line 1297 "configure"
+#line 1298 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -1331,7 +1332,7 @@ EOF
 EOF
 			;;
 		esac
-		if { (eval echo configure:1335: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+		if { (eval echo configure:1336: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
 			test -n "$verbose" && echo "$ac_t""... $cf_attribute" 1>&6
 			cat conftest.h >>confdefs.h
 #		else
@@ -1348,11 +1349,11 @@ fi
 if test -n "$GCC"
 then
 		cat > conftest.$ac_ext <<EOF
-#line 1352 "configure"
+#line 1353 "configure"
 int main(int argc, char *argv[]) { return argv[argc-1] == 0; }
 EOF
 		echo "checking for gcc warning options" 1>&6
-echo "configure:1356: checking for gcc warning options" >&5
+echo "configure:1357: checking for gcc warning options" >&5
 	cf_save_CFLAGS="$CFLAGS"
 	EXTRA_CFLAGS="-W -Wall"
 	cf_warn_CONST=""
@@ -1370,7 +1371,7 @@ echo "configure:1356: checking for gcc warning options" >&5
 		Wstrict-prototypes $cf_warn_CONST
 	do
 		CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-		if { (eval echo configure:1374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+		if { (eval echo configure:1375: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
 			test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6
 			EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
 			test "$cf_opt" = Wcast-qual && EXTRA_CFLAGS="$EXTRA_CFLAGS -DXTSTRINGDEFINES"
@@ -1388,7 +1389,7 @@ fi
 
 
 echo $ac_n "checking if you want full utility pathnames""... $ac_c" 1>&6
-echo "configure:1392: checking if you want full utility pathnames" >&5
+echo "configure:1393: checking if you want full utility pathnames" >&5
 
 # Check whether --enable-full-paths or --disable-full-paths was given.
 if test "${enable_full_paths+set}" = set; then
@@ -1409,7 +1410,7 @@ echo "$ac_t""$with_full_paths" 1>&6
 
 
 echo $ac_n "checking for system mailer""... $ac_c" 1>&6
-echo "configure:1413: checking for system mailer" >&5
+echo "configure:1414: checking for system mailer" >&5
 if eval "test \"`echo '$''{'cf_cv_SYSTEM_MAIL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1436,7 +1437,7 @@ EOF
 
 
 echo $ac_n "checking system mail flags""... $ac_c" 1>&6
-echo "configure:1440: checking system mail flags" >&5
+echo "configure:1441: checking system mail flags" >&5
 if eval "test \"`echo '$''{'cf_cv_system_mail_flags'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1464,7 +1465,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "chmod", so it can be a program name with args.
 set dummy chmod; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1468: checking for $ac_word" >&5
+echo "configure:1469: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_CHMOD'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1495,7 +1496,7 @@ fi
 
 else
 	echo $ac_n "checking for chmod""... $ac_c" 1>&6
-echo "configure:1499: checking for chmod" >&5
+echo "configure:1500: checking for chmod" >&5
 	echo "$ac_t""$CHMOD" 1>&6
 fi
 
@@ -1529,7 +1530,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "compress", so it can be a program name with args.
 set dummy compress; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1533: checking for $ac_word" >&5
+echo "configure:1534: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_COMPRESS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1560,7 +1561,7 @@ fi
 
 else
 	echo $ac_n "checking for compress""... $ac_c" 1>&6
-echo "configure:1564: checking for compress" >&5
+echo "configure:1565: checking for compress" >&5
 	echo "$ac_t""$COMPRESS" 1>&6
 fi
 
@@ -1594,7 +1595,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "cp", so it can be a program name with args.
 set dummy cp; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1598: checking for $ac_word" >&5
+echo "configure:1599: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_COPY'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1625,7 +1626,7 @@ fi
 
 else
 	echo $ac_n "checking for cp""... $ac_c" 1>&6
-echo "configure:1629: checking for cp" >&5
+echo "configure:1630: checking for cp" >&5
 	echo "$ac_t""$COPY" 1>&6
 fi
 
@@ -1659,7 +1660,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "gzip", so it can be a program name with args.
 set dummy gzip; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1663: checking for $ac_word" >&5
+echo "configure:1664: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GZIP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1690,7 +1691,7 @@ fi
 
 else
 	echo $ac_n "checking for gzip""... $ac_c" 1>&6
-echo "configure:1694: checking for gzip" >&5
+echo "configure:1695: checking for gzip" >&5
 	echo "$ac_t""$GZIP" 1>&6
 fi
 
@@ -1724,7 +1725,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "mkdir", so it can be a program name with args.
 set dummy mkdir; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1728: checking for $ac_word" >&5
+echo "configure:1729: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MKDIR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1755,7 +1756,7 @@ fi
 
 else
 	echo $ac_n "checking for mkdir""... $ac_c" 1>&6
-echo "configure:1759: checking for mkdir" >&5
+echo "configure:1760: checking for mkdir" >&5
 	echo "$ac_t""$MKDIR" 1>&6
 fi
 
@@ -1789,7 +1790,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "mv", so it can be a program name with args.
 set dummy mv; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1793: checking for $ac_word" >&5
+echo "configure:1794: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MV'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1820,7 +1821,7 @@ fi
 
 else
 	echo $ac_n "checking for mv""... $ac_c" 1>&6
-echo "configure:1824: checking for mv" >&5
+echo "configure:1825: checking for mv" >&5
 	echo "$ac_t""$MV" 1>&6
 fi
 
@@ -1854,7 +1855,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "rm", so it can be a program name with args.
 set dummy rm; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1858: checking for $ac_word" >&5
+echo "configure:1859: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_RM'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1885,7 +1886,7 @@ fi
 
 else
 	echo $ac_n "checking for rm""... $ac_c" 1>&6
-echo "configure:1889: checking for rm" >&5
+echo "configure:1890: checking for rm" >&5
 	echo "$ac_t""$RM" 1>&6
 fi
 
@@ -1919,7 +1920,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "tar", so it can be a program name with args.
 set dummy tar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1923: checking for $ac_word" >&5
+echo "configure:1924: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_TAR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1950,7 +1951,7 @@ fi
 
 else
 	echo $ac_n "checking for tar""... $ac_c" 1>&6
-echo "configure:1954: checking for tar" >&5
+echo "configure:1955: checking for tar" >&5
 	echo "$ac_t""$TAR" 1>&6
 fi
 
@@ -1984,7 +1985,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "touch", so it can be a program name with args.
 set dummy touch; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1988: checking for $ac_word" >&5
+echo "configure:1989: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_TOUCH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2015,7 +2016,7 @@ fi
 
 else
 	echo $ac_n "checking for touch""... $ac_c" 1>&6
-echo "configure:2019: checking for touch" >&5
+echo "configure:2020: checking for touch" >&5
 	echo "$ac_t""$TOUCH" 1>&6
 fi
 
@@ -2049,7 +2050,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "gunzip", so it can be a program name with args.
 set dummy gunzip; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2053: checking for $ac_word" >&5
+echo "configure:2054: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_UNCOMPRESS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2080,7 +2081,7 @@ fi
 
 else
 	echo $ac_n "checking for gunzip""... $ac_c" 1>&6
-echo "configure:2084: checking for gunzip" >&5
+echo "configure:2085: checking for gunzip" >&5
 	echo "$ac_t""$UNCOMPRESS" 1>&6
 fi
 
@@ -2114,7 +2115,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "unzip", so it can be a program name with args.
 set dummy unzip; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2118: checking for $ac_word" >&5
+echo "configure:2119: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_UNZIP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2145,7 +2146,7 @@ fi
 
 else
 	echo $ac_n "checking for unzip""... $ac_c" 1>&6
-echo "configure:2149: checking for unzip" >&5
+echo "configure:2150: checking for unzip" >&5
 	echo "$ac_t""$UNZIP" 1>&6
 fi
 
@@ -2179,7 +2180,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "uudecode", so it can be a program name with args.
 set dummy uudecode; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2183: checking for $ac_word" >&5
+echo "configure:2184: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_UUDECODE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2210,7 +2211,7 @@ fi
 
 else
 	echo $ac_n "checking for uudecode""... $ac_c" 1>&6
-echo "configure:2214: checking for uudecode" >&5
+echo "configure:2215: checking for uudecode" >&5
 	echo "$ac_t""$UUDECODE" 1>&6
 fi
 
@@ -2244,7 +2245,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "zcat", so it can be a program name with args.
 set dummy zcat; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2248: checking for $ac_word" >&5
+echo "configure:2249: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_ZCAT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2275,7 +2276,7 @@ fi
 
 else
 	echo $ac_n "checking for zcat""... $ac_c" 1>&6
-echo "configure:2279: checking for zcat" >&5
+echo "configure:2280: checking for zcat" >&5
 	echo "$ac_t""$ZCAT" 1>&6
 fi
 
@@ -2309,7 +2310,7 @@ if test "$with_full_paths" = yes ; then
 	# Extract the first word of "zip", so it can be a program name with args.
 set dummy zip; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2313: checking for $ac_word" >&5
+echo "configure:2314: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_ZIP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2340,7 +2341,7 @@ fi
 
 else
 	echo $ac_n "checking for zip""... $ac_c" 1>&6
-echo "configure:2344: checking for zip" >&5
+echo "configure:2345: checking for zip" >&5
 	echo "$ac_t""$ZIP" 1>&6
 fi
 
@@ -2393,7 +2394,7 @@ EOF
 if test -z "$GCC" ; then
 	
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:2397: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:2398: checking for ${CC-cc} option to accept ANSI C" >&5
 if eval "test \"`echo '$''{'cf_cv_ansi_cc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2417,7 +2418,7 @@ for cf_arg in "-DCC_HAS_PROTOS" \
 do
 	CFLAGS="$cf_save_CFLAGS $cf_arg"
 	cat > conftest.$ac_ext <<EOF
-#line 2421 "configure"
+#line 2422 "configure"
 #include "confdefs.h"
 
 #ifndef CC_HAS_PROTOS
@@ -2433,7 +2434,7 @@ int main() {
 	struct s2 {int (*f) (double a);};
 ; return 0; }
 EOF
-if { (eval echo configure:2437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ansi_cc="$cf_arg"; break
 else
@@ -2461,12 +2462,12 @@ fi
 
 fi
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2465: checking for working const" >&5
+echo "configure:2466: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2470 "configure"
+#line 2471 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -2515,7 +2516,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:2519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -2557,7 +2558,7 @@ clix*)
 	# contributed by Alex Matulich (matuli_a@marlin.navsea.navy.mil) also
 	# references -lmalloc and -lbsd.
 	echo $ac_n "checking for strcmp in -lc_s""... $ac_c" 1>&6
-echo "configure:2561: checking for strcmp in -lc_s" >&5
+echo "configure:2562: checking for strcmp in -lc_s" >&5
 ac_lib_var=`echo c_s'_'strcmp | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2565,7 +2566,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lc_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2569 "configure"
+#line 2570 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2576,7 +2577,7 @@ int main() {
 strcmp()
 ; return 0; }
 EOF
-if { (eval echo configure:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2665,7 +2666,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2669: checking for $ac_word" >&5
+echo "configure:2670: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2709,17 +2710,17 @@ sony-newsos*)
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2713: checking for $ac_hdr" >&5
+echo "configure:2714: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2718 "configure"
+#line 2719 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2723: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2724: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2763,17 +2764,17 @@ ultrix*)
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2767: checking for $ac_hdr" >&5
+echo "configure:2768: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2772 "configure"
+#line 2773 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2777: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2811,16 +2812,16 @@ if test -n "$TRY_CFLAGS" ; then
 	cf_save_CFLAGS="$CFLAGS"
 	CFLAGS="$CFLAGS $TRY_CFLAGS"
 	echo $ac_n "checking if we should use compile options $TRY_CFLAGS""... $ac_c" 1>&6
-echo "configure:2815: checking if we should use compile options $TRY_CFLAGS" >&5
+echo "configure:2816: checking if we should use compile options $TRY_CFLAGS" >&5
 	cat > conftest.$ac_ext <<EOF
-#line 2817 "configure"
+#line 2818 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 FILE *fp = stdin
 ; return 0; }
 EOF
-if { (eval echo configure:2824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2825: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -2838,7 +2839,7 @@ fi
 ### Look for network libraries first, since some functions (such as gethostname)
 ### are used in a lot of places.
 echo $ac_n "checking if you want socks library""... $ac_c" 1>&6
-echo "configure:2842: checking if you want socks library" >&5
+echo "configure:2843: checking if you want socks library" >&5
 if eval "test \"`echo '$''{'cf_cv_use_libsocks'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2858,7 +2859,7 @@ fi
 echo "$ac_t""$cf_cv_use_libsocks" 1>&6
 
 echo $ac_n "checking if you want socks5 library""... $ac_c" 1>&6
-echo "configure:2862: checking if you want socks5 library" >&5
+echo "configure:2863: checking if you want socks5 library" >&5
 if eval "test \"`echo '$''{'cf_cv_use_libsocks5'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2924,7 +2925,7 @@ cat >> confdefs.h <<\EOF
 EOF
 
 cat > conftest.$ac_ext <<EOF
-#line 2928 "configure"
+#line 2929 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -2933,7 +2934,7 @@ int main() {
 	accept((char *)0)
 ; return 0; }
 EOF
-if { (eval echo configure:2937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   :
 else
   echo "configure: failed program was:" >&5
@@ -2963,9 +2964,9 @@ cat >> confdefs.h <<\EOF
 EOF
 
 echo $ac_n "checking if the socks library uses socks4 prefix""... $ac_c" 1>&6
-echo "configure:2967: checking if the socks library uses socks4 prefix" >&5
+echo "configure:2968: checking if the socks library uses socks4 prefix" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2969 "configure"
+#line 2970 "configure"
 #include "confdefs.h"
 
 #include <socks.h>
@@ -2974,7 +2975,7 @@ int main() {
 	Rinit((char *)0)
 ; return 0; }
 EOF
-if { (eval echo configure:2978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cat >> confdefs.h <<\EOF
 #define USE_SOCKS4_PREFIX 1
@@ -2986,14 +2987,14 @@ else
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 2990 "configure"
+#line 2991 "configure"
 #include "confdefs.h"
 #include <socks.h>
 int main() {
 SOCKSinit((char *)0)
 ; return 0; }
 EOF
-if { (eval echo configure:2997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_use_socks4=no
 else
@@ -3062,7 +3063,7 @@ else
 	
 cf_test_netlibs=no
 echo $ac_n "checking for network libraries""... $ac_c" 1>&6
-echo "configure:3066: checking for network libraries" >&5
+echo "configure:3067: checking for network libraries" >&5
 if eval "test \"`echo '$''{'cf_cv_netlibs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3073,12 +3074,12 @@ cf_test_netlibs=yes
 for ac_func in gethostname
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3077: checking for $ac_func" >&5
+echo "configure:3078: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3082 "configure"
+#line 3083 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3101,7 +3102,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3124,7 +3125,7 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for gethostname in -lnsl""... $ac_c" 1>&6
-echo "configure:3128: checking for gethostname in -lnsl" >&5
+echo "configure:3129: checking for gethostname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3132,7 +3133,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl $cf_cv_netlibs $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3136 "configure"
+#line 3137 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3143,7 +3144,7 @@ int main() {
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:3147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3176,7 +3177,7 @@ else
 	
 		
 echo $ac_n "checking for gethostname in -lsocket""... $ac_c" 1>&6
-echo "configure:3180: checking for gethostname in -lsocket" >&5
+echo "configure:3181: checking for gethostname in -lsocket" >&5
 ac_lib_var=`echo socket'_'gethostname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3184,7 +3185,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket $cf_cv_netlibs $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3188 "configure"
+#line 3189 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3195,7 +3196,7 @@ int main() {
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:3199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3239,21 +3240,21 @@ done
 # FIXME:  sequent needs this library (i.e., -lsocket -linet -lnsl), but
 # I don't know the entrypoints - 97/7/22 TD
 echo $ac_n "checking for -linet""... $ac_c" 1>&6
-echo "configure:3243: checking for -linet" >&5
+echo "configure:3244: checking for -linet" >&5
 if eval "test \"`echo '$''{'ac_cv_lib_inet'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
 LIBS="-linet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3250 "configure"
+#line 3251 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:3257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_cv_lib_inet=yes
 else
@@ -3276,12 +3277,12 @@ if test "$ac_cv_func_lsocket" != no ; then
 for ac_func in socket
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3280: checking for $ac_func" >&5
+echo "configure:3281: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3285 "configure"
+#line 3286 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3304,7 +3305,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3327,7 +3328,7 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:3331: checking for socket in -lsocket" >&5
+echo "configure:3332: checking for socket in -lsocket" >&5
 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3335,7 +3336,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket $cf_cv_netlibs $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3339 "configure"
+#line 3340 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3346,7 +3347,7 @@ int main() {
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:3350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3379,7 +3380,7 @@ else
 	
 		
 echo $ac_n "checking for socket in -lbsd""... $ac_c" 1>&6
-echo "configure:3383: checking for socket in -lbsd" >&5
+echo "configure:3384: checking for socket in -lbsd" >&5
 ac_lib_var=`echo bsd'_'socket | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3387,7 +3388,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbsd $cf_cv_netlibs $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3391 "configure"
+#line 3392 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3398,7 +3399,7 @@ int main() {
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:3402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3443,12 +3444,12 @@ fi
 for ac_func in gethostbyname
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3447: checking for $ac_func" >&5
+echo "configure:3448: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3452 "configure"
+#line 3453 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3471,7 +3472,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3494,7 +3495,7 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3498: checking for gethostbyname in -lnsl" >&5
+echo "configure:3499: checking for gethostbyname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3502,7 +3503,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl $cf_cv_netlibs $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3506 "configure"
+#line 3507 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3513,7 +3514,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:3517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3554,12 +3555,12 @@ done
 for ac_func in strcasecmp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3558: checking for $ac_func" >&5
+echo "configure:3559: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3563 "configure"
+#line 3564 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3582,7 +3583,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3605,7 +3606,7 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for strcasecmp in -lresolv""... $ac_c" 1>&6
-echo "configure:3609: checking for strcasecmp in -lresolv" >&5
+echo "configure:3610: checking for strcasecmp in -lresolv" >&5
 ac_lib_var=`echo resolv'_'strcasecmp | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3613,7 +3614,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv $cf_cv_netlibs $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3617 "configure"
+#line 3618 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3624,7 +3625,7 @@ int main() {
 strcasecmp()
 ; return 0; }
 EOF
-if { (eval echo configure:3628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3670,7 +3671,7 @@ test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6
 fi
 
 echo $ac_n "checking for screen type""... $ac_c" 1>&6
-echo "configure:3674: checking for screen type" >&5
+echo "configure:3675: checking for screen type" >&5
 if eval "test \"`echo '$''{'cf_cv_screen'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3705,12 +3706,12 @@ case $cf_cv_screen in
 curses)
 	
 echo $ac_n "checking for initscr""... $ac_c" 1>&6
-echo "configure:3709: checking for initscr" >&5
+echo "configure:3710: checking for initscr" >&5
 if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3714 "configure"
+#line 3715 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char initscr(); below.  */
@@ -3733,7 +3734,7 @@ initscr();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_initscr=yes"
 else
@@ -3754,7 +3755,7 @@ else
 case $host_os in #(vi
 freebsd*) #(vi
 	echo $ac_n "checking for tgoto in -lmytinfo""... $ac_c" 1>&6
-echo "configure:3758: checking for tgoto in -lmytinfo" >&5
+echo "configure:3759: checking for tgoto in -lmytinfo" >&5
 ac_lib_var=`echo mytinfo'_'tgoto | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3762,7 +3763,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmytinfo  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3766 "configure"
+#line 3767 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3773,7 +3774,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:3777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3796,7 +3797,7 @@ fi
 	;;
 hpux10.*)
 	echo $ac_n "checking for initscr in -lcur_colr""... $ac_c" 1>&6
-echo "configure:3800: checking for initscr in -lcur_colr" >&5
+echo "configure:3801: checking for initscr in -lcur_colr" >&5
 ac_lib_var=`echo cur_colr'_'initscr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3804,7 +3805,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcur_colr  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3808 "configure"
+#line 3809 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3815,7 +3816,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:3819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3839,7 +3840,7 @@ else
   echo "$ac_t""no" 1>&6
 
 	echo $ac_n "checking for initscr in -lHcurses""... $ac_c" 1>&6
-echo "configure:3843: checking for initscr in -lHcurses" >&5
+echo "configure:3844: checking for initscr in -lHcurses" >&5
 ac_lib_var=`echo Hcurses'_'initscr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3847,7 +3848,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lHcurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3851 "configure"
+#line 3852 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3858,7 +3859,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:3862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3904,12 +3905,12 @@ if test ".$ac_cv_func_initscr" != .yes ; then
 	# Check for library containing tgoto.  Do this before curses library
 	# because it may be needed to link the test-case for initscr.
 	echo $ac_n "checking for tgoto""... $ac_c" 1>&6
-echo "configure:3908: checking for tgoto" >&5
+echo "configure:3909: checking for tgoto" >&5
 if eval "test \"`echo '$''{'ac_cv_func_tgoto'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3913 "configure"
+#line 3914 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char tgoto(); below.  */
@@ -3932,7 +3933,7 @@ tgoto();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_tgoto=yes"
 else
@@ -3953,7 +3954,7 @@ else
 		for cf_term_lib in termcap termlib unknown
 		do
 			echo $ac_n "checking for tgoto in -l$cf_term_lib""... $ac_c" 1>&6
-echo "configure:3957: checking for tgoto in -l$cf_term_lib" >&5
+echo "configure:3958: checking for tgoto in -l$cf_term_lib" >&5
 ac_lib_var=`echo $cf_term_lib'_'tgoto | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3961,7 +3962,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$cf_term_lib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3965 "configure"
+#line 3966 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3972,7 +3973,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:3976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4002,7 +4003,7 @@ fi
 	for cf_curs_lib in cursesX curses ncurses xcurses jcurses unknown
 	do
 		echo $ac_n "checking for initscr in -l$cf_curs_lib""... $ac_c" 1>&6
-echo "configure:4006: checking for initscr in -l$cf_curs_lib" >&5
+echo "configure:4007: checking for initscr in -l$cf_curs_lib" >&5
 ac_lib_var=`echo $cf_curs_lib'_'initscr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4010,7 +4011,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$cf_curs_lib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4014 "configure"
+#line 4015 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4021,7 +4022,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:4025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4047,16 +4048,16 @@ fi
 	LIBS="-l$cf_curs_lib $cf_save_LIBS"
 	if test "$cf_term_lib" = unknown ; then
 		echo $ac_n "checking if we can link with $cf_curs_lib library""... $ac_c" 1>&6
-echo "configure:4051: checking if we can link with $cf_curs_lib library" >&5
+echo "configure:4052: checking if we can link with $cf_curs_lib library" >&5
 		cat > conftest.$ac_ext <<EOF
-#line 4053 "configure"
+#line 4054 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:4060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -4070,16 +4071,16 @@ rm -f conftest*
 		test $cf_result = no && { echo "configure: error: Cannot link curses library" 1>&2; exit 1; }
 	elif test "$cf_term_lib" != predefined ; then
 		echo $ac_n "checking if we need both $cf_curs_lib and $cf_term_lib libraries""... $ac_c" 1>&6
-echo "configure:4074: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
+echo "configure:4075: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
 		cat > conftest.$ac_ext <<EOF
-#line 4076 "configure"
+#line 4077 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 initscr(); tgoto((char *)0, 0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:4083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_result=no
 else
@@ -4089,14 +4090,14 @@ else
   
 			LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
 			cat > conftest.$ac_ext <<EOF
-#line 4093 "configure"
+#line 4094 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:4100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -4118,14 +4119,14 @@ fi
 
 	
 echo $ac_n "checking for curses performance tradeoff""... $ac_c" 1>&6
-echo "configure:4122: checking for curses performance tradeoff" >&5
+echo "configure:4123: checking for curses performance tradeoff" >&5
 if eval "test \"`echo '$''{'cf_cv_curs_performance'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cf_cv_curs_performance=no
     cat > conftest.$ac_ext <<EOF
-#line 4129 "configure"
+#line 4130 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header-curses.h}>
@@ -4139,11 +4140,11 @@ int main() {
 	
 ; return 0; }
 EOF
-if { (eval echo configure:4143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4144: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 	cat > conftest.$ac_ext <<EOF
-#line 4147 "configure"
+#line 4148 "configure"
 #include "confdefs.h"
 
 #define CURS_PERFORMANCE
@@ -4158,7 +4159,7 @@ int main() {
 	
 ; return 0; }
 EOF
-if { (eval echo configure:4162: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4163: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_curs_performance=yes
 else
@@ -4183,13 +4184,13 @@ EOF
 ncurses)
 	
 echo $ac_n "checking for ncurses header file""... $ac_c" 1>&6
-echo "configure:4187: checking for ncurses header file" >&5
+echo "configure:4188: checking for ncurses header file" >&5
 if eval "test \"`echo '$''{'cf_cv_ncurses_header'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 	cat > conftest.$ac_ext <<EOF
-#line 4193 "configure"
+#line 4194 "configure"
 #include "confdefs.h"
 #include <curses.h>
 int main() {
@@ -4206,7 +4207,7 @@ make an error
 	
 ; return 0; }
 EOF
-if { (eval echo configure:4210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4211: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ncurses_header=predefined
 else
@@ -4292,7 +4293,7 @@ done
 	;;
 esac
 echo $ac_n "checking for ncurses version""... $ac_c" 1>&6
-echo "configure:4296: checking for ncurses version" >&5
+echo "configure:4297: checking for ncurses version" >&5
 if eval "test \"`echo '$''{'cf_cv_ncurses_version'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4317,7 +4318,7 @@ Autoconf "old"
 #endif
 EOF
 	cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
-	{ (eval echo configure:4321: \"$cf_try\") 1>&5; (eval $cf_try) 2>&5; }
+	{ (eval echo configure:4322: \"$cf_try\") 1>&5; (eval $cf_try) 2>&5; }
 	if test -f conftest.out ; then
 		cf_out=`cat conftest.out | sed -e 's@^Autoconf @@' -e 's@^[^"]*"@@' -e 's@".*@@'`
 		test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
@@ -4326,7 +4327,7 @@ EOF
 
 else
   cat > conftest.$ac_ext <<EOF
-#line 4330 "configure"
+#line 4331 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header-curses.h}>
@@ -4349,7 +4350,7 @@ int main()
 	exit(0);
 }
 EOF
-if { (eval echo configure:4353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   
 	cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -4374,7 +4375,7 @@ echo "$ac_t""$cf_cv_ncurses_version" 1>&6
 cf_ncurses_LIBS=""
 cf_ncurses_SAVE="$LIBS"
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:4378: checking for Gpm_Open in -lgpm" >&5
+echo "configure:4379: checking for Gpm_Open in -lgpm" >&5
 ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4382,7 +4383,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgpm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4386 "configure"
+#line 4387 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4393,7 +4394,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:4397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4409,7 +4410,7 @@ fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for initscr in -lgpm""... $ac_c" 1>&6
-echo "configure:4413: checking for initscr in -lgpm" >&5
+echo "configure:4414: checking for initscr in -lgpm" >&5
 ac_lib_var=`echo gpm'_'initscr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4417,7 +4418,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgpm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4421 "configure"
+#line 4422 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4428,7 +4429,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:4432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4459,7 +4460,7 @@ freebsd*)
 	# This is only necessary if you are linking against an obsolete
 	# version of ncurses (but it should do no harm, since it's static).
 	echo $ac_n "checking for tgoto in -lmytinfo""... $ac_c" 1>&6
-echo "configure:4463: checking for tgoto in -lmytinfo" >&5
+echo "configure:4464: checking for tgoto in -lmytinfo" >&5
 ac_lib_var=`echo mytinfo'_'tgoto | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4467,7 +4468,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmytinfo  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4471 "configure"
+#line 4472 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4478,7 +4479,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:4482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4506,12 +4507,12 @@ LIBS="$cf_ncurses_LIBS $LIBS"
 	cf_cv_have_lib_ncurses=no
 	cf_libdir=""
 	echo $ac_n "checking for initscr""... $ac_c" 1>&6
-echo "configure:4510: checking for initscr" >&5
+echo "configure:4511: checking for initscr" >&5
 if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4515 "configure"
+#line 4516 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char initscr(); below.  */
@@ -4534,7 +4535,7 @@ initscr();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_initscr=yes"
 else
@@ -4554,17 +4555,17 @@ else
 
 		cf_save_LIBS="$LIBS"
 		echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6
-echo "configure:4558: checking for initscr in -lncurses" >&5
+echo "configure:4559: checking for initscr in -lncurses" >&5
 		LIBS="-lncurses $LIBS"
 		cat > conftest.$ac_ext <<EOF
-#line 4561 "configure"
+#line 4562 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 			 cf_cv_have_lib_ncurses=yes
@@ -4591,17 +4592,17 @@ test "$prefix" != /usr           && cf_search="$cf_search /usr/lib /usr/lib/ncur
 			for cf_libdir in $cf_search
 			do
 				echo $ac_n "checking for -lncurses in $cf_libdir""... $ac_c" 1>&6
-echo "configure:4595: checking for -lncurses in $cf_libdir" >&5
+echo "configure:4596: checking for -lncurses in $cf_libdir" >&5
 				LIBS="-L$cf_libdir -lncurses $cf_save_LIBS"
 				cat > conftest.$ac_ext <<EOF
-#line 4598 "configure"
+#line 4599 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:4605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 			 		 cf_cv_have_lib_ncurses=yes
@@ -4633,7 +4634,7 @@ esac
 
 if test -n "$cf_ncurses_LIBS" ; then
 	echo $ac_n "checking if we can link ncurses without $cf_ncurses_LIBS""... $ac_c" 1>&6
-echo "configure:4637: checking if we can link ncurses without $cf_ncurses_LIBS" >&5
+echo "configure:4638: checking if we can link ncurses without $cf_ncurses_LIBS" >&5
 	cf_ncurses_SAVE="$LIBS"
 	for p in $cf_ncurses_LIBS ; do
 		q=`echo $LIBS | sed -e 's/'$p' //' -e 's/'$p'$//'`
@@ -4642,14 +4643,14 @@ echo "configure:4637: checking if we can link ncurses without $cf_ncurses_LIBS"
 		fi
 	done
 	cat > conftest.$ac_ext <<EOF
-#line 4646 "configure"
+#line 4647 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:4653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -4666,20 +4667,20 @@ fi
 slang)
 	
 echo $ac_n "checking for slang header file""... $ac_c" 1>&6
-echo "configure:4670: checking for slang header file" >&5
+echo "configure:4671: checking for slang header file" >&5
 if eval "test \"`echo '$''{'cf_cv_slang_header'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 	cat > conftest.$ac_ext <<EOF
-#line 4676 "configure"
+#line 4677 "configure"
 #include "confdefs.h"
 #include <slang.h>
 int main() {
 printf("%s\n", SLANG_VERSION)
 ; return 0; }
 EOF
-if { (eval echo configure:4683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_slang_header=predefined
 else
@@ -4763,7 +4764,7 @@ cf_cv_lib_termcap=none
 # HP-UX 9.x terminfo has setupterm, but no tigetstr.
 if test "$termlib" = none; then
 	echo $ac_n "checking for tigetstr in -ltermlib""... $ac_c" 1>&6
-echo "configure:4767: checking for tigetstr in -ltermlib" >&5
+echo "configure:4768: checking for tigetstr in -ltermlib" >&5
 ac_lib_var=`echo termlib'_'tigetstr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4771,7 +4772,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ltermlib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4775 "configure"
+#line 4776 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4782,7 +4783,7 @@ int main() {
 tigetstr()
 ; return 0; }
 EOF
-if { (eval echo configure:4786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4805,7 +4806,7 @@ fi
 fi
 if test "$cf_cv_lib_termcap" = none; then
 	echo $ac_n "checking for tgoto in -ltermlib""... $ac_c" 1>&6
-echo "configure:4809: checking for tgoto in -ltermlib" >&5
+echo "configure:4810: checking for tgoto in -ltermlib" >&5
 ac_lib_var=`echo termlib'_'tgoto | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4813,7 +4814,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ltermlib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4817 "configure"
+#line 4818 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4824,7 +4825,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:4828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4848,7 +4849,7 @@ fi
 if test "$cf_cv_lib_termcap" = none; then
 	# allow curses library for broken AIX system.
 	echo $ac_n "checking for initscr in -lcurses""... $ac_c" 1>&6
-echo "configure:4852: checking for initscr in -lcurses" >&5
+echo "configure:4853: checking for initscr in -lcurses" >&5
 ac_lib_var=`echo curses'_'initscr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4856,7 +4857,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4860 "configure"
+#line 4861 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4867,7 +4868,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:4871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4888,7 +4889,7 @@ else
 fi
 
 	echo $ac_n "checking for tgoto in -ltermcap""... $ac_c" 1>&6
-echo "configure:4892: checking for tgoto in -ltermcap" >&5
+echo "configure:4893: checking for tgoto in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgoto | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4896,7 +4897,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ltermcap  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4900 "configure"
+#line 4901 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4907,7 +4908,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:4911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4930,7 +4931,7 @@ fi
 fi
 if test "$cf_cv_lib_termcap" = none; then
 	echo $ac_n "checking for tgoto in -ltermcap""... $ac_c" 1>&6
-echo "configure:4934: checking for tgoto in -ltermcap" >&5
+echo "configure:4935: checking for tgoto in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgoto | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4938,7 +4939,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ltermcap  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4942 "configure"
+#line 4943 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4949,7 +4950,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:4953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4972,7 +4973,7 @@ fi
 fi
 if test "$cf_cv_lib_termcap" = none; then
 	echo $ac_n "checking for tgoto in -lncurses""... $ac_c" 1>&6
-echo "configure:4976: checking for tgoto in -lncurses" >&5
+echo "configure:4977: checking for tgoto in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'tgoto | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4980,7 +4981,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lncurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4984 "configure"
+#line 4985 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4991,7 +4992,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:4995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5021,12 +5022,12 @@ fi
 
 cf_slang_LIBS2="$LIBS"
 echo $ac_n "checking for acos""... $ac_c" 1>&6
-echo "configure:5025: checking for acos" >&5
+echo "configure:5026: checking for acos" >&5
 if eval "test \"`echo '$''{'ac_cv_func_acos'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5030 "configure"
+#line 5031 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char acos(); below.  */
@@ -5049,7 +5050,7 @@ acos();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_acos=yes"
 else
@@ -5068,7 +5069,7 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for acos in -lm""... $ac_c" 1>&6
-echo "configure:5072: checking for acos in -lm" >&5
+echo "configure:5073: checking for acos in -lm" >&5
 ac_lib_var=`echo m'_'acos | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5076,7 +5077,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lm $LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5080 "configure"
+#line 5081 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5087,7 +5088,7 @@ int main() {
 acos()
 ; return 0; }
 EOF
-if { (eval echo configure:5091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5127,12 +5128,12 @@ fi
 	cf_cv_have_lib_slang=no
 	cf_libdir=""
 	echo $ac_n "checking for SLtt_get_screen_size""... $ac_c" 1>&6
-echo "configure:5131: checking for SLtt_get_screen_size" >&5
+echo "configure:5132: checking for SLtt_get_screen_size" >&5
 if eval "test \"`echo '$''{'ac_cv_func_SLtt_get_screen_size'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5136 "configure"
+#line 5137 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char SLtt_get_screen_size(); below.  */
@@ -5155,7 +5156,7 @@ SLtt_get_screen_size();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_SLtt_get_screen_size=yes"
 else
@@ -5175,17 +5176,17 @@ else
 
 		cf_save_LIBS="$LIBS"
 		echo $ac_n "checking for SLtt_get_screen_size in -lslang""... $ac_c" 1>&6
-echo "configure:5179: checking for SLtt_get_screen_size in -lslang" >&5
+echo "configure:5180: checking for SLtt_get_screen_size in -lslang" >&5
 		LIBS="-lslang $LIBS"
 		cat > conftest.$ac_ext <<EOF
-#line 5182 "configure"
+#line 5183 "configure"
 #include "confdefs.h"
 #include <slang.h>
 int main() {
 SLtt_get_screen_size()
 ; return 0; }
 EOF
-if { (eval echo configure:5189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 			 cf_cv_have_lib_slang=yes
@@ -5212,17 +5213,17 @@ test "$prefix" != /usr           && cf_search="$cf_search /usr/lib /usr/lib/slan
 			for cf_libdir in $cf_search
 			do
 				echo $ac_n "checking for -lslang in $cf_libdir""... $ac_c" 1>&6
-echo "configure:5216: checking for -lslang in $cf_libdir" >&5
+echo "configure:5217: checking for -lslang in $cf_libdir" >&5
 				LIBS="-L$cf_libdir -lslang $cf_save_LIBS"
 				cat > conftest.$ac_ext <<EOF
-#line 5219 "configure"
+#line 5220 "configure"
 #include "confdefs.h"
 #include <slang.h>
 int main() {
 SLtt_get_screen_size()
 ; return 0; }
 EOF
-if { (eval echo configure:5226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 			 		 cf_cv_have_lib_slang=yes
@@ -5253,7 +5254,7 @@ esac
 
 cf_slang_LIBS3="$LIBS"
 echo $ac_n "checking if we can link slang without termcap""... $ac_c" 1>&6
-echo "configure:5257: checking if we can link slang without termcap" >&5
+echo "configure:5258: checking if we can link slang without termcap" >&5
 if test -n "`echo $cf_slang_LIBS1 | sed -e 's/ //g'`" ; then
 	cf_exclude=`echo ".$cf_slang_LIBS2" | sed -e "s@$cf_slang_LIBS1@@" -e 's@^.@@'`
 else
@@ -5261,14 +5262,14 @@ else
 fi
 LIBS=`echo ".$cf_slang_LIBS3" | sed -e "s@$cf_exclude@@" -e 's@^.@@'`
 cat > conftest.$ac_ext <<EOF
-#line 5265 "configure"
+#line 5266 "configure"
 #include "confdefs.h"
 #include <slang.h>
 int main() {
 SLtt_get_screen_size()
 ; return 0; }
 EOF
-if { (eval echo configure:5272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -5288,7 +5289,7 @@ eval cf_libdir=$libdir
 cf_libdir=`echo $cf_libdir | sed -e s@'^NONE/'@$prefix/@ -e s@'^NONE/'@$ac_default_prefix/@`
 
 echo $ac_n "checking for location of config-file""... $ac_c" 1>&6
-echo "configure:5292: checking for location of config-file" >&5
+echo "configure:5293: checking for location of config-file" >&5
 LYNX_CFG_FILE=$cf_libdir/lynx.cfg
 cat >> confdefs.h <<EOF
 #define LYNX_CFG_FILE "$LYNX_CFG_FILE"
@@ -5297,8 +5298,8 @@ EOF
 echo "$ac_t""$LYNX_CFG_FILE" 1>&6
 
 echo $ac_n "checking for location of site specific options-file""... $ac_c" 1>&6
-echo "configure:5301: checking for location of site specific options-file" >&5
-LYNX_COMPILE_OPTS=$cf_libdir/lynx_help/lynx_site.txt
+echo "configure:5302: checking for location of site specific options-file" >&5
+LYNX_COMPILE_OPTS=$cf_libdir/lynx_site.txt
 cat >> confdefs.h <<EOF
 #define LYNX_COMPILE_OPTS "$LYNX_COMPILE_OPTS"
 EOF
@@ -5307,12 +5308,12 @@ echo "$ac_t""$LYNX_COMPILE_OPTS" 1>&6
 
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:5311: checking for ANSI C header files" >&5
+echo "configure:5312: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5316 "configure"
+#line 5317 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -5320,7 +5321,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5337,7 +5338,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 5341 "configure"
+#line 5342 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -5355,7 +5356,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 5359 "configure"
+#line 5360 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -5376,7 +5377,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 5380 "configure"
+#line 5381 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -5387,7 +5388,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:5391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -5411,12 +5412,12 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:5415: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:5416: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5420 "configure"
+#line 5421 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -5425,7 +5426,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:5429: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -5450,12 +5451,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:5454: checking for $ac_hdr that defines DIR" >&5
+echo "configure:5455: checking for $ac_hdr that defines DIR" >&5
 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5459 "configure"
+#line 5460 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -5463,7 +5464,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:5467: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -5488,7 +5489,7 @@ done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:5492: checking for opendir in -ldir" >&5
+echo "configure:5493: checking for opendir in -ldir" >&5
 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5496,7 +5497,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5500 "configure"
+#line 5501 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5507,7 +5508,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:5511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5529,7 +5530,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:5533: checking for opendir in -lx" >&5
+echo "configure:5534: checking for opendir in -lx" >&5
 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5537,7 +5538,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5541 "configure"
+#line 5542 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5548,7 +5549,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:5552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5587,17 +5588,17 @@ for ac_hdr in \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5591: checking for $ac_hdr" >&5
+echo "configure:5592: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5596 "configure"
+#line 5597 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5625,13 +5626,13 @@ done
 
 
 echo $ac_n "checking termio.h and termios.h""... $ac_c" 1>&6
-echo "configure:5629: checking termio.h and termios.h" >&5
+echo "configure:5630: checking termio.h and termios.h" >&5
 if eval "test \"`echo '$''{'cf_cv_termio_and_termios'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 5635 "configure"
+#line 5636 "configure"
 #include "confdefs.h"
 
 #if HAVE_TERMIO_H
@@ -5644,7 +5645,7 @@ int main() {
 putchar (0x0a)
 ; return 0; }
 EOF
-if { (eval echo configure:5648: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_termio_and_termios=yes
 else
@@ -5667,17 +5668,17 @@ for ac_hdr in sys/wait.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5671: checking for $ac_hdr" >&5
+echo "configure:5672: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5676 "configure"
+#line 5677 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5681: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5682: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5714,17 +5715,17 @@ for ac_hdr in wait.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5718: checking for $ac_hdr" >&5
+echo "configure:5719: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5723 "configure"
+#line 5724 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5728: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5754,17 +5755,17 @@ for ac_hdr in waitstatus.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5758: checking for $ac_hdr" >&5
+echo "configure:5759: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5763 "configure"
+#line 5764 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5805,13 +5806,13 @@ fi
 
 
 echo $ac_n "checking for union wait""... $ac_c" 1>&6
-echo "configure:5809: checking for union wait" >&5
+echo "configure:5810: checking for union wait" >&5
 if eval "test \"`echo '$''{'cf_cv_type_unionwait'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 	cat > conftest.$ac_ext <<EOF
-#line 5815 "configure"
+#line 5816 "configure"
 #include "confdefs.h"
 $cf_wait_headers
 int main() {
@@ -5822,7 +5823,7 @@ int x;
 	
 ; return 0; }
 EOF
-if { (eval echo configure:5826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_type_unionwait=no
 	 echo compiles ok w/o union wait 1>&5
@@ -5833,7 +5834,7 @@ else
   rm -rf conftest*
   
 	cat > conftest.$ac_ext <<EOF
-#line 5837 "configure"
+#line 5838 "configure"
 #include "confdefs.h"
 $cf_wait_headers
 int main() {
@@ -5848,7 +5849,7 @@ union wait x;
 	
 ; return 0; }
 EOF
-if { (eval echo configure:5852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_type_unionwait=yes
 	 echo compiles ok with union wait and possibly macros too 1>&5
@@ -5875,20 +5876,20 @@ EOF
 if test $cf_cv_type_unionwait = yes; then
 
 	echo $ac_n "checking if union wait can be used as wait-arg""... $ac_c" 1>&6
-echo "configure:5879: checking if union wait can be used as wait-arg" >&5
+echo "configure:5880: checking if union wait can be used as wait-arg" >&5
 	if eval "test \"`echo '$''{'cf_cv_arg_union_wait'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 		cat > conftest.$ac_ext <<EOF
-#line 5885 "configure"
+#line 5886 "configure"
 #include "confdefs.h"
 $cf_wait_headers
 int main() {
 union wait x; wait(&x)
 ; return 0; }
 EOF
-if { (eval echo configure:5892: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_arg_union_wait=yes
 else
@@ -5908,20 +5909,20 @@ EOF
 
 
 	echo $ac_n "checking if union wait can be used as waitpid-arg""... $ac_c" 1>&6
-echo "configure:5912: checking if union wait can be used as waitpid-arg" >&5
+echo "configure:5913: checking if union wait can be used as waitpid-arg" >&5
 	if eval "test \"`echo '$''{'cf_cv_arg_union_waitpid'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 		cat > conftest.$ac_ext <<EOF
-#line 5918 "configure"
+#line 5919 "configure"
 #include "confdefs.h"
 $cf_wait_headers
 int main() {
 union wait x; waitpid(0, &x, 0)
 ; return 0; }
 EOF
-if { (eval echo configure:5925: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5926: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_arg_union_waitpid=yes
 else
@@ -5943,12 +5944,12 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:5947: checking for uid_t in sys/types.h" >&5
+echo "configure:5948: checking for uid_t in sys/types.h" >&5
 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5952 "configure"
+#line 5953 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -5977,7 +5978,7 @@ EOF
 fi
 
 echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6
-echo "configure:5981: checking type of array argument to getgroups" >&5
+echo "configure:5982: checking type of array argument to getgroups" >&5
 if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5985,7 +5986,7 @@ else
   ac_cv_type_getgroups=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 5989 "configure"
+#line 5990 "configure"
 #include "confdefs.h"
 
 /* Thanks to Mike Rendell for this test.  */
@@ -6010,7 +6011,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:6014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
     ac_cv_type_getgroups=gid_t
 else
@@ -6024,7 +6025,7 @@ fi
 
 if test $ac_cv_type_getgroups = cross; then
         cat > conftest.$ac_ext <<EOF
-#line 6028 "configure"
+#line 6029 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 EOF
@@ -6048,12 +6049,12 @@ EOF
 
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:6052: checking for pid_t" >&5
+echo "configure:6053: checking for pid_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6057 "configure"
+#line 6058 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6081,12 +6082,12 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:6085: checking for uid_t in sys/types.h" >&5
+echo "configure:6086: checking for uid_t in sys/types.h" >&5
 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6090 "configure"
+#line 6091 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -6115,12 +6116,12 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:6119: checking for mode_t" >&5
+echo "configure:6120: checking for mode_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6124 "configure"
+#line 6125 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6151,17 +6152,17 @@ fi
 
 ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:6155: checking for vfork.h" >&5
+echo "configure:6156: checking for vfork.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6160 "configure"
+#line 6161 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6165: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6166: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6186,18 +6187,18 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:6190: checking for working vfork" >&5
+echo "configure:6191: checking for working vfork" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
   echo $ac_n "checking for vfork""... $ac_c" 1>&6
-echo "configure:6196: checking for vfork" >&5
+echo "configure:6197: checking for vfork" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6201 "configure"
+#line 6202 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vfork(); below.  */
@@ -6220,7 +6221,7 @@ vfork();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_vfork=yes"
 else
@@ -6241,7 +6242,7 @@ fi
 
 else
   cat > conftest.$ac_ext <<EOF
-#line 6245 "configure"
+#line 6246 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -6336,7 +6337,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:6340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_vfork_works=yes
 else
@@ -6360,13 +6361,13 @@ fi
 
 
 echo $ac_n "checking if we should use fcntl or ioctl""... $ac_c" 1>&6
-echo "configure:6364: checking if we should use fcntl or ioctl" >&5
+echo "configure:6365: checking if we should use fcntl or ioctl" >&5
 if eval "test \"`echo '$''{'cf_cv_fionbio'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 6370 "configure"
+#line 6371 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -6378,7 +6379,7 @@ int main() {
 	
 ; return 0; }
 EOF
-if { (eval echo configure:6382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_fionbio=ioctl
 else
@@ -6387,7 +6388,7 @@ else
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 6391 "configure"
+#line 6392 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -6404,7 +6405,7 @@ int main() {
 	
 ; return 0; }
 EOF
-if { (eval echo configure:6408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_fionbio=fcntl
 else
@@ -6427,20 +6428,20 @@ EOF
 
 
 echo $ac_n "checking for broken/missing definition of remove""... $ac_c" 1>&6
-echo "configure:6431: checking for broken/missing definition of remove" >&5
+echo "configure:6432: checking for broken/missing definition of remove" >&5
 if eval "test \"`echo '$''{'cf_cv_baddef_remove'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 6437 "configure"
+#line 6438 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 remove("dummy")
 ; return 0; }
 EOF
-if { (eval echo configure:6444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_baddef_remove=no
 else
@@ -6448,7 +6449,7 @@ else
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 6452 "configure"
+#line 6453 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 		int __unlink(name) { return unlink(name); } 
@@ -6456,7 +6457,7 @@ int main() {
 remove("dummy")
 ; return 0; }
 EOF
-if { (eval echo configure:6460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_baddef_remove=yes
 else
@@ -6480,13 +6481,13 @@ EOF
 
 
 echo $ac_n "checking for lstat""... $ac_c" 1>&6
-echo "configure:6484: checking for lstat" >&5
+echo "configure:6485: checking for lstat" >&5
 if eval "test \"`echo '$''{'ac_cv_func_lstat'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 6490 "configure"
+#line 6491 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -6495,7 +6496,7 @@ int main() {
 lstat(".", (struct stat *)0)
 ; return 0; }
 EOF
-if { (eval echo configure:6499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_cv_func_lstat=yes
 else
@@ -6527,12 +6528,12 @@ for ac_func in \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6531: checking for $ac_func" >&5
+echo "configure:6532: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6536 "configure"
+#line 6537 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6555,7 +6556,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6585,12 +6586,12 @@ for ac_func in \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6589: checking for $ac_func" >&5
+echo "configure:6590: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6594 "configure"
+#line 6595 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6613,7 +6614,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6644,12 +6645,12 @@ for ac_func in strstr
 do
 
 echo $ac_n "checking for $ac_func declaration""... $ac_c" 1>&6
-echo "configure:6648: checking for $ac_func declaration" >&5
+echo "configure:6649: checking for $ac_func declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_func_decl_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6653 "configure"
+#line 6654 "configure"
 #include "confdefs.h"
 #include <string.h>
 int main() {
@@ -6658,11 +6659,11 @@ extern	int	${ac_func}();
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:6662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 6666 "configure"
+#line 6667 "configure"
 #include "confdefs.h"
 #include <string.h>
 int main() {
@@ -6671,7 +6672,7 @@ int	(*p)() = ${ac_func};
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:6675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 eval "ac_cv_func_decl_$ac_func=yes"
@@ -6713,12 +6714,12 @@ for ac_func in getgrgid getgrnam
 do
 
 echo $ac_n "checking for $ac_func declaration""... $ac_c" 1>&6
-echo "configure:6717: checking for $ac_func declaration" >&5
+echo "configure:6718: checking for $ac_func declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_func_decl_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6722 "configure"
+#line 6723 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -6729,11 +6730,11 @@ extern	int	${ac_func}();
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:6733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6734: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 6737 "configure"
+#line 6738 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -6744,7 +6745,7 @@ int	(*p)() = ${ac_func};
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:6748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6749: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 eval "ac_cv_func_decl_$ac_func=yes"
@@ -6786,13 +6787,13 @@ done
 
 
 echo $ac_n "checking if TRUE/FALSE are defined""... $ac_c" 1>&6
-echo "configure:6790: checking if TRUE/FALSE are defined" >&5
+echo "configure:6791: checking if TRUE/FALSE are defined" >&5
 if eval "test \"`echo '$''{'cf_cv_bool_defs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 6796 "configure"
+#line 6797 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header-curses.h}>
@@ -6801,7 +6802,7 @@ int main() {
 int x = TRUE, y = FALSE
 ; return 0; }
 EOF
-if { (eval echo configure:6805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6806: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_bool_defs=yes
 else
@@ -6828,13 +6829,13 @@ fi
 
 
 echo $ac_n "checking declaration of errno""... $ac_c" 1>&6
-echo "configure:6832: checking declaration of errno" >&5
+echo "configure:6833: checking declaration of errno" >&5
 if eval "test \"`echo '$''{'cf_cv_dcl_errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 6838 "configure"
+#line 6839 "configure"
 #include "confdefs.h"
 
 #if HAVE_STDLIB_H
@@ -6847,7 +6848,7 @@ int main() {
 long x = (long) errno
 ; return 0; }
 EOF
-if { (eval echo configure:6851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6852: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval 'cf_cv_dcl_'errno'=yes'
 else
@@ -6877,9 +6878,9 @@ cf_result=`echo $cf_result | tr '[a-z]' '[A-Z]'`
 EOF
 
     echo $ac_n "checking existence of errno""... $ac_c" 1>&6
-echo "configure:6881: checking existence of errno" >&5
+echo "configure:6882: checking existence of errno" >&5
         cat > conftest.$ac_ext <<EOF
-#line 6883 "configure"
+#line 6884 "configure"
 #include "confdefs.h"
 
 #undef errno
@@ -6889,7 +6890,7 @@ int main() {
 errno = 2
 ; return 0; }
 EOF
-if { (eval echo configure:6893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval 'cf_cv_have_'errno'=yes'
 else
@@ -6919,20 +6920,20 @@ EOF
 
 
 echo $ac_n "checking for setlocale()""... $ac_c" 1>&6
-echo "configure:6923: checking for setlocale()" >&5
+echo "configure:6924: checking for setlocale()" >&5
 if eval "test \"`echo '$''{'cf_cv_locale'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 6929 "configure"
+#line 6930 "configure"
 #include "confdefs.h"
 #include <locale.h>
 int main() {
 setlocale(LC_ALL, "")
 ; return 0; }
 EOF
-if { (eval echo configure:6936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_locale=yes
 else
@@ -6953,13 +6954,13 @@ EOF
 
 
 echo $ac_n "checking if NGROUPS is defined""... $ac_c" 1>&6
-echo "configure:6957: checking if NGROUPS is defined" >&5
+echo "configure:6958: checking if NGROUPS is defined" >&5
 if eval "test \"`echo '$''{'cf_cv_ngroups'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 6963 "configure"
+#line 6964 "configure"
 #include "confdefs.h"
 
 #if HAVE_SYS_PARAM_H
@@ -6973,7 +6974,7 @@ int main() {
 int x = NGROUPS
 ; return 0; }
 EOF
-if { (eval echo configure:6977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ngroups=yes
 else
@@ -6981,7 +6982,7 @@ else
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 6985 "configure"
+#line 6986 "configure"
 #include "confdefs.h"
 
 #if HAVE_SYS_PARAM_H
@@ -6995,7 +6996,7 @@ int main() {
 int x = NGROUPS_MAX
 ; return 0; }
 EOF
-if { (eval echo configure:6999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ngroups=NGROUPS_MAX
 else
@@ -7029,13 +7030,13 @@ for cf_name in sys_nerr sys_errlist
 do
     
 echo $ac_n "checking declaration of $cf_name""... $ac_c" 1>&6
-echo "configure:7033: checking declaration of $cf_name" >&5
+echo "configure:7034: checking declaration of $cf_name" >&5
 if eval "test \"`echo '$''{'cf_cv_dcl_$cf_name'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 7039 "configure"
+#line 7040 "configure"
 #include "confdefs.h"
 
 #if HAVE_STDLIB_H
@@ -7048,7 +7049,7 @@ int main() {
 long x = (long) $cf_name
 ; return 0; }
 EOF
-if { (eval echo configure:7052: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval 'cf_cv_dcl_'$cf_name'=yes'
 else
@@ -7078,9 +7079,9 @@ cf_result=`echo $cf_result | tr '[a-z]' '[A-Z]'`
 EOF
 
     echo $ac_n "checking existence of $cf_name""... $ac_c" 1>&6
-echo "configure:7082: checking existence of $cf_name" >&5
+echo "configure:7083: checking existence of $cf_name" >&5
         cat > conftest.$ac_ext <<EOF
-#line 7084 "configure"
+#line 7085 "configure"
 #include "confdefs.h"
 
 #undef $cf_name
@@ -7090,7 +7091,7 @@ int main() {
 $cf_name = 2
 ; return 0; }
 EOF
-if { (eval echo configure:7094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval 'cf_cv_have_'$cf_name'=yes'
 else
@@ -7121,13 +7122,13 @@ done
 
 
 echo $ac_n "checking if struct utmp is declared""... $ac_c" 1>&6
-echo "configure:7125: checking if struct utmp is declared" >&5
+echo "configure:7126: checking if struct utmp is declared" >&5
 if eval "test \"`echo '$''{'cf_cv_have_utmp'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 	cat > conftest.$ac_ext <<EOF
-#line 7131 "configure"
+#line 7132 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -7136,7 +7137,7 @@ int main() {
 struct utmp x; char *y = &x.ut_host[0]
 ; return 0; }
 EOF
-if { (eval echo configure:7140: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7141: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_have_utmp=yes
 else
@@ -7144,14 +7145,14 @@ else
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 7148 "configure"
+#line 7149 "configure"
 #include "confdefs.h"
 #include <utmpx.h>
 int main() {
 struct utmpx x; char *y = &x.ut_host[0]
 ; return 0; }
 EOF
-if { (eval echo configure:7155: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_have_utmp=utmpx
 else
@@ -7182,7 +7183,7 @@ EOF
 if test $cf_cv_screen != slang ; then
 	
 echo $ac_n "checking if curses supports alternate-character set""... $ac_c" 1>&6
-echo "configure:7186: checking if curses supports alternate-character set" >&5
+echo "configure:7187: checking if curses supports alternate-character set" >&5
 if eval "test \"`echo '$''{'cf_cv_alt_char_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7190,7 +7191,7 @@ else
 for mapname in acs_map _acs_map
 do
 	cat > conftest.$ac_ext <<EOF
-#line 7194 "configure"
+#line 7195 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header-curses.h}>
@@ -7199,7 +7200,7 @@ int main() {
 chtype x = $mapname['l']; $mapname['m'] = 0
 ; return 0; }
 EOF
-if { (eval echo configure:7203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_alt_char_set=$mapname
 	 break
@@ -7222,13 +7223,13 @@ EOF
 
 	
 echo $ac_n "checking if curses supports fancy attributes""... $ac_c" 1>&6
-echo "configure:7226: checking if curses supports fancy attributes" >&5
+echo "configure:7227: checking if curses supports fancy attributes" >&5
 if eval "test \"`echo '$''{'cf_cv_fancy_curses'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 	cat > conftest.$ac_ext <<EOF
-#line 7232 "configure"
+#line 7233 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header-curses.h}>
@@ -7241,7 +7242,7 @@ attrset(A_UNDERLINE|A_BOLD|A_REVERSE);
 	
 ; return 0; }
 EOF
-if { (eval echo configure:7245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_fancy_curses=yes
 else
@@ -7261,7 +7262,7 @@ EOF
 
 
 	echo $ac_n "checking for ncurses version""... $ac_c" 1>&6
-echo "configure:7265: checking for ncurses version" >&5
+echo "configure:7266: checking for ncurses version" >&5
 if eval "test \"`echo '$''{'cf_cv_ncurses_version'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7286,7 +7287,7 @@ Autoconf "old"
 #endif
 EOF
 	cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
-	{ (eval echo configure:7290: \"$cf_try\") 1>&5; (eval $cf_try) 2>&5; }
+	{ (eval echo configure:7291: \"$cf_try\") 1>&5; (eval $cf_try) 2>&5; }
 	if test -f conftest.out ; then
 		cf_out=`cat conftest.out | sed -e 's@^Autoconf @@' -e 's@^[^"]*"@@' -e 's@".*@@'`
 		test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
@@ -7295,7 +7296,7 @@ EOF
 
 else
   cat > conftest.$ac_ext <<EOF
-#line 7299 "configure"
+#line 7300 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header-curses.h}>
@@ -7318,7 +7319,7 @@ int main()
 	exit(0);
 }
 EOF
-if { (eval echo configure:7322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   
 	cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -7338,13 +7339,13 @@ echo "$ac_t""$cf_cv_ncurses_version" 1>&6
 
 if test "$cf_cv_ncurses_version" != no ; then
 echo $ac_n "checking for obsolete/broken version of ncurses""... $ac_c" 1>&6
-echo "configure:7342: checking for obsolete/broken version of ncurses" >&5
+echo "configure:7343: checking for obsolete/broken version of ncurses" >&5
 if eval "test \"`echo '$''{'cf_cv_ncurses_broken'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 7348 "configure"
+#line 7349 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header-curses.h}>
@@ -7358,7 +7359,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:7362: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7363: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ncurses_broken=no
 else
@@ -7383,13 +7384,13 @@ fi
 
 	
 echo $ac_n "checking if curses supports color attributes""... $ac_c" 1>&6
-echo "configure:7387: checking if curses supports color attributes" >&5
+echo "configure:7388: checking if curses supports color attributes" >&5
 if eval "test \"`echo '$''{'cf_cv_color_curses'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 	cat > conftest.$ac_ext <<EOF
-#line 7393 "configure"
+#line 7394 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header-curses.h}>
@@ -7404,7 +7405,7 @@ chtype x = COLOR_BLUE;
 	
 ; return 0; }
 EOF
-if { (eval echo configure:7408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_color_curses=yes
 else
@@ -7431,7 +7432,7 @@ fi
 
 	
 echo $ac_n "checking declaration of size-change""... $ac_c" 1>&6
-echo "configure:7435: checking declaration of size-change" >&5
+echo "configure:7436: checking declaration of size-change" >&5
 if eval "test \"`echo '$''{'cf_cv_sizechange'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7445,7 +7446,7 @@ do
     CFLAGS="$cf_save_CFLAGS"
     test -n "$cf_opts" && CFLAGS="$CFLAGS -D$cf_opts"
     cat > conftest.$ac_ext <<EOF
-#line 7449 "configure"
+#line 7450 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if HAVE_TERMIOS_H
@@ -7484,7 +7485,7 @@ int main() {
 	
 ; return 0; }
 EOF
-if { (eval echo configure:7488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_sizechange=yes
 else
@@ -7516,20 +7517,20 @@ EOF
 
 	
 echo $ac_n "checking if ttytype is declared in curses library""... $ac_c" 1>&6
-echo "configure:7520: checking if ttytype is declared in curses library" >&5
+echo "configure:7521: checking if ttytype is declared in curses library" >&5
 if eval "test \"`echo '$''{'cf_cv_have_ttytype'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 	cat > conftest.$ac_ext <<EOF
-#line 7526 "configure"
+#line 7527 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 char *x = &ttytype[1]; *x = 1
 ; return 0; }
 EOF
-if { (eval echo configure:7533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7534: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   cf_cv_have_ttytype=yes
 else
@@ -7556,12 +7557,12 @@ EOF
 	
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7560: checking for $ac_func" >&5
+echo "configure:7561: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7565 "configure"
+#line 7566 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7584,7 +7585,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:7589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7613,32 +7614,8 @@ fi
 
 
 
-echo $ac_n "checking if experimental 8-bit case-conversion should be used""... $ac_c" 1>&6
-echo "configure:7618: checking if experimental 8-bit case-conversion should be used" >&5
-
-# Check whether --enable-8bit-toupper or --disable-8bit-toupper was given.
-if test "${enable_8bit_toupper+set}" = set; then
-  enableval="$enable_8bit_toupper"
-  test "$enableval" != yes && enableval=no
-  if test "$enableval" != "no" ; then
-    use_8bit_toupper=$enableval 
-  else
-    use_8bit_toupper=no
-  fi
-else
-  enableval=no 
-  use_8bit_toupper=no
-  
-fi
-
-echo "$ac_t""$use_8bit_toupper" 1>&6
-test $use_8bit_toupper != no && cat >> confdefs.h <<\EOF
-#define EXP_8BIT_TOUPPER 1
-EOF
-
-
 echo $ac_n "checking if experimental forms-based options screen should be used""... $ac_c" 1>&6
-echo "configure:7642: checking if experimental forms-based options screen should be used" >&5
+echo "configure:7619: checking if experimental forms-based options screen should be used" >&5
 
 # Check whether --enable-forms-options or --disable-forms-options was given.
 if test "${enable_forms_options+set}" = set; then
@@ -7662,7 +7639,7 @@ EOF
 
 
 echo $ac_n "checking if experimental persistent-cookie logic should be used""... $ac_c" 1>&6
-echo "configure:7666: checking if experimental persistent-cookie logic should be used" >&5
+echo "configure:7643: checking if experimental persistent-cookie logic should be used" >&5
 
 # Check whether --enable-persistent-cookies or --disable-persistent-cookies was given.
 if test "${enable_persistent_cookies+set}" = set; then
@@ -7686,7 +7663,7 @@ EOF
 
 
 echo $ac_n "checking if color-style code should be used""... $ac_c" 1>&6
-echo "configure:7690: checking if color-style code should be used" >&5
+echo "configure:7667: checking if color-style code should be used" >&5
 
 # Check whether --enable-color-style or --disable-color-style was given.
 if test "${enable_color_style+set}" = set; then
@@ -7734,7 +7711,7 @@ EOF
 	echo "$ac_t""yes" 1>&6
 
 	echo $ac_n "checking for location of style-sheet file""... $ac_c" 1>&6
-echo "configure:7738: checking for location of style-sheet file" >&5
+echo "configure:7715: checking for location of style-sheet file" >&5
 	LYNX_LSS_FILE=$cf_libdir/lynx.lss
 	cat >> confdefs.h <<EOF
 #define LYNX_LSS_FILE "$LYNX_LSS_FILE"
@@ -7747,7 +7724,7 @@ esac
 
 
 echo $ac_n "checking if partial-display should be used""... $ac_c" 1>&6
-echo "configure:7751: checking if partial-display should be used" >&5
+echo "configure:7728: checking if partial-display should be used" >&5
 
 # Check whether --enable-partial or --disable-partial was given.
 if test "${enable_partial+set}" = set; then
@@ -7776,7 +7753,7 @@ test ".$ac_cv_func_use_default_colors" = ".yes" && use_dft_colors=maybe
 
 if test "$use_dft_colors" != no ; then
 echo $ac_n "checking if you want to use default-colors""... $ac_c" 1>&6
-echo "configure:7780: checking if you want to use default-colors" >&5
+echo "configure:7757: checking if you want to use default-colors" >&5
 
 # Check whether --enable-default-colors or --disable-default-colors was given.
 if test "${enable_default_colors+set}" = set; then
@@ -7801,7 +7778,7 @@ EOF
 fi
 
 echo $ac_n "checking if you want to use extended HTML DTD logic""... $ac_c" 1>&6
-echo "configure:7805: checking if you want to use extended HTML DTD logic" >&5
+echo "configure:7782: checking if you want to use extended HTML DTD logic" >&5
 
 # Check whether --enable-extended-dtd or --disable-extended-dtd was given.
 if test "${enable_extended_dtd+set}" = set; then
@@ -7825,7 +7802,7 @@ EOF
 
 
 echo $ac_n "checking if you want to use external commands""... $ac_c" 1>&6
-echo "configure:7829: checking if you want to use external commands" >&5
+echo "configure:7806: checking if you want to use external commands" >&5
 
 # Check whether --enable-externs or --disable-externs was given.
 if test "${enable_externs+set}" = set; then
@@ -7849,7 +7826,7 @@ EOF
 
 
 echo $ac_n "checking if you want to use setfont support""... $ac_c" 1>&6
-echo "configure:7853: checking if you want to use setfont support" >&5
+echo "configure:7830: checking if you want to use setfont support" >&5
 
 # Check whether --enable-font-switch or --disable-font-switch was given.
 if test "${enable_font_switch+set}" = set; then
@@ -7873,7 +7850,7 @@ EOF
 
 
 echo $ac_n "checking if you want cgi-link support""... $ac_c" 1>&6
-echo "configure:7877: checking if you want cgi-link support" >&5
+echo "configure:7854: checking if you want cgi-link support" >&5
 
 # Check whether --enable-cgi-links or --disable-cgi-links was given.
 if test "${enable_cgi_links+set}" = set; then
@@ -7891,8 +7868,46 @@ fi
 
 echo "$ac_t""$enableval" 1>&6
 
+echo $ac_n "checking if you want exec-links support""... $ac_c" 1>&6
+echo "configure:7873: checking if you want exec-links support" >&5
+
+# Check whether --enable-exec-links or --disable-exec-links was given.
+if test "${enable_exec_links+set}" = set; then
+  enableval="$enable_exec_links"
+  test "$enableval" != yes && enableval=no
+  if test "$enableval" != "no" ; then
+    cat >> confdefs.h <<\EOF
+#define EXEC_LINKS 1
+EOF
+ 
+  fi
+else
+  enableval=no   
+fi
+
+echo "$ac_t""$enableval" 1>&6
+
+echo $ac_n "checking if you want exec-scripts support""... $ac_c" 1>&6
+echo "configure:7892: checking if you want exec-scripts support" >&5
+
+# Check whether --enable-exec-scripts or --disable-exec-scripts was given.
+if test "${enable_exec_scripts+set}" = set; then
+  enableval="$enable_exec_scripts"
+  test "$enableval" != yes && enableval=no
+  if test "$enableval" != "no" ; then
+    cat >> confdefs.h <<\EOF
+#define EXEC_SCRIPTS 1
+EOF
+ 
+  fi
+else
+  enableval=no   
+fi
+
+echo "$ac_t""$enableval" 1>&6
+
 echo $ac_n "checking if you want internal-links feature""... $ac_c" 1>&6
-echo "configure:7896: checking if you want internal-links feature" >&5
+echo "configure:7911: checking if you want internal-links feature" >&5
 
 # Check whether --enable-internal-links or --disable-internal-links was given.
 if test "${enable_internal_links+set}" = set; then
@@ -7916,7 +7931,7 @@ EOF
 
 
 echo $ac_n "checking if you want to fork NSL requests""... $ac_c" 1>&6
-echo "configure:7920: checking if you want to fork NSL requests" >&5
+echo "configure:7935: checking if you want to fork NSL requests" >&5
 
 # Check whether --enable-nsl-fork or --disable-nsl-fork was given.
 if test "${enable_nsl_fork+set}" = set; then
@@ -7940,7 +7955,7 @@ EOF
 
 
 echo $ac_n "checking if you want to log URL requests via syslog""... $ac_c" 1>&6
-echo "configure:7944: checking if you want to log URL requests via syslog" >&5
+echo "configure:7959: checking if you want to log URL requests via syslog" >&5
 
 # Check whether --enable-syslog or --disable-syslog was given.
 if test "${enable_syslog+set}" = set; then
@@ -7964,7 +7979,7 @@ EOF
 
 
 echo $ac_n "checking if you want to underline links""... $ac_c" 1>&6
-echo "configure:7968: checking if you want to underline links" >&5
+echo "configure:7983: checking if you want to underline links" >&5
 
 # Check whether --enable-underlines or --disable-underlines was given.
 if test "${enable_underlines+set}" = set; then
@@ -7988,7 +8003,7 @@ EOF
 
 
 echo $ac_n "checking if help files should be gzip'ed""... $ac_c" 1>&6
-echo "configure:7992: checking if help files should be gzip'ed" >&5
+echo "configure:8007: checking if help files should be gzip'ed" >&5
 
 # Check whether --enable-gzip-help or --disable-gzip-help was given.
 if test "${enable_gzip_help+set}" = set; then
@@ -8017,7 +8032,7 @@ fi
 
 
 echo $ac_n "checking if you want to use zlib for decompression of some gzip files""... $ac_c" 1>&6
-echo "configure:8021: checking if you want to use zlib for decompression of some gzip files" >&5
+echo "configure:8036: checking if you want to use zlib for decompression of some gzip files" >&5
 
 # Check whether --with-zlib or --without-zlib was given.
 if test "${with_zlib+set}" = set; then
@@ -8034,12 +8049,12 @@ if test ".$use_zlib" != ".no" ; then
 	cf_cv_have_lib_z=no
 	cf_libdir=""
 	echo $ac_n "checking for gzopen""... $ac_c" 1>&6
-echo "configure:8038: checking for gzopen" >&5
+echo "configure:8053: checking for gzopen" >&5
 if eval "test \"`echo '$''{'ac_cv_func_gzopen'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8043 "configure"
+#line 8058 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gzopen(); below.  */
@@ -8062,7 +8077,7 @@ gzopen();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:8081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_gzopen=yes"
 else
@@ -8082,17 +8097,17 @@ else
 
 		cf_save_LIBS="$LIBS"
 		echo $ac_n "checking for gzopen in -lz""... $ac_c" 1>&6
-echo "configure:8086: checking for gzopen in -lz" >&5
+echo "configure:8101: checking for gzopen in -lz" >&5
 		LIBS="-lz $LIBS"
 		cat > conftest.$ac_ext <<EOF
-#line 8089 "configure"
+#line 8104 "configure"
 #include "confdefs.h"
 #include <zlib.h>
 int main() {
 gzopen("name","mode")
 ; return 0; }
 EOF
-if { (eval echo configure:8096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:8111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 			 cf_cv_have_lib_z=yes
@@ -8119,17 +8134,17 @@ test "$prefix" != /usr           && cf_search="$cf_search /usr/lib /usr/lib/z"
 			for cf_libdir in $cf_search
 			do
 				echo $ac_n "checking for -lz in $cf_libdir""... $ac_c" 1>&6
-echo "configure:8123: checking for -lz in $cf_libdir" >&5
+echo "configure:8138: checking for -lz in $cf_libdir" >&5
 				LIBS="-L$cf_libdir -lz $cf_save_LIBS"
 				cat > conftest.$ac_ext <<EOF
-#line 8126 "configure"
+#line 8141 "configure"
 #include "confdefs.h"
 #include <zlib.h>
 int main() {
 gzopen("name","mode")
 ; return 0; }
 EOF
-if { (eval echo configure:8133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:8148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 			 		 cf_cv_have_lib_z=yes
@@ -8170,7 +8185,7 @@ fi
 # All DirEd functions that were enabled on compilation can be disabled
 # or modified at run time via DIRED_MENU symbols in lynx.cfg.
 echo $ac_n "checking if directory-editor code should be used""... $ac_c" 1>&6
-echo "configure:8174: checking if directory-editor code should be used" >&5
+echo "configure:8189: checking if directory-editor code should be used" >&5
 
 # Check whether --enable-dired or --disable-dired was given.
 if test "${enable_dired+set}" = set; then
@@ -8196,7 +8211,7 @@ EOF
 
 
 	echo $ac_n "checking if you wish to allow extracting from archives via DirEd""... $ac_c" 1>&6
-echo "configure:8200: checking if you wish to allow extracting from archives via DirEd" >&5
+echo "configure:8215: checking if you wish to allow extracting from archives via DirEd" >&5
 	
 # Check whether --enable-dired-archive or --disable-dired-archive was given.
 if test "${enable_dired_archive+set}" = set; then
@@ -8215,7 +8230,7 @@ fi
 	echo "$ac_t""$enableval" 1>&6
 
 	echo $ac_n "checking if you wish to allow users to redefine DirEd keys""... $ac_c" 1>&6
-echo "configure:8219: checking if you wish to allow users to redefine DirEd keys" >&5
+echo "configure:8234: checking if you wish to allow users to redefine DirEd keys" >&5
 	
 # Check whether --enable-dired-override or --disable-dired-override was given.
 if test "${enable_dired_override+set}" = set; then
@@ -8241,7 +8256,7 @@ fi
 	echo "$ac_t""$enableval" 1>&6
 
 	echo $ac_n "checking if you wish to allow permissions commands via DirEd""... $ac_c" 1>&6
-echo "configure:8245: checking if you wish to allow permissions commands via DirEd" >&5
+echo "configure:8260: checking if you wish to allow permissions commands via DirEd" >&5
 	
 # Check whether --enable-dired-permit or --disable-dired-permit was given.
 if test "${enable_dired_permit+set}" = set; then
@@ -8267,7 +8282,7 @@ fi
 	echo "$ac_t""$enableval" 1>&6
 
 	echo $ac_n "checking if you wish to allow executable-permission commands via DirEd""... $ac_c" 1>&6
-echo "configure:8271: checking if you wish to allow executable-permission commands via DirEd" >&5
+echo "configure:8286: checking if you wish to allow executable-permission commands via DirEd" >&5
 	
 # Check whether --enable-dired-xpermit or --disable-dired-xpermit was given.
 if test "${enable_dired_xpermit+set}" = set; then
@@ -8286,7 +8301,7 @@ fi
 	echo "$ac_t""$enableval" 1>&6
 
 	echo $ac_n "checking if you wish to allow "tar" commands from DirEd""... $ac_c" 1>&6
-echo "configure:8290: checking if you wish to allow "tar" commands from DirEd" >&5
+echo "configure:8305: checking if you wish to allow "tar" commands from DirEd" >&5
 	
 # Check whether --enable-dired-tar or --disable-dired-tar was given.
 if test "${enable_dired_tar+set}" = set; then
@@ -8312,7 +8327,7 @@ fi
 	echo "$ac_t""$enableval" 1>&6
 
 	echo $ac_n "checking if you wish to allow "uudecode" commands from DirEd""... $ac_c" 1>&6
-echo "configure:8316: checking if you wish to allow "uudecode" commands from DirEd" >&5
+echo "configure:8331: checking if you wish to allow "uudecode" commands from DirEd" >&5
 	
 # Check whether --enable-dired-uudecode or --disable-dired-uudecode was given.
 if test "${enable_dired_uudecode+set}" = set; then
@@ -8338,7 +8353,7 @@ fi
 	echo "$ac_t""$enableval" 1>&6
 
 	echo $ac_n "checking if you wish to allow "zip" and "unzip" commands from DirEd""... $ac_c" 1>&6
-echo "configure:8342: checking if you wish to allow "zip" and "unzip" commands from DirEd" >&5
+echo "configure:8357: checking if you wish to allow "zip" and "unzip" commands from DirEd" >&5
 	
 # Check whether --enable-dired-zip or --disable-dired-zip was given.
 if test "${enable_dired_zip+set}" = set; then
@@ -8364,7 +8379,7 @@ fi
 	echo "$ac_t""$enableval" 1>&6
 
 	echo $ac_n "checking if you wish to allow "gzip" and "gunzip" commands from DirEd""... $ac_c" 1>&6
-echo "configure:8368: checking if you wish to allow "gzip" and "gunzip" commands from DirEd" >&5
+echo "configure:8383: checking if you wish to allow "gzip" and "gunzip" commands from DirEd" >&5
 	
 # Check whether --enable-dired-gzip or --disable-dired-gzip was given.
 if test "${enable_dired_gzip+set}" = set; then
@@ -8391,7 +8406,7 @@ fi
 fi
 
 echo $ac_n "checking if you want long-directory listings""... $ac_c" 1>&6
-echo "configure:8395: checking if you want long-directory listings" >&5
+echo "configure:8410: checking if you want long-directory listings" >&5
 
 # Check whether --enable-long-list or --disable-long-list was given.
 if test "${enable_long_list+set}" = set; then
@@ -8417,7 +8432,7 @@ fi
 echo "$ac_t""$enableval" 1>&6
 
 echo $ac_n "checking if parent-directory references are permitted""... $ac_c" 1>&6
-echo "configure:8421: checking if parent-directory references are permitted" >&5
+echo "configure:8436: checking if parent-directory references are permitted" >&5
 
 # Check whether --enable-parent-dir-refs or --disable-parent-dir-refs was given.
 if test "${enable_parent_dir_refs+set}" = set; then
diff --git a/configure.in b/configure.in
index 1348a472..9516eb67 100644
--- a/configure.in
+++ b/configure.in
@@ -352,7 +352,7 @@ AC_DEFINE_UNQUOTED(LYNX_CFG_FILE,"$LYNX_CFG_FILE")
 AC_MSG_RESULT($LYNX_CFG_FILE)
 
 AC_MSG_CHECKING(for location of site specific options-file)
-LYNX_COMPILE_OPTS=$cf_libdir/lynx_help/lynx_site.txt
+LYNX_COMPILE_OPTS=$cf_libdir/lynx_site.txt
 AC_DEFINE_UNQUOTED(LYNX_COMPILE_OPTS,"$LYNX_COMPILE_OPTS")
 AC_MSG_RESULT($LYNX_COMPILE_OPTS)
 
@@ -447,14 +447,6 @@ dnl --------------------------------------------------------------------------
 CF_HELP_MESSAGE(
 Miscellaneous Options:)
 
-AC_MSG_CHECKING(if experimental 8-bit case-conversion should be used)
-CF_ARG_ENABLE(8bit-toupper,
-[  --enable-8bit-toupper   use experimental 8-bit case-conversion],
-	[use_8bit_toupper=$enableval],
-	[use_8bit_toupper=no])
-AC_MSG_RESULT($use_8bit_toupper)
-test $use_8bit_toupper != no && AC_DEFINE(EXP_8BIT_TOUPPER)
-
 AC_MSG_CHECKING(if experimental forms-based options screen should be used)
 CF_ARG_ENABLE(forms-options,
 [  --enable-forms-options  use experimental forms-based options],
@@ -558,6 +550,18 @@ CF_ARG_ENABLE(cgi-links,
 	[AC_DEFINE(LYNXCGI_LINKS)])
 AC_MSG_RESULT($enableval)
 
+AC_MSG_CHECKING(if you want exec-links support)
+CF_ARG_ENABLE(exec-links,
+[  --enable-exec-links     support cgi links w/o a http daemon],
+	[AC_DEFINE(EXEC_LINKS)])
+AC_MSG_RESULT($enableval)
+
+AC_MSG_CHECKING(if you want exec-scripts support)
+CF_ARG_ENABLE(exec-scripts,
+[  --enable-exec-scripts   support cgi links w/o a http daemon],
+	[AC_DEFINE(EXEC_SCRIPTS)])
+AC_MSG_RESULT($enableval)
+
 AC_MSG_CHECKING(if you want internal-links feature)
 CF_ARG_ENABLE(internal-links,
 [  --enable-internal-links handle following links to same doc differently],
diff --git a/docs/IBMPC-charsets.announce b/docs/IBMPC-charsets.announce
index 870abe5b..a06abf82 100644
--- a/docs/IBMPC-charsets.announce
+++ b/docs/IBMPC-charsets.announce
@@ -9,10 +9,11 @@ General Information
 ===================
 Lynx comes with built-in translation tables to map the 8-bit character codes or
 character entities coming in from an HTML document to their equivalent codes,
-where possible, for various character sets.  You should choose display
-character set in Lynx Options Menu according to your font installed locally. 
-Please contact lynx-dev mailing list if you want any new codepage not listed
-there.
+where possible, for various character sets.
+
+IMPORTANT:  you should choose display character set in Lynx Options Menu
+according to your font installed locally.  Please contact lynx-dev mailing list
+if you want any new codepage not listed there.
 
 Note that all points of the connection between the display at your end and Lynx
 at the remote end must be 8-bit clean.  If the high bit is being stripped at
@@ -50,7 +51,7 @@ you're not.  If you see box and line-drawing characters and mismatched letters
 and so on, you are likely displaying 7 bit data, not 8.  Ensure that all points
 of your connection are 8-bit clean:
 
-	On any remote UNIX systems you must pass through, do 
+	On any remote UNIX systems you must pass through, do
 		'stty cs8 -istrip' or 'stty pass8'.  'stty -a' should list
 		your settings.
 	On any remote VMS systems, do 'set terminal /eightbit'.
@@ -62,9 +63,9 @@ of your connection are 8-bit clean:
 		8 bit, some 8-bit character sequences, including those passed
 		by Lynx as well as those which are for your terminal type
 		(vt100, etc.) will be processed by Procomm as ANSI screen
-		control codes and will most likely result in a garbled display. 
+		control codes and will most likely result in a garbled display.
 		Set it to 7 bit.
-	If going through a dialup terminal server, you may have to set the 
+	If going through a dialup terminal server, you may have to set the
 		terminal server itself to pass 8 bit data.  How to do this
 		varies with the make of the server, and in some cases only a
 		system admin in charge of the box will have the authorization
diff --git a/docs/README.chartrans b/docs/README.chartrans
index 81aedd45..780c530f 100644
--- a/docs/README.chartrans
+++ b/docs/README.chartrans
@@ -1,22 +1,22 @@
 Lynx CHARTRANS
 
  Features (in addition to those which Lynx 2.7.1 already has):
- 
+
  - Can (attempt to) translate from any document charset to any display
-   character set, *IF* the document charset is known by a translation 
+   character set, *IF* the document charset is known by a translation
    table (compiled in at installation).
 
  - New method to define character sets: used for input charset as well
-   as display character set, translation tables compiled in from 
+   as display character set, translation tables compiled in from
    separate files (one per charset).  One table is designated as default
    and can be used for fallback translation to 7-bit replacements for
    display.
 
  - New method for specifying translations of SGML entities.
 
- - Unicode (UTF8) support: can (attempt to) decode and translate UTF8 to
+ - Unicode (UTF-8) support: can (attempt to) decode and translate UTF-8 to
    display character set, or pass through UTF to display (if terminal
-   or console understands UTF8).  [raw display of UTF only tested with Slang 
+   or console understands UTF-8).  [raw display of UTF only tested with Slang
    so far, does not always position everything correctly on screen]
 
  - Support for CHARSET attribute on A tag (and sometimes LINK), as in HTML
@@ -25,7 +25,7 @@ Lynx CHARTRANS
 
  - Support for ACCEPT-CHARSET attribute of FORM tags.
 
- - EXPERIMENTAL, currently enabled only for Linux console: 
+ - EXPERIMENTAL, currently enabled only for Linux console:
    can (attempt to) automatically switch terminal mode and load new
    code pages on change of display character set.
 
@@ -68,7 +68,7 @@ Requirements:  same as for Lynx in general :)
 The chartrans code is now merged with Wayne Buttle's changes for
 32-bit MS Windows and DOS/DJGPP, with Thomas Dickey's and Jim Spath's
 emerging auto-configure mechanism, and with BUGFIXES from Foteos
-Macrides.  See the accompanying file CHANGES.new for the current
+Macrides.  See the accompanying file CHANGES for the current
 status.
 
 
@@ -78,12 +78,6 @@ which are then interpreted as control chars, there is no protection
 against if strange things are defined in the table files.
 
 
-HOW TO GET SOURCES:
-
-The development code is available at
-         <URL: http://sol.slcc.edu/lynx/current/>
-in various formats.
-
 HOW TO INSTALL:
 
 (4) before compiling:
@@ -113,13 +107,13 @@ HOW TO INSTALL:
 (6) Some things to look at if compilation fails:
 
     In src/chrtrans/UCkd.h there is a typedef for an unsigned 16bit
-    numeric type which may need to be changed for your system.  
+    numeric type which may need to be changed for your system.
     See comment near top there.
 
     For recompiling Lynx, `make clean' should not be necessary if only
-    files in src/chrtrans have been changed.  On the other hand 
+    files in src/chrtrans have been changed.  On the other hand
     may not propagate to the src/chrtrans directory (depending how things
-    are going with auto-config), you may have to cd to that directory 
+    are going with auto-config), you may have to cd to that directory
     and `make clean' there to really clean up there.
 
 (7) To customize (add/change translation tables etc.):
@@ -131,7 +125,7 @@ HOW TO INSTALL:
 
      Note that definition of new character entities (if e.g. you want
      Lynx to recognize &Zcaron;) are not covered by these table files,
-     they have to be listed in entities.h.  
+     they have to be listed in entities.h.
 
      _If you are on a Linux system_ and using Lynx on the console (i.e.
      not xterm, not a dialup *into* the Linux box), you can compile
@@ -140,29 +134,29 @@ HOW TO INSTALL:
      change the console state.  You need to have the Linux kbd package
      installed, with a working `setfont' command executable by the user,
      and the right font files - check the source in src/UCAuto.c for
-     the files used and/or to change them!  
+     the files used and/or to change them!
      NOTE that with this enabled,
      - Lynx currently will not clean up the console state at exit,
        it will probably left like the last Display Character Set you used.
      - Loading a font is global across _all_ virtual text consoles, so
        using Lynx (compiled with this flag) may change the appearance of
-       text on other consoles (if that text contains characters 
-       beyond ASCII).
+       text on other consoles (if that text contains characters
+       beyond US-ASCII).
 
 (8) Some suggested Web pages for testing:
 
     <URL:  http://www.tezcat.com/~kweide/lynx-chartrans/test/>
 
     <URL:  http://www.isoc.org:8080/>,
-      especially 
+      especially
     <URL:  http://www.isoc.org:8080/liste_ml.htm>.
 
     <URL:  http://www.accentsoft.com/un/un-all.htm>
 
-(9) Please report bugs, unexpected behavior, etc. 
+(9) Please report bugs, unexpected behavior, etc.
     to <lynx-dev@sig.net>.
 
-    Suggestions for improvement would be welcome, as well as 
+    Suggestions for improvement would be welcome, as well as
     contributed translation tables (for stuff that is not available
     at ftp://dkuug.dk or ftp://ftp.unicode.org).
 
diff --git a/lynx.cfg b/lynx.cfg
index a2e6e571..369a0559 100644
--- a/lynx.cfg
+++ b/lynx.cfg
@@ -169,13 +169,13 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 # default is defined in userdefs.h and can be changed here, and via the
 # 'o'ptions menu.  The 'o'ptions menu setting will be stored in the user's RC
 # file whenever those settings are saved, and thereafter will be used as the
-# default.  For Lynx a "character set" has two names:  a Display Character Set
-# string for the Options screen and for setting CHARACTER_SET here, and a
-# corresponding MIME name (for recognizing properly labeled charset parameters
-# in HTTP headers etc.).  Not all Display Character Set names correspond to
-# exactly one valid MIME charset (for example "Chinese", "Transparent"), in
+# default.  For Lynx a "character set" has two names:  MIME name (for
+# recognizing properly labeled charset parameters in HTTP headers etc.), and a
+# human-readable string for the 'O'ptions Menu (so you may find info about
+# language or group of languages besides MIME name).  Not all 'human-readable'
+# names correspond to exactly one valid MIME charset (example is "Chinese"), in
 # that case an appropriate valid (and more specific) MIME name should be used
-# where required.
+# where required.  Well-known synonyms are also processed in the code.
 #
 # Lynx normally translates characters from document's charset to display
 # charset, using ASSUME_CHARSET value (see below) if document's charset is not
@@ -205,52 +205,58 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 # control characters filtered out, etc.  There is a "Transparent" pseudo
 # character set for more "rawness".
 #
-# The default character sets include:
-#    Display Character Set name		MIME name
-#    ==========================		=========
-#    7 bit approximations		us-ascii
-#    Chinese				euc-cn
-#    DEC Multinational			dec-mcs
-#    DosArabic (cp864)			cp864
-#    DosBaltRim (cp775) 		cp775
-#    DosCyrillic (cp866)		cp866
-#    DosGreek (cp737)			cp737
-#    DosGreek2 (cp869)			cp869
-#    DosHebrew (cp862)			cp862
-#    DosLatin1 (cp850)			cp850
-#    DosLatin2 (cp852)			cp852
-#    DosLatinUS (cp437) 		cp437
-#    ISO 8859-10			iso-8859-10
-#    ISO 8859-5 Cyrillic		iso-8859-5
-#    ISO 8859-6 Arabic			iso-8859-6
-#    ISO 8859-7 Greek			iso-8859-7
-#    ISO 8859-8 Hebrew			iso-8859-8
-#    ISO 8859-9 (Latin 5)		iso-8859-9
-#    ISO Latin 1			iso-8859-1
-#    ISO Latin 2			iso-8859-2
-#    ISO Latin 3			iso-8859-3
-#    ISO Latin 4			iso-8859-4
-#    Japanese (EUC)			euc-jp
-#    Japanese (SJIS)			shift_jis
-#    KOI8-R Cyrillic			koi8-r
-#    Korean				euc-kr
-#    Macintosh (8 bit)			macintosh
-#    NeXT character set 		next
-#    RFC 1345 Mnemonic			mnemonic
-#    RFC 1345 w/o Intro 		mnemonic+ascii+0
-#    Taipei (Big5)			big5
-#    Transparent			x-transparent
-#    UNICODE UTF 8			utf-8
-#    Vietnamese (VISCII)		viscii
-#    WinArabic (cp1256) 		windows-1256
-#    WinBaltRim (cp1257)		windows-1257
-#    WinCyrillic (cp1251)		windows-1251
-#    WinGreek (cp1253)			windows-1253
-#    WinHebrew (cp1255) 		windows-1255
-#    WinLatin1 (cp1252) 		windows-1252
-#    WinLatin2 (cp1250) 		windows-1250
-#
-#CHARACTER_SET:ISO Latin 1
+# Since Lynx now supports a wide range of platforms it may be useful to note
+# that cpXXX codepages used by IBM PC compatible computers, and windows-xxxx
+# used by native MS-Windows apps.  We also note that cpXXX pages rerely found
+# on Internet but mostly for local needs on DOS.
+#
+# Recognized character sets include:
+#
+#    string for 'O'ptions Menu          MIME name
+#    ===========================        =========
+#    7 bit approximations (US-ASCII)    us-ascii
+#    Western (ISO-8859-1)               iso-8859-1
+#    Western (cp850)                    cp850
+#    Western (windows-1252)             windows-1251
+#    IBM PC US codepage (cp437)         cp437
+#    DEC Multinational                  dec-mcs
+#    Macintosh (8 bit)                  macintosh
+#    NeXT character set                 next
+#    Chinese                            euc-cn
+#    Japanese (EUC-JP)                  euc-jp
+#    Japanese (Shift_JIS)               shift_jis
+#    Korean                             euc-kr
+#    Taipei (Big5)                      big5
+#    Vietnamese (VISCII)                viscii
+#    Eastern European (ISO-8859-2)      iso-8859-2
+#    Eastern European (cp852)           cp852
+#    Eastern European (windows-1250)    windows-1250
+#    Latin 3 (ISO-8859-3)               iso-8859-3
+#    Latin 4 (ISO-8859-4)               iso-8859-4
+#    Baltic Rim (cp775)                 cp775
+#    Baltic Rim (windows-1257)          windows-1257
+#    Cyrillic (ISO-8859-5)              is-8859-5
+#    Cyrillic (cp866)                   cp866
+#    Cyrillic (windows-1251)            windows-1251
+#    Cyrillic (KOI8-R)                  koi8-r
+#    Arabic (ISO-8859-6)                iso-8859-6
+#    Arabic (cp864)                     cp864
+#    Arabic (windows-1256)              windows-1256
+#    Greek (ISO-8859-7)                 iso-8859-7
+#    Greek (cp737)                      cp737
+#    Greek2 (cp869)                     cp869
+#    Greek (windows-1253)               windows-1253
+#    Hebrew (ISO-8859-8)                iso-8859-8
+#    Hebrew (cp862)                     cp862
+#    Hebrew (windows-1255)              windows-1255
+#    Turkish (ISO-8859-9)               iso-8859-9
+#    ISO-8859-10                        iso-8859-10
+#    UNICODE (UTF-8)                    utf-8
+#    RFC 1345 w/o Intro                 mnemonic+ascii+0
+#    RFC 1345 Mnemonic                  mnemonic
+#    Transparent                        x-transparent
+#
+#CHARACTER_SET:iso-8859-1
 
 # ASSUME_CHARSET changes the handling of documents which do not
 # explicitly specify a charset.  Normally Lynx assumes that 8-bit
@@ -304,6 +310,13 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #NCR_IN_BOOKMARKS:FALSE
 
+# FORCE_8BIT_TOUPPER overrides locale settings and uses internal 8-bit
+# case-conversion mechanism for case-insensitive searches in non-ASCII display
+# character set, FALSE by default (should not be changed unless you encounter
+# problems with case-insensitive searches).
+#
+#FORCE_8BIT_TOUPPER:FALSE
+
 # If Lynx encounters a charset parameter it doesn't recognize, it will
 # replace the value given by ASSUME_UNREC_CHARSET (or a corresponding
 # -assume_unrec_charset command line option) for it.  This can be used
@@ -787,6 +800,11 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #COOKIE_ACCEPT_DOMAINS:
 #COOKIE_REJECT_DOMAINS:
 
+# COOKIE_FILE is the default file to store persistent downloaded cookies
+# in, if Lynx was compiled with EXP_PERSISTENT_COOKIES. The cookie file
+# can also be specified in .lynxrc or on the commandline.
+#COOKIE_FILE:~/.lynx_cookies
+
 # VMS:
 #=====
 # The mail command and qualifiers are defined in userdefs.h.  Lynx
diff --git a/lynx_help/Lynx_users_guide.html b/lynx_help/Lynx_users_guide.html
index 43f4163e..5cc2ea98 100644
--- a/lynx_help/Lynx_users_guide.html
+++ b/lynx_help/Lynx_users_guide.html
@@ -18,7 +18,7 @@ well as files on remote systems running <em>http</em>, <em>gopher</em>,
 <em>cso</em>/<em>ph</em>/<em>qi</em> servers, and services accessible via
 logins to <em>telnet</em>, <em>tn3270</em> or <em>rlogin</em> accounts (see
 <a href="lynx_url_support.html">URL Schemes Supported by Lynx</a>).
-<a href="#32">Current</a> versions of Lynx run on Unix, VMS,
+<a href="#Hist">Current</a> versions of Lynx run on Unix, VMS,
 Windows95/NT, 386DOS and OS/2 EMX.
 
 <p>Lynx can be used to access information on the <em>WWW</em>, or to build
@@ -27,57 +27,58 @@ has been used to build several <em>Campus Wide Information Systems</em>
 (<em>CWIS</em>).  In addition, Lynx can be used to build systems isolated
 within a single LAN.
 
-<h2><A NAME="TOC"><em>Table of Contents</em></A></h2>
+<h2 ID="TOC"><A NAME="Contents"><em>Table of Contents</em></A></h2>
 
 <ul>
-<li><A HREF="#1">Lynx online help</A>
-<li><A HREF="#2">Viewing local files with Lynx</A>
-<li><A HREF="#3">Leaving Lynx</A>
-<li><A HREF="#4">Starting Lynx with a Remote File</A>
-<li><A HREF="#5">Starting Lynx with the WWW_HOME environment variable.</A>
-<li><A HREF="#6">Navigating hypertext documents with Lynx</A>
-<li><A HREF="#7">Printing, Mailing, and Saving rendered files to disk.</A>
-<li><A HREF="#8">Viewing the HTML document source and editing documents</A>
-<li><A HREF="#9">Downloading and Saving source files.</A>
-<li><A HREF="#10">Reloading files and refreshing the display</A>
-<li><A HREF="#11">Lynx searching commands</A>
-<li><A HREF="#12">Lynx Options Menu</A>
-<li><A HREF="#13">Comments and mailto: links</A>
-<li><A HREF="#14">USENET News posting</A>
-<li><A HREF="#15">Lynx bookmarks</A>
-<li><A HREF="#16">Jump command</A>
-<li><A HREF="#17">Directory Editing</A>
-<li><A HREF="#18">Scrolling and Other useful commands</A>
-<li><a href="#19">Lynx and HTML Forms</a>
-<li><a href="#20">Lynx and HTML Tables</a>
-| <a href="#21">Lynx and HTML Tabs</a>
-<li><a href="#22">Lynx and HTML Frames</a>
-| <a href="#23">Lynx and HTML Banners</a>
-<li><a href="#24">Lynx and HTML Footnotes</a>
-| <a href="#25">Lynx and HTML Notes</a>
-<li><a href="#26">Lynx and HTML Lists</a>
-<li><a href="#27">Lynx and HTML Quotes</a>
-<li><a href="#28">Lynx and Client-Side-Image-Maps</a>
-<li><a href="#29">Lynx and Client-Side-Pull</a>
-<li><a href="#30">Lynx and State Management</a> (Me want <em>cookie</em>!)
-<li><A HREF="#31">The Lynx command line</A>
-<li><A HREF="#32">Lynx development history</A>
+<li><A HREF="#Help"  NAME="ToC-Help">Lynx online help</A>
+<li><A HREF="#Local" NAME="ToC-Local">Viewing local files with Lynx</A>
+<li><A HREF="#Leaving" NAME="ToC-Leaving">Leaving Lynx</A>
+<li><A HREF="#Remote" NAME="ToC-Remote">Starting Lynx with a Remote File</A>
+<li><A HREF="#EnVar" NAME="ToC-EnVar">Starting Lynx with the WWW_HOME environment variable.</A>
+<li><A HREF="#IntraDocNav" NAME="ToC-IntraDocNav">Navigating hypertext documents with Lynx</A>
+<li><A HREF="#Disposing" NAME="ToC-Disposing">Printing, Mailing, and Saving rendered files to disk.</A>
+<li><A HREF="#LocalSource" NAME="ToC-LocalSource">Viewing the HTML document source and editing documents</A>
+<li><A HREF="#RemoteSource" NAME="ToC-RemoteSource">Downloading and Saving source files.</A>
+<li><A HREF="#ReDo" NAME="ToC-ReDo">Reloading files and refreshing the display</A>
+<li><A HREF="#Search" NAME="ToC-Search">Lynx searching commands</A>
+<li><A HREF="#InteractiveOptions" NAME="ToC-InteractiveOptions">Lynx Options Menu</A>
+<li><A HREF="#Mail" NAME="ToC-Mail">Comments and mailto: links</A>
+<li><A HREF="#News" NAME="ToC-News">USENET News posting</A>
+<li><A HREF="#Bookmarks" NAME="ToC-Bookmarks">Lynx bookmarks</A>
+<li><A HREF="#Jumps" NAME="ToC-Jumps">Jump command</A>
+<li><A HREF="#DirEd" NAME="ToC-DirEd">Directory Editing</A>
+<li><A HREF="#MiscKeys" NAME="ToC-MiscKeys">Scrolling and Other useful commands</A>
+<li><a href="#Forms" NAME="ToC-Forms">Lynx and HTML Forms</a>
+<li><a href="#Tables" NAME="ToC-Tables">Lynx and HTML Tables</a>
+| <a href="#Tabs" NAME="ToC-Tabs">Lynx and HTML Tabs</a>
+<li><a href="#Frames" NAME="ToC-Frames">Lynx and HTML Frames</a>
+| <a href="#Banners" NAME="ToC-Banners">Lynx and HTML Banners</a>
+<li><a href="#Footnotes" NAME="ToC-Footnotes">Lynx and HTML Footnotes</a>
+| <a href="#Notes" NAME="ToC-Notes">Lynx and HTML Notes</a>
+<li><a href="#Lists" NAME="ToC-Lists">Lynx and HTML Lists</a>
+<li><a href="#Quotes" NAME="ToC-Quotes">Lynx and HTML Quotes</a>
+<li><a href="#USEMAP" NAME="ToC-USEMAP">Lynx and Client-Side-Image-Maps</a>
+<li><a href="#Refresh" NAME="ToC-Refresh">Lynx and Client-Side-Pull</a>
+<li><a href="#Cookies" NAME="ToC-Cookies">Lynx and State Management</a> (Me want <em>cookie</em>!)
+<li><A HREF="#Invoking" NAME="ToC-Invoking">The Lynx command line</A>
+<li><A HREF="#Hist" NAME="ToC-Hist">Lynx development history</A>
 </ul>
 
-<h2><A NAME="1"><em>Lynx online help</em></A></h2>
+<h2 ID="Help"><A NAME="Help"><em>Lynx online help</em></A></h2>
 
 Online help is available while viewing any document.  Press the
-'<em>?</em>' or '<em>H</em>' key (or the '<em>h</em> key if vi-like
-key movement is not on) to see a list of help topics.  See the section
-titled <A HREF="#6">Navigating hypertext documents with Lynx</A> for
-information on navigating through the help files.
+'<em>?</em>' or '<em>H</em>' key (or the '<em>h</em> key if
+vi-like key movement is not on) to see a list of help topics.
+See the section titled <A HREF="#IntraDocNav">Navigating
+hypertext documents with Lynx</A> for information on navigating
+through the help files.
 
 <p>In addition, a summary description of all the Lynx keystroke commands
 and their key bindings is available by pressing the '<em>K</em>' key (or
 the '<em>k</em>' key if vi-like key movement is not on).
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Help">ToC</A>]
 
-<h2><A NAME="2"><em>Viewing local files with Lynx</em></A></h2>
+<h2 ID="Local"><A NAME="Local"><em>Viewing local files with Lynx</em></A></h2>
 
 Lynx can be started by entering the Lynx command along with
 the name of a file to display.	For example these commands could
@@ -153,16 +154,16 @@ present the user with a list of options. The only default option is
 <em>Save to disk</em>, which is disabled if Lynx is running in anonymous
 mode. Any number of additional download methods may be defined in the
 lynx.cfg file by the system administrator. Programs like kermit, zmodem
-and FTP are some possible options. [<A HREF="#TOC">ToC</A>]
+and FTP are some possible options. [<A HREF="#ToC-Local">ToC</A>]
 
-<h2><A NAME="3"><em>Leaving Lynx</em></A></h2>
+<h2 ID="Leaving"><A NAME="Leaving"><em>Leaving Lynx</em></A></h2>
 
 To exit Lynx use the '<em>q</em>' command.  You will be asked whether
 you really want to quit.  Answering '<em>y</em>' will exit and '<em>n</em>'
 will return you to the current document. Use '<em>Q</em>' or
-<em>Control-D</em> to quit without verification. [<A HREF="#TOC">ToC</A>]
+<em>Control-D</em> to quit without verification. [<A HREF="#ToC-Leaving">ToC</A>]
 
-<h2><A NAME="4"><em>Starting Lynx with a Remote File</em></A></h2>
+<h2 ID="Remote"><A NAME="Remote"><em>Starting Lynx with a Remote File</em></A></h2>
 
 If you wish to view a remote file (that is, a file residing on
 some computer system other than the one upon which you are running
@@ -219,10 +220,10 @@ portions of it in the startfile argument.  For example:<br>
 <tab indent="62">will be expanded to:<br>
 <tab indent="14"><em>ftp://ftp.more.net/pub</em><br>
 See <a href="lynx_url_support.html">URL Schemes Supported by Lynx</a> for
-more detailed information.  [<A HREF="#TOC">ToC</A>]
+more detailed information.  [<A HREF="#ToC-Remote">ToC</A>]
 
-<h2><A NAME="5"
-><em>Starting Lynx with the WWW_HOME environment variable.</em></A></h2>
+<h2 ID="EnVar"><A NAME="EnVar">
+<em>Starting Lynx with the WWW_HOME environment variable.</em></A></h2>
 
 You may also specify a starting file for Lynx using the WWW_HOME
 environment variable,
@@ -242,9 +243,9 @@ environment variable,
 </dl>
 
 Note that on VMS the double-quoting <em>must</em> be included to preserve
-casing.
+casing.  [<A HREF="#ToC-EnVar">ToC</A>]
 
-<h2><A NAME="6"><em>Navigating hypertext documents with Lynx</em></A></h2>
+<h2 ID="IntraDocNav"><A NAME="IntraDocNav"><em>Navigating hypertext documents with Lynx</em></A></h2>
 
 The process of moving within a hypertext web, selecting and displaying
 links is known as "navigation." With Lynx almost all navigation can be
@@ -268,7 +269,7 @@ accomplished with the arrow keys and the numeric keypad.
 There are also a few other keyboard commands to aid in navigation.  The
 Control and Function keys used for navigation within the current document
 are described in <A
-HREF="#18"><em>Scrolling and Other useful commands</em></A>.  Some
+HREF="#MiscKeys"><em>Scrolling and Other useful commands</em></A>.  Some
 additional commands depend on the fact that Lynx keeps a list of each
 link you visited to reach the current document, called the <a
 href="keystrokes/history_help.html">History Page</a>, and a
@@ -297,40 +298,39 @@ program you are using was configured.
 will automatically prompt for a username and a password. If you give the
 correct information, you will then be served the requested information.
 Lynx will automatically send your username and password to the same server
-if it is needed again. [<A HREF="#TOC">ToC</A>]
+if it is needed again. [<A HREF="#ToC-IntraDocNav">ToC</A>]
 
-<h2><A NAME="7"
+<h2 ID="Disposing"><A NAME="Disposing"
 ><em>Printing, Mailing, and Saving rendered files to disk.</em></A></h2>
 
-To print, mail or save the document you have on-screen, enter '<em>p</em>',
-which displays a menu of <em>Print Options</em>, including 4 pre-defined:
-`Save to local file', `E-mail the file', `Print to screen'
-and `Print to local printer attached to vt100'.
-<p>
-`Print to screen' allows file transfers in the absence of alternatives
-and is often the only option allowed here for anonymous users;
-`Print to local printer' prefixes the `Print to screen' routine
-with the VT100 standard `printer on' escape sequence and appends to it
-the escape sequences for `form feed' and `printer off';
-the 3rd & 4th options are not pre-defined for DOS/WINDOWS ports.
-<p>
-In most configurations, all Lynx users (including anonymous users)
-can mail files to themselves and print the entire file to the screen;
-users with named accounts (or individuals using Lynx on a personal computer)
-can also save documents to files in their disk space;
-if you have access to lynx.cfg, you can define your own options:
-see the detailed advice in lynx.cfg.
-<p>
-Some options prompt for an output filename.  These are saved
-in a circular buffer, and any previous entries can be retrieved
-for re-use by pressing the <em>up-arrow</em> or <em>down-arrow</em> keys
-at the prompt.
-<p>
-NB if you want exact copies of text files without expansion of TABs
-to spaces you should use the <a href="#9">Download</a> options.
-[<A HREF="#TOC">ToC</A>]
-
-<h2><A NAME="8"
+Rendered HTML documents, and plain text files, may be printed using the
+'<em>p</em>' command while viewing the document.  After pressing the
+'<em>p</em>' key a menu of <em>Print Options</em> will be displayed.  The
+menu will vary according to several factors.  First, some sites set up
+special accounts to let users run Lynx to access local information systems.
+Typically these accounts require no passwords and do not require users to
+identify themselves.  As a result such accounts are called "anonymous"
+accounts, and their users are considered "anonymous" users.  In most
+configurations, all Lynx users (including anonymous users) are able to
+mail files to themselves and print the entire file to the screen.
+
+<p>Additional print options are available for users who are using
+Lynx from their own accounts (that is, so-called "non-anonymous
+users").  In particular, the <em>Save to a local file</EM>
+option allows you to save the document into a file on your disk
+space.	Any number of additional print options may also be
+available as configured by your system administrator.
+
+<p>Some options, such as <em>Save to a local file</em>, involve prompting
+for an output filename.  All output filename entries are saved in a
+circular buffer, and any previous entries can be retrieved for re-use by
+pressing the <em>up-arrow</em> or <em>down-arrow</em> keys at the prompt.
+
+<p>Note that if you want exact copies of text files without any expansions
+of TAB characters to spaces you should use the <a href="#RemoteSource">
+Download</a> options. [<A HREF="#ToC-Disposing">ToC</A>]
+
+<h2 ID="LocalSource"><A NAME="LocalSource"
 ><em>Viewing the HTML document source and editing documents</em></A></h2>
 
 When viewing HTML documents it is possible to retrieve and display the
@@ -343,7 +343,7 @@ When viewing unrendered documents you may print them as any normal document.
 <p>Selecting the <em>Print to a local file</em> option from the Print Menu,
 makes it possible to save the source of the document to disk so that you
 may have a local copy of the document source, but it is better to <a
-href="#9">Download</a> the source.
+href="#RemoteSource">Download</a> the source.
 
 <p>NOTE: When saving an HTML document it is important to name the
 document with a <em>.html</em> extension, if you want to read it with
@@ -367,32 +367,35 @@ documents by using the '<em>e</em>' command.  When the '<em>e</em>'
 command is entered your specified editor is spawned to edit the file.
 After changes are completed, exit your editor and you will return to Lynx.
 Lynx will reload and render the file so that changes can be immediately
-examined. [<A HREF="#TOC">ToC</A>]
-
-<h2><A NAME="9"><em>Downloading and Saving source files.</em></A></h2>
-
-If the DOWNLOAD keystroke command ('<em>d</em>' or <em>D</em>) is used
-when positioned on a link for an HTML, plain text, or binary file, Lynx
-will transfer the file, without rendering or modification, into a temporary
-location and present the user with a list of options, as when a link for a
-binary file of a type for which no viewer has been mapped is activated.
-As described above, the only default <em>Download option</em> is
-<em>Save to disk</em>, which is disabled if Lynx is running in
-anonymous mode, and any number of additional download methods such as
-kermit and zmodem may be defined in the <em>lynx.cfg</em> file by the
-system administrator.  Downloading the sources of HTML and plain text
-files, instead of toggling to <a href="#8">display the source</a>
-('<em>\</em>') and then using <a href="#7">Printing</a> options, ensures
-that no modifications of the source (e.g., expansions of TAB characters
-to a series of spaces) will occur.
+examined. [<A HREF="#ToC-LocalSource">ToC</A>]
+
+<h2 ID="RemoteSource"><A NAME="RemoteSource">
+<em>Downloading and Saving source files.</em></A></h2>
+
+If the DOWNLOAD keystroke command ('<em>d</em>' or <em>D</em>) is
+used when positioned on a link for an HTML, plain text, or binary
+file, Lynx will transfer the file, without rendering or
+modification, into a temporary location and present the user with
+a list of options, as when a link for a binary file of a type for
+which no viewer has been mapped is activated.  As described
+above, the only default <em>Download option</em> is <em>Save to
+disk</em>, which is disabled if Lynx is running in anonymous
+mode, and any number of additional download methods such as
+kermit and zmodem may be defined in the <em>lynx.cfg</em> file by
+the system administrator.  Downloading the sources of HTML and
+plain text files, instead of toggling to <a
+href="#LocalSource">display the source</a> ('<em>\</em>') and
+then using <a href="#Disposing">Printing</a> options, ensures
+that no modifications of the source (e.g., expansions of TAB
+characters to a series of spaces) will occur.
 
 <p>Some options, such as <em>Save to disk</em>, involve prompting for an
 output filename.  All output filename entries are saved in a circular buffer,
 and any previous entries can be retrieved for re-use by pressing the
 <em>up-arrow</em> or <em>down-arrow</em> keys at the prompt.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-RemoteSource">ToC</A>]
 
-<h2><A NAME="10"
+<h2 ID="ReDo"><A NAME="ReDo"
 ><em>Reloading files and refreshing the display</em></A></h2>
 
 The RELOAD (<em>Control-R</em>) command will reload and re-render the file
@@ -407,24 +410,26 @@ cache from a previous request or submission exits.  The request or submission
 will include <em>Pragma: no-cache</em> and <em>Cache-Control: no-cache</em>
 in its headers.  Note that FORMs with POST content will be resubmitted
 regardless of whether the NOCACHE or ACTIVATE command is used (see <A
-HREF="#19"><em>Lynx and HTML Forms</em></A>). [<A HREF="#TOC">ToC</A>]
+HREF="#Forms"><em>Lynx and HTML Forms</em></A>).
+[<A HREF="#ToC-ReDo">ToC</A>]
 
-<h2><A NAME="11"><em>Lynx searching commands</em></A></h2>
+<h2 ID="Search"><A NAME="Search"><em>Lynx searching commands</em></A></h2>
 
 Two commands activate searching in Lynx: '<em>/</em>' and '<em>s</em>'.
 
-<p>While viewing a normal document use the '<em>/</em>' command to find a
-word or phrase within the current document.  The search type will depend on
-the search option setting in the <a href="#12">Options Menu</a>.  The search
-options are case sensitive and case insensitive.  These searches are entirely
-local to Lynx.
+<p>While viewing a normal document use the '<em>/</em>' command
+to find a word or phrase within the current document.  The search
+type will depend on the search option setting in the <a
+href="#InteractiveOptions">Options Menu</a>.  The search options
+are case sensitive and case insensitive.  These searches are
+entirely local to Lynx.
 
 <p>Some documents are designated <em>index documents</em> by virtue of an
 ISINDEX element in their HEAD section.	These documents can be used to
 retrieve additional information based on searches using words or phrases
-submitted to an index server.  The Lynx status line will indicate that you
+submitted to an index server.  The Lynx statusline will indicate that you
 are viewing such a document, and if so, the '<em>s</em>' key will invoke a
-status line prompt to enter a query string.  The prompt can be specified via
+statusline prompt to enter a query string.  The prompt can be specified via
 a PROMPT attribute in the ISINDEX element.  Otherwise, Lynx will use an
 internally configured prompt.  The address for submitting the search can be
 specified via an HREF or ACTION attribute.  Otherwise, Lynx will use the
@@ -442,7 +447,7 @@ documents, or if the current document is reloaded.  The search cycles to the
 top of the document if the word or phrase is not located below your current
 position.
 
-<p>Although <a href="#19">HTML Forms</a> have largely replaced index
+<p>Although <a href="#Forms">HTML Forms</a> have largely replaced index
 documents for searches via http servers, they are still useful for performing
 searches directly via WAIS or Gopher servers in conjunction with the internal
 gateways for such servers.  For example, an HTML index document can act as a
@@ -451,9 +456,9 @@ strings for searching it, and include an element such as:<BR>
 <tab indent="12"><em>&lt;ISINDEX <tab id="idx">PROMPT="Enter WAIS query:"<BR>
 <tab to="idx">HREF="wais://net.bio.net/biologists-addresses"&gt;</em><BR>
 for submitting a search of the Biologist's Addresses database directly
-to the net.bio.net WAIS server. [<A HREF="#TOC">ToC</A>]
+to the net.bio.net WAIS server. [<A HREF="#ToC-Search">ToC</A>]
 
-<h2><A NAME="12"><em>Lynx Options Menu</em></A></h2>
+<h2 ID="InteractiveOptions"><A NAME="InteractiveOptions"><em>Lynx Options Menu</em></A></h2>
 
 The Lynx <em>Options Menu</em> may be accessed by pressing the '<em>o</em>'
 key.  The current <em>Options Menu</em> contains the following configurable
@@ -495,13 +500,14 @@ to get back to the <em>Command?</em> prompt.
 to toggle the choices and press the <em>Return</em> key to finish the
 change.
 
-<p>For fields where you potentially have more than two choices, popup
-windows may be evoked which function homologously to those for select
-fields in <a href="#19">HTML Forms</a>.  The popup windows will be invoked
-only if you have popups for select fields set to ON (see below).  Otherwise,
-your cursor will be positioned at the current choice, and you can press any
-key to cycle through the choices, then press the <em>Return</em> key to
-finish the change.
+<p>For fields where you potentially have more than two choices,
+popup windows may be evoked which function homologously to those
+for select fields in <a href="#Forms">HTML Forms</a>.  The popup
+windows will be invoked only if you have popups for select fields
+set to ON (see below).  Otherwise, your cursor will be positioned
+at the current choice, and you can press any key to cycle through
+the choices, then press the <em>Return</em> key to finish the
+change.
 
 <p>When you are done changing options use the '<em>r</em>' command to
 return to Lynx or the '<em>&gt;</em>' command to save the options to a
@@ -543,7 +549,8 @@ return to Lynx or the '<em>&gt;</em>' command to save the options to a
 	    href="keystrokes/edit_help.html">Line Editor</a>.
 	    Bookmark files allow frequently traveled links to be stored in
 	    personal easy to access files.  Using the '<em>a</em>'dd bookmark
-	    link command (see <a href="#15">Lynx bookmarks</a>) you may save
+	    link command (see <a href="#Bookmarks">
+	    Lynx bookmarks</a>) you may save
 	    any link that does not have associated POST content into a
 	    bookmark file.  All bookmark files must be in or under your
 	    account's home directory.  If the location specified does not
@@ -612,7 +619,10 @@ return to Lynx or the '<em>&gt;</em>' command to save the options to a
 	    according to your terminal's character set so that characters
 	    other than 7-bit ASCII can be displayed correctly, using
 	    approximations if necessary.  You must have the selected
-	    character set installed on your terminal.
+	    character set installed on your terminal. (Since Lynx now
+	    supports a wide range of platforms it may be useful to note
+	    that cpXXX codepages used within IBM PC computers, and
+	    windows-xxxx within native MS-Windows apps.)
 
    <dt>Raw 8-bit or CJK Mode
 	<dd>Whether 8-bit characters are assumed to correspond with the
@@ -620,7 +630,8 @@ return to Lynx or the '<em>&gt;</em>' command to save the options to a
 	    translation via the chartrans conversion tables.  Should be ON
 	    by default when the display character set is one of the
 	    Asian (CJK) sets and the 8-bit characters are Kanji multibytes.
-	    Should be OFF for the other display character sets, but can be turned ON
+	    Should be OFF for the other display character sets,
+	    but can be turned ON
 	    when the document's charset is unknown (e.g., is not ISO-8859-1
 	    and no charset parameter was specified in a reply header from
 	    an HTTP server to indicate what it is) but you know by some
@@ -723,9 +734,9 @@ return to Lynx or the '<em>&gt;</em>' command to save the options to a
 	    selected or made current by numbers as well as using the arrow
 	    keys, or having every link as well as every form field numbered
 	    so that they can be selected or sought by numbers.	See the<br>
-	    &nbsp;&nbsp<a href="keystrokes/follow_help.html"
+	    &nbsp;&nbsp;<a href="keystrokes/follow_help.html"
 	    >Follow link (or page) number:</a> and<br>
-	    &nbsp;&nbsp<a
+	    &nbsp;&nbsp;<a
 	    href="keystrokes/follow_help.html#select-option"
 	    >Select option (or page) number:</a><br>
 	    help for more information.
@@ -810,10 +821,10 @@ return to Lynx or the '<em>&gt;</em>' command to save the options to a
 	    executed Lynx will show the script within the Lynx window and
 	    inform the user that the script is not allowed to be executed
 	    and will ask the user to check his/her options.
-	    [<A HREF="#TOC">ToC</A>]
+	    [<A HREF="#ToC-InteractiveOptions">ToC</A>]
 </dl>
 
-<h2><A NAME="13"><em>Comments and mailto: links</em></A></h2>
+<h2 ID="Mail"><A NAME="Mail"><em>Comments and mailto: links</em></A></h2>
 
 At any time while viewing documents within Lynx, you may use the
 '<em>c</em>' command to send a mail message to the owner of the current
@@ -842,9 +853,9 @@ message.  If you press '<em>y</em>', you will be prompted whether to
 append your signature file if one was defined in lynx.cfg and is accessible,
 and then the message will be sent, whereas if you press '<em>n</em>' the
 message will be deleted.  Entering Control-G in response to any prompts
-also will cancel the mailing.[<A HREF="#TOC">ToC</A>]
+also will cancel the mailing.[<A HREF="#ToC-Mail">ToC</A>]
 
-<h2><A NAME="14"><em>USENET News posting</em></A></h2>
+<h2 ID="News"><A NAME="News"><em>USENET News posting</em></A></h2>
 
 While reading <a
 href="http://www.w3.org/hypertext/DataSources/News/Groups/Overview.html"
@@ -873,10 +884,10 @@ received the article supports posting from your site, a link that says
 	    href="lynx_url_support.html">Supported URLs</a> for more
 	    information about the URL schemes for posting or sending
 	    followups (replies) to nntp servers with Lynx.
-	    [<A HREF="#TOC">ToC</A>]
+	    [<A HREF="#ToC-News">ToC</A>]
 </dl>
 
-<h2><A NAME="15"><em>Lynx bookmarks</em></A></h2>
+<h2 ID="Bookmarks"><A NAME="Bookmarks"><em>Lynx bookmarks</em></A></h2>
 
 It is often useful to place a bookmark to aid in returning quickly to
 a document.  To use the bookmark feature you must first use the
@@ -924,16 +935,17 @@ and spacing (other than the <em>A</em>nchor content or <em>HREF</em> value)
 within lines is changed or other HTML markup is added, the '<em>a</em>'dd
 and '<em>r</em>'emove commands may not work properly.
 
-<p>When multi-bookmarks (see <a href="#12">Options Menu</a>) is OFF,
-you will always view or add links to the default bookmark file.  When
-it is STANDARD, a menu of up to 26 bookmark files will be invoked,
-and you select the bookmark file by entering its letter token.	When
-it is ADVANCED, you will be prompted for the letter token, but can
-enter '<em>=</em>' to invoke the STANDARD selection menu, or
-<em>RETURN</em> for the default bookmark file.
-[<A HREF="#TOC">ToC</A>]
+<p>When multi-bookmarks (see <a
+href="#InteractiveOptions">Options Menu</a>) is OFF, you will
+always view or add links to the default bookmark file.  When it
+is STANDARD, a menu of up to 26 bookmark files will be invoked,
+and you select the bookmark file by entering its letter
+token. When it is ADVANCED, you will be prompted for the letter
+token, but can enter '<em>=</em>' to invoke the STANDARD
+selection menu, or <em>RETURN</em> for the default bookmark file.
+[<A HREF="#ToC-Bookmarks">ToC</A>]
 
-<h2><A NAME="16"><em>Jump Command</em></a></h2>
+<h2 ID="Jumps"><A NAME="Jumps"><em>Jump Command</em></a></h2>
 
 A feature similar to the Lynx bookmarks is the jump command.  The jump
 command allows you to enter a shortcut name to access a URL.  If the jump
@@ -947,9 +959,9 @@ previous entries can be retrieved for re-use by pressing the
 
 <p>Note to System Administrators:  Read the <em>lynx.cfg</em> file on how
 to set up the jump command for your system and how to define shortcut names.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Jumps">ToC</A>]
 
-<h2><A NAME="17"><em>Directory Editing</em></a></h2>
+<h2 ID="DirEd"><A NAME="DirEd"><em>Directory Editing</em></a></h2>
 
 Lynx offers extended DIRED support on Unix (on VMS the more powerful
 CSwing program is recommended for character cell terminals, and can be
@@ -993,9 +1005,9 @@ on your local system.  The commands available in DIRED mode are
 <dd>Type '<em>u</em>' to upload a file to the present directory.  Upload
     methods are defined by your system administrator.
 </dl>
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-DirEd">ToC</A>]
 
-<h2><A NAME="18"><em>Scrolling and Other useful commands</em></A></h2>
+<h2 ID="MiscKeys"><A NAME="MiscKeys"><em>Scrolling and Other useful commands</em></A></h2>
 
 A summary of all the keystroke commands and their key bindings can
 be invoked via the KEYMAP command, normally mapped to '<em>k</em>' and
@@ -1022,7 +1034,8 @@ commands.
 	    the current document, and thus is a synonym for the Keypad and
 	    Function <em>Page-Up</em> keys.  However, <em>Control-B</em>
 	    acts as <em>right-arrow</em> when emacs-like key movement is
-	    enabled (see <A HREF="#12">Lynx Options Menu</A>).
+	    enabled (see <A HREF="#InteractiveOptions">Lynx
+	    Options Menu</A>).
    <dt><em>^F</em>
 	<dd><em>Control-F</em> normally jumps you to the next page of the
 	    current document, and thus is a synonym for the Keypad and
@@ -1102,7 +1115,7 @@ commands.
    <dt><em>^T</em>
 	<dd><em>Control-T</em> toggles Lynx trace mode on and off.  This is
 	    useful for diagnosing bad html.  If you get a <em>Bad HTML</em>
-	    status line message when loading a document, enter
+	    statusline message when loading a document, enter
 	    <em>Control-T</em> and then <em>Control-R</em> to reload the
 	    document in trace mode.  You also can submit the document for
 	    validation via links in the online help menu.  If you are able
@@ -1144,7 +1157,7 @@ commands.
    <dt><em>]</em>
 	<dd>The '<em>]</em>' command is used to send HEAD requests for the
 	    current document or link.  It applies only to documents or links
-	    (or form submit buttons) of http servers.  A status line message
+	    (or form submit buttons) of http servers.  A statusline message
 	    will notify you if the context for this command was inappropriate.
 	    The HEAD requests always are sent to the http server, i.e., Lynx
 	    does not retrieve any previous server replies from its cache.
@@ -1156,10 +1169,10 @@ commands.
 	    href="keystrokes/cookie_help.html">Cookie Jar Page</a>
 	    if it contains cookies.
    <dt><em>z</em>
-	<dd>To interrupt a connect or transfer request, enter '<em>z</em>':
-	    any data transferred before the interrupt will be displayed;
-	    to allow interruption of the look-up phase with '<em>z</em>'
-	    Lynx must be configured with --enable-nsl-fork when compiled.
+	<dd>Lynx supports completely interruptible I/O processes. Press the
+	    '<em>z</em>' key at any time during a connect or transfer process
+	    and the process will be halted.  If any data was transferred
+	    before the interrupt, it will be displayed.
    <dt><em>numbers</em>
 	<dd>Lynx offers other, advanced navigation features when numbers
 	    are used to invoke the <a
@@ -1169,10 +1182,10 @@ commands.
 	    href="keystrokes/follow_help.html#select-option"
 	    >Select option (or page) number:</a><br>
 	    prompts.
-	    [<A HREF="#TOC">ToC</A>]
+	    [<A HREF="#ToC-MiscKeys">ToC</A>]
 </dl>
 
-<h2><A NAME="19"><em>Lynx and HTML Forms</em></a></h2>
+<h2 ID="Forms"><A NAME="Forms"><em>Lynx and HTML Forms</em></a></h2>
 
 This section describes the Lynx Forms Interface.  HTML gives document
 providers the ability to create on-line forms which may be filled out
@@ -1209,10 +1222,11 @@ options from a list, and fields for entering text.
     <em>page-down</em>, and other navigation keys to move the cursor
     among options, and the <em>right-arrow</em> or <em>Return</em> key to
     select an option.  You also can use the '<em>/</em>' and '<em>n</em>'ext
-    <a href="#11">searching</a> commands for navigating to options which
+    <a href="#Search">searching</a> commands for navigating to options which
     contain particular strings.  <em>NOTE</em> that the popup menu
     feature can be disabled via compilation and/or configuration options,
-    or via the <a href="#12">Options Menu</a>, in which case the selection
+    or via the <a href="#InteractiveOptions">Options Menu</a>,
+    in which case the selection
     field options will be converted to a list of radio buttons.  The default
     setting for use of popups or radio button lists can be toggled via the
     <em>-popup</em> command line switch.
@@ -1304,7 +1318,7 @@ content.
 
 <p>Inlined images can be used as submit buttons in forms.  If such
 buttons are assigned NAMEs in the markup, for graphic clients they can
-also serve as <a href="#28">image maps</a>, and the x,y coordinates of
+also serve as <a href="#USEMAP">image maps</a>, and the x,y coordinates of
 the graphic client's cursor position in the image when it was
 <em>clicked</em> are included in the form content.  Since Lynx cannot
 inline the image, and the user could not have moved a cursor from the
@@ -1399,9 +1413,9 @@ any document:
 <tab indent="12"
 ><em>&lt;META <tab id="cdis">HTTP-EQUIV="Content-Disposition"<BR>
 <tab to="cdis">CONTENT="file;&nbsp;filename=name.suffix"&gt;</em><BR>
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Forms">ToC</A>]
 
-<h2><A NAME="20"><em>Lynx and HTML Tables</em></a></h2>
+<h2 ID="Tables"><A NAME="Tables"><em>Lynx and HTML Tables</em></a></h2>
 
 HTML includes markup for creating <em>tables</em> structured as arrays of
 cells aligned by columns and rows on the displayed page.
@@ -1421,11 +1435,11 @@ alignments intended for the <em>table</em> will be missed.
 <p>If inherently tabular data must be presented with Lynx, one can use PRE
 formatted content, or, if the <em>table</em> includes markup not allowed
 for PRE content, construct the <em>table</em> using <a
-href="#21">HTML Tabs</a>.  An example <em>table</em> using <em>TAB</em>
+href="#Tabs">HTML Tabs</a>.  An example <em>table</em> using <em>TAB</em>
 elements is included in the test subdirectory of the Lynx distribution.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Tables">ToC</A>]
 
-<h2><A NAME="21"><em>Lynx and HTML Tabs</em></a></h2>
+<h2 ID="Tabs"><A NAME="Tabs"><em>Lynx and HTML Tabs</em></a></h2>
 
 Lynx implements the <a
 href="http://www.w3.org/MarkUp/html3/Contents.html">HTML 3.0</a>
@@ -1443,11 +1457,11 @@ distribution as a model for using this functionality.
 <p>Note that this <em>Users Guide</em> and the <a
 href="lynx_url_support.html">Supported URLs</a> page include TAB markup in
 a manner which <em>degrades gracefully</em> for WWW browsers which do not
-support it.  Toggle to display of <a href="#8">source</a> and <a
-href="#11">search</a> for <em>&lt;tab</em> to examine the use of TAB markup
-in these documents. [<A HREF="#TOC">ToC</A>]
+support it.  Toggle to display of <a href="#LocalSource">source</a> and <a
+href="#Search">search</a> for <em>&lt;tab</em> to examine the use of TAB markup
+in these documents. [<A HREF="#ToC-Tabs">ToC</A>]
 
-<h2><A NAME="22"><em>Lynx and HTML Frames</em></a></h2>
+<h2 ID="Frames"><A NAME="Frames"><em>Lynx and HTML Frames</em></a></h2>
 
 Some implementations of HTML include markup, primarily designed for graphic
 clients, that is intended to create an array of simultaneously displayed,
@@ -1465,14 +1479,14 @@ section or a link in it to a document suitable for text clients, you
 can usually guess from the labeling of the <em>frame</em> links which
 one has the substantive material (if there is any), or you can try each
 of those links to see if anything worthwhile is returned.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Frames">ToC</A>]
 
 <p>Some sites -- in ignorance of Lynx capabilities -- may tell you
 (for example) "to view this page you need Netscape Navigator".
 You can simply ignore such warnings and access the frames
 via the Lynx-generated links as above.
 
-<h2><A NAME="23"><em>Lynx and HTML Banners</em></a></h2>
+<h2 ID="Banners"><A NAME="Banners"><em>Lynx and HTML Banners</em></a></h2>
 
 Some implementations of HTML markup include provisions for creating a
 non-scrolling window to be positioned at the top of each page, containing
@@ -1537,9 +1551,9 @@ content with a '<em>#</em>' because the content need not be only a series
 of links with brief, descriptive links names, but does add a '<em>#</em>'
 at the top, left-hand corner of the screen when the content is not being
 displayed, to indicate it's accessibility via the TOOLBAR keystroke command.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Banners">ToC</A>]
 
-<h2><A NAME="24"><em>Lynx and HTML Footnotes</em></a></h2>
+<h2 ID="Footnotes"><A NAME="Footnotes"><em>Lynx and HTML Footnotes</em></a></h2>
 
 Lynx implements the <a
 href="http://www.w3.org/MarkUp/html3/Contents.html">HTML 3.0</a>
@@ -1561,9 +1575,9 @@ does not use popups for FN blocks.</a>&lt;/p&gt;<em>&lt;/FN&gt;</em>
 you can return to your previous position in the document by pressing the
 <em>left-arrow</em> key.  The content of an FN element can be any HTML
 markup that is valid in the BODY of the document.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Footnotes">ToC</A>]
 
-<h2><A NAME="25"><em>Lynx and HTML Notes</em></a></h2>
+<h2 ID="Notes"><A NAME="Notes"><em>Lynx and HTML Notes</em></a></h2>
 
 Lynx implements the <a
 href="http://www.w3.org/MarkUp/html3/Contents.html">HTML 3.0</a>
@@ -1576,7 +1590,8 @@ default label <em>NOTE:</em> will be used.  Lynx recognizes the values
 <em>caution</em> and <em>warning</em>, for which, respectively, the labels
 <em>CAUTION:</em> or <em>WARNING:</em> will be used.  The NOTE element can
 have an ID attribute, which will be treated as a named <em>A</em>nchor, as
-for <a href="#24">HTML Footnotes</a>, but the NOTE block need not be placed
+for <a href="#Footnotes">HTML Footnotes</a>,
+but the NOTE block need not be placed
 at the bottom of the document.	The content of a NOTE block can be any HTML
 markup that is valid in the BODY of the document. This is an example:<BR>
 <tab indent="12"><em>&lt;NOTE CLASS="warning" ID="too-bad"&gt;<BR>
@@ -1585,9 +1600,9 @@ NOTE in the HTML 3.2 draft.&lt;/p&gt;<BR>
 <tab indent="12">&lt;/NOTE&gt;</em><BR>
 It will <em>degrade gracefully</em> for WWW browsers which do not support
 NOTE, except for recognition of the ID attribute as a named <em>A</em>nchor.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Notes">ToC</A>]
 
-<h2><A NAME="26"><em>Lynx and HTML Lists</em></a></h2>
+<h2 ID="Lists"><A NAME="Lists"><em>Lynx and HTML Lists</em></a></h2>
 
 Lynx implements the <a
 href="http://www.w3.org/MarkUp/html3/Contents.html">HTML 3.0</a>
@@ -1645,9 +1660,9 @@ nesting levels.
 by default, i.e., single spaces between LH and LI elements within those
 blocks.  For DL blocks, double spacing will be used to separate the DT and
 DD elements unless the COMPACT attribute has been specified.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Lists">ToC</A>]
 
-<h2><A NAME="27"><em>Lynx and HTML Quotes</em></a></h2>
+<h2 ID="Quotes"><A NAME="Quotes"><em>Lynx and HTML Quotes</em></a></h2>
 
 The <a
 href="http://www.w3.org/MarkUp/html3/Contents.html">HTML 3.0</a> and
@@ -1670,10 +1685,11 @@ its first line.
 (<em>&quot;</em>) versus grave accent (<em>`</em>) and apostrophe
 (<em>'</em>), respectively, for even versus odd depths in the nest.
 
-<p>Any ID attributes in BLOCKQUOTE, BQ or Q elements will be treated as
-named <em>A</em>nchors. [<A HREF="#TOC">ToC</A>]
+<p>Any ID attributes in BLOCKQUOTE, BQ or Q elements can be the target
+of a hyperlink in the form URL#id.  It is treated just
+like the NAME in <em>A</em>nchors. [<A HREF="#ToC-Quotes">ToC</A>]
 
-<h2><A NAME="28"><em>Lynx and Client-Side-Image-Maps</em></a></h2>
+<h2 ID="USEMAP"><A NAME="USEMAP"><em>Lynx and Client-Side-Image-Maps</em></a></h2>
 
 HTML includes markup, designed primarily for graphic clients, that treats
 inlined images as maps, such that areas of the image within which a mouse
@@ -1739,9 +1755,9 @@ the SHAPES attribute equivalently to its handling of FIG.  Lynx also
 handles OBJECT elements with the USEMAP and/or ISMAP attributes
 equivalently to its handling of IMG elements with
 <em>client-side-image-maps</em> and/or <em>server-side-image-maps</em>.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-USEMAP">ToC</A>]
 
-<h2><A NAME="29"><em>Lynx and Client-Side-Pull</em></a></h2>
+<h2 ID="Refresh"><A NAME="Refresh"><em>Lynx and Client-Side-Pull</em></a></h2>
 
 HTML includes provision for passing instructions to clients via directives
 in META elements, and one such instruction, via the token <em>Refresh</em>,
@@ -1768,16 +1784,16 @@ is not critical and you can activate the link whenever you like.
 If it is long (e.g., 60 seconds), a server process may be generating
 new documents or images at that interval, and you would be wasting
 bandwidth by activating the link at a shorter interval.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Refresh">ToC</A>]
 
-<h2><A NAME="30"><em>Lynx State Management</em></A>
+<h2 ID="Cookies"><A NAME="Cookies"><em>Lynx State Management</em></A>
 (Me want <em>cookie</em>!)</h2>
 
 HTTP provides a means to carry state information across successive
 connections between a browser and an http server.  Normally, http servers
 respond to each browser request without relating that request to previous
 or subsequent requests.  Though the inclusion of INPUT fields with
-TYPE="hidden" can be used as a sort of state management by <a href="#19"
+TYPE="hidden" can be used as a sort of state management by <a href="#Forms"
 >HTML Forms</a>, a more general approach involves exchanges of MIME
 headers between the server and browser.  When replying to a request,
 the server can send a <em>Set-Cookie</em> MIME header which contains
@@ -1832,9 +1848,9 @@ about how they will be used in subsequent requests to that site, nor can
 infer how they will be used, you can <em>Gobble</em> (delete) the cookies
 and/or change the 'allow' setting for its <em>domain</em> via the <a
 href="keystrokes/cookie_help.html">Cookie Jar Page</a>.
-[<A HREF="#TOC">ToC</A>]
+[<A HREF="#ToC-Cookies">ToC</A>]
 
-<h2><A NAME="31"><em>The Lynx command line</em></A></h2>
+<h2 ID="Invoking"><A NAME="Invoking"><em>The Lynx command line</em></A></h2>
 
 A summary of the Lynx command line options (switches) is returned to
 stdout if Lynx is invoked with the <em>-help</em> switch.  A description
@@ -2033,7 +2049,7 @@ where
 	     <dt><code>-nolog</code>
 		<dd>disable mailing of error messages to document owners.
 	     <dt><code>-nopause</code>
-		<dd>disable forced pauses for status line messages.
+		<dd>disable forced pauses for statusline messages.
 	     <dt><code>-noprint</code>
 		<dd>disable print functions.
 	     <dt><code>-noredir</code>
@@ -2248,9 +2264,9 @@ where
 
 <p>No options are required, nor is a startfile argument required.
 White space may be substituted for any equal sign ('<em>=</em>')
-appearing in the option list above. [<A HREF="#TOC">ToC</A>]
+appearing in the option list above. [<A HREF="#ToC-Invoking">ToC</A>]
 
-<h2><A NAME="32"><em>Lynx development history</em></A></h2>
+<h2 ID="Hist"><A NAME="Hist"><em>Lynx development history</em></A></h2>
 
 Lynx grew out of efforts to build a campus-wide information system
 at The University of Kansas.  The earliest versions of Lynx provided a
diff --git a/lynx_help/keystrokes/option_help.html b/lynx_help/keystrokes/option_help.html
index 26783901..64a3d682 100644
--- a/lynx_help/keystrokes/option_help.html
+++ b/lynx_help/keystrokes/option_help.html
@@ -92,7 +92,11 @@
                            so that characters other than 7-bit ASCII can be
                            displayed correctly, using approximations if
                            necessary. You must have the selected character set
-                           installed on your terminal.
+                           installed on your terminal. (Since Lynx now supports
+			   a wide range of platforms it may be useful to note
+			   that cpXXX codepages are used within IBM PC
+			   computers, and windows-xxxx within native MS-Windows
+			   applications).
 
      Raw 8-bit or CJK   -  Toggles whether 8-bit characters are assumed to
      mode                  correspond with the display character set and
diff --git a/makefile.in b/makefile.in
index 28e2ec13..6a217647 100644
--- a/makefile.in
+++ b/makefile.in
@@ -24,10 +24,14 @@ INSTALL		= @INSTALL@
 INSTALL_PROGRAM	= @INSTALL_PROGRAM@
 INSTALL_DATA	= @INSTALL_DATA@
 
+## This is the version which we are developing (or, upon release, make this
+## the same).  Use no dots in the name, since it must work on VMS and MS-DOS.
+VERSION		= 2-8-1
+
 ##this is the name of the directory the lynx source code is in.
 ##(e.g. lynx2-8, not the full path)
-lynxdir= lynx2-8
-lynxname= lynx2-8
+lynxdir= lynx$(VERSION)
+lynxname= lynx$(VERSION)
 
 ## Where you want lynx installed
 bindir= @bindir@
@@ -129,7 +133,6 @@ SITE_DEFS = # Your defines here
 # -DLINKEDSTYLES
 # -DLONG_LIST
 # -DLY_FIND_LEAKS
-# -DNCURSES
 # -DNO_CHANGE_EXECUTE_PERMS
 # -DNO_PARENT_DIR_REFERENCE
 # -DNSL_FORK
diff --git a/src/GridText.c b/src/GridText.c
index 49f65f08..5d7d2e0f 100644
--- a/src/GridText.c
+++ b/src/GridText.c
@@ -41,6 +41,8 @@
 #include <LYexit.h>
 #include <LYLeaks.h>
 
+#undef DEBUG_APPCH
+
 #ifdef USE_COLOR_STYLE
 #include <AttrList.h>
 #include <LYHash.h>
@@ -1606,14 +1608,18 @@ PRIVATE void split_line ARGS2(
     HTLine * previous = text->last_line;
     int ctrl_chars_on_previous_line = 0;
     char * cp;
-    HTLine * line = (HTLine *)LY_CALLOC(1, LINE_SIZE(MAX_LINE));
+    /* can't wrap in middle of multibyte sequences, so allocate 2 extra */
+    HTLine * line = (HTLine *)LY_CALLOC(1, LINE_SIZE(MAX_LINE)+2);
     if (line == NULL)
 	outofmem(__FILE__, "split_line_1");
 
     ctrl_chars_on_this_line = 0; /*reset since we are going to a new line*/
     text->LastChar = ' ';
 
-    CTRACE(tfp,"GridText: split_line called\n");
+#ifdef DEBUG_APPCH
+    CTRACE(tfp,"GridText: split_line(%p,%d) called\n", text, split);
+    CTRACE(tfp,"   bold_on=%d, underline_on=%d\n", bold_on, underline_on);
+#endif
 
     text->Lines++;
 
@@ -1716,7 +1722,7 @@ PRIVATE void split_line ARGS2(
 	line->styles[0].horizpos = 0xffffffff;
     if (previous->numstyles == 0)
 	previous->styles[0].horizpos = 0xffffffff;
-#endif
+#endif /*USE_COLOR_STYLE*/
     previous->next = line;
     text->last_line = line;
     line->size = 0;
@@ -1839,7 +1845,8 @@ PRIVATE void split_line ARGS2(
 	    linedata[line->size] = '\0';
 	    ctrl_chars_on_this_line++;
 	    SpecialAttrChars++;;
-	}
+	} else
+	    bold_on = OFF;
 	if (plen) {
 	    for (i = (plen - 1); i != 0; i--) {
 		if (p[i] == LY_BOLD_START_CHAR) {
@@ -2036,8 +2043,49 @@ PUBLIC void HText_appendCharacter ARGS2(
     HTStyle * style;
     int indent;
 
-    CTRACE(tfp, "add(%c) %d/%d\n", ch,
-		HTisDocumentSource(), HTOutputFormat != WWW_SOURCE);
+#ifdef DEBUG_APPCH
+    if (TRACE) {
+	char * special = NULL;  /* make trace a little more readable */
+	switch(ch) {
+	case HT_NON_BREAK_SPACE:
+		special = "HT_NON_BREAK_SPACE";
+		break;
+	case HT_EM_SPACE:
+		special = "HT_EM_SPACE";
+		break;
+	case LY_UNDERLINE_START_CHAR:
+		special = "LY_UNDERLINE_START_CHAR";
+		break;
+	case LY_UNDERLINE_END_CHAR:
+		special = "LY_UNDERLINE_END_CHAR";
+		break;
+	case LY_BOLD_START_CHAR:
+		special = "LY_BOLD_START_CHAR";
+		break;
+	case LY_BOLD_END_CHAR:
+		special = "LY_BOLD_END_CHAR";
+		break;
+	case LY_SOFT_HYPHEN:
+		special = "LY_SOFT_HYPHEN";
+		break;
+	case LY_SOFT_NEWLINE:
+		special = "LY_SOFT_NEWLINE";
+		break;
+	default:
+		special = NULL;
+		break;
+	}
+
+	if (special != NULL) {
+	    CTRACE(tfp, "add(%s %d special char) %d/%d\n", special, ch,
+		   HTisDocumentSource(), HTOutputFormat != WWW_SOURCE);
+	} else {
+	    CTRACE(tfp, "add(%c) %d/%d\n", ch,
+		   HTisDocumentSource(), HTOutputFormat != WWW_SOURCE);
+	}
+    } /* trace only */
+#endif /* DEBUG_APPCH */
+
     /*
      *  Make sure we don't crash on NULLs.
      */
@@ -2081,19 +2129,11 @@ PUBLIC void HText_appendCharacter ARGS2(
 	!text->T.transp && !text->T.output_utf8 &&
 	(unsigned char)ch < LYlowest_eightbit[current_char_set])
 	return;
-#endif /* USE_SLANG */
+#endif /* !USE_SLANG */
     if ((unsigned char)ch == 155 && HTCJK == NOCJK) {	/* octal 233 */
 	if (!HTPassHighCtrlRaw &&
 	    !text->T.transp && !text->T.output_utf8 &&
-	    (155 < LYlowest_eightbit[current_char_set]) &&
-	    strncmp(LYchar_set_names[current_char_set],
-		    "DosLatin1 (cp850)", 17) &&
-	    strncmp(LYchar_set_names[current_char_set],
-		    "DosLatinUS (cp437)", 18) &&
-	    strncmp(LYchar_set_names[current_char_set],
-		    "Macintosh (8 bit)", 17) &&
-	    strncmp(LYchar_set_names[current_char_set],
-		    "NeXT character set", 18)) {
+	    (155 < LYlowest_eightbit[current_char_set])) {
 	    return;
 	}
     }
@@ -2242,6 +2282,7 @@ PUBLIC void HText_appendCharacter ARGS2(
 
     if (IsSpecialAttrChar(ch)) {
 #ifndef USE_COLOR_STYLE
+        if (line->size >= (MAX_LINE-1)) return;
 	if (ch == LY_UNDERLINE_START_CHAR) {
 	    line->data[line->size++] = LY_UNDERLINE_START_CHAR;
 	    line->data[line->size] = '\0';
@@ -3160,9 +3201,7 @@ PUBLIC void HText_endAppend ARGS1(
 	HText *,	text)
 {
     int cur_line, cur_char, cur_shift;
-    TextAnchor *anchor_ptr;
     HTLine *line_ptr;
-    unsigned char ch;
 
     if (!text)
 	return;
@@ -3217,6 +3256,46 @@ PUBLIC void HText_endAppend ARGS1(
      *  Fix up the anchor structure values and
      *  create the hightext strings. - FM
      */
+    HText_trimHightext(HTMainText, FALSE);
+}
+
+/*
+**  This function gets the hightext from the text by finding the char
+**  position, and brings the anchors in line with the text by adding the text
+**  offset to each of the anchors.
+**
+**  `Forms input' fields cannot be displayed properly without this function
+**  to be invoked (detected in display_partial mode).
+**
+**  (BOOLEAN value allow us to disable annoying repeated trace messages
+**  for display_partial mode).
+*/
+PUBLIC void HText_trimHightext ARGS2(
+	HText *,	text,
+	BOOLEAN,	disable_trace)
+{
+    int cur_line, cur_char, cur_shift;
+    TextAnchor *anchor_ptr;
+    HTLine *line_ptr;
+    unsigned char ch;
+
+    if (!text)
+	return;
+
+    CTRACE(tfp,"Gridtext: Entering HText_trimHightext\n");
+
+    /*
+     *  Get the first line.
+     */
+    line_ptr = text->last_line->next;
+    cur_char = line_ptr->size;
+    cur_line = 0;
+    cur_shift = 0;
+
+    /*
+     *  Fix up the anchor structure values and
+     *  create the hightext strings. - FM
+     */
     for (anchor_ptr = text->first_anchor;
 	 anchor_ptr; anchor_ptr=anchor_ptr->next) {
 re_parse:
@@ -3238,6 +3317,7 @@ re_parse:
 	if (anchor_ptr->line_pos < 0)
 	    anchor_ptr->line_pos = 0;
 
+	if (!disable_trace)
 	CTRACE(tfp, "Gridtext: Anchor found on line:%d col:%d\n",
 			    cur_line, anchor_ptr->line_pos);
 
@@ -3258,6 +3338,8 @@ re_parse:
 	if (anchor_ptr->extent < 0) {
 	    anchor_ptr->extent = 0;
 	}
+
+	if (!disable_trace)
 	CTRACE(tfp, "anchor text: '%s'   col: %d\n",
 			    line_ptr->data, anchor_ptr->line_pos);
 	/*
@@ -3335,7 +3417,8 @@ re_parse:
 	anchor_ptr->line_pos += line_ptr->offset;
 	anchor_ptr->line_num  = cur_line;
 
-	CTRACE(tfp, "GridText:     add link on line %d in HText_endAppend\n",
+	if (!disable_trace)
+	CTRACE(tfp, "GridText:     add link on line %d in HText_trimHightext\n",
 		    cur_line);
 
 	/*
@@ -3978,8 +4061,8 @@ PUBLIC CONST char * HText_getServer NOARGS
 
 /*
  *  HText_pageDisplay displays a screen of text
- *  starting from the line 'line_num'-1
- *  this is the primary call for lynx
+ *  starting from the line 'line_num'-1.
+ *  This is the primary call for lynx.
  */
 PUBLIC void HText_pageDisplay ARGS2(
 	int,		line_num,
@@ -3987,16 +4070,28 @@ PUBLIC void HText_pageDisplay ARGS2(
 {
     CTRACE(tfp, "GridText: HText_pageDisplay at line %d started\n", line_num);
 
-    display_page(HTMainText, line_num-1, target);
+#ifdef DISP_PARTIAL
+    if (display_partial && !debug_display_partial)
+	/*
+	**  Garbage is reported from forms input fields in incremental mode.
+	**  So we start HText_trimHightext() to forget this side effect.
+	**  This function was split-out from HText_endAppend().
+	**  It may not be the best solution but it works. - LP
+	**  (TRUE =  to disable annoying repeated trace messages)
+	*/
+	HText_trimHightext(HTMainText, TRUE);
+#endif
 
-    CTRACE(tfp, "GridText: HText_pageDisplay finished\n");
+    display_page(HTMainText, line_num-1, target);
 
 #ifdef DISP_PARTIAL
-	if (display_partial && debug_display_partial)
+    if (display_partial && debug_display_partial)
 	sleep(MessageSecs);
 #endif
 
     is_www_index = HTAnchor_isIndex(HTMainAnchor);
+
+    CTRACE(tfp, "GridText: HText_pageDisplay finished\n");
 }
 
 /*
diff --git a/src/GridText.h b/src/GridText.h
index 8465b99a..a17ceb23 100644
--- a/src/GridText.h
+++ b/src/GridText.h
@@ -10,6 +10,12 @@
 #include <HTForms.h>
 #endif /* HTFORMS_H */
 
+#ifndef HT_NON_BREAK_SPACE
+#define HT_NON_BREAK_SPACE	((char)1)	/* remember it */
+#endif /* !HT_NON_BREAK_SPACE */
+#ifndef HT_EM_SPACE
+#define HT_EM_SPACE		((char)2)	/* remember it */
+#endif /* !HT_EM_SPACE */
 #define LY_UNDERLINE_START_CHAR	'\003'
 #define LY_UNDERLINE_END_CHAR	'\004'
 #define LY_BOLD_START_CHAR	'\005'
@@ -18,8 +24,46 @@
 #define LY_SOFT_HYPHEN		((char)7)
 #endif /* !LY_SOFT_HYPHEN */
 #define LY_SOFT_NEWLINE         ((char)8)
+
 #define IsSpecialAttrChar(a)  ((a > '\002') && (a <= '\010'))
 
+/* just for information:
+US-ASCII control characters <32 which are not defined in Unicode standard
+=00	U+0000	NULL
+=01	U+0001	START OF HEADING
+=02	U+0002	START OF TEXT
+=03	U+0003	END OF TEXT
+=04	U+0004	END OF TRANSMISSION
+=05	U+0005	ENQUIRY
+=06	U+0006	ACKNOWLEDGE
+=07	U+0007	BELL
+=08	U+0008	BACKSPACE
+=09	U+0009	HORIZONTAL TABULATION
+=0A	U+000A	LINE FEED
+=0B	U+000B	VERTICAL TABULATION
+=0C	U+000C	FORM FEED
+=0D	U+000D	CARRIAGE RETURN
+=0E	U+000E	SHIFT OUT
+=0F	U+000F	SHIFT IN
+=10	U+0010	DATA LINK ESCAPE
+=11	U+0011	DEVICE CONTROL ONE
+=12	U+0012	DEVICE CONTROL TWO
+=13	U+0013	DEVICE CONTROL THREE
+=14	U+0014	DEVICE CONTROL FOUR
+=15	U+0015	NEGATIVE ACKNOWLEDGE
+=16	U+0016	SYNCHRONOUS IDLE
+=17	U+0017	END OF TRANSMISSION BLOCK
+=18	U+0018	CANCEL
+=19	U+0019	END OF MEDIUM
+=1A	U+001A	SUBSTITUTE
+=1B	U+001B	ESCAPE
+=1C	U+001C	FILE SEPARATOR
+=1D	U+001D	GROUP SEPARATOR
+=1E	U+001E	RECORD SEPARATOR
+=1F	U+001F	UNIT SEPARATOR
+=7F	U+007F	DELETE
+*/
+
 extern int HTCurSelectGroupType;
 extern char * HTCurSelectGroupSize;
 extern HText * HTMainText;		/* Equivalent of main window */
@@ -159,6 +203,9 @@ extern int HText_beginInput PARAMS((
 	HText *		text,
 	BOOL		underline,
 	InputFieldData *I));
+extern void HText_trimHightext PARAMS((
+	HText *		text,
+	BOOLEAN		disable_trace));
 extern void HText_SubmitForm PARAMS((
 	FormInfo *	submit_item,
 	document *	doc,
diff --git a/src/HTFWriter.c b/src/HTFWriter.c
index 3d9ae874..f171905a 100644
--- a/src/HTFWriter.c
+++ b/src/HTFWriter.c
@@ -30,7 +30,6 @@
 #include <LYUtils.h>
 #include <LYGlobalDefs.h>
 #include <LYSignal.h>
-#include <LYSystem.h>
 #include <GridText.h>
 #include <LYexit.h>
 #include <LYLeaks.h>
@@ -139,7 +138,7 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me)
 	 *  we want to convert to fixed records format. - FM
 	 */
 #ifdef USE_COMMAND_FILE
-	    system(FIXED_RECORD_COMMAND);
+	    LYSystem(FIXED_RECORD_COMMAND);
 #else
 	    LYVMS_FixedLengthRecords(FIXED_RECORD_COMMAND);
 #endif /* USE_COMMAND_FILE */
@@ -147,7 +146,6 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me)
 
 	    if (me->remove_command) {
 		/* NEVER REMOVE THE FILE unless during an abort!*/
-		/* system(me->remove_command); */
 		FREE(me->remove_command);
 	    }
 	} else
@@ -191,7 +189,7 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me)
 		     *	Uncompress it. - FM
 		     */
 		    if (me->end_command && me->end_command[0])
-			system(me->end_command);
+			LYSystem(me->end_command);
 		    fp = fopen(me->anchor->FileCache, "r");
 		}
 		if (fp != NULL) {
@@ -318,11 +316,10 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me)
 			    HTProgress(me->end_command);
 			    stop_curses();
 			}
-			system(me->end_command);
+			LYSystem(me->end_command);
 
 			if (me->remove_command) {
 			    /* NEVER REMOVE THE FILE unless during an abort!!!*/
-			    /* system(me->remove_command); */
 			    FREE(me->remove_command);
 			}
 			if (!dump_output_immediately)
@@ -348,7 +345,6 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me)
 	    }
 	    if (me->remove_command) {
 		/* NEVER REMOVE THE FILE unless during an abort!!!*/
-		/* system(me->remove_command); */
 		FREE(me->remove_command);
 	    }
 	} else if (strcmp(me->end_command, "SaveToFile")) {
@@ -363,11 +359,10 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me)
 		_HTProgress(me->end_command);
 		stop_curses();
 	    }
-	    system(me->end_command);
+	    LYSystem(me->end_command);
 
 	    if (me->remove_command) {
 		/* NEVER REMOVE THE FILE unless during an abort!!!*/
-		/* system(me->remove_command); */
 		FREE(me->remove_command);
 	    }
 	    if (!dump_output_immediately)
@@ -379,7 +374,6 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me)
 	     */
 	    if (me->remove_command) {
 		/* NEVER REMOVE THE FILE unless during an abort!!!*/
-		/* system(me->remove_command); */
 		FREE(me->remove_command);
 	    }
 	}
@@ -423,7 +417,7 @@ PRIVATE void HTFWriter_abort ARGS2(
 	CTRACE(tfp, "HTFWriter: Aborting: file not executed.\n");
 	FREE(me->end_command);
 	if (me->remove_command) {
-	    system(me->remove_command);
+	    LYSystem(me->remove_command);
 	    FREE(me->remove_command);
 	}
     }
diff --git a/src/HTInit.c b/src/HTInit.c
index 69efa8e7..aac98355 100644
--- a/src/HTInit.c
+++ b/src/HTInit.c
@@ -26,24 +26,16 @@
 #include <LYUtils.h>
 #include <LYGlobalDefs.h>
 #include <LYSignal.h>
-#include <LYSystem.h>
 
 #include <LYexit.h>
 #include <LYLeaks.h>
 
-#ifdef VMS
-#define DISPLAY "DECW$DISPLAY"
-#else
-#define DISPLAY "DISPLAY"
-#endif /* VMS */
-
 PRIVATE int HTLoadTypesConfigFile PARAMS((char *fn));
 PRIVATE int HTLoadExtensionsConfigFile PARAMS((char *fn));
 
 PUBLIC void HTFormatInit NOARGS
 {
  FILE *fp = NULL;
- char *cp = NULL;
 
 #ifdef NeXT
   HTSetPresentation("application/postscript",   "open %s", 1.0, 2.0, 0.0, 0);
@@ -52,7 +44,7 @@ PUBLIC void HTFormatInit NOARGS
   HTSetPresentation("audio/basic",              "open %s", 1.0, 2.0, 0.0, 0);
   HTSetPresentation("*",                        "open %s", 1.0, 0.0, 0.0, 0);
 #else
- if ((cp = getenv(DISPLAY)) != NULL && *cp != '\0') {	/* Must have X11 */
+ if (LYgetXDisplay() != 0) {	/* Must have X11 */
   HTSetPresentation("application/postscript", "ghostview %s&",
   							    1.0, 3.0, 0.0, 0);
   HTSetPresentation("image/gif",        XLoadImageCommand,  1.0, 3.0, 0.0, 0);
@@ -491,7 +483,6 @@ PRIVATE int PassesTest ARGS1(
 {
     int result;
     char *cmd, TmpFileName[TMPFILE_NAME_SIZE];
-    char *cp = NULL;
 
     /*
      *  Make sure we have a command
@@ -505,7 +496,7 @@ PRIVATE int PassesTest ARGS1(
     if (0 == strcasecomp(mc->testcommand, "test -n \"$DISPLAY\"")) {
 	FREE(mc->testcommand);
 	CTRACE(tfp, "PassesTest: Testing for XWINDOWS environment.\n");
-    	if ((cp = getenv(DISPLAY)) != NULL && *cp != '\0') {
+    	if (LYgetXDisplay() != NULL) {
 	    CTRACE(tfp, "PassesTest: Test passed!\n");
 	    return(0 == 0);
 	} else {
@@ -516,7 +507,7 @@ PRIVATE int PassesTest ARGS1(
     if (0 == strcasecomp(mc->testcommand, "test -z \"$DISPLAY\"")) {
 	FREE(mc->testcommand);
 	CTRACE(tfp, "PassesTest: Testing for NON_XWINDOWS environment.\n");
-    	if (!((cp = getenv(DISPLAY)) != NULL && *cp != '\0')) {
+    	if (LYgetXDisplay() == NULL) {
 	    CTRACE(tfp,"PassesTest: Test passed!\n");
 	    return(0 == 0);
 	} else {
@@ -558,7 +549,7 @@ PRIVATE int PassesTest ARGS1(
 		 TmpFileName,
 		 strlen(TmpFileName));
     CTRACE(tfp, "PassesTest: Executing test command: %s\n", cmd);
-    result = system(cmd);
+    result = LYSystem(cmd);
     FREE(cmd);
     LYRemoveTemp(TmpFileName);
 
diff --git a/src/HTML.c b/src/HTML.c
index f49116fd..ac10f00e 100644
--- a/src/HTML.c
+++ b/src/HTML.c
@@ -737,8 +737,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    char *related = NULL;
 
 	    StrAllocCopy(base, value[HTML_BASE_HREF]);
-	    if (!(url_type = LYLegitimizeHREF(me, (char**)&base,
-					      TRUE, TRUE))) {
+	    if (!(url_type = LYLegitimizeHREF(me, &base, TRUE, TRUE))) {
 		CTRACE(tfp, "HTML: BASE '%s' is not an absolute URL.\n",
 			    (base ? base : ""));
 		if (me->inBadBASE == FALSE)
@@ -832,7 +831,7 @@ PRIVATE void HTML_start_element ARGS6(
 
     case HTML_META:
 	if (present)
-	    LYHandleMETA(me, present, value, (char **)&include);
+	    LYHandleMETA(me, present, value, include);
 	break;
 
     case HTML_TITLE:
@@ -856,7 +855,7 @@ PRIVATE void HTML_start_element ARGS6(
 		}
 	    } else {
 		StrAllocCopy(href, value[HTML_LINK_HREF]);
-		url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+		url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 	    }
 
 	    /*
@@ -874,7 +873,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    /*
 	     *	Check whether to fill in localhost. - FM
 	     */
-	    LYFillLocalFileURL((char **)&href,
+	    LYFillLocalFileURL(&href,
 			       ((*href != '\0' && *href != '#' &&
 				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
@@ -899,7 +898,7 @@ PRIVATE void HTML_start_element ARGS6(
 					PARSE_ALL);
 			StrAllocCopy(href, temp);
 			FREE(temp);
-			LYFillLocalFileURL((char **)&href,
+			LYFillLocalFileURL(&href,
 					   (me->inBASE ?
 					 me->base_href :
 					 me->node_anchor->address));
@@ -1074,7 +1073,7 @@ PRIVATE void HTML_start_element ARGS6(
 		 *  fingers. - FM
 		 */
 		SET_SKIP_STACK(HTML_A);
-		HTML_end_element(me, HTML_A, (char **)&include);
+		HTML_end_element(me, HTML_A, include);
 	    }
 
 	    /*
@@ -1163,8 +1162,7 @@ PRIVATE void HTML_start_element ARGS6(
 		StrAllocCopy(isindex_href, value[HTML_ISINDEX_HREF]);
 	    else
 		StrAllocCopy(isindex_href, value[HTML_ISINDEX_ACTION]);
-	    url_type = LYLegitimizeHREF(me, (char**)&isindex_href,
-					TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &isindex_href, TRUE, TRUE);
 
 	    /*
 	     *	Check whether a base tag is in effect.
@@ -1260,7 +1258,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    value[HTML_FRAME_SRC] && *value[HTML_FRAME_SRC] != '\0') {
 	    StrAllocCopy(href, value[HTML_FRAME_SRC]);
 	    CHECK_FOR_INTERN(href);
-	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 
 	    /*
 	     *	Check whether a base tag is in effect. - FM
@@ -1277,14 +1275,14 @@ PRIVATE void HTML_start_element ARGS6(
 	    /*
 	     *	Check whether to fill in localhost. - FM
 	     */
-	    LYFillLocalFileURL((char **)&href,
+	    LYFillLocalFileURL(&href,
 			       ((*href != '\0' && *href != '#' &&
 				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
 
 	    if (me->inA) {
 		SET_SKIP_STACK(HTML_A);
-		HTML_end_element(me, HTML_A, (char **)&include);
+		HTML_end_element(me, HTML_A, include);
 	    }
 	    me->CurrentA = HTAnchor_findChildAndLink(
 				me->node_anchor,	/* Parent */
@@ -1332,7 +1330,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    value[HTML_IFRAME_SRC] && *value[HTML_IFRAME_SRC] != '\0') {
 	    StrAllocCopy(href, value[HTML_IFRAME_SRC]);
 	    CHECK_FOR_INTERN(href);
-	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 
 	    /*
 	     *	Check whether a base tag is in effect. - FM
@@ -1349,13 +1347,13 @@ PRIVATE void HTML_start_element ARGS6(
 	    /*
 	     *	Check whether to fill in localhost. - FM
 	     */
-	    LYFillLocalFileURL((char **)&href,
+	    LYFillLocalFileURL(&href,
 			       ((*href != '\0' && *href != '#' &&
 				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
 
 	    if (me->inA)
-		HTML_end_element(me, HTML_A, (char **)&include);
+		HTML_end_element(me, HTML_A, include);
 	    me->CurrentA = HTAnchor_findChildAndLink(
 				me->node_anchor,	/* Parent */
 				NULL,			/* Tag */
@@ -1544,7 +1542,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_P:
-	LYHandleP(me, present, value, (char **)&include, TRUE);
+	LYHandleP(me, present, value, include, TRUE);
 	break;
 
     case HTML_BR:
@@ -1791,7 +1789,7 @@ PRIVATE void HTML_start_element ARGS6(
 	 */
 #ifdef NOTUSED_FOTEMODS
 	if (me->inFONT == TRUE)
-	    HTML_end_element(me, HTML_FONT, (char **)&include);
+	    HTML_end_element(me, HTML_FONT, &include);
 #endif /* NOTUSED_FOTEMODS */
 
 	/*
@@ -2394,7 +2392,7 @@ PRIVATE void HTML_start_element ARGS6(
 	 */
 	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, include);
 	}
 	/*
 	 *  Set to know we are in an anchor.
@@ -2441,7 +2439,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    } else {
 		StrAllocCopy(href, value[HTML_A_HREF]);
 	    }
-	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 
 	    /*
 	     *	Deal with our ftp gateway kludge. - FM
@@ -2473,7 +2471,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    /*
 	     *	Check whether to fill in localhost. - FM
 	     */
-	    LYFillLocalFileURL((char **)&href,
+	    LYFillLocalFileURL(&href,
 			       ((*href != '\0' && *href != '#' &&
 				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
@@ -2577,7 +2575,7 @@ PRIVATE void HTML_start_element ARGS6(
 	 */
 	if (href == NULL && me->inBoldA == FALSE) {
 	    SET_SKIP_STACK(HTML_A);
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, &include);
 	}
 #endif /* NOTUSED_FOTEMODS */
 	FREE(href);
@@ -2617,7 +2615,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    value[HTML_IMG_USEMAP] && *value[HTML_IMG_USEMAP]) {
 	    StrAllocCopy(map_href, value[HTML_IMG_USEMAP]);
 	    CHECK_FOR_INTERN(map_href);
-	    url_type = LYLegitimizeHREF(me, (char**)&map_href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &map_href, TRUE, TRUE);
 	    /*
 	     *	If map_href ended up zero-length or otherwise doesn't
 	     *	have a hash, it can't be valid, so ignore it. - FM
@@ -2665,7 +2663,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    /*
 	     *	Check whether to fill in localhost. - FM
 	     */
-	    LYFillLocalFileURL((char **)&map_href,
+	    LYFillLocalFileURL(&map_href,
 			       ((UseBASE && me->inBASE) ?
 			  me->base_href : me->node_anchor->address));
 	    UseBASE = TRUE;
@@ -2809,7 +2807,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    present && present[HTML_IMG_SRC] &&
 	    value[HTML_IMG_SRC] && *value[HTML_IMG_SRC] != '\0') {
 	    StrAllocCopy(href, value[HTML_IMG_SRC]);
-	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 
 	    /*
 	     *	Check whether a base tag is in effect. - FM
@@ -2826,7 +2824,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    /*
 	     *	Check whether to fill in localhost. - FM
 	     */
-	    LYFillLocalFileURL((char **)&href,
+	    LYFillLocalFileURL(&href,
 			       ((*href != '\0' && *href != '#' &&
 				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
@@ -3151,7 +3149,7 @@ PRIVATE void HTML_start_element ARGS6(
 	     */
 	    StrAllocCopy(href, value[HTML_AREA_HREF]);
 	    CHECK_FOR_INTERN(href);
-	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 
 	    /*
 	     *	Check whether a BASE tag is in effect, and use it
@@ -3173,7 +3171,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    /*
 	     *	Check whether to fill in localhost. - FM
 	     */
-	    LYFillLocalFileURL((char **)&href,
+	    LYFillLocalFileURL(&href,
 			       ((((me->inBASE && *href != '\0') &&
 				  !(*href == '#' &&
 				    LYSeekFragAREAinCur == TRUE)))
@@ -3256,7 +3254,7 @@ PRIVATE void HTML_start_element ARGS6(
 	me->inFIG = TRUE;
 	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, include);
 	}
 	if (!present ||
 	    (present && !present[HTML_FIG_ISOBJECT])) {
@@ -3275,7 +3273,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    value[HTML_FIG_SRC] && *value[HTML_FIG_SRC] != '\0') {
 	    StrAllocCopy(href, value[HTML_FIG_SRC]);
 	    CHECK_FOR_INTERN(href);
-	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 	    if (*href) {
 		/*
 		 *  Check whether a base tag is in effect. - FM
@@ -3292,7 +3290,7 @@ PRIVATE void HTML_start_element ARGS6(
 		/*
 		 *  Check whether to fill in localhost. - FM
 		 */
-		LYFillLocalFileURL((char **)&href,
+		LYFillLocalFileURL(&href,
 				   ((*href != '#' &&
 				     me->inBASE) ?
 				   me->base_href : me->node_anchor->address));
@@ -3435,7 +3433,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    value[HTML_OVERLAY_SRC] && *value[HTML_OVERLAY_SRC] != '\0') {
 	    StrAllocCopy(href, value[HTML_OVERLAY_SRC]);
 	    CHECK_FOR_INTERN(href);
-	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 	    if (*href) {
 		/*
 		 *  Check whether a base tag is in effect. - FM
@@ -3452,14 +3450,14 @@ PRIVATE void HTML_start_element ARGS6(
 		/*
 		 *  Check whether to fill in localhost. - FM
 		 */
-		LYFillLocalFileURL((char **)&href,
+		LYFillLocalFileURL(&href,
 				   ((*href != '#' &&
 				     me->inBASE) ?
 				   me->base_href : me->node_anchor->address));
 
 		if (me->inA) {
 		    SET_SKIP_STACK(HTML_A);
-		    HTML_end_element(me, HTML_A, (char **)&include);
+		    HTML_end_element(me, HTML_A, include);
 		}
 		me->CurrentA = HTAnchor_findChildAndLink(
 					me->node_anchor,	/* Parent */
@@ -3555,14 +3553,13 @@ PRIVATE void HTML_start_element ARGS6(
 		 */
 		if (*base == '\0')
 		    StrAllocCopy(base, "/");
-		if (base[strlen(base)-1] != '/')
-		    StrAllocCat(base, "/");
-		url_type = LYLegitimizeHREF(me, (char**)&base, TRUE, FALSE);
+		LYAddHtmlSep(&base);
+		url_type = LYLegitimizeHREF(me, &base, TRUE, FALSE);
 
 		/*
 		 *  Check whether to fill in localhost. - FM
 		 */
-		LYFillLocalFileURL((char **)&base,
+		LYFillLocalFileURL(&base,
 				   (me->inBASE ?
 				 me->base_href : me->node_anchor->address));
 
@@ -3588,7 +3585,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    StrAllocCopy(code, value[HTML_APPLET_CODE]);
-	    url_type = LYLegitimizeHREF(me, (char**)&code, TRUE, FALSE);
+	    url_type = LYLegitimizeHREF(me, &code, TRUE, FALSE);
 	    href = HTParse(code, base, PARSE_ALL);
 	    FREE(base);
 	    FREE(code);
@@ -3641,7 +3638,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    value[HTML_BGSOUND_SRC] && *value[HTML_BGSOUND_SRC] != '\0') {
 	    StrAllocCopy(href, value[HTML_BGSOUND_SRC]);
 	    CHECK_FOR_INTERN(href);
-	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 	    if (*href == '\0') {
 		FREE(href);
 		break;
@@ -3662,7 +3659,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    /*
 	     *	Check whether to fill in localhost. - FM
 	     */
-	    LYFillLocalFileURL((char **)&href,
+	    LYFillLocalFileURL(&href,
 			       ((*href != '#' &&
 				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
@@ -3755,7 +3752,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    value[HTML_EMBED_SRC] && *value[HTML_EMBED_SRC] != '\0') {
 	    StrAllocCopy(href, value[HTML_EMBED_SRC]);
 	    CHECK_FOR_INTERN(href);
-	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+	    url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 	    if (*href != '\0') {
 		/*
 		 *  Check whether a base tag is in effect. - FM
@@ -3772,7 +3769,7 @@ PRIVATE void HTML_start_element ARGS6(
 		/*
 		 *  Check whether to fill in localhost. - FM
 		 */
-		LYFillLocalFileURL((char **)&href,
+		LYFillLocalFileURL(&href,
 				   ((*href != '#' &&
 				     me->inBASE) ?
 				   me->base_href : me->node_anchor->address));
@@ -3901,7 +3898,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    if (me->inFORM) {
 		CTRACE(tfp, "HTML: Missing FORM end tag. Faking it!\n");
 		SET_SKIP_STACK(HTML_FORM);
-		HTML_end_element(me, HTML_FORM, (char **)&include);
+		HTML_end_element(me, HTML_FORM, include);
 	    }
 
 	    /*
@@ -3919,7 +3916,7 @@ PRIVATE void HTML_start_element ARGS6(
 		 *  Prepare to do housekeeping on the reference. - FM
 		 */
 		StrAllocCopy(action, value[HTML_FORM_ACTION]);
-		url_type = LYLegitimizeHREF(me, (char**)&action, TRUE, TRUE);
+		url_type = LYLegitimizeHREF(me, &action, TRUE, TRUE);
 
 		/*
 		 *  Check whether a base tag is in effect.  Note that
@@ -4355,7 +4352,7 @@ PRIVATE void HTML_start_element ARGS6(
 		if (me->sp->tag_number != HTML_SELECT) {
 		    SET_SKIP_STACK(HTML_SELECT);
 		}
-		HTML_end_element(me, HTML_SELECT, (char **)&include);
+		HTML_end_element(me, HTML_SELECT, include);
 	    }
 
 	    /*
@@ -4401,7 +4398,7 @@ PRIVATE void HTML_start_element ARGS6(
 		 *  SRC's value a link if it's still not zero-length
 		 *  legitiimizing it. - FM
 		 */
-		url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
+		url_type = LYLegitimizeHREF(me, &href, TRUE, TRUE);
 		if (*href) {
 		    /*
 		     *	Check whether a base tag is in effect. - FM
@@ -4418,7 +4415,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    /*
 		     *	Check whether to fill in localhost. - FM
 		     */
-		    LYFillLocalFileURL((char **)&href,
+		    LYFillLocalFileURL(&href,
 				       ((*href != '#' &&
 					 me->inBASE) ?
 				       me->base_href :
@@ -4426,7 +4423,7 @@ PRIVATE void HTML_start_element ARGS6(
 
 		    if (me->inA) {
 			SET_SKIP_STACK(HTML_A);
-			HTML_end_element(me, HTML_A, (char **)&include);
+			HTML_end_element(me, HTML_A, include);
 		    }
 		    me->CurrentA = HTAnchor_findChildAndLink(
 					me->node_anchor,	/* Parent */
@@ -4798,7 +4795,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    if (me->sp->tag_number != HTML_SELECT) {
 		SET_SKIP_STACK(HTML_SELECT);
 	    }
-	    HTML_end_element(me, HTML_SELECT, (char **)&include);
+	    HTML_end_element(me, HTML_SELECT, include);
 	}
 
 	/*
@@ -4806,7 +4803,7 @@ PRIVATE void HTML_start_element ARGS6(
 	 */
 	LYHandleSELECT(me,
 		       present, (CONST char **)value,
-		       (char **)&include,
+		       include,
 		       TRUE);
 	break;
 
@@ -5022,11 +5019,11 @@ PRIVATE void HTML_start_element ARGS6(
 	 */
 	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, include);
 	}
 	if (me->Underline_Level > 0) {
 	    SET_SKIP_STACK(HTML_U);
-	    HTML_end_element(me, HTML_U, (char **)&include);
+	    HTML_end_element(me, HTML_U, include);
 	}
 	me->inTABLE = TRUE;
 	if (!strcmp(me->sp->style->name, "Preformatted")) {
@@ -5076,11 +5073,11 @@ PRIVATE void HTML_start_element ARGS6(
 	 */
 	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, include);
 	}
 	if (me->Underline_Level > 0) {
 	    SET_SKIP_STACK(HTML_U);
-	    HTML_end_element(me, HTML_U, (char **)&include);
+	    HTML_end_element(me, HTML_U, include);
 	}
 	UPDATE_STYLE;
 	if (HText_LastLineSize(me->text, FALSE)) {
@@ -5128,11 +5125,11 @@ PRIVATE void HTML_start_element ARGS6(
 	 */
 	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, include);
 	}
 	if (me->Underline_Level > 0) {
 	    SET_SKIP_STACK(HTML_U);
-	    HTML_end_element(me, HTML_U, (char **)&include);
+	    HTML_end_element(me, HTML_U, include);
 	}
 	UPDATE_STYLE;
 	CHECK_ID(HTML_TR_ID);
@@ -5145,11 +5142,11 @@ PRIVATE void HTML_start_element ARGS6(
 	 */
 	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, include);
 	}
 	if (me->Underline_Level > 0) {
 	    SET_SKIP_STACK(HTML_U);
-	    HTML_end_element(me, HTML_U, (char **)&include);
+	    HTML_end_element(me, HTML_U, include);
 	}
 	UPDATE_STYLE;
 	CHECK_ID(HTML_COL_ID);
@@ -5158,11 +5155,11 @@ PRIVATE void HTML_start_element ARGS6(
     case HTML_TH:
 	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, include);
 	}
 	if (me->Underline_Level > 0) {
 	    SET_SKIP_STACK(HTML_U);
-	    HTML_end_element(me, HTML_U, (char **)&include);
+	    HTML_end_element(me, HTML_U, include);
 	}
 	UPDATE_STYLE;
 	CHECK_ID(HTML_TD_ID);
@@ -5176,11 +5173,11 @@ PRIVATE void HTML_start_element ARGS6(
     case HTML_TD:
 	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, include);
 	}
 	if (me->Underline_Level > 0) {
 	    SET_SKIP_STACK(HTML_U);
-	    HTML_end_element(me, HTML_U, (char **)&include);
+	    HTML_end_element(me, HTML_U, include);
 	}
 	UPDATE_STYLE;
 	CHECK_ID(HTML_TD_ID);
@@ -5269,7 +5266,7 @@ PRIVATE void HTML_start_element ARGS6(
 #if defined(PREVAIL)
 			start=strrchr(Style_className, '.');
 			if (start)
-				strcpy(prevailing_class, (char*)(start+1));
+				strcpy(prevailing_class, (start+1));
 			else
 				strcpy(prevailing_class, "");
 #endif
@@ -5489,7 +5486,7 @@ PRIVATE void HTML_end_element ARGS3(
 				     ((MBM_A_subdescript[i] &&
 				       *MBM_A_subdescript[i]) ?
 					 MBM_A_subdescript[i] : "(none)"));
-			LYEntify((char **)&temp, TRUE);
+			LYEntify(&temp, TRUE);
 			StrAllocCat(*include, temp);
 			StrAllocCat(*include,
 				"<BR><EM>&nbsp;&nbsp;&nbsp;Filepath:</EM> ");
@@ -5497,7 +5494,7 @@ PRIVATE void HTML_end_element ARGS3(
 				     ((MBM_A_subbookmark[i] &&
 				       *MBM_A_subbookmark[i]) ?
 					 MBM_A_subbookmark[i] : "(unknown)"));
-			LYEntify((char **)&temp, TRUE);
+			LYEntify(&temp, TRUE);
 			StrAllocCat(*include, temp);
 			FREE(temp);
 			StrAllocCat(*include, "</H2>");
@@ -5626,7 +5623,7 @@ PRIVATE void HTML_end_element ARGS3(
     case HTML_P:
 	LYHandleP(me,
 		 (CONST BOOL*)0, (CONST char **)0,
-		 (char **)&include,
+		 include,
 		 FALSE);
 	break;
 
@@ -6200,7 +6197,7 @@ End_Object:
 	    if (me->sp->tag_number != HTML_SELECT) {
 		SET_SKIP_STACK(HTML_SELECT);
 	    }
-	    HTML_end_element(me, HTML_SELECT, (char **)&include);
+	    HTML_end_element(me, HTML_SELECT, include);
 	}
 
 	/*
@@ -6651,7 +6648,7 @@ End_Object:
 	{
 		char *dot=strrchr(Style_className,'.');
 		LYstrncpy(prevailing_class,
-			  dot ? (char*)(dot+1) : "",
+			  dot ? (dot+1) : "",
 			  (TEMPSTRINGSIZE - 1));
 	}
 #endif
@@ -6730,15 +6727,15 @@ PRIVATE void HTML_free ARGS1(HTStructured *, me)
 	    CTRACE(tfp,"HTML_free: Ending underline\n");
 	}
 	if (me->inA) {
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, &include);
 	    me->inA = FALSE;
 	}
 	if (me->inFONT) {
-	    HTML_end_element(me, HTML_FONT, (char **)&include);
+	    HTML_end_element(me, HTML_FONT, &include);
 	    me->inFONT = FALSE;
 	}
 	if (me->inFORM) {
-	    HTML_end_element(me, HTML_FORM, (char **)&include);
+	    HTML_end_element(me, HTML_FORM, &include);
 	    me->inFORM = FALSE;
 	}
 	if (me->option.size > 0) {
@@ -6795,14 +6792,14 @@ PRIVATE void HTML_free ARGS1(HTStructured *, me)
 	if (!dump_output_immediately &&
 	    HText_sourceAnchors(me->text) < 1 &&
 	    HText_HiddenLinkCount(me->text) > 0) {
-	    HTML_start_element(me, HTML_P, 0, 0, -1, (char **)&include);
+	    HTML_start_element(me, HTML_P, 0, 0, -1, &include);
 	    HTML_put_character(me, '[');
-	    HTML_start_element(me, HTML_EM, 0, 0, -1, (char **)&include);
+	    HTML_start_element(me, HTML_EM, 0, 0, -1, &include);
 	    HTML_put_string(me,
 		"Document has only hidden links. Use the 'l'ist command.");
-	    HTML_end_element(me, HTML_EM, (char **)&include);
+	    HTML_end_element(me, HTML_EM, &include);
 	    HTML_put_character(me, ']');
-	    HTML_end_element(me, HTML_P, (char **)&include);
+	    HTML_end_element(me, HTML_P, &include);
 	}
 
 	/*
@@ -6888,15 +6885,15 @@ PRIVATE void HTML_abort ARGS2(HTStructured *, me, HTError, e)
 	    me->Underline_Level = 0;
 	}
 	if (me->inA) {
-	    HTML_end_element(me, HTML_A, (char **)&include);
+	    HTML_end_element(me, HTML_A, &include);
 	    me->inA = FALSE;
 	}
 	if (me->inFONT) {
-	    HTML_end_element(me, HTML_FONT, (char **)&include);
+	    HTML_end_element(me, HTML_FONT, &include);
 	    me->inFONT = FALSE;
 	}
 	if (me->inFORM) {
-	    HTML_end_element(me, HTML_FORM, (char **)&include);
+	    HTML_end_element(me, HTML_FORM, &include);
 	    me->inFORM = FALSE;
 	}
 
diff --git a/src/LYBookmark.c b/src/LYBookmark.c
index a75c5eaa..60dcda52 100644
--- a/src/LYBookmark.c
+++ b/src/LYBookmark.c
@@ -5,7 +5,6 @@
 #include <LYBookmark.h>
 #include <LYGlobalDefs.h>
 #include <LYSignal.h>
-#include <LYSystem.h>
 #include <LYKeymap.h>
 #include <LYCharUtils.h> /* need for META charset */
 #include <LYCharSets.h>  /* need for LYHaveCJKCharacterSet */
@@ -289,7 +288,7 @@ PUBLIC void save_bookmark_link ARGS2(
      */
     StrAllocCopy(Title, string_buffer);
     LYEntify(&Title, TRUE);
-    if (LYSaveBookmarksInUnicode &&
+    if (UCSaveBookmarksInUnicode &&
 		have8bit(Title) && (!LYHaveCJKCharacterSet))
 	StrAllocCopy(Title, title_convert8bit(Title));
 
@@ -525,7 +524,7 @@ PUBLIC void remove_bookmark_link ARGS2(
 	    RM_PATH, newfile);
 
 	CTRACE(tfp, "remove_bookmark_link: %s\n", buffer);
-	if( system( buffer ) ) {
+	if( LYSystem( buffer ) ) {
 	    HTAlert(BOOKTEMP_COPY_FAIL);
 	} else {
 	    return;
@@ -563,7 +562,7 @@ PUBLIC void remove_bookmark_link ARGS2(
 	{
 	    char buffer[2048];
 	    sprintf(buffer, "%s %s %s", MV_PATH, newfile, filename_buffer);
-	    system(buffer);
+	    LYSystem(buffer);
 	    return;
 	}
 #endif /* !VMS */
diff --git a/src/LYCgi.c b/src/LYCgi.c
index 5c51fe9b..b5cdcb2e 100644
--- a/src/LYCgi.c
+++ b/src/LYCgi.c
@@ -545,9 +545,7 @@ PRIVATE int LYLoadCGI ARGS4(
 		if (LYCgiDocumentRoot != NULL && path_info != NULL ) {
 		    /* Construct and add PATH_TRANSLATED to env */
 		    StrAllocCopy(document_root, LYCgiDocumentRoot);
-		    if (document_root[strlen(document_root) - 1] == '/') {
-			document_root[strlen(document_root) - 1] = '\0';
-		    }
+		    LYTrimHtmlSep(document_root);
 		    path_translated = document_root;
 		    StrAllocCat(path_translated, path_info);
 		    cp = NULL;
diff --git a/src/LYCharSets.c b/src/LYCharSets.c
index 7fe7e749..415d1584 100644
--- a/src/LYCharSets.c
+++ b/src/LYCharSets.c
@@ -331,8 +331,8 @@ PUBLIC CONST char ** LYCharSets[MAXCHARSETS]={
 	SevenBitApproximations, /* Macintosh (8 bit)	*/
 	SevenBitApproximations, /* NeXT character set	*/
 	SevenBitApproximations, /* Chinese		*/
-	SevenBitApproximations, /* Japanese (EUC)	*/
-	SevenBitApproximations, /* Japanese (SJIS)	*/
+	SevenBitApproximations, /* Japanese (EUC-JP)	*/
+	SevenBitApproximations, /* Japanese (Shift_JIS)	*/
 	SevenBitApproximations, /* Korean		*/
 	SevenBitApproximations, /* Taipei (Big5)	*/
 	SevenBitApproximations, /* Vietnamese (VISCII)	*/
@@ -345,20 +345,20 @@ PUBLIC CONST char ** LYCharSets[MAXCHARSETS]={
  *  The order of LYCharSets and LYchar_set_names MUST be the same
  */
 PUBLIC CONST char * LYchar_set_names[MAXCHARSETSP]={
-	"ISO Latin 1         ",
-	"DosLatin1 (cp850)   ",
-	"WinLatin1 (cp1252)  ",
-	"DosLatinUS (cp437)  ",
+	"Western (ISO-8859-1)  ",
+	"Western (cp850)       ",
+	"Western (windows-1252)",
+	"IBM PC US codepage (cp437)",
 	"DEC Multinational   ",
 	"Macintosh (8 bit)   ",
 	"NeXT character set  ",
 	"Chinese             ",
-	"Japanese (EUC)      ",
-	"Japanese (SJIS)     ",
+	"Japanese (EUC-JP)   ",
+	"Japanese (Shift_JIS)",
 	"Korean              ",
 	"Taipei (Big5)       ",
 	"Vietnamese (VISCII) ",
-	"7 bit approximations",
+	"7 bit approximations (US-ASCII)",
 	"Transparent         ",
 	(char *) 0
 };
@@ -469,7 +469,7 @@ PUBLIC void HTMLSetCharacterHandling ARGS1(int,i)
 {
     int chndl = -2;
     if (LYCharSet_UC[i].enc != UCT_ENC_CJK) {
-	chndl = 0;
+	chndl = UCGetLYhndl_byMIME("iso-8859-1");
 
 	if (UCAssume_MIMEcharset)
 	    chndl = UCGetLYhndl_byMIME(UCAssume_MIMEcharset);
@@ -507,7 +507,7 @@ PUBLIC void HTMLSetCharacterHandling ARGS1(int,i)
 	HTPassHighCtrlRaw = (HTCJK != NOCJK) ? TRUE : FALSE;
 	HTPassHighCtrlNum = FALSE;
 
-    } else if (!strncmp(LYchar_set_names[i], "Japanese (EUC)", 14)) {
+    } else if (!strncmp(LYchar_set_names[i], "Japanese (EUC-JP)", 17)) {
 	HTCJK = LYUseDefaultRawMode ? JAPANESE : NOCJK;
 	LYRawMode = (HTCJK != NOCJK) ? TRUE : FALSE;
 	kanji_code = EUC;
@@ -516,7 +516,7 @@ PUBLIC void HTMLSetCharacterHandling ARGS1(int,i)
 	HTPassHighCtrlRaw = (HTCJK != NOCJK) ? TRUE : FALSE;
 	HTPassHighCtrlNum = FALSE;
 
-    } else if (!strncmp(LYchar_set_names[i], "Japanese (SJIS)", 15)) {
+    } else if (!strncmp(LYchar_set_names[i], "Japanese (Shift_JIS)", 20)) {
 	HTCJK = LYUseDefaultRawMode ? JAPANESE : NOCJK;
 	LYRawMode = (HTCJK != NOCJK) ? TRUE : FALSE;
 	kanji_code = SJIS;
@@ -557,7 +557,7 @@ PUBLIC void HTMLSetCharacterHandling ARGS1(int,i)
 	UCLYhndl_for_unspec = i;
     } else {
 	if (chndl == -2) {
-	    chndl = 0;
+	    chndl = UCGetLYhndl_byMIME("iso-8859-1");
 
 	    if (UCAssume_MIMEcharset)
 		chndl = UCGetLYhndl_byMIME(UCAssume_MIMEcharset);
@@ -567,7 +567,7 @@ PUBLIC void HTMLSetCharacterHandling ARGS1(int,i)
 	     LYCharSet_UC[chndl].enc != UCT_ENC_CJK)) {
 	    UCLYhndl_for_unspec = chndl;
 	} else {
-	    UCLYhndl_for_unspec = 0;
+	    UCLYhndl_for_unspec = UCGetLYhndl_byMIME("iso-8859-1");
 	}
     }
 
@@ -593,10 +593,10 @@ PUBLIC void HTMLSetCharacterHandling ARGS1(int,i)
  */
 PUBLIC void HTMLSetRawModeDefault ARGS1(int,i)
 {
-    if (!strncmp(LYchar_set_names[i], "ISO Latin 1", 11) ||
+    if (!strncmp(LYchar_set_names[i], "Western (ISO-8859-1)", 20) ||
 	!strncmp(LYchar_set_names[i], "Chinese", 7) ||
-	!strncmp(LYchar_set_names[i], "Japanese (EUC)", 14) ||
-	!strncmp(LYchar_set_names[i], "Japanese (SJIS)", 15) ||
+	!strncmp(LYchar_set_names[i], "Japanese (EUC-JP)", 17) ||
+	!strncmp(LYchar_set_names[i], "Japanese (Shift_JIS)", 20) ||
 	!strncmp(LYchar_set_names[i], "Korean", 6) ||
 	!strncmp(LYchar_set_names[i], "Taipei (Big5)", 13)) {
 	LYDefaultRawMode = TRUE;
@@ -616,7 +616,7 @@ PUBLIC void HTMLSetUseDefaultRawMode ARGS2(
 	BOOLEAN,	modeflag)
 {
     if (LYCharSet_UC[i].enc != UCT_ENC_CJK) {
-	int chndl = 0;
+	int chndl = UCGetLYhndl_byMIME("iso-8859-1");
 
 	if (UCAssume_MIMEcharset)
 	    chndl = UCGetLYhndl_byMIME(UCAssume_MIMEcharset);
@@ -624,10 +624,10 @@ PUBLIC void HTMLSetUseDefaultRawMode ARGS2(
 	    LYUseDefaultRawMode = modeflag;
 	else
 	    LYUseDefaultRawMode = (!modeflag);
-    } else if (!strncmp(LYchar_set_names[i], "ISO Latin 1", 11) ||
+    } else if (!strncmp(LYchar_set_names[i], "Western (ISO-8859-1)", 20) ||
 	       !strncmp(LYchar_set_names[i], "Chinese", 7) ||
-	       !strncmp(LYchar_set_names[i], "Japanese (EUC)", 14) ||
-	       !strncmp(LYchar_set_names[i], "Japanese (SJIS)", 15) ||
+	       !strncmp(LYchar_set_names[i], "Japanese (EUC-JP)", 17) ||
+	       !strncmp(LYchar_set_names[i], "Japanese (Shift_JIS)", 20) ||
 	       !strncmp(LYchar_set_names[i], "Korean", 6) ||
 	       !strncmp(LYchar_set_names[i], "Taipei (Big5)", 13)) {
 	if (modeflag == TRUE) {
@@ -652,8 +652,8 @@ PUBLIC void HTMLSetUseDefaultRawMode ARGS2(
 PUBLIC void HTMLSetHaveCJKCharacterSet ARGS1(int,i)
 {
     if (!strncmp(LYchar_set_names[i], "Chinese", 7) ||
-	!strncmp(LYchar_set_names[i], "Japanese (EUC)", 14) ||
-	!strncmp(LYchar_set_names[i], "Japanese (SJIS)", 15) ||
+	!strncmp(LYchar_set_names[i], "Japanese (EUC-JP)", 17) ||
+	!strncmp(LYchar_set_names[i], "Japanese (Shift_JIS)", 20) ||
 	!strncmp(LYchar_set_names[i], "Korean", 6) ||
 	!strncmp(LYchar_set_names[i], "Taipei (Big5)", 13)) {
 	LYHaveCJKCharacterSet = TRUE;
@@ -671,33 +671,36 @@ PUBLIC void HTMLSetHaveCJKCharacterSet ARGS1(int,i)
  */
 PRIVATE void HTMLSetDisplayCharsetMatchLocale ARGS1(int,i)
 {
-    if (strncasecomp(LYCharSet_UC[i].MIMEname, "cp", 2) ||
-	strncasecomp(LYCharSet_UC[i].MIMEname, "windows", 7)) {
+    if  (LYHaveCJKCharacterSet) {
 	/*
-	** Assume dos/windows displays usually on remote terminal,
-	** so rarely match locale.
-	** (in fact, MS Windows codepoints locale are never seen on UNIX).
+	** We have no intention to pass CJK via UCTransChar if that happened.
+	** Let someone from CJK correct this if necessary.
+	*/
+	DisplayCharsetMatchLocale = TRUE; /* old-style */
+	return;
+
+    } else if (strncasecomp(LYCharSet_UC[i].MIMEname, "cp", 2) ||
+		strncasecomp(LYCharSet_UC[i].MIMEname, "windows", 7)) {
+	/*
+	** Assume dos/windows displays usually on remote terminal, hence it
+	** rarely matches locale.  (In fact, MS Windows codepoints locale are
+	** never seen on UNIX).
 	*/
 	DisplayCharsetMatchLocale = FALSE;
     } else {
-	DisplayCharsetMatchLocale = TRUE;
-    }
+	DisplayCharsetMatchLocale = TRUE; /* guess, but see below */
 
 #if !defined(LOCALE)
-	/*
-	** But we have no intention to pass CJK via UCTransChar if that happened.
-	** Let someone from CJK correct this if necessary.
-	*/
-	if  (!LYHaveCJKCharacterSet)
-	    DisplayCharsetMatchLocale = FALSE;
-#endif
-#if defined(LOCALE) && defined(EXP_8BIT_TOUPPER)
-	/*
-	** Force disable locale
-	*/
-	if  (!LYHaveCJKCharacterSet)
+	DisplayCharsetMatchLocale = FALSE;
+#else
+	if (UCForce8bitTOUPPER) {
+	    /*
+	    ** Force disable locale (from lynx.cfg)
+	    */
 	    DisplayCharsetMatchLocale = FALSE;
+	}
 #endif
+    }
 
     return;
 }
@@ -897,7 +900,7 @@ PUBLIC int LYCharSetsDeclared NOPARAMS
     if (UCAssume_MIMEcharset && *UCAssume_MIMEcharset) {
 	UCLYhndl_for_unspec = UCGetLYhndl_byMIME(UCAssume_MIMEcharset);
     } else {
-	UCLYhndl_for_unspec = 0;
+	UCLYhndl_for_unspec = UCGetLYhndl_byMIME("iso-8859-1");
     }
     if (UCAssume_localMIMEcharset && *UCAssume_localMIMEcharset)
 	UCLYhndl_HTFile_for_unspec =
diff --git a/src/LYCharUtils.c b/src/LYCharUtils.c
index fed8a24b..cc53b72f 100644
--- a/src/LYCharUtils.c
+++ b/src/LYCharUtils.c
@@ -335,7 +335,7 @@ PUBLIC void LYFillLocalFileURL ARGS2(
 	    StrAllocCopy(temp, (*href+7));
 	    StrAllocCopy(*href, "file://localhost");
 	    StrAllocCat(*href, temp);
-	} else if (!strncmp(*href, "file:/", 6) && *(*href+6) != '/') {
+	} else if (!strncmp(*href, "file:/", 6) && !LYIsHtmlSep(*(*href+6))) {
 	    StrAllocCopy(temp, (*href+5));
 	    StrAllocCopy(*href, "file://localhost");
 	    StrAllocCat(*href, temp);
@@ -363,8 +363,7 @@ PUBLIC void LYFillLocalFileURL ARGS2(
 	temp2 = curdir;
 #endif /* DOSPATH */
 #endif /* VMS */
-	if (temp2[0] != '/')
-	    StrAllocCat(*href, "/");
+	LYAddHtmlSep(href);
 	/*
 	 *  Check for pathological cases - current dir has chars which
 	 *  MUST BE URL-escaped - kw
@@ -3532,7 +3531,7 @@ PUBLIC int LYLegitimizeHREF ARGS4(
 			    PARSE_PATH+PARSE_PUNCTUATION)) != NULL &&
 	    !strncmp(path, "/..", 3)) {
 	    cp = (path + 3);
-	    if (*cp == '/' || *cp == '\0') {
+	    if (LYIsHtmlSep(*cp) || *cp == '\0') {
 		if ((me->inBASE ?
 	       me->base_href[4] : me->node_anchor->address[4]) == 's') {
 		    str = "s";
@@ -3550,7 +3549,7 @@ PUBLIC int LYLegitimizeHREF ARGS4(
 	    }
 	    if (*cp == '\0') {
 		StrAllocCopy(*href, "/");
-	    } else if (*cp == '/') {
+	    } else if (LYIsHtmlSep(*cp)) {
 		while (!strncmp(cp, "/..", 3)) {
 		    if (*(cp + 3) == '/') {
 			cp += 3;
diff --git a/src/LYCookie.c b/src/LYCookie.c
index 9f84e2f6..c82dd592 100644
--- a/src/LYCookie.c
+++ b/src/LYCookie.c
@@ -17,8 +17,6 @@
 **		- FM					1997-08-02
 **
 **  TO DO: (roughly in order of decreasing priority)
-      * A means to specify "always allow" and "never allow" domains via
-	a configuration file is needed.
       * Hex escaping isn't considered at all.  Any semi-colons, commas,
 	or spaces actually in cookie names or values (i.e., not serving
 	as punctuation for the overall Set-Cookie value) should be hex
@@ -56,7 +54,6 @@
 #include <LYGlobalDefs.h>
 #include <LYEdit.h>
 #include <LYStrings.h>
-#include <LYSystem.h>
 #include <GridText.h>
 #include <LYUtils.h>
 #include <LYCharUtils.h>
@@ -1908,14 +1905,13 @@ PUBLIC void LYLoadCookies ARGS1 (
 
 /* rjp - experimental persistent cookie support */
 PRIVATE void LYStoreCookies ARGS1 (
-	CONST char *,	cookie_fileX)
+	CONST char *,	cookie_file)
 {
     char buf[1024];
     HTList *dl, *cl;
     domain_entry *de;
     cookie *co;
     FILE *cookie_handle;
-    char *cookie_file = "cookies";
 #ifdef VMS
     extern BOOLEAN HadVMSInterrupt;
 #endif /* VMS */
@@ -2016,7 +2012,7 @@ PRIVATE int LYHandleCookies ARGS4 (
 
 #ifdef EXP_PERSISTENT_COOKIES
     /* rjp - this can go here for now */
-    LYStoreCookies ("j");
+    LYStoreCookies (LYCookieFile);
 #endif
 
     /*
@@ -2481,7 +2477,7 @@ PUBLIC void cookie_add_acceptlist ARGS1(
 	    de = (domain_entry *)calloc(1, sizeof(domain_entry));
 
 	    if (de == NULL)
-		    outofmem(__FILE__, "cookie_accept_domain");
+		    outofmem(__FILE__, "cookie_add_acceptlist");
 
 	    de->bv = ACCEPT_ALWAYS;
 
@@ -2548,7 +2544,7 @@ PUBLIC void cookie_add_rejectlist ARGS1(
 	    de = (domain_entry *)calloc(1, sizeof(domain_entry));
 
 	    if (de == NULL)
-		    outofmem(__FILE__, "cookie_reject_domain");
+		    outofmem(__FILE__, "cookie_add_rejectlist");
 
 	    de->bv = REJECT_ALWAYS;
 
diff --git a/src/LYCurses.c b/src/LYCurses.c
index 1794d363..4bbd8758 100644
--- a/src/LYCurses.c
+++ b/src/LYCurses.c
@@ -14,12 +14,6 @@
 #include <LYexit.h>
 #include <LYLeaks.h>
 
-#ifdef VMS
-#define DISPLAY "DECW$DISPLAY"
-#else
-#define DISPLAY "DISPLAY"
-#endif /* VMS */
-
 #if defined(VMS) && defined(__GNUC__)
 #include <gnu_hacks.h>
 #undef LINES
@@ -944,10 +938,10 @@ PUBLIC BOOLEAN setup ARGS1(
      *	If the display was not set by a command line option then
      *	see if it is available from the environment.
      */
-    if ((cp = getenv(DISPLAY)) != NULL && *cp != '\0') {
-	StrAllocCopy(display, cp);
+    if ((cp = LYgetXDisplay()) != 0) {
+	StrAllocCopy(x_display, cp);
     } else {
-	FREE(display);
+	FREE(x_display);
     }
 
     /*
@@ -1041,10 +1035,10 @@ PUBLIC BOOLEAN setup ARGS1(
     *  If the display was not set by a command line option then
     *  see if it is available from the environment .
     */
-    if ((cp = getenv(DISPLAY)) != NULL && *cp != '\0') {
-	StrAllocCopy(display, cp);
+    if ((cp = LYgetXDisplay()) != NULL) {
+	StrAllocCopy(x_display, cp);
     } else {
-	FREE(display);
+	FREE(x_display);
     }
 
     if (terminal != NULL) {
@@ -1582,7 +1576,7 @@ void (*func)();
  *	Exception-handler routines for regulating interrupts and enabling
  *	Control-T during spawns.  Includes TRUSTED flag for versions of VMS
  *	which require it in captive accounts.  This code should be used
- *	instead of the VAXC or DECC system(), by including LYSystem.h in
+ *	instead of the VAXC or DECC system(), by including LYUtils.h in
  *	modules which have system() calls.  It helps ensure that we return
  *	to Lynx instead of breaking out to DCL if a user issues interrupts
  *	or generates an ACCVIO during spawns.
diff --git a/src/LYCurses.h b/src/LYCurses.h
index cd658287..9df3b749 100644
--- a/src/LYCurses.h
+++ b/src/LYCurses.h
@@ -157,6 +157,7 @@ extern void LYstartTargetEmphasis NOPARAMS;
 extern void LYstopTargetEmphasis NOPARAMS;
 
 #ifdef VMS
+extern int DCLsystem (char *command);
 extern void VMSexit();
 extern int ttopen();
 extern int ttclose();
diff --git a/src/LYDownload.c b/src/LYDownload.c
index 73a82c6b..26b1eef9 100644
--- a/src/LYDownload.c
+++ b/src/LYDownload.c
@@ -10,7 +10,6 @@
 #include <LYClean.h>
 #include <LYGetFile.h>
 #include <LYDownload.h>
-#include <LYSystem.h>
 #ifdef VMS
 #include <HTVMSUtils.h>
 #endif /* VMS */
@@ -46,7 +45,7 @@ PUBLIC void LYDownload ARGS1(
     char command[512];
     char *cp, *cp1;
     lynx_html_item_type *download_command = 0;
-    int c, len;
+    int c;
     FILE *fp;
     int ch, recall;
     int FnameTotal;
@@ -236,8 +235,7 @@ check_recall:
 	if ((cp = strchr(buffer, '~'))) {
 	    *(cp++) = '\0';
 	    strcpy(command, buffer);
-	    if ((len = strlen(command)) > 0 && command[len-1] == '/')
-		command[len-1] = '\0';
+	    LYTrimPathSep(command);
 #ifdef DOSPATH
 	    strcat(command, HTDOS_wwwName((char *)Home_Dir()));
 #else
@@ -263,12 +261,22 @@ check_recall:
 	    strcpy(buffer, command);
 	}
 #else
+
 #ifndef __EMX__
-	if (*buffer != '/')
+	if (!LYIsPathSep(*buffer)) {
+#if defined(__DJGPP__) || defined(_WINDOWS)
+	    if (strchr(buffer, ':') != NULL)
+		cp = NULL;
+	    else
+#endif /*  __DJGPP__ || _WINDOWS */
 	    cp = getenv("PWD");
+	}
 	else
 #endif /* __EMX__*/
 	    cp = NULL;
+
+	LYTrimPathSep(cp);
+
 	if (cp) {
 	    sprintf(command, "%s/%s", cp, buffer);
 #ifdef DOSPATH
@@ -343,12 +351,8 @@ check_recall:
 	    CTRACE(tfp, "         FAILED!\n");
 	    sprintf(command, COPY_COMMAND, file, buffer);
 	    CTRACE(tfp, "command: %s\n", command);
-	    fflush(stderr);
-	    fflush(stdout);
 	    stop_curses();
-	    system(command);
-	    fflush(stdout);
-	    fflush(stderr);
+	    LYSystem(command);
 	    start_curses();
 	} else {
 	    /*
@@ -373,12 +377,8 @@ check_recall:
 	sprintf(command, "%s %s %s", COPY_PATH, file, buffer);
 #endif /* __EMX__ */
 	CTRACE(tfp, "command: %s\n", command);
-	fflush(stderr);
-	fflush(stdout);
 	stop_curses();
-	system(command);
-	fflush(stdout);
-	fflush(stderr);
+	LYSystem(command);
 	start_curses();
 #if defined(UNIX)
 	LYRelaxFilePermissions(buffer);
@@ -542,11 +542,7 @@ check_recall:
 
 	CTRACE(tfp, "command: %s\n", command);
 	stop_curses();
-	fflush(stderr);
-	fflush(stdout);
-	system(command);
-	fflush(stderr);
-	fflush(stdout);
+	LYSystem(command);
 	start_curses();
 	/* don't remove(file); */
     }
@@ -617,11 +613,8 @@ PUBLIC int LYdownload_options ARGS2(
     LYforce_no_cache = TRUE;  /* don't cache this doc */
 
 
-    fprintf(fp0, "<head>\n<title>%s</title>\n</head>\n<body>\n",
-		 DOWNLOAD_OPTIONS_TITLE);
-    fprintf(fp0, "<h1>%s (%s), help on <a href=\"%s%s\">%s</a></h1>\n",
-		 LYNX_NAME, LYNX_VERSION,
-		 helpfilepath, DOWNLOAD_OPTIONS_HELP, DOWNLOAD_OPTIONS_TITLE);
+    BeginInternalPage(fp0, DOWNLOAD_OPTIONS_TITLE, DOWNLOAD_OPTIONS_HELP);
+
     fprintf(fp0, "<pre>\n");
     fprintf(fp0, "\
    <em>You download the link:</em> %s\n\
@@ -669,7 +662,8 @@ sections 'DOWNLOAD' and 'INCLUDE'. \
 --> \n",
 	LYNX_CFG_FILE);
     }
-    fprintf(fp0, "</pre>\n</body>\n");
+    fprintf(fp0, "</pre>\n");
+    EndInternalPage(fp0);
     LYCloseTempFP(fp0);
 
     /*
diff --git a/src/LYEdit.c b/src/LYEdit.c
index 3c8997c6..f433080d 100644
--- a/src/LYEdit.c
+++ b/src/LYEdit.c
@@ -8,7 +8,7 @@
 #include <LYGlobalDefs.h>
 #include <LYEdit.h>
 #include <LYStrings.h>
-#include <LYSystem.h>
+#include <LYUtils.h>
 #ifdef VMS
 #include <unixio.h>
 #include <HTVMSUtils.h>
@@ -161,12 +161,8 @@ PUBLIC int edit_current_file ARGS3(
     /*
      *  Invoke the editor. - FM
      */
-    fflush(stderr);
-    fflush(stdout);
     stop_curses();
-    system(command);
-    fflush(stdout);
-    fflush(stderr);
+    LYSystem(command);
     start_curses();
 
     /*
diff --git a/src/LYExtern.c b/src/LYExtern.c
index 78e7c235..8b6959e9 100644
--- a/src/LYExtern.c
+++ b/src/LYExtern.c
@@ -69,18 +69,7 @@ void run_external ARGS1(char *, c)
 		 HTUserMsg(command);
 
 		 stop_curses();
-		 fflush(stdout);
-#ifdef __DJGPP__
-		__djgpp_set_ctrl_c(0);
-		_go32_want_ctrl_break(1);
-#endif /* __DJGPP__ */
-		 system(command);
-#ifdef __DJGPP__
-		__djgpp_set_ctrl_c(1);
-		_go32_want_ctrl_break(0);
-#endif /* __DJGPP__ */
-
-		 fflush(stdout);
+		 LYSystem(command);
 		 start_curses();
 		}
 
diff --git a/src/LYGetFile.c b/src/LYGetFile.c
index 1a54c161..319deacf 100644
--- a/src/LYGetFile.c
+++ b/src/LYGetFile.c
@@ -20,7 +20,6 @@
 #include <LYDownload.h>
 #include <LYNews.h>
 #include <LYMail.h>
-#include <LYSystem.h>
 #include <LYKeymap.h>
 #include <LYBookmark.h>
 #include <LYMap.h>
@@ -50,41 +49,6 @@ extern char * WWW_Download_File;
 extern BOOLEAN LYDidRename;
 #endif /* VMS */
 
-#if 0 /* UNUSED */
-#ifdef DIRED_SUPPORT
-PRIVATE char * LYSanctify ARGS1(
-	char *, 	href)
-{
-    int i;
-    char *p, *cp, *tp;
-    char address_buffer[1024];
-
-    i = (strlen(href) - 1);
-    while (i && href[i] == '/') href[i--] = '\0';
-
-    if ((cp = (char *)strchr(href,'~')) != NULL) {
-       if (!strncmp(href, "file://localhost/", 17))
-	 tp = (href + 17);
-       else
-	 tp = (href + 5);
-       if ((cp - tp) && *(cp-1) != '/')
-	 return href;
-       LYstrncpy(address_buffer, href, (cp - href));
-       if (address_buffer[(strlen(address_buffer) - 1)] == '/')
-	 address_buffer[(strlen(address_buffer) - 1)] = '\0';
-       p = (char *)Home_Dir();
-       strcat(address_buffer, p);
-       if (strlen(++cp))
-	 strcat(address_buffer, cp);
-       if (strcmp(href, address_buffer))
-	 StrAllocCopy(href, address_buffer);
-    }
-    return href;
-}
-#endif /* DIRED_SUPPORT */
-#endif
-
-
 PUBLIC BOOLEAN getfile ARGS1(
 	document *,	doc)
 {
@@ -426,14 +390,10 @@ Try_Redirected_URL:
 			/*
 			 *  Run the command.
 			 */
-#ifdef __DJGPP__
-			__djgpp_set_ctrl_c(0);
-			_go32_want_ctrl_break(1);
-#endif /* __DJGPP__ */
 			if (strstr(p,"//") == p+9)
-			    system(p+11);
+			    LYSystem(p+11);
 			else
-			    system(p+9);
+			    LYSystem(p+9);
 			if (url_type != LYNXPROG_URL_TYPE) {
 			    /*
 			     *	Make sure user gets to see screen output.
@@ -450,10 +410,6 @@ Try_Redirected_URL:
 			      HadVMSInterrupt = FALSE;
 			    }
 #endif /* VMS */
-#ifdef __DJGPP__
-			    __djgpp_set_ctrl_c(1);
-			    _go32_want_ctrl_break(0);
-#endif /* __DJGPP__ */
 			}
 			start_curses();
 			LYAddVisitedLink(doc);
@@ -1309,7 +1265,7 @@ PRIVATE int fix_http_urls ARGS1(
      *	If it's an ftp URL with a trailing slash, trim it off.
      */
     if (!strncmp(doc->address, "ftp", 3) &&
-	doc->address[strlen(doc->address)-1] == '/') {
+	LYIsHtmlSep(doc->address[strlen(doc->address)-1])) {
 	char * proxy;
 	char *path = HTParse(doc->address, "", PARSE_PATH|PARSE_PUNCTUATION);
 
@@ -1317,7 +1273,7 @@ PRIVATE int fix_http_urls ARGS1(
 	 *  If the path is a lone slash, we're done. - FM
 	 */
 	if (path) {
-	    if (path[0] == '/' && path[1] == '\0') {
+	    if (LYIsHtmlSep(path[0]) && path[1] == '\0') {
 		FREE(path);
 		return 0;
 	    }
@@ -1335,7 +1291,7 @@ PRIVATE int fix_http_urls ARGS1(
 	 *  If we get to here, trim the trailing slash. - FM
 	 */
 	CTRACE(tfp, "fix_http_urls: URL '%s'\n", doc->address);
-	doc->address[strlen(doc->address)-1] = '\0';
+	LYTrimHtmlSep(doc->address);
 	CTRACE(tfp, "        changed to '%s'\n", doc->address);
 	CTRACE_SLEEP(MessageSecs);
     }
@@ -1344,12 +1300,12 @@ PRIVATE int fix_http_urls ARGS1(
      *	If there isn't a slash besides the two at the beginning, append one.
      */
     if ((slash = strrchr(doc->address, '/')) != NULL) {
-	if (*(slash-1) != '/' || *(slash-2) != ':') {
+	if (!LYIsHtmlSep(*(slash-1)) || *(slash-2) != ':') {
 	    return(0);
 	}
     }
     CTRACE(tfp, "fix_http_urls: URL '%s'\n", doc->address);
-    StrAllocCat(doc->address, "/");
+    LYAddHtmlSep(&(doc->address));
     CTRACE(tfp, "        changed to '%s'\n",doc->address);
     CTRACE_SLEEP(MessageSecs);
 
diff --git a/src/LYGlobalDefs.h b/src/LYGlobalDefs.h
index 7b543738..ebc78984 100644
--- a/src/LYGlobalDefs.h
+++ b/src/LYGlobalDefs.h
@@ -135,7 +135,7 @@ extern char *helpfilepath;
 extern char *lynxjumpfile;
 extern char *lynxlistfile;
 extern char *lynxlinksfile;
-extern char *display;
+extern char *x_display;
 extern char *language;
 extern char *pref_charset;	/* Lynx's preferred character set - MM */
 extern BOOLEAN LYNewsPosting;	/* News posting supported if TRUE */
@@ -289,7 +289,8 @@ extern BOOLEAN LYUseDefaultRawMode;
 extern char *UCAssume_MIMEcharset;
 extern char *UCAssume_localMIMEcharset;
 extern char *UCAssume_unrecMIMEcharset;
-extern BOOLEAN LYSaveBookmarksInUnicode; /* in titles,  chars >127 save as &#xUUUU */
+extern BOOLEAN UCSaveBookmarksInUnicode; /* in titles,  chars >127 save as &#xUUUU */
+extern BOOLEAN UCForce8bitTOUPPER; /* disable locale case-conversion for >127 */
 extern BOOLEAN LYisConfiguredForX;
 extern char *URLDomainPrefixes;
 extern char *URLDomainSuffixes;
@@ -302,9 +303,12 @@ extern BOOLEAN LYMBMAdvanced;		/* MBM statusline for ADVANCED?	 */
 extern int LYStatusLine;		/* Line for statusline() or -1   */
 extern BOOLEAN LYCollapseBRs;		/* Collapse serial BRs?		 */
 extern BOOLEAN LYSetCookies;		/* Process Set-Cookie headers?	 */
-extern BOOLEAN LYAcceptAllCookies;      /* accept ALL cookies?          */
+extern BOOLEAN LYAcceptAllCookies;      /* accept ALL cookies?           */
 extern char *LYCookieAcceptDomains;     /* domains to accept all cookies */
 extern char *LYCookieRejectDomains;     /* domains to reject all cookies */
+#ifdef EXP_PERSISTENT_COOKIES
+extern char *LYCookieFile;              /* file to store cookies in      */
+#endif /* EXP_PERSISTENT_COOKIES */
 extern char *XLoadImageCommand;		/* Default image viewer for X	 */
 #ifdef USE_EXTERNALS
 extern BOOLEAN no_externals; 		/* don't allow the use of externals */
diff --git a/src/LYHistory.c b/src/LYHistory.c
index 4d39d58a..e046a9e5 100644
--- a/src/LYHistory.c
+++ b/src/LYHistory.c
@@ -118,6 +118,26 @@ PUBLIC void LYAddVisitedLink ARGS1(
 }
 
 /*
+ *  Returns true if this is a page that we would push onto the stack if not
+ *  forced.
+ */
+PUBLIC BOOLEAN LYwouldPush ARGS1(
+	char *,	title)
+{
+    return (!strcmp(title, HISTORY_PAGE_TITLE)
+         || !strcmp(title, PRINT_OPTIONS_TITLE)
+         || !strcmp(title, DOWNLOAD_OPTIONS_TITLE)
+#ifdef DIRED_SUPPORT
+	 || !strcmp(title, DIRED_MENU_TITLE)
+	 || !strcmp(title, UPLOAD_OPTIONS_TITLE)
+	 || !strcmp(title, PERMIT_OPTIONS_TITLE)
+#endif /* DIRED_SUPPORT */
+	 )
+	 ? FALSE
+	 : TRUE;
+}
+
+/*
  *  Push the current filename, link and line number onto the history list.
  */
 PUBLIC void LYpush ARGS2(
@@ -138,26 +158,11 @@ PUBLIC void LYpush ARGS2(
 	/*
 	 *  Don't push the history, printer, or download lists.
 	 */
-	if (!strcmp(doc->title, HISTORY_PAGE_TITLE) ||
-	    !strcmp(doc->title, PRINT_OPTIONS_TITLE) ||
-	    !strcmp(doc->title, DOWNLOAD_OPTIONS_TITLE)) {
-	    if (!LYforce_no_cache)
-		LYoverride_no_cache = TRUE;
-	    return;
-	}
-
-#ifdef DIRED_SUPPORT
-	/*
-	 *  Don't push DIRED menu, upload or permit lists.
-	 */
-	if (!strcmp(doc->title, DIRED_MENU_TITLE) ||
-	    !strcmp(doc->title, UPLOAD_OPTIONS_TITLE) ||
-	    !strcmp(doc->title, PERMIT_OPTIONS_TITLE)) {
+	if (!LYwouldPush(doc->title)) {
 	    if (!LYforce_no_cache)
 		LYoverride_no_cache = TRUE;
 	    return;
 	}
-#endif /* DIRED_SUPPORT */
     }
 
     /*
@@ -402,13 +407,8 @@ PUBLIC int showhistory ARGS1(
     LYforce_HTML_mode = TRUE;	/* force this file to be HTML */
     LYforce_no_cache = TRUE;	/* force this file to be new */
 
-    fprintf(fp0, "<head>\n");
-    LYAddMETAcharsetToFD(fp0, -1);
-    fprintf(fp0, "<title>%s</title>\n</head>\n<body>\n",
-		 HISTORY_PAGE_TITLE);
-    fprintf(fp0, "<h1>%s (%s), help on <a href=\"%s%s\">%s</a></h1>\n",
-		 LYNX_NAME, LYNX_VERSION,
-		 helpfilepath, HISTORY_PAGE_HELP, HISTORY_PAGE_TITLE);
+    BeginInternalPage(fp0, HISTORY_PAGE_TITLE, HISTORY_PAGE_HELP);
+
     fprintf(fp0, "<pre>\n");
     fprintf(fp0, "<em>You selected:</em>\n");
     for (x = nhist-1; x >= 0; x--) {
@@ -440,7 +440,8 @@ PUBLIC int showhistory ARGS1(
 	}
 	fprintf(fp0, "<tab to=t%d>%s\n", x, Title);
     }
-    fprintf(fp0,"</pre>\n</body>\n");
+    fprintf(fp0,"</pre>\n");
+    EndInternalPage(fp0);
 
     LYCloseTempFP(fp0);
     FREE(Title);
@@ -553,13 +554,8 @@ PUBLIC int LYShowVisitedLinks ARGS1(
     LYforce_HTML_mode = TRUE;	/* force this file to be HTML */
     LYforce_no_cache = TRUE;	/* force this file to be new */
 
-    fprintf(fp0, "<head>\n");
-    LYAddMETAcharsetToFD(fp0, -1);
-    fprintf(fp0, "<title>%s</title>\n</head>\n<body>\n",
-		 VISITED_LINKS_TITLE);
-    fprintf(fp0, "<h1>%s (%s), help on <a href=\"%s%s\">%s</a></h1>\n",
-	LYNX_NAME, LYNX_VERSION,
-	helpfilepath, VISITED_LINKS_HELP, VISITED_LINKS_TITLE);
+    BeginInternalPage(fp0, VISITED_LINKS_TITLE, VISITED_LINKS_HELP);
+
     fprintf(fp0, "<pre>\n");
     fprintf(fp0,
   "<em>You visited (POSTs, bookmark, menu and list files excluded):</em>\n");
@@ -596,7 +592,8 @@ PUBLIC int LYShowVisitedLinks ARGS1(
 	fprintf(fp0, "<tab to=t%d>%s\n", x,
 		     ((Address != NULL) ? Address : "(no address)"));
     }
-    fprintf(fp0,"</pre>\n</body>\n");
+    fprintf(fp0,"</pre>\n");
+    EndInternalPage(fp0);
 
     LYCloseTempFP(fp0);
     FREE(Title);
diff --git a/src/LYHistory.h b/src/LYHistory.h
index 254889d1..7593a2ca 100644
--- a/src/LYHistory.h
+++ b/src/LYHistory.h
@@ -1,4 +1,3 @@
-
 #ifndef LYHISTORY_H
 #define LYHISTORY_H
 
@@ -6,12 +5,13 @@
 #include <LYStructs.h>
 #endif /* LYSTRUCTS_H */
 
+extern BOOLEAN LYwouldPush PARAMS((char *title));
+extern BOOLEAN historytarget PARAMS((document *newdoc));
+extern int LYShowVisitedLinks PARAMS((char **newfile));
+extern int showhistory PARAMS((char **newfile));
 extern void LYAddVisitedLink PARAMS((document *doc));
-extern void LYpush PARAMS((document *doc, BOOLEAN force_push));
 extern void LYpop PARAMS((document *doc));
 extern void LYpop_num PARAMS((int number, document *doc));
-extern int showhistory PARAMS((char **newfile));
-extern BOOLEAN historytarget PARAMS((document *newdoc));
-extern int LYShowVisitedLinks PARAMS((char **newfile));
+extern void LYpush PARAMS((document *doc, BOOLEAN force_push));
 
 #endif /* LYHISTORY_H */
diff --git a/src/LYList.c b/src/LYList.c
index b7de7392..e31036fb 100644
--- a/src/LYList.c
+++ b/src/LYList.c
@@ -80,25 +80,8 @@ PUBLIC int showlist ARGS2(
     LYforce_HTML_mode = TRUE;	/* force this file to be HTML */
     LYforce_no_cache = TRUE;	/* force this file to be new */
 
+    BeginInternalPage(fp0, LIST_PAGE_TITLE, LIST_PAGE_HELP);
 
-    fprintf(fp0, "<head>\n");
-    LYAddMETAcharsetToFD(fp0, -1);
-    if (strchr(HTLoadedDocumentURL(), '"') == NULL) {
-	/*
-	 *  Insert a BASE tag so there is some way to relate the List Page
-	 *  file to its underlying document after we are done.	It won't
-	 *  be actually used for resolving relative URLs. - kw
-	 */
-	StrAllocCopy(Address, HTLoadedDocumentURL());
-	LYEntify(&Address, FALSE);
-	fprintf(fp0, "<base href=\"%s\">\n", Address);
-	FREE(Address);
-    }
-    fprintf(fp0, "<title>%s</title>\n</head>\n<body>\n",
-		 LIST_PAGE_TITLE);
-    fprintf(fp0, "<h1>%s (%s), help on <a href=\"%s%s\">%s</a></h1>\n",
-	LYNX_NAME, LYNX_VERSION,
-	helpfilepath, LIST_PAGE_HELP, LIST_PAGE_TITLE);
     StrAllocCopy(Address, HTLoadedDocumentURL());
     LYEntify(&Address, FALSE);
     fprintf(fp0, "References in %s<p>\n",
@@ -213,8 +196,10 @@ PUBLIC int showlist ARGS2(
 	FREE(Address);
     }
 
-    fprintf(fp0,"\n</%s>\n</body>\n", ((keypad_mode == NUMBERS_AS_ARROWS) ?
-				       "ol" : "ul"));
+    fprintf(fp0,"\n</%s>\n", ((keypad_mode == NUMBERS_AS_ARROWS) ?
+			     "ol" : "ul"));
+    EndInternalPage(fp0);
+    LYCloseTempFP(fp0);
 
     /*
      *	Make necessary changes to newdoc before returning to caller.
@@ -236,7 +221,6 @@ PUBLIC int showlist ARGS2(
     }
     newdoc->isHEAD = FALSE;
     newdoc->safe = FALSE;
-    LYCloseTempFP(fp0);
     return(0);
 }
 
diff --git a/src/LYLocal.c b/src/LYLocal.c
index 57c821c9..21288e67 100644
--- a/src/LYLocal.c
+++ b/src/LYLocal.c
@@ -41,7 +41,6 @@
 #include <LYHistory.h>
 #include <LYUpload.h>
 #include <LYLocal.h>
-#include <LYSystem.h>
 
 #ifndef VMS
 #ifndef _WINDOWS
@@ -247,7 +246,7 @@ PRIVATE BOOLEAN remove_tagged NOARGS
     char tmpbuf[1024];
     char *testpath = NULL;
     struct stat dir_info;
-    int count, i;
+    int count;
     HTList *tag;
     char *args[5];
 
@@ -270,8 +269,7 @@ PRIVATE BOOLEAN remove_tagged NOARGS
 	    }
 	    StrAllocCopy(testpath, tp);
 	    HTUnEscape(testpath);
-	    if ((i = strlen(testpath)) && testpath[i-1] == '/')
-		testpath[(i - 1)] = '\0';
+	    LYTrimPathSep(testpath);
 
 	    /*
 	     *	Check the current status of the path to be deleted.
@@ -406,9 +404,8 @@ PRIVATE BOOLEAN modify_tagged ARGS1(
 	/*
 	 *  If path is relative, prefix it with current location.
 	 */
-	if (tmpbuf[0] != '/') {
-	    if (savepath[(strlen(savepath) - 1)] != '/')
-		StrAllocCat(savepath,"/");
+	if (!LYIsPathSep(tmpbuf[0])) {
+	    LYAddPathSep(&savepath);
 	    StrAllocCat(savepath,tmpbuf);
 	} else {
 	    StrAllocCopy(savepath,tmpbuf);
@@ -616,7 +613,7 @@ PRIVATE BOOLEAN modify_location ARGS1(
 	    strcat(newpath, (tmpbuf + 1));
 	    strcpy(tmpbuf, newpath);
 	}
-	if (tmpbuf[0] != '/') {
+	if (!LYIsPathSep(tmpbuf[0])) {
 	    if ((cp = strrchr(newpath,'/')) != NULL) {
 		*++cp = '\0';
 		strcat(newpath,tmpbuf);
@@ -774,9 +771,7 @@ PRIVATE BOOLEAN create_file ARGS1(
 	HTAlert("Illegal redirection \"//\" found! Request ignored.");
     } else if (strlen(tmpbuf) && strchr(bad_chars, tmpbuf[0]) == NULL) {
 	strcpy(testpath,current_location);
-	if (testpath[(strlen(testpath) - 1)] != '/') {
-	    strcat(testpath,"/");
-	}
+	LYAddPathSep0(testpath);
 
 	/*
 	 *  Append the target filename to the current location.
@@ -836,9 +831,8 @@ PRIVATE BOOLEAN create_directory ARGS1(
 	HTAlert("Illegal redirection \"//\" found! Request ignored.");
     } else if (strlen(tmpbuf) && strchr(bad_chars, tmpbuf[0]) == NULL) {
 	strcpy(testpath,current_location);
-	if (testpath[(strlen(testpath) - 1)] != '/') {
-	    strcat(testpath,"/");
-	}
+	LYAddPathSep0(testpath);
+
 	strcat(testpath, tmpbuf);
 
 	/*
@@ -1450,8 +1444,7 @@ PUBLIC int local_dired ARGS1(
 	if (LYUpload(line_url))
 	    LYforce_no_cache = TRUE;
     } else {
-	if (line[(strlen(line) - 1)] == '/')
-	    line[strlen(line)-1] = '\0';
+	LYTrimPathSep(line);
 	if ((cp = strrchr(line, '/')) == NULL) {
 	    FREE(line);
 	    return 0;
@@ -1586,8 +1579,7 @@ PUBLIC int local_dired ARGS1(
 	    _statusline(tmpbuf);
 	    stop_curses();
 	    printf("%s\n", tmpbuf);
-	    fflush(stdout);
-	    system(buffer);
+	    LYSystem(buffer);
 #ifdef VMS
 	    extern BOOLEAN HadVMSInterrupt
 	    HadVMSInterrupt = FALSE;
@@ -1647,13 +1639,12 @@ PUBLIC int dired_options ARGS2(
     } else if (!strncmp(cp, "file:", 5)) {
 	cp += 5;
     }
-    strcpy(dir, cp);
     StrAllocCopy(dir_url, cp);
-    if (dir_url[(strlen(dir_url) - 1)] == '/')
-	dir_url[(strlen(dir_url) - 1)] = '\0';
+    LYTrimHtmlSep(dir_url);
+
+    strcpy(dir, cp);
     HTUnEscape(dir);
-    if (dir[(strlen(dir) - 1)] == '/')
-	dir[(strlen(dir) - 1)] = '\0';
+    LYTrimPathSep(dir);
 
     if (doc->link > -1 && doc->link < (nlinks+1)) {
 	cp = links[doc->link].lname;
@@ -1662,13 +1653,12 @@ PUBLIC int dired_options ARGS2(
 	} else if (!strncmp(cp, "file:", 5)) {
 	    cp += 5;
 	}
-	strcpy(path, cp);
 	StrAllocCopy(path_url, cp);
-	if (*path_url && path_url[1] && path_url[(strlen(path_url) - 1)] == '/')
-	    path_url[(strlen(path_url) - 1)] = '\0';
+	LYTrimHtmlSep(path_url);
+
+	strcpy(path, cp);
 	HTUnEscape(path);
-	if (*path && path[1] && path[(strlen(path) - 1)] == '/')
-	    path[(strlen(path) - 1)] = '\0';
+	LYTrimPathSep(path);
 
 	if (lstat(path, &dir_info) == -1 && stat(path, &dir_info) == -1) {
 	    sprintf(tmpbuf, "Unable to get status of '%s'.", path);
@@ -1686,11 +1676,8 @@ PUBLIC int dired_options ARGS2(
 
     nothing_tagged = (HTList_isEmpty(tagged));
 
-    fprintf(fp0, "<head>\n<title>%s</title></head>\n<body>\n",
-		 DIRED_MENU_TITLE);
-    fprintf(fp0, "<h1>%s (%s), help on <a href=\"%s%s\">%s</a></h1>\n",
-		 LYNX_NAME, LYNX_VERSION,
-		 helpfilepath, DIRED_MENU_HELP, DIRED_MENU_TITLE);
+    BeginInternalPage(fp0, DIRED_MENU_TITLE, DIRED_MENU_HELP);
+
     fprintf(fp0, "<em>Current directory:</em> %s<br>\n", dir);
 
     if (nothing_tagged) {
@@ -1714,8 +1701,7 @@ PUBLIC int dired_options ARGS2(
 		     n, ((n == 1) ? ":" : "s:"));
 	StrAllocCopy(cd, doc->address);
 	HTUnEscapeSome(cd, "/");
-	if (*cd && cd[(strlen(cd) - 1)] != '/')
-	    StrAllocCat(cd, "/");
+	LYAddHtmlSep(&cd);
 	m = (n < NUM_TAGS_TO_WRITE) ? n : NUM_TAGS_TO_WRITE;
 	for (i = 1; i <= m; i++) {
 	    cp1 = HTRelative(HTList_objectAt(tagged, i-1),
@@ -1782,7 +1768,7 @@ PUBLIC int dired_options ARGS2(
 	}
     }
 
-    fprintf(fp0, "</body>\n");
+    EndInternalPage(fp0);
     LYCloseTempFP(fp0);
 
     FREE(dir_url);
diff --git a/src/LYMail.c b/src/LYMail.c
index 7c70f798..3d1138f3 100644
--- a/src/LYMail.c
+++ b/src/LYMail.c
@@ -18,7 +18,6 @@
 #include <LYClean.h>
 #include <LYStrings.h>
 #include <GridText.h>
-#include <LYSystem.h>
 #include <LYMail.h>
 #include <LYCharSets.h>  /* to get current charset for mail header */
 
@@ -28,6 +27,27 @@ BOOLEAN term_letter;	/* Global variable for async i/o. */
 PRIVATE void terminate_letter  PARAMS((int sig));
 PRIVATE void remove_tildes PARAMS((char *string));
 
+/* HTUnEscape with control-code nuking */
+PRIVATE void SafeHTUnEscape ARGS1(
+	char *,	string)
+{
+     int i;
+     int flg = FALSE;
+
+     HTUnEscape(string);
+     for (i=0; string[i] != '\0'; i++)
+     {
+	/* FIXME: this is explicitly 7-bit ASCII */
+	if (string[i] < ' ' || string[i] >= 127)
+	{
+	   string[i] = '?';
+	   flg = TRUE;
+	}
+     }
+     if (flg)
+	HTAlert(MAILTO_SQUASH_CTL);
+}
+
 /*
 **  mailform() sends form content to the mailto address(es). - FM
 */
@@ -95,7 +115,7 @@ PUBLIC void mailform ARGS4(
 		    *cp1 = '\0';
 		}
 		if (*cp) {
-		    HTUnEscape(subject);
+		    SafeHTUnEscape(subject);
 		    LYstrncpy(subject, cp, 70);
 		}
 		if (cp1) {
@@ -202,7 +222,7 @@ PUBLIC void mailform ARGS4(
 	    }
 	    if (keywords != NULL) {
 		if (*keywords != '\0') {
-		    HTUnEscape(keywords);
+		    SafeHTUnEscape(keywords);
 		} else {
 		    FREE(keywords);
 		}
@@ -255,9 +275,9 @@ PUBLIC void mailform ARGS4(
     /*
      *	Unescape the address and ccaddr fields. - FM
      */
-    HTUnEscape(address);
+    SafeHTUnEscape(address);
     if (ccaddr != NULL) {
-	HTUnEscape(ccaddr);
+	SafeHTUnEscape(ccaddr);
     }
 
     /*
@@ -531,7 +551,7 @@ PUBLIC void mailform ARGS4(
 
     stop_curses();
     printf("Sending form content:\n\n$ %s\n\nPlease wait...", command);
-    system(command);
+    LYSystem(command);
     FREE(command);
     sleep(AlertSecs);
     start_curses();
@@ -545,7 +565,7 @@ PUBLIC void mailform ARGS4(
     StrAllocCat(command, my_tmpfile);
     stop_curses();
     printf("Sending form content:\n\n$ %s\n\nPlease wait...", command);
-    system(command);
+    LYSystem(command);
     FREE(command);
     sleep(MessageSecs);
     start_curses();
@@ -658,7 +678,7 @@ PUBLIC void mailmsg ARGS4(
     /*
      *	Unescape the address field. - FM
      */
-    HTUnEscape(address);
+    SafeHTUnEscape(address);
     if (address[(strlen(address) - 1)] == ',')
 	address[(strlen(address) - 1)] = '\0';
     if (*address == '\0') {
@@ -788,7 +808,7 @@ PUBLIC void mailmsg ARGS4(
 	address_ptr1 = address_ptr2;
     } while (address_ptr1 != NULL);
 
-    system(command);
+    LYSystem(command);
     FREE(command);
     LYRemoveTemp(my_tmpfile);
     if (isPMDF) {
@@ -800,7 +820,7 @@ PUBLIC void mailmsg ARGS4(
     StrAllocCat(command, address);
     StrAllocCat(command, "\" -F ");
     StrAllocCat(command, my_tmpfile);
-    system(command);
+    LYSystem(command);
     FREE(command);
     LYRemoveTemp(my_tmpfile);
 #endif
@@ -934,7 +954,7 @@ PUBLIC void reply_by_mail ARGS3(
 		if (*cp) {
 		    strncpy(subject, cp, 70);
 		    subject[70] = '\0';
-		    HTUnEscape(subject);
+		    SafeHTUnEscape(subject);
 		}
 		if (cp1) {
 		    *cp1 = '&';
@@ -1041,7 +1061,7 @@ PUBLIC void reply_by_mail ARGS3(
 	    }
 	    if (keywords != NULL) {
 		if (*keywords != '\0') {
-		    HTUnEscape(keywords);
+		    SafeHTUnEscape(keywords);
 		} else {
 		    FREE(keywords);
 		}
@@ -1164,9 +1184,9 @@ PUBLIC void reply_by_mail ARGS3(
     /*
      *	Unescape the address and ccaddr fields. - FM
      */
-    HTUnEscape(address);
+    SafeHTUnEscape(address);
     if (ccaddr != NULL) {
-	HTUnEscape(ccaddr);
+	SafeHTUnEscape(ccaddr);
     }
 
     /*
@@ -1563,7 +1583,7 @@ PUBLIC void reply_by_mail ARGS3(
 	sprintf(user_input, "%s%s %s", editor, editor_arg, my_tmpfile);
 	_statusline(SPAWNING_EDITOR_FOR_MAIL);
 	stop_curses();
-	if (system(user_input)) {
+	if (LYSystem(user_input)) {
 	    start_curses();
 	    HTAlert(ERROR_SPAWNING_EDITOR);
 	} else {
@@ -1802,7 +1822,7 @@ PUBLIC void reply_by_mail ARGS3(
 
     stop_curses();
     printf("Sending your comment:\n\n$ %s\n\nPlease wait...", command);
-    system(command);
+    LYSystem(command);
     FREE(command);
     sleep(AlertSecs);
     start_curses();
@@ -1844,7 +1864,7 @@ PUBLIC void reply_by_mail ARGS3(
     LYCloseTempFP(fp);	/* Close the tmpfile. */
     stop_curses();
     printf("Sending your comment:\n\n$ %s\n\nPlease wait...", command);
-    system(command);
+    LYSystem(command);
     FREE(command);
     sleep(MessageSecs);
     start_curses();
diff --git a/src/LYMain.c b/src/LYMain.c
index 78a8a10a..9d7f174a 100644
--- a/src/LYMain.c
+++ b/src/LYMain.c
@@ -51,12 +51,6 @@
 #include <LYexit.h>
 #include <LYLeaks.h>
 
-#ifdef VMS
-#define DISPLAY "DECW$DISPLAY"
-#else
-#define DISPLAY "DISPLAY"
-#endif /* VMS */
-
 /* ahhhhhhhhhh!! Global variables :-< */
 #ifdef SOCKS
 PUBLIC BOOLEAN socks_flag=TRUE;
@@ -259,7 +253,7 @@ PUBLIC char *lynxlinksfile = NULL;  /* the current visited links file URL */
 PUBLIC char *startrealm = NULL;     /* the startfile realm */
 PUBLIC char *indexfile = NULL;	    /* an index file if there is one */
 PUBLIC char *personal_mail_address = NULL; /* the users mail address */
-PUBLIC char *display = NULL;	    /* display environment variable */
+PUBLIC char *x_display = NULL;	    /* display environment variable */
 PUBLIC char *personal_type_map = NULL;	   /* .mailcap */
 PUBLIC char *global_type_map = NULL;	   /* global mailcap */
 PUBLIC char *global_extension_map = NULL;  /* global mime.types */
@@ -301,7 +295,8 @@ PUBLIC BOOLEAN LYUseDefaultRawMode = TRUE;
 PUBLIC char *UCAssume_MIMEcharset = NULL;
 PUBLIC char *UCAssume_localMIMEcharset = NULL;
 PUBLIC char *UCAssume_unrecMIMEcharset = NULL;
-PUBLIC BOOLEAN LYSaveBookmarksInUnicode = FALSE;
+PUBLIC BOOLEAN UCSaveBookmarksInUnicode = FALSE;
+PUBLIC BOOLEAN UCForce8bitTOUPPER = FALSE; /* override locale for case-conversion? */
 PUBLIC int LYlines = 24;
 PUBLIC int LYcols = 80;
 PUBLIC int dump_output_width = 0;
@@ -337,6 +332,9 @@ PUBLIC BOOLEAN LYSetCookies = SET_COOKIES; /* Process Set-Cookie headers? */
 PUBLIC BOOLEAN LYAcceptAllCookies = ACCEPT_ALL_COOKIES; /* take all cookies? */
 PUBLIC char *LYCookieAcceptDomains = NULL; /* domains to accept all cookies */
 PUBLIC char *LYCookieRejectDomains = NULL; /* domains to reject all cookies */
+#ifdef EXP_PERSISTENT_COOKIES
+PUBLIC char *LYCookieFile = NULL;          /* default cookie file */
+#endif /* EXP_PERSISTENT_COOKIES */
 PUBLIC char *XLoadImageCommand = NULL;	/* Default image viewer for X */
 PUBLIC BOOLEAN LYNoISMAPifUSEMAP = FALSE; /* Omit ISMAP link if MAP present? */
 PUBLIC int LYHiddenLinks = HIDDENLINKS_SEPARATE; /* Show hidden links? */
@@ -357,7 +355,8 @@ PUBLIC BOOLEAN LYPrependCharsetToSource = FALSE;
 PUBLIC BOOLEAN LYQuitDefaultYes = QUIT_DEFAULT_YES;
 
 #ifdef DISP_PARTIAL
-PUBLIC BOOLEAN display_partial = FALSE; /* Display document during download */
+PUBLIC BOOLEAN display_partial = TRUE; /* Display document during download */
+PUBLIC BOOLEAN debug_display_partial = FALSE; /* Show with MessageSecs delay */
 #endif
 
 /* These are declared in cutil.h for current freeWAIS libraries. - FM */
@@ -441,7 +440,7 @@ PRIVATE void free_lynx_globals NOARGS
     FREE(jumpfile);
 #endif /* JUMPFILE */
     FREE(indexfile);
-    FREE(display);
+    FREE(x_display);
     FREE(global_type_map);
     FREE(personal_type_map);
     FREE(global_extension_map);
@@ -518,7 +517,6 @@ PUBLIC int main ARGS2(
 {
     int  i;		/* indexing variable */
     int status = 0;	/* exit status */
-    int len;
     char *lynx_cfg_file = NULL;
     char *temp = NULL;
     char *cp;
@@ -694,8 +692,7 @@ PUBLIC int main ARGS2(
     if ((cp = strchr(lynx_temp_space, '~'))) {
 	*(cp++) = '\0';
 	StrAllocCopy(temp, lynx_temp_space);
-	if (((len = strlen(temp)) > 0) && temp[len-1] == '/')
-	    temp[len-1] = '\0';
+	LYTrimPathSep(temp);
 #ifdef DOSPATH
 	StrAllocCat(temp, HTDOS_wwwName((char *)Home_Dir()));
 #else
@@ -726,11 +723,10 @@ PUBLIC int main ARGS2(
 #ifdef VMS
     LYLowerCase(lynx_temp_space);
     if (strchr(lynx_temp_space, '/') != NULL) {
-	if ((len = strlen(lynx_temp_space)) == 1) {
+	if (strlen(lynx_temp_space) == 1) {
 	    StrAllocCopy(lynx_temp_space, "sys$scratch:");
 	} else {
-	    if (lynx_temp_space[len-1] != '/')
-		StrAllocCat(lynx_temp_space, "/");
+	    LYAddPathSep(&lynx_temp_space);
 	    StrAllocCopy(temp, HTVMS_name("", lynx_temp_space));
 	    StrAllocCopy(lynx_temp_space, temp);
 	    FREE(temp);
@@ -741,17 +737,7 @@ PUBLIC int main ARGS2(
 	StrAllocCat(lynx_temp_space, ":");
     }
 #else
-#if !defined(__DJGPP__) && !defined(_WINDOWS)
-    if (((len = strlen(lynx_temp_space)) > 1) &&
-	lynx_temp_space[len-1] != '/') {
-	StrAllocCat(lynx_temp_space, "/");
-    }
-#else
-    if (((len = strlen(lynx_temp_space)) > 1) &&
-	lynx_temp_space[len-1] != '\\') {
-	StrAllocCat(lynx_temp_space, "\\");
-    }
-#endif /* !__DJGPP__ && !_WINDOWS */
+    LYAddPathSep(&lynx_temp_space);
 #endif /* VMS */
 #ifdef VMS
     StrAllocCopy(mail_adrs, MAIL_ADRS);
@@ -1068,7 +1054,7 @@ PUBLIC int main ARGS2(
 	    fprintf(stderr, "%s\n", TRACELOG_OPEN_FAILED);
 
 #if defined(__DJGPP__) || defined(_WINDOWS)
-		_fmode = O_BINARY;
+	    _fmode = O_BINARY;
 #endif /* __DJGPP__ or _WINDOWS */
 	    exit(-1);
 	}
@@ -1137,7 +1123,7 @@ PUBLIC int main ARGS2(
      */
 #ifndef _WINDOWS /* avoid the whole ~ thing for now */
    /* I think this should only be performed if lynx_cfg_file starts with ~/ */
-   if ((lynx_cfg_file[0] == '~') && (lynx_cfg_file[1] == '/'))
+   if ((lynx_cfg_file[0] == '~') && LYIsPathSep(lynx_cfg_file[1]))
      {
 #ifdef VMS
 	StrAllocCopy(temp, HTVMS_wwwName((char *)Home_Dir()));
@@ -1198,8 +1184,7 @@ PUBLIC int main ARGS2(
     if ((cp = strchr(lynx_lss_file, '~'))) {
 	*(cp++) = '\0';
 	StrAllocCopy(temp, lynx_lss_file);
-	if ((len=strlen(temp)) > 0 && temp[len-1] == '/')
-	    temp[len-1] = '\0';
+	LYTrimPathSep(temp);
 #ifdef VMS
 	StrAllocCat(temp, HTVMS_wwwName((char *)Home_Dir()));
 #else
@@ -1278,8 +1263,7 @@ PUBLIC int main ARGS2(
 	if ((cp = strchr(lynx_save_space, '~')) != NULL) {
 	    *(cp++) = '\0';
 	    StrAllocCopy(temp, lynx_save_space);
-	    if (((len = strlen(temp)) > 0) && temp[len-1] == '/')
-		temp[len-1] = '\0';
+	    LYTrimPathSep(temp);
 #ifdef DOSPATH
 	    StrAllocCat(temp, HTDOS_wwwName((char *)Home_Dir()));
 #else
@@ -1296,11 +1280,10 @@ PUBLIC int main ARGS2(
 #ifdef VMS
 	LYLowerCase(lynx_save_space);
 	if (strchr(lynx_save_space, '/') != NULL) {
-	    if ((len = strlen(lynx_save_space)) == 1) {
+	    if (strlen(lynx_save_space) == 1) {
 		StrAllocCopy(lynx_save_space, "sys$login:");
 	    } else {
-		if (lynx_save_space[len-1] != '/')
-		    StrAllocCat(lynx_save_space, "/");
+		LYAddPathSep(&lynx_save_space);
 		StrAllocCopy(temp, HTVMS_name("", lynx_save_space));
 		StrAllocCopy(lynx_save_space, temp);
 		FREE(temp);
@@ -1311,12 +1294,7 @@ PUBLIC int main ARGS2(
 	    StrAllocCat(lynx_save_space, ":");
 	}
 #else
-    {
-	if (((len = strlen(lynx_save_space)) > 1) &&
-	    lynx_save_space[len-1] != '/') {
-	    StrAllocCat(lynx_save_space, "/");
-	}
-    }
+	LYAddPathSep(&lynx_save_space);
 #endif /* VMS */
     }
 
@@ -1523,7 +1501,37 @@ PUBLIC int main ARGS2(
      *	Sod it, this looks like a reasonable place to load the
      *	cookies file, probably.  - RP
      */
-    LYLoadCookies("cookies"); /* add command line options! */
+    if(LYCookieFile == NULL) {
+#ifdef VMS
+	/* I really don't know if this is going to work on VMS. Someone
+	 * who knows needs to take a look. - BJP
+	 */
+	StrAllocCopy(LYCookieFile, "sys$login:cookies");
+#else
+	StrAllocCopy(LYCookieFile, Home_Dir());
+	StrAllocCat(LYCookieFile, "/cookies");
+#endif /* VMS */
+    } else {
+	if ((cp = strchr(LYCookieFile, '~'))) {
+	    temp = NULL;
+	    *(cp++) = '\0';
+	    StrAllocCopy(temp, cp);
+	    LYTrimPathSep(temp);
+#ifdef DOSPATH
+	    StrAllocCopy(LYCookieFile, HTDOS_wwwName((char *)Home_Dir()));
+#else
+#ifdef VMS
+	    StrAllocCopy(LYCookieFile, HTVMS_wwwName((char *)Home_Dir()));
+#else
+	    StrAllocCopy(LYCookieFile, Home_Dir());
+#endif /* VMS */
+#endif /* DOSPATH */
+
+	    StrAllocCat(LYCookieFile, temp);
+	    FREE(temp);
+	}
+    }
+    LYLoadCookies(LYCookieFile);
 #endif
 
     /*
@@ -1654,14 +1662,9 @@ PUBLIC int main ARGS2(
      *	Set up our help and about file base paths. - FM
      */
     StrAllocCopy(helpfilepath, helpfile);
-    if ((cp=strrchr(helpfilepath, '/')) != NULL)
-	*cp = '\0';
-    /*
-     *	Remove code to merge the historical about_lynx
-     *	directory into lynx_help. - HN
-     */
-    StrAllocCat(helpfilepath, "/");
-
+    if ((cp = LYPathLeaf(helpfilepath)) != helpfilepath)
+        *cp = '\0';
+    LYAddPathSep(&helpfilepath);
 
     /*
      *	Make sure our bookmark default strings
@@ -1695,7 +1698,7 @@ PUBLIC int main ARGS2(
 		keypad_mode = LINKS_ARE_NUMBERED;
 	    }
 	}
-	if (display != NULL && *display != '\0') {
+	if (x_display != NULL && *x_display != '\0') {
 	    LYisConfiguredForX = TRUE;
 	}
 	if (dump_output_width > 0) {
@@ -1723,7 +1726,7 @@ PUBLIC int main ARGS2(
 	 *  INTERACTIVE session. - FM
 	 */
 	if (setup(terminal)) {
-	    if (display != NULL && *display != '\0') {
+	    if (x_display != NULL && *x_display != '\0') {
 		LYisConfiguredForX = TRUE;
 	    }
 	    ena_csi((LYlowest_eightbit[current_char_set] > 155));
@@ -1888,7 +1891,7 @@ static int assume_charset_fun ARGS3(
 	char *,			next_arg)
 {
     if (next_arg == 0) {
-	UCLYhndl_for_unspec = 0;
+	UCLYhndl_for_unspec = UCGetLYhndl_byMIME("iso-8859-1");
     } else {
 	LYLowerCase(next_arg);
 	StrAllocCopy(UCAssume_MIMEcharset, next_arg);
@@ -1905,7 +1908,7 @@ static int assume_local_charset_fun ARGS3(
 	char *,			next_arg)
 {
     if (next_arg == 0) {
-	UCLYhndl_HTFile_for_unspec = 0;
+	UCLYhndl_HTFile_for_unspec = UCGetLYhndl_byMIME("iso-8859-1");
     } else {
 	LYLowerCase(next_arg);
 	StrAllocCopy(UCAssume_localMIMEcharset, next_arg);
@@ -1923,7 +1926,7 @@ static int assume_unrec_charset_fun ARGS3(
 	char *,			next_arg)
 {
     if (next_arg == 0) {
-	UCLYhndl_for_unrec = 0;
+	UCLYhndl_for_unrec = UCGetLYhndl_byMIME("iso-8859-1");
     } else {
 	LYLowerCase(next_arg);
 	StrAllocCopy(UCAssume_unrecMIMEcharset, next_arg);
@@ -2037,19 +2040,9 @@ static int display_fun ARGS3(
 	char *,			next_arg)
 {
     if (next_arg != 0) {
-#ifdef VMS
-	LYUpperCase(next_arg);
-	Define_VMSLogical(DISPLAY, next_arg);
-#else
-	static char display_putenv_command[142];
-
-	sprintf(display_putenv_command, "DISPLAY=%s", next_arg);
-	putenv(display_putenv_command);
-#endif /* VMS */
-
-	if ((0 != (next_arg = getenv(DISPLAY)))
-	    && (*next_arg != '\0'))
-	  StrAllocCopy(display, next_arg);
+	LYsetXDisplay(next_arg);
+	if ((next_arg = LYgetXDisplay()) != 0)
+	    StrAllocCopy(x_display, next_arg);
     }
 
     return 0;
@@ -2096,9 +2089,9 @@ static int error_file_fun ARGS3(
 #if defined(EXEC_LINKS) || defined(EXEC_SCRIPTS)
 /* -exec */
 static int exec_fun ARGS3(
-	Parse_Args_Type*,	p,
-	char **,		argv,
-	char *,			next_arg)
+	Parse_Args_Type*,	p GCC_UNUSED,
+	char **,		argv GCC_UNUSED,
+	char *,			next_arg GCC_UNUSED)
 {
 #ifndef NEVER_ALLOW_REMOTE_EXEC
     local_exec = TRUE;
@@ -2538,6 +2531,7 @@ static int width_fun ARGS3(
     return 0;
 }
 
+/* NOTE: This table is sorted by name; the lookup relies on that. */
 static Parse_Args_Type Arg_Table [] =
 {
    PARSE_SET(
@@ -2608,6 +2602,12 @@ static Parse_Args_Type Arg_Table [] =
       "cookies",	TOGGLE_ARG,		&LYSetCookies,
       "toggles handling of Set-Cookie headers"
    ),
+#ifdef EXP_PERSISTENT_COOKIES
+   PARSE_STR(
+      "cookie_file",	LYSTRING_ARG,		&LYCookieFile,
+      "=FILENAME\nspecifies a file to use to store cookies"
+   ),
+#endif /* EXP_PERSISTENT_COOKIES */
 #ifndef VMS
    PARSE_SET(
       "core",		TOGGLE_ARG,		&LYNoCore,
@@ -2619,6 +2619,12 @@ static Parse_Args_Type Arg_Table [] =
       "with -traversal, output each page to a file\n\
 with -dump, format output as with -traversal, but to stdout"
    ),
+#ifdef DISP_PARTIAL
+   PARSE_SET(
+      "debug_partial",	TOGGLE_ARG,		&debug_display_partial,
+      "incremental display stages with MessageSecs delay"
+   ),
+#endif
    PARSE_FUN(
       "display",	NEED_FUNCTION_ARG,	display_fun,
       "=DISPLAY\nset the display variable for X exec'ed programs"
diff --git a/src/LYMainLoop.c b/src/LYMainLoop.c
index 2f8d856b..a65bee19 100644
--- a/src/LYMainLoop.c
+++ b/src/LYMainLoop.c
@@ -27,7 +27,6 @@
 #include <LYEdit.h>
 #include <LYShowInfo.h>
 #include <LYBookmark.h>
-#include <LYSystem.h>
 #include <LYKeymap.h>
 #include <LYJump.h>
 #include <LYDownload.h>
@@ -90,7 +89,6 @@ PUBLIC char * LYRequestTitle = NULL; /* newdoc.title in calls to getfile() */
 #ifdef DISP_PARTIAL
 PUBLIC int Newline_partial = 0;     /* required for display_partial mode */
 PUBLIC int NumOfLines_partial = -1; /* required for display_partial mode */
-PUBLIC BOOLEAN debug_display_partial;  /* show with MessageSecs delay */
 #endif
 
 PRIVATE document newdoc;
@@ -1159,9 +1157,7 @@ try_again:
 		FREE(temp);
 		if (!(temp = HTParse(curdoc.address, "",
 				     PARSE_PATH+PARSE_PUNCTUATION))) {
-		    if (startrealm[strlen(startrealm)-1] != '/') {
-			StrAllocCat(startrealm, "/");
-		    }
+		    LYAddHtmlSep(&startrealm);
 		} else {
 		    if (forced_HTML_mode &&
 			!dump_output_immediately &&
@@ -1219,9 +1215,7 @@ try_again:
 			StrAllocCopy(traversal_host, "None");
 		    } else {
 			StrAllocCopy(traversal_host, temp);
-			if (traversal_host[strlen(traversal_host)-1] != '/') {
-			    StrAllocCat(traversal_host, "/");
-			}
+			LYAddHtmlSep(&traversal_host);
 		    }
 		    FREE(temp);
 		}
@@ -4548,8 +4542,7 @@ check_goto_URL:
 			 *  We're viewing a local directory.  Make
 			 *  that the CSwing argument. - FM
 			 */
-			if (cp[(strlen(cp) - 1)] != '/')
-			    StrAllocCat(cp, "/");
+			LYAddPathSep(&cp);
 			StrAllocCopy(VMSdir, HTVMS_name("", cp));
 			FREE(cp);
 		    } else {
@@ -4603,7 +4596,7 @@ check_goto_URL:
 		refresh_screen = TRUE;	/* redisplay */
 	    }
 	    stop_curses();
-	    system(temp);
+	    LYSystem(temp);
 	    start_curses();
 	    FREE(temp);
 	    break;
@@ -4840,37 +4833,7 @@ check_add_bookmark_to_self:
 	    if (!no_shell) {
 		stop_curses();
 		printf(SPAWNING_MSG);
-		fflush(stdout);
-		fflush(stderr);
-#ifdef DOSPATH
-#ifdef __DJGPP__
-		__djgpp_set_ctrl_c(0);
-		_go32_want_ctrl_break(1);
-#endif /* __DJGPP__ */
-		if (getenv("SHELL") != NULL) {
-		    system(getenv("SHELL"));
-		} else {
-		    system(getenv("COMSPEC") == NULL ? "command.com" : getenv("COMSPEC"));
-		}
-#ifdef __DJGPP__
-		__djgpp_set_ctrl_c(1);
-		_go32_want_ctrl_break(0);
-#endif /* __DJGPP__ */
-#else
-#ifdef __EMX__
-		if (getenv("SHELL") != NULL) {
-		    system(getenv("SHELL"));
-		} else {
-		    system(getenv("COMSPEC") == NULL ? "cmd.exe" : getenv("COMSPEC"));
-		}
-#else
-#ifdef VMS
-		system("");
-#else
-		system("exec $SHELL");
-#endif /* __EMX__ */
-#endif /* VMS */
-#endif /* DOSPATH */
+		LYSystem(LYSysShell());
 		start_curses();
 		refresh_screen = TRUE;	/* for an HText_pageDisplay() */
 	    } else {
diff --git a/src/LYNews.c b/src/LYNews.c
index b04e7a96..97e93e24 100644
--- a/src/LYNews.c
+++ b/src/LYNews.c
@@ -11,7 +11,6 @@
 #include <LYStrings.h>
 #include <LYGetFile.h>
 #include <LYHistory.h>
-#include <LYSystem.h>
 #include <GridText.h>
 #include <LYCharSets.h>
 #include <LYNews.h>
@@ -240,7 +239,7 @@ PUBLIC char *LYNewsPost ARGS2(
 	sprintf(user_input,"%s%s %s", editor, editor_arg, my_tempfile);
 	_statusline(SPAWNING_EDITOR_FOR_NEWS);
 	stop_curses();
-	if (system(user_input)) {
+	if (LYSystem(user_input)) {
 	    start_curses();
 	    HTAlert(ERROR_SPAWNING_EDITOR);
 	} else {
diff --git a/src/LYOptions.c b/src/LYOptions.c
index cf1c3293..41017171 100644
--- a/src/LYOptions.c
+++ b/src/LYOptions.c
@@ -22,12 +22,6 @@
 
 #include <LYLeaks.h>
 
-#ifdef VMS
-#define DISPLAY "DECW$DISPLAY"
-#else
-#define DISPLAY "DISPLAY"
-#endif /* VMS */
-
 BOOLEAN term_options;
 
 PRIVATE void terminate_options	PARAMS((int sig));
@@ -74,9 +68,6 @@ PUBLIC void LYoptions NOARGS
      *	If the user changes the display we need memory to put it in.
      */
     char display_option[256];
-#ifndef VMS
-    static char putenv_command[142];
-#endif /* !VMS */
     char *choices[MAXCHOICES];
     int CurrentCharSet = current_char_set;
     int CurrentAssumeCharSet = UCLYhndl_for_unspec;
@@ -189,7 +180,7 @@ draw_options:
 
     move(L_DISPLAY, 5);
     addstr("D)ISPLAY variable            : ");
-    addstr((display && *display) ? display : "NONE");
+    addstr((x_display && *x_display) ? x_display : "NONE");
 
     move(L_HOME, 5);
     addstr("mu(L)ti-bookmarks: ");
@@ -430,8 +421,8 @@ draw_options:
 
 	    case 'd':	/* Change the display. */
 	    case 'D':
-		if (display && *display) {
-		    strcpy(display_option, display);
+		if (x_display && *x_display) {
+		    strcpy(display_option, x_display);
 		} else {  /* clear the NONE */
 		    move(L_DISPLAY, COL_OPTION_VALUES);
 		    addstr("    ");
@@ -445,18 +436,18 @@ draw_options:
 		stop_bold();
 		move(L_DISPLAY, COL_OPTION_VALUES);
 		if ((term_options || ch == -1) ||
-		    (display != NULL &&
+		    (x_display != NULL &&
 #ifdef VMS
-		     !strcasecomp(display, display_option)))
+		     !strcasecomp(x_display, display_option)))
 #else
-		     !strcmp(display, display_option)))
+		     !strcmp(x_display, display_option)))
 #endif /* VMS */
 		{
 		    /*
 		     *	Cancelled, or a non-NULL display string
 		     *	wasn't changed. - FM
 		     */
-		    addstr((display && *display) ? display : "NONE");
+		    addstr((x_display && *x_display) ? x_display : "NONE");
 		    clrtoeol();
 		    if (ch == -1) {
 			HTInfoMsg(CANCELLED);
@@ -467,8 +458,8 @@ draw_options:
 		    response = ' ';
 		    break;
 		} else if (*display_option == '\0') {
-		    if ((display == NULL) ||
-			(display != NULL && *display == '\0')) {
+		    if ((x_display == NULL) ||
+			(x_display != NULL && *x_display == '\0')) {
 			/*
 			 *  NULL or zero-length display string
 			 *  wasn't changed. - FM
@@ -483,28 +474,22 @@ draw_options:
 		/*
 		 *  Set the new DISPLAY variable. - FM
 		 */
-#ifdef VMS
-		LYUpperCase(display_option);
-		Define_VMSLogical(DISPLAY, display_option);
-#else
-		sprintf(putenv_command, "DISPLAY=%s", display_option);
-		putenv(putenv_command);
-#endif /* VMS */
-		if ((cp = getenv(DISPLAY)) != NULL && *cp != '\0') {
-		    StrAllocCopy(display, cp);
+		LYsetXDisplay(display_option);
+		if ((cp = LYgetXDisplay()) != NULL) {
+		    StrAllocCopy(x_display, cp);
 		} else {
-		    FREE(display);
+		    FREE(x_display);
 		}
 		cp = NULL;
-		addstr(display ? display : "NONE");
+		addstr(x_display ? x_display : "NONE");
 		clrtoeol();
-		if ((display == NULL && *display_option == '\0') ||
-		    (display != NULL &&
-		     !strcmp(display, display_option))) {
-		    if (display == NULL &&
+		if ((x_display == NULL && *display_option == '\0') ||
+		    (x_display != NULL &&
+		     !strcmp(x_display, display_option))) {
+		    if (x_display == NULL &&
 			LYisConfiguredForX == TRUE) {
 			_statusline(VALUE_ACCEPTED_WARNING_X);
-		    } else if (display != NULL &&
+		    } else if (x_display != NULL &&
 			LYisConfiguredForX == FALSE) {
 			_statusline(VALUE_ACCEPTED_WARNING_NONX);
 		    } else {
@@ -786,8 +771,8 @@ draw_options:
 		    }
 
 		    /*
-		     *  Set the raw 8-bit or CJK mode defaults and
-		     *  character set if changed. - FM
+		     *	Set the raw 8-bit or CJK mode defaults and
+		     *	character set if changed. - FM
 		     */
 		    if (CurrentAssumeCharSet != UCLYhndl_for_unspec ||
 			UCLYhndl_for_unspec != curval) {
@@ -3110,106 +3095,116 @@ typedef struct {
 
 static CONST char selected_string[] = "selected";
 static CONST char disabled_string[] = "disabled";
-static CONST char on_string[]       = "ON";
-static CONST char off_string[]      = "OFF";
+static CONST char on_string[]	    = "ON";
+static CONST char off_string[]	    = "OFF";
 static CONST char never_string[]    = "NEVER";
 static CONST char always_string[]   = "ALWAYS";
-
-static char * secure_string = "secure";
-static char * secure_value = NULL;
-
-static char * editor_string = "editor";
-
-static char * display_string = "display";
-
-static char * mbm_string = "multi_bookmarks_mode";
-static char * mbm_off_string = "OFF";
-static char * mbm_standard_string = "STANDARD";
-static char * mbm_advanced_string = "ADVANCED";
-static char * single_bookmark_string = "single_bookmark_name";
-
-static char * mail_address_string = "mail_address";
-
-static char * save_options_string = "save_options";
-
-static char * preferred_doc_lang_string = "preferred_doc_lang";
-
-static char * preferred_doc_char_string = "preferred_doc_char";
-
-static char * assume_char_set_string = "assume_char_set";
-
-static char * display_char_set_string = "display_char_set";
-
-static char * raw_mode_string = "raw_mode";
-
-static char * show_color_string = "show_color";
-
-static char * verbose_images_string = "verbose_images";
-
-static char * vi_keys_string = "vi_keys";
-
-static char * emacs_keys_string = "emacs_keys";
-
-static char * show_dotfiles_string = "show_dotfiles";
-
-static char * select_popups_string = "select_popups";
-
-static char * show_cursor_string = "show_cursor";
-
-static char * user_agent_string = "user_agent";
-
 static OptValues bool_values[] = {
-	{ FALSE,             "OFF",               "OFF"         },
-	{ TRUE,              "ON",                "ON"          },
+	{ FALSE,	     "OFF",		  "OFF" 	},
+	{ TRUE, 	     "ON",		  "ON"		},
 	{ 0, 0, 0 }};
 
-#ifdef DIRED_SUPPORT
-static OptValues dired_values[] = {
-	{ 0,                 "Directories first", "dired_dir"   },
-	{ FILES_FIRST,       "Files first",       "dired_files" },
-	{ MIXED_STYLE,       "Mixed style",       "dired_mixed" },
-	{ 0, 0, 0 }};
-static char * dired_sort_string = "dired_sort";
-#endif /* DIRED_SUPPORT */
+static char * secure_string		= "secure";
+static char * secure_value		= NULL;
+static char * save_options_string	= "save_options";
 
-static OptValues ftp_sort_values[] = {
-	{ FILE_BY_NAME,      "By Name",           "ftp_by_name" },
-	{ FILE_BY_TYPE,      "By Type",           "ftp_by_type" },
-	{ FILE_BY_SIZE,      "By Size",           "ftp_by_size" },
-	{ FILE_BY_DATE,      "By Date",           "ftp_by_date" },
+/*
+ * Personal Preferences
+ */
+static char * cookies_string		= "cookies";
+static char * cookies_ignore_all_string = "ignore";
+static char * cookies_up_to_user_string = "ask user";
+static char * cookies_accept_all_string = "accept all";
+static char * display_string		= "display";
+static char * editor_string		= "editor";
+static char * emacs_keys_string 	= "emacs_keys";
+#ifdef ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS
+#define EXEC_ALWAYS 2
+#define EXEC_LOCAL  1
+#define EXEC_NEVER  0
+static char * exec_links_string 	= "exec_options";
+static OptValues exec_links_values[]	= {
+	{ EXEC_NEVER,	"ALWAYS OFF",		"ALWAYS OFF" },
+	{ EXEC_LOCAL,	"FOR LOCAL FILES ONLY",	"FOR LOCAL FILES ONLY" },
+#ifndef NEVER_ALLOW_REMOTE_EXEC
+	{ EXEC_ALWAYS,	"ALWAYS ON",		"ALWAYS ON" },
+#endif
 	{ 0, 0, 0 }};
-static char * ftp_sort_string = "ftp_sort";
-
-static OptValues keypad_mode_values[] = {
-	{ NUMBERS_AS_ARROWS, "Numbers act as arrows", "number_arrows" },
-	{ LINKS_ARE_NUMBERED,
-	 "Links are numbered",
-	 "links_numbered" },
+#endif /* ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS */
+static char * keypad_mode_string	= "keypad_mode";
+static OptValues keypad_mode_values[]	= {
+	{ NUMBERS_AS_ARROWS,  "Numbers act as arrows", "number_arrows" },
+	{ LINKS_ARE_NUMBERED, "Links are numbered",    "links_numbered" },
 	{ LINKS_AND_FORM_FIELDS_ARE_NUMBERED,
-	 "Links and form fields are numbered",
-	 "links_and_forms" },
+			      "Links and form fields are numbered",
+			      "links_and_forms" },
 	{ 0, 0, 0 }};
-static char * keypad_mode_string = "keypad_mode";
-
+static char * mail_address_string	= "mail_address";
+static char * search_type_string	= "search_type";
 static OptValues search_type_values[] = {
-	{ FALSE,            "Case insensitive",  "case_insensitive" },
-	{ TRUE,             "Case sensitive",    "case_sensitive" },
+	{ FALSE,	    "Case insensitive",  "case_insensitive" },
+	{ TRUE, 	    "Case sensitive",	 "case_sensitive" },
 	{ 0, 0, 0 }};
-static char * search_type_string = "search_type";
-
+static char * select_popups_string	= "select_popups";
+static char * show_color_string		= "show_color";
 static OptValues show_color_values[] = {
-	{ SHOW_COLOR_NEVER,  never_string,        never_string },
-	{ SHOW_COLOR_OFF,    off_string,          off_string },
-	{ SHOW_COLOR_ON,     on_string,           on_string },
-	{ SHOW_COLOR_ALWAYS, always_string,       always_string },
+	{ SHOW_COLOR_NEVER,  	never_string,	never_string },
+	{ SHOW_COLOR_OFF,    	off_string,	off_string },
+	{ SHOW_COLOR_ON,     	on_string, 	on_string },
+	{ SHOW_COLOR_ALWAYS, 	always_string,	always_string },
 	{ 0, 0, 0 }};
-
+static char * show_cursor_string	= "show_cursor";
+static char * user_mode_string		= "user_mode";
 static OptValues user_mode_values[] = {
-	{ NOVICE_MODE,       "Novice",            "Novice" },
-	{ INTERMEDIATE_MODE, "Intermediate",      "Intermediate" },
-	{ ADVANCED_MODE,     "Advanced",          "Advanced" },
+	{ NOVICE_MODE,		"Novice",	"Novice" },
+	{ INTERMEDIATE_MODE,	"Intermediate", "Intermediate" },
+	{ ADVANCED_MODE,	"Advanced",	"Advanced" },
 	{ 0, 0, 0 }};
-static char * user_mode_string = "user_mode";
+static char * verbose_images_string	= "verbose_images";
+static char * vi_keys_string		= "vi_keys";
+
+/*
+ * Bookmark Options
+ */
+static char * mbm_advanced_string	= "ADVANCED";
+static char * mbm_off_string		= "OFF";
+static char * mbm_standard_string	= "STANDARD";
+static char * mbm_string		= "multi_bookmarks_mode";
+static char * single_bookmark_string	= "single_bookmark_name";
+
+/*
+ * Character Set Options
+ */
+static char * assume_char_set_string	= "assume_char_set";
+static char * display_char_set_string	= "display_char_set";
+static char * raw_mode_string		= "raw_mode";
+
+/*
+ * File Management Options
+ */
+static char * show_dotfiles_string	= "show_dotfiles";
+#ifdef DIRED_SUPPORT
+static char * dired_sort_string 	= "dired_sort";
+static OptValues dired_values[] = {
+	{ 0,			"Directories first",	"dired_dir" },
+	{ FILES_FIRST,		"Files first",		"dired_files" },
+	{ MIXED_STYLE,		"Mixed style",		"dired_mixed" },
+	{ 0, 0, 0 }};
+#endif /* DIRED_SUPPORT */
+static char * ftp_sort_string = "ftp_sort";
+static OptValues ftp_sort_values[] = {
+	{ FILE_BY_NAME, 	"By Name",		"ftp_by_name" },
+	{ FILE_BY_TYPE, 	"By Type",		"ftp_by_type" },
+	{ FILE_BY_SIZE, 	"By Size",		"ftp_by_size" },
+	{ FILE_BY_DATE, 	"By Date",		"ftp_by_date" },
+	{ 0, 0, 0 }};
+
+/*
+ * Headers transferred to remote server
+ */
+static char * preferred_doc_char_string = "preferred_doc_char";
+static char * preferred_doc_lang_string = "preferred_doc_lang";
+static char * user_agent_string		= "user_agent";
 
 #define PutLabel(fp, text) \
 	fprintf(fp,"%-35s: ", text)
@@ -3232,7 +3227,7 @@ static char * user_mode_string = "user_mode";
 	fprintf(fp,"</select>\n")
 
 PRIVATE void PutOptValues ARGS3(
-	FILE *,		fp,
+	FILE *, 	fp,
 	int,		value,
 	OptValues *,	table)
 {
@@ -3247,7 +3242,7 @@ PRIVATE void PutOptValues ARGS3(
 
 PRIVATE int GetOptValues ARGS2(
 	OptValues *,	table,
-	char *,		value)
+	char *, 	value)
 {
     while (table->LongName != 0) {
 	if (!strcmp(value, table->HtmlName))
@@ -3295,6 +3290,33 @@ PRIVATE PostPair * break_data ARGS1(
 	 * Clean them up a bit, in case user entered a funky string.
 	 */
 	HTUnEscape(q[count].tag);
+
+	/* In the value field we have '+' instead of ' '. So do a simple
+	 * find&replace on the value field before UnEscaping() - SKY
+	 */
+	{
+	   size_t i, len;
+	   len = strlen(q[count].value);
+	   for (i = 0; i < len; i++) {
+		if (q[count].value[i] == '+') {
+#ifdef UNIX
+		    /*
+		     * Allow for special case of options which begin with a "+" on
+		     * Unix - TD
+		     */
+		    if (i > 0
+		    && q[count].value[i+1] == '+'
+		    && isalnum(q[count].value[i+2])) {
+			q[count].value[i++] = ' ';
+			i++;
+			continue;
+		    }
+
+#endif
+		    q[count].value[i] = ' ';
+		}
+	   }
+	}
 	HTUnEscape(q[count].value);
 
 	count++;
@@ -3322,13 +3344,18 @@ PRIVATE PostPair * break_data ARGS1(
  * initial rendering stages and can be changed only after reloading :-(
  * So we introduce boolean flag 'need_reload' (currently dummy).
  *
- * Options processed in order according to gen_options(),
- * to avoid possible dependencies we add boolean flags
- * where the order is essential (save, character sets...)
+ * Options are processed in order according to gen_options(), we should not
+ * depend on it and add boolean flags where the order is essential (save,
+ * character sets...)
+ *
+ * Security:  some options are disabled in gen_options() under certain
+ * conditions.  We *should* duplicate the same conditions here in postoptions()
+ * to prevent user with a limited access from editing HTML options code
+ * manually and submit it to access the restricted items.  - LP
  */
 
 PUBLIC int postoptions ARGS1(
-    document *,		newdoc)
+    document *, 	newdoc)
 {
     PostPair *data = 0;
     int i;
@@ -3338,6 +3365,7 @@ PUBLIC int postoptions ARGS1(
     BOOLEAN assume_char_set_changed = FALSE;
     BOOLEAN need_reload = FALSE;
     char *link_info = NULL;
+    int CurrentShowColor = LYShowColor;
 
     /*-------------------------------------------------
      * kludge a link from mbm_menu, the URL was:
@@ -3369,142 +3397,107 @@ PUBLIC int postoptions ARGS1(
 	    FREE(secure_value);
 	}
 
-	/*
-	 * editor
-	 */
-	if (!strcmp(data[i].tag, editor_string)) {
-	    FREE(editor);
-	    StrAllocCopy(editor, data[i].value);
+	/* Save options */
+	if (!strcmp(data[i].tag, save_options_string) && (!no_option_save)) {
+	    save_all = TRUE;
 	}
 
-	/*
-	 * display
-	 */
+	/* Cookies: SELECT */
+	if (!strcmp(data[i].tag, cookies_string)) {
+	    if (!strcmp(data[i].value, cookies_ignore_all_string)) {
+		LYSetCookies = FALSE;
+	    } else if (!strcmp(data[i].value, cookies_up_to_user_string)) {
+		LYSetCookies = TRUE;
+		LYAcceptAllCookies = FALSE;
+	    } else if (!strcmp(data[i].value, cookies_accept_all_string)) {
+		LYSetCookies = TRUE;
+		LYAcceptAllCookies = TRUE;
+	    }
+	}
+
+	/* Display: INPUT */
 	if (!strcmp(data[i].tag, display_string)) {
-	    FREE(display);
-	    StrAllocCopy(display, data[i].value);
+	    LYsetXDisplay(data[i].value);
 	}
 
-	/*
-	 * multi-bookmarks mode
-	 */
-	if (!strcmp(data[i].tag, mbm_string)) {
-	    if (!strcmp(data[i].value, mbm_off_string)) {
-		LYMultiBookmarks = FALSE;
-	    } else if (!strcmp(data[i].value, mbm_standard_string)) {
-		LYMultiBookmarks = TRUE;
-		LYMBMAdvanced = FALSE;
-	    } else if (!strcmp(data[i].value, mbm_advanced_string)) {
-		LYMultiBookmarks = TRUE;
-		LYMBMAdvanced = TRUE;
-	    }
+	/* Editor: INPUT */
+	if (!strcmp(data[i].tag, editor_string)) {
+	    FREE(editor);
+	    StrAllocCopy(editor, data[i].value);
 	}
 
-	/*
-	 * single bookmarks file name
-	 */
-	if (!strcmp(data[i].tag, single_bookmark_string)) {
-	    if (strcmp(data[i].value, "")) {
-		FREE(bookmark_page);
-		StrAllocCopy(bookmark_page, data[i].value);
+	/* Emacs keys: ON/OFF */
+	if (!strcmp(data[i].tag, emacs_keys_string)) {
+	    if ((emacs_keys = GetOptValues(bool_values, data[i].value))) {
+		set_emacs_keys();
+	    } else {
+		reset_emacs_keys();
 	    }
 	}
 
-	/*
-	 * ftp sort
-	 */
-	if (!strcmp(data[i].tag, ftp_sort_string)) {
-	    HTfileSortMethod = GetOptValues(ftp_sort_values, data[i].value);
+	/* Execution links: SELECT */
+#ifdef ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS
+	if (!strcmp(data[i].tag, exec_links_string)) {
+	    int code = GetOptValues(exec_links_values, data[i].value);
+#ifndef NEVER_ALLOW_REMOTE_EXEC
+	    local_exec = (code == EXEC_ALWAYS);
+#endif /* !NEVER_ALLOW_REMOTE_EXEC */
+	    local_exec_on_local_files = (code == EXEC_LOCAL);
 	}
+#endif /* ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS */
 
-	/*
-	 * mail_address
-	 */
+	/* Keypad Mode: SELECT */
+	if (!strcmp(data[i].tag, keypad_mode_string)) {
+	    keypad_mode = GetOptValues(keypad_mode_values, data[i].value);
+	}
+
+	/* Mail Address: INPUT */
 	if (!strcmp(data[i].tag, mail_address_string)) {
 	    FREE(personal_mail_address);
 	    StrAllocCopy(personal_mail_address, data[i].value);
 	}
 
-	/*
-	 * search_type
-	 */
+	/* Search Type: SELECT */
 	if (!strcmp(data[i].tag, search_type_string)) {
 	    case_sensitive = GetOptValues(search_type_values, data[i].value);
 	}
 
-	/*
-	 * preferred_doc_lang
-	 */
-	if (!strcmp(data[i].tag, preferred_doc_lang_string)) {
-	    FREE(language);
-	    StrAllocCopy(language, data[i].value);
-	}
-
-	/*
-	 * preferred_doc_char
-	 */
-	if (!strcmp(data[i].tag, preferred_doc_char_string)) {
-	    FREE(pref_charset);
-	    StrAllocCopy(pref_charset, data[i].value);
-	}
-
-	/*
-	 * display_char_set
-	 */
-	if (!strcmp(data[i].tag, display_char_set_string)) {
-	    int newval;
-
-	    newval = atoi(data[i].value);
-	    if (newval != current_char_set) {
-		current_char_set = newval;
-		display_char_set_changed = TRUE;
-	    }
+	/* Select Popups: ON/OFF */
+	if (!strcmp(data[i].tag, select_popups_string)) {
+	    LYSelectPopups = GetOptValues(bool_values, data[i].value);
 	}
 
-	/*
-	 * raw_mode
-	 */
-	if (!strcmp(data[i].tag, raw_mode_string)) {
-	    BOOLEAN newmode = GetOptValues(bool_values, data[i].value);
-
-	    if (newmode != LYRawMode) {
-		LYRawMode = newmode;
-		raw_mode_changed = TRUE;
+#if defined(USE_SLANG) || defined(COLOR_CURSES)
+	/* Show Color: SELECT */
+	if (!strcmp(data[i].tag, show_color_string)) {
+	    LYShowColor = GetOptValues(show_color_values, data[i].value);
+	    LYChosenShowColor = LYShowColor;
+	    if (CurrentShowColor != LYShowColor) {
+		lynx_force_repaint();
 	    }
+	    CurrentShowColor = LYShowColor;
+#ifdef USE_SLANG
+	    SLtt_Use_Ansi_Colors = (LYShowColor > 1 ? 1 : 0);
+#endif
 	}
+#endif /* USE_SLANG || COLOR_CURSES */
 
-	/*
-	 * assume_char_set
-	 */
-	if (!strcmp(data[i].tag, assume_char_set_string)) {
-	    int newval;
-
-	    newval = UCGetLYhndl_byMIME(data[i].value);
-	    if (newval != UCLYhndl_for_unspec) {
-		UCLYhndl_for_unspec = newval;
-		StrAllocCopy(UCAssume_MIMEcharset, data[i].value);
-		assume_char_set_changed = TRUE;
-	    }
+	/* Show Cursor: ON/OFF */
+	if (!strcmp(data[i].tag, show_cursor_string)) {
+	    LYShowCursor = GetOptValues(bool_values, data[i].value);
 	}
 
-	/*
-	 * show_color
-	 */
-	if (!strcmp(data[i].tag, show_color_string)) {
-	    LYShowColor = GetOptValues(show_color_values, data[i].value);
-	    LYChosenShowColor = LYShowColor;
+	/* User Mode: Default: */
+	if (!strcmp(data[i].tag, user_mode_string)) {
+	    user_mode = GetOptValues(user_mode_values, data[i].value);
 	}
 
-	/*
-	 * verbose images mode
-	 */
+	/* Verbose Images: ON/OFF */
 	if (!strcmp(data[i].tag, verbose_images_string)) {
 	    verbose_img = GetOptValues(bool_values, data[i].value);
 	}
 
-	/*
-	 * vi_keys
-	 */
+	/* VI Keys: ON/OFF */
 	if (!strcmp(data[i].tag, vi_keys_string)) {
 	    if ((vi_keys = GetOptValues(bool_values, data[i].value))) {
 		set_vi_keys();
@@ -3513,76 +3506,97 @@ PUBLIC int postoptions ARGS1(
 	    }
 	}
 
-	/*
-	 * emacs_keys
-	 */
-	if (!strcmp(data[i].tag, emacs_keys_string)) {
-	    if ((emacs_keys = GetOptValues(bool_values, data[i].value))) {
-		set_emacs_keys();
-	    } else {
-		reset_emacs_keys();
+	/* Bookmarks File Menu: SELECT */
+	if (!strcmp(data[i].tag, mbm_string) && (!LYMBMBlocked)) {
+	    if (!strcmp(data[i].value, mbm_off_string)) {
+		LYMultiBookmarks = FALSE;
+	    } else if (!strcmp(data[i].value, mbm_standard_string)) {
+		LYMultiBookmarks = TRUE;
+		LYMBMAdvanced = FALSE;
+	    } else if (!strcmp(data[i].value, mbm_advanced_string)) {
+		LYMultiBookmarks = TRUE;
+		LYMBMAdvanced = TRUE;
 	    }
 	}
 
-	/*
-	 * show_dotfiles
-	 */
-	if (!strcmp(data[i].tag, show_dotfiles_string)) {
-	    show_dotfiles = GetOptValues(bool_values, data[i].value);
+	/* Single Bookmarks filename: INPUT */
+	if (!strcmp(data[i].tag, single_bookmark_string)) {
+	    if (strcmp(data[i].value, "")) {
+		FREE(bookmark_page);
+		StrAllocCopy(bookmark_page, data[i].value);
+	    }
 	}
 
-	/*
-	 * select_popups
-	 */
-	if (!strcmp(data[i].tag, select_popups_string)) {
-	    LYSelectPopups = GetOptValues(bool_values, data[i].value);
+	/* Assume Character Set: SELECT */
+	if (!strcmp(data[i].tag, assume_char_set_string)) {
+	    int newval;
+
+	    newval = UCGetLYhndl_byMIME(data[i].value);
+	    if (newval != UCLYhndl_for_unspec) {
+		UCLYhndl_for_unspec = newval;
+		StrAllocCopy(UCAssume_MIMEcharset, data[i].value);
+		assume_char_set_changed = TRUE;
+	    }
 	}
 
-	/*
-	 * show_cursor
-	 */
-	if (!strcmp(data[i].tag, show_cursor_string)) {
-	    LYShowCursor = GetOptValues(bool_values, data[i].value);
+	/* Display Character Set: SELECT */
+	if (!strcmp(data[i].tag, display_char_set_string)) {
+	    int newval;
+
+	    newval = atoi(data[i].value);
+	    if (newval != current_char_set) {
+		current_char_set = newval;
+		display_char_set_changed = TRUE;
+	    }
+	}
+
+	/* Raw Mode: ON/OFF */
+	if (!strcmp(data[i].tag, raw_mode_string)) {
+	    BOOLEAN newmode = GetOptValues(bool_values, data[i].value);
+
+	    if (newmode != LYRawMode) {
+		LYRawMode = newmode;
+		raw_mode_changed = TRUE;
+	    }
 	}
 
 	/*
-	 * keypad_mode
+	 * ftp sort: SELECT
 	 */
-	if (!strcmp(data[i].tag, keypad_mode_string)) {
-	    keypad_mode = GetOptValues(keypad_mode_values, data[i].value);
+	if (!strcmp(data[i].tag, ftp_sort_string)) {
+	    HTfileSortMethod = GetOptValues(ftp_sort_values, data[i].value);
 	}
 
 #ifdef DIRED_SUPPORT
-	/*
-	 * dired_sort
-	 */
+	/* Local Directory Sort: SELECT */
 	if (!strcmp(data[i].tag, dired_sort_string)) {
 	    dir_list_style = GetOptValues(dired_values, data[i].value);
 	}
 #endif /* DIRED_SUPPORT */
 
-	/*
-	 * user_mode
-	 */
-	if (!strcmp(data[i].tag, user_mode_string)) {
-	    user_mode = GetOptValues(user_mode_values, data[i].value);
+	/* Show dot files: ON/OFF */
+	if (!strcmp(data[i].tag, show_dotfiles_string) && (!no_dotfiles)) {
+	    show_dotfiles = GetOptValues(bool_values, data[i].value);
 	}
 
-	/*
-	 * user_agent header
-	 */
-	if (!strcmp(data[i].tag, user_agent_string)) {
+	/* Preferred Document Character Set: INPUT */
+	if (!strcmp(data[i].tag, preferred_doc_char_string)) {
+	    FREE(pref_charset);
+	    StrAllocCopy(pref_charset, data[i].value);
+	}
+
+	/* Preferred Document Language: INPUT */
+	if (!strcmp(data[i].tag, preferred_doc_lang_string)) {
+	    FREE(language);
+	    StrAllocCopy(language, data[i].value);
+	}
+
+	/* User Agent: INPUT */
+	if (!strcmp(data[i].tag, user_agent_string) && (!no_useragent)) {
 	    FREE(LYUserAgent);
 	    /* ignore Copyright warning ? */
 	    StrAllocCopy(LYUserAgent, data[i].value);
 	}
-
-	/*
-	 * save_options
-	 */
-	if (!strcmp(data[i].tag, save_options_string)) {
-	    save_all = TRUE;
-	}
     } /* end of loop */
 
     /*
@@ -3630,8 +3644,9 @@ PUBLIC int postoptions ARGS1(
 	}
     }
     LYpop(newdoc);  /* return to previous doc, not to options menu! */
+
     if (need_reload == TRUE)  {
-        /* FIXME: currently dummy */
+	/* FIXME: currently dummy */
     }
     return(NULLFILE);
 }
@@ -3643,6 +3658,9 @@ PUBLIC int postoptions ARGS1(
  * Basic Strategy:  For each option, throw up the appropriate type of
  * control, giving defaults as appropriate.  If nothing else, we're
  * probably going to test every control there is.  MRC
+ *
+ * This function is synchronized with postoptions().  Read the comments in
+ * postoptions() header if you change something in gen_options().
  */
 PUBLIC int gen_options ARGS1(
 	char **,	newfile)
@@ -3667,11 +3685,7 @@ PUBLIC int gen_options ARGS1(
     StrAllocCopy(*newfile, any_filename);
     LYforce_no_cache = TRUE;
 
-    fprintf(fp0, "<html>\n<head>\n<title>%s</title>\n</head>\n<body>\n",
-	    OPTIONS_TITLE);
-    fprintf(fp0, "<h1>%s (%s), help on <a href=\"%s%s\">%s</a></h1>\n",
-		 LYNX_NAME, LYNX_VERSION,
-		 helpfilepath, OPTIONS_HELP, OPTIONS_TITLE);
+    BeginInternalPage(fp0, OPTIONS_TITLE, OPTIONS_HELP);
 
     /*
      * I do C, not HTML.  Feel free to pretty this up.
@@ -3691,20 +3705,18 @@ PUBLIC int gen_options ARGS1(
      * visible text begins here
      */
 
-    /*
-     * save/reset
-     */
+    /* Submit/Reset/Help */
     fprintf(fp0,"<p align=center>\n");
-    fprintf(fp0,"<input type=\"submit\" value=\"Accept Changes\">\n");
+    fprintf(fp0,"<input type=\"submit\" value=\"Accept Changes\"> - \n");
     fprintf(fp0,"<input type=\"reset\" value=\"Reset Changes\">\n");
-    fprintf(fp0,"Left Arrow cancels changes<br>\n");
+    fprintf(fp0,"Left Arrow cancels changes\n");
+    fprintf(fp0, "<a href=\"%s%s\">HELP!</a>\n",
+		 helpfilepath, OPTIONS_HELP);
 
-    /*
-     * save options
-     */
+    /* Save options */
     if (!no_option_save) {
-	fprintf(fp0, "<p>Save options to disk: ");
-	fprintf(fp0,"<input type=\"checkbox\" name=\"%s\">\n",
+	fprintf(fp0, "<p align=center>Save options to disk: ");
+	fprintf(fp0, "<input type=\"checkbox\" name=\"%s\">\n",
 		save_options_string);
     }
 
@@ -3714,82 +3726,86 @@ PUBLIC int gen_options ARGS1(
     fprintf(fp0,"<pre>\n");
     fprintf(fp0,"\n<em>Personal Preferences</em>\n");
 
-    /*
-     * user_mode
-     *
-     * This option is here because we come from LYMainLoop() with
-     * newdoc.links = 3, and land on 'save options', however if
-     * no_option_save is set we will land on 'Display' which is an input
-     * field and leaving back to previous document will be annoying.
-     * Thus 'user mode' is the most sensible option to put into the
-     * front lines. - SKY
-     */
-    PutLabel(fp0, "User Mode");
-    BeginSelect(fp0, user_mode_string);
-    PutOptValues(fp0, user_mode, user_mode_values);
+    /* Cookies: SELECT */
+    PutLabel(fp0, "Cookies");
+    BeginSelect(fp0, cookies_string);
+    PutOption(fp0, !LYSetCookies,
+	      cookies_ignore_all_string,
+	      cookies_ignore_all_string);
+    PutOption(fp0, LYSetCookies && !LYAcceptAllCookies,
+	      cookies_up_to_user_string,
+	      cookies_up_to_user_string);
+    PutOption(fp0, LYSetCookies && LYAcceptAllCookies,
+	      cookies_accept_all_string,
+	      cookies_accept_all_string);
     EndSelect(fp0);
 
-    /*
-     * display
-     */
+    /* Display: Input */
     PutLabel(fp0, "Display");
-    PutTextInput(fp0, display_string, NOTEMPTY(display), text_len, "");
+    PutTextInput(fp0, display_string, NOTEMPTY(x_display), text_len, "");
 
-    /*
-     * editor
-     */
+    /* Editor: Input */
     PutLabel(fp0, "Editor");
     PutTextInput(fp0, editor_string, NOTEMPTY(editor), text_len,
 		DISABLED(no_editor || system_editor));
-    /*
-     * emacs_keys
-     */
-    PutLabel(fp0, "Emacs Keys");
+
+    /* Emacs keys: ON/OFF */
+    PutLabel(fp0, "Emacs keys");
     BeginSelect(fp0, emacs_keys_string);
     PutOptValues(fp0, emacs_keys, bool_values);
     EndSelect(fp0);
 
-    /*
-     * keypad_mode
-     */
-    PutLabel(fp0, "Keypad Mode");
-    BeginSelect(fp0, keypad_mode_string);
-    PutOptValues(fp0, keypad_mode, keypad_mode_values);
+    /* Execution links: SELECT */
+#ifdef ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS
+    PutLabel(fp0, "Execution links");
+    BeginSelect(fp0, exec_links_string);
+#ifndef NEVER_ALLOW_REMOTE_EXEC
+    PutOptValues(fp0, local_exec
+			? EXEC_ALWAYS
+			: (local_exec_on_local_files
+				? EXEC_LOCAL
+				: EXEC_NEVER),
+		exec_links_values);
+#else
+    PutOptValues(fp0, local_exec_on_local_files
+			? EXEC_LOCAL
+			: EXEC_NEVER,
+		exec_links_values);
+#endif /* !NEVER_ALLOW_REMOTE_EXEC */
     EndSelect(fp0);
+#endif /* ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS */
 
-    /*
-     * search_type
-     */
-    PutLabel(fp0, "Searching type");
-    BeginSelect(fp0, search_type_string);
-    PutOptValues(fp0, case_sensitive, search_type_values);
+    /* Keypad Mode: SELECT */
+    PutLabel(fp0, "Keypad mode");
+    BeginSelect(fp0, keypad_mode_string);
+    PutOptValues(fp0, keypad_mode, keypad_mode_values);
     EndSelect(fp0);
 
-    /*
-     * mail_address
-     */
+    /* Mail Address: INPUT */
     PutLabel(fp0, "Personal mail address");
     PutTextInput(fp0, mail_address_string,
 		NOTEMPTY(personal_mail_address), text_len, "");
 
-    /*
-     * select_popups
-     */
+    /* Select Popups: ON/OFF */
     PutLabel(fp0, "Popups for select fields");
     BeginSelect(fp0, select_popups_string);
     PutOptValues(fp0, LYSelectPopups, bool_values);
     EndSelect(fp0);
 
-    /*
-     * show_color
-     */
+    /* Search Type: SELECT */
+    PutLabel(fp0, "Searching type");
+    BeginSelect(fp0, search_type_string);
+    PutOptValues(fp0, case_sensitive, search_type_values);
+    EndSelect(fp0);
+
+    /* Show Color: SELECT */
 #if defined(USE_SLANG) || defined(COLOR_CURSES)
     can_do_colors = 1;
 #if defined(COLOR_CURSES)
     can_do_colors = has_colors();
 #endif
-    PutLabel(fp0, "Show Color");
-    MaybeSelect(fp0, DISABLED(!can_do_colors), show_color_string);
+    PutLabel(fp0, "Show color");
+    MaybeSelect(fp0, !can_do_colors, show_color_string);
     if (no_option_save) {
 	if (LYShowColor == SHOW_COLOR_NEVER) {
 	    LYShowColor = SHOW_COLOR_OFF;
@@ -3819,41 +3835,44 @@ PUBLIC int gen_options ARGS1(
 			SHOW_COLOR_ON : SHOW_COLOR_OFF;
 	    }
 	}
-	show_color_values[3].LongName = (can_do_colors)?always_string:"Always try";
+	show_color_values[3].LongName = (can_do_colors) ? always_string
+							: "Always try";
 	PutOptValues(fp0, LYChosenShowColor, show_color_values);
     }
     EndSelect(fp0);
 #endif /* USE_SLANG || COLOR_CURSES */
 
-    /*
-     * verbose images mode
-     */
-    PutLabel(fp0, "Verbose images");
-    BeginSelect(fp0, verbose_images_string);
-    PutOptValues(fp0, verbose_img, bool_values);
-    EndSelect(fp0);
-
-    /*
-     * show_cursor
-     */
+    /* Show cursor: ON/OFF */
     PutLabel(fp0, "Show cursor");
     BeginSelect(fp0, show_cursor_string);
     PutOptValues(fp0, LYShowCursor, bool_values);
     EndSelect(fp0);
 
-    /*
-     * vi_keys
-     */
-    PutLabel(fp0, "VI Keys");
+    /* User Mode: Default: */
+    PutLabel(fp0, "User mode");
+    BeginSelect(fp0, user_mode_string);
+    PutOptValues(fp0, user_mode, user_mode_values);
+    EndSelect(fp0);
+
+    /* Verbose Images: ON/OFF */
+    PutLabel(fp0, "Verbose images");
+    BeginSelect(fp0, verbose_images_string);
+    PutOptValues(fp0, verbose_img, bool_values);
+    EndSelect(fp0);
+
+    /* VI Keys: ON/OFF */
+    PutLabel(fp0, "VI keys");
     BeginSelect(fp0, vi_keys_string);
     PutOptValues(fp0, vi_keys, bool_values);
     EndSelect(fp0);
 
-    fprintf(fp0,"\n<em>Bookmarks Options</em>\n");
 
     /*
-     * multi-bookmarks mode
+     * Bookmark Options
      */
+    fprintf(fp0,"\n<em>Bookmark Options</em>\n");
+
+    /* Multi-Bookmark Mode: SELECT */
     if (!LYMBMBlocked) {
        PutLabel(fp0, "Multi-bookmarks");
        BeginSelect(fp0, mbm_string);
@@ -3869,35 +3888,35 @@ PUBLIC int gen_options ARGS1(
        EndSelect(fp0);
     }
 
-    /*
-     * bookmarks files menu
-     */
+    /* Bookmarks File Menu: LINK/INPUT */
     if (LYMultiBookmarks) {
 
-        PutLabel(fp0, "Review/edit Bookmarks files");
-        fprintf(fp0,
+	PutLabel(fp0, "Review/edit Bookmarks files");
+	fprintf(fp0,
 	"<a href=\"LYNXOPTIONS://MBM_MENU\">Goto multi-bookmark menu</a>\n");
 
     } else {
-        PutLabel(fp0, "Bookmarks file");
-        PutTextInput(fp0, single_bookmark_string,
+	PutLabel(fp0, "Bookmarks file");
+	PutTextInput(fp0, single_bookmark_string,
 		NOTEMPTY(bookmark_page), text_len, "");
     }
 
-    fprintf(fp0,"\n<em>Character Set Options</em>\n");
-
     /*
-     * assume_char_set
+     * Character Set Options
      */
+    fprintf(fp0,"\n<em>Character Set Options</em>\n");
+
+    /* Assume Character Set: SELECT */
+    /* if (user_mode==ADVANCED_MODE) */
+	{
+	int curval;
+	curval = UCLYhndl_for_unspec;
+
     /*
      * FIXME: If bogus value in lynx.cfg, then in old way, that is the
      * string that was displayed.  Now, user will never see that.  Good
      * or bad?  I don't know.  MRC
      */
-    /* if (user_mode==ADVANCED_MODE) */ {
-	int curval;
-
-	curval = UCLYhndl_for_unspec;
 	if (curval == current_char_set && UCAssume_MIMEcharset) {
 	    curval = UCGetLYhndl_byMIME(UCAssume_MIMEcharset);
 	}
@@ -3914,9 +3933,7 @@ PUBLIC int gen_options ARGS1(
 	EndSelect(fp0);
     }
 
-    /*
-     * display_char_set
-     */
+    /* Display Character Set: SELECT */
     PutLabel(fp0, "Display character set");
     BeginSelect(fp0, display_char_set_string);
     for (i = 0; LYchar_set_names[i]; i++) {
@@ -3925,28 +3942,12 @@ PUBLIC int gen_options ARGS1(
 	if (len > cset_len)
 		cset_len = len;
 	sprintf(temp, "%d", i);
-        PutOption(fp0, i==current_char_set, temp, LYchar_set_names[i]);
+	PutOption(fp0, i==current_char_set, temp, LYchar_set_names[i]);
     }
     EndSelect(fp0);
 
-    /*
-     * preferred_doc_char
-     */
-    PutLabel(fp0, "Preferred document character set");
-    PutTextInput(fp0, preferred_doc_char_string,
-	    NOTEMPTY(pref_charset), cset_len+2, "");
-
-    /*
-     * preferred_doc_lang
-     */
-    PutLabel(fp0, "Preferred document language");
-    PutTextInput(fp0, preferred_doc_lang_string,
-	    NOTEMPTY(language), cset_len+2, "");
-
-    /*
-     * raw_mode
-     */
-    if  (LYHaveCJKCharacterSet)
+    /* Raw Mode: ON/OFF */
+    if	(LYHaveCJKCharacterSet)
 	/*
 	 * Since CJK people hardly mixed with other world
 	 * we split the header to make it more readable:
@@ -3960,29 +3961,26 @@ PUBLIC int gen_options ARGS1(
     PutOptValues(fp0, LYRawMode, bool_values);
     EndSelect(fp0);
 
-    fprintf(fp0,"\n<em>File Management Options</em>\n");
-
     /*
-     * ftp sort
+     * File Management Options
      */
+    fprintf(fp0,"\n<em>File Management Options</em>\n");
+
+    /* FTP sort: SELECT */
     PutLabel(fp0, "Ftp sort criteria");
     BeginSelect(fp0, ftp_sort_string);
     PutOptValues(fp0, HTfileSortMethod, ftp_sort_values);
     EndSelect(fp0);
 
 #ifdef DIRED_SUPPORT
-    /*
-     * dired_sort
-     */
+    /* Local Directory Sort: SELECT */
     PutLabel(fp0, "Local directory sort criteria");
     BeginSelect(fp0, dired_sort_string);
     PutOptValues(fp0, dir_list_style, dired_values);
     EndSelect(fp0);
 #endif /* DIRED_SUPPORT */
 
-    /*
-     * show_dotfiles
-     */
+    /* Show dot files: ON/OFF */
     if (!no_dotfiles) {
 	PutLabel(fp0, "Show dot files");
 	BeginSelect(fp0, show_dotfiles_string);
@@ -3990,32 +3988,41 @@ PUBLIC int gen_options ARGS1(
 	EndSelect(fp0);
     }
 
-    fprintf(fp0,"\n");
-
     /*
-     * user_agent
+     * Headers transferred to remote server
      */
+    fprintf(fp0,"\n<em>Headers transferred to remote server</em>\n");
+
+    /* Preferred Document Character Set: INPUT */
+    PutLabel(fp0, "Preferred document character set");
+    PutTextInput(fp0, preferred_doc_char_string,
+	    NOTEMPTY(pref_charset), cset_len+2, "");
+
+    /* Preferred Document Language: INPUT */
+    PutLabel(fp0, "Preferred document language");
+    PutTextInput(fp0, preferred_doc_lang_string,
+	    NOTEMPTY(language), cset_len+2, "");
+
+	/* User Agent: INPUT */
     if (!no_useragent) {
 	PutLabel(fp0, "User-Agent header");
-	PutTextInput(fp0, user_agent_string, NOTEMPTY(LYUserAgent), text_len, "");
+	PutTextInput(fp0, user_agent_string,
+		     NOTEMPTY(LYUserAgent), text_len, "");
     }
 
     fprintf(fp0,"\n</pre>\n");
 
-    /*
-     * save/reset
-     */
+    /* Submit/Reset */
     fprintf(fp0,"<p align=center>\n");
-    fprintf(fp0,"<input type=\"submit\" value=\"Accept Changes\">\n ");
+    fprintf(fp0,"<input type=\"submit\" value=\"Accept Changes\">\n - ");
     fprintf(fp0,"<input type=\"reset\" value=\"Reset Changes\">\n");
-    fprintf(fp0,"Left Arrow cancels changes<br>\n");
+    fprintf(fp0,"Left Arrow cancels changes\n");
 
     /*
      * close HTML
      */
     fprintf(fp0,"</form>\n");
-    fprintf(fp0,"</body>\n");
-    fprintf(fp0,"</html>\n");
+    EndInternalPage(fp0);
 
     LYCloseTempFP(fp0);
     return(0);
diff --git a/src/LYPrint.c b/src/LYPrint.c
index 548a577f..24c824ee 100644
--- a/src/LYPrint.c
+++ b/src/LYPrint.c
@@ -13,7 +13,6 @@
 #include <LYClean.h>
 #include <LYGetFile.h>
 #include <LYHistory.h>
-#include <LYSystem.h>
 #include <LYList.h>
 #include <LYCharSets.h>  /* To get current charset for mail header. */
 #ifdef VMS
@@ -74,7 +73,7 @@ PUBLIC int printfile ARGS1(
     int lines_in_file = 0;
     int printer_number = 0;
     int pages = 0;
-    int type = 0, c, len;
+    int type = 0, c;
     BOOLEAN Lpansi = FALSE;
     FILE *outfile_fp;
     char *cp = NULL;
@@ -372,8 +371,7 @@ PUBLIC int printfile ARGS1(
 		if ((cp = strchr(filename, '~'))) {
 		    *(cp++) = '\0';
 		    strcpy(buffer, filename);
-		    if ((len=strlen(buffer)) > 0 && buffer[len-1] == '/')
-			buffer[len-1] = '\0';
+		    LYTrimPathSep(buffer);
 #ifdef DOSPATH
 		    strcat(buffer, HTDOS_wwwName((char *)Home_Dir()));
 #else
@@ -400,12 +398,21 @@ PUBLIC int printfile ARGS1(
 		    strcpy(buffer, filename);
 		}
 #else
+
 #ifndef __EMX__
-		if (*filename != '/')
+		if (!LYIsPathSep(*filename)) {
+#if defined(__DJGPP__) || defined(_WINDOWS)
+		if (strchr(buffer, ':') != NULL)
+			cp = NULL;
+		else
+#endif /*  __DJGPP__ || _WINDOWS */
 		    cp = getenv("PWD");
+		}
 		else
 #endif
 		    cp = NULL;
+
+		LYTrimPathSep(cp);
 		if (cp)
 #ifdef DOSPATH
 		    sprintf(buffer, "%s/%s", cp, HTDOS_name(filename));
@@ -717,9 +724,7 @@ PUBLIC int printfile ARGS1(
 
 		stop_curses();
 		printf(MAILING_FILE);
-		fflush(stdout);
-		system(buffer);
-		fflush(stdout);
+		LYSystem(buffer);
 		sleep(AlertSecs);
 		start_curses();
 		if (isPMDF)
@@ -846,7 +851,7 @@ PUBLIC int printfile ARGS1(
 		LYCloseTempFP(outfile_fp);	/* Close the tmpfile. */
 		stop_curses();
 		printf("Sending \n\n$ %s\n\nPlease wait...", buffer);
-		system(buffer);
+		LYSystem(buffer);
 		sleep(MessageSecs);
 		start_curses();
 		LYRemoveTemp(tempfile); /* Delete the tmpfile. */
@@ -1181,8 +1186,7 @@ PUBLIC int printfile ARGS1(
 		StrAllocCat(envbuffer, HText_getTitle());
 		putenv(envbuffer);
 #endif /* VMS */
-		fflush(stdout);
-		system(buffer);
+		LYSystem(buffer);
 #ifdef VMS
 		/*
 		 *  Remove LYNX_PRINT_TITLE logical. - FM
@@ -1264,14 +1268,10 @@ PUBLIC int print_options ARGS2(
 
     StrAllocCopy(*newfile, print_filename);
 
-    fprintf(fp0, "<html>\n<head>\n<title>%s</title>\n</head>\n<body>\n",
-		 PRINT_OPTIONS_TITLE);
-    fprintf(fp0, "<h1>%s (%s), help on <a href=\"%s%s\">%s</a></h1>\n",
-		 LYNX_NAME, LYNX_VERSION,
-		 helpfilepath, PRINT_OPTIONS_HELP, PRINT_OPTIONS_TITLE);
+    BeginInternalPage(fp0, PRINT_OPTIONS_TITLE, PRINT_OPTIONS_HELP);
 
-    pages = (lines_in_file+65)/66;
     fprintf(fp0, "<pre>\n");
+    pages = (lines_in_file+65)/66;
     sprintf(buffer, "   \
 <em>You print the document:</em> %s\n   \
        <em>Number of lines:</em> %d\n   \
@@ -1315,7 +1315,8 @@ PUBLIC int print_options ARGS2(
 		      cur_printer->name : "No Name Given"));
 	fprintf(fp0, "</a>\n");
     }
-    fprintf(fp0, "</pre>\n</body>\n</html>\n");
+    fprintf(fp0, "</pre>\n");
+    EndInternalPage(fp0);
     LYCloseTempFP(fp0);
 
     LYforce_no_cache = TRUE;
diff --git a/src/LYReadCFG.c b/src/LYReadCFG.c
index 69bb6a32..f68c0d94 100644
--- a/src/LYReadCFG.c
+++ b/src/LYReadCFG.c
@@ -30,12 +30,6 @@ extern int HTNewsChunkSize; /* Number of news articles per chunk (HTNews.c) */
 PUBLIC BOOLEAN have_read_cfg=FALSE;
 PUBLIC BOOLEAN LYUseNoviceLineTwo=TRUE;
 
-#ifdef VMS
-#define DISPLAY "DECW$DISPLAY"
-#else
-#define DISPLAY "DISPLAY"
-#endif /* VMS */
-
 /*
  *  Translate a TRUE/FALSE field in a string buffer.
  */
@@ -526,14 +520,16 @@ static int character_set_fun ARGS1(
     size_t len;
 
     len = strlen (value);
-    for (i = 0; LYchar_set_names[i]; i++) {
+    for (i = 0; LYchar_set_names[i]; i++) { /* search by name, compatibility */
 	if (!strncmp(value, LYchar_set_names[i], len)) {
 	    current_char_set = i;
-	    HTMLSetRawModeDefault(i);
-	    break;
+	    HTMLSetRawModeDefault(current_char_set);
+	    return 0;
 	}
     }
 
+    current_char_set = UCGetLYhndl_byMIME(value); /* by MIME */
+    HTMLSetRawModeDefault(current_char_set);
     return 0;
 }
 
@@ -744,7 +740,6 @@ static int viewer_fun ARGS1(
     char *mime_type;
     char *viewer;
     char *environment;
-    char *cp;
 
     mime_type = value;
 
@@ -767,10 +762,10 @@ static int viewer_fun ARGS1(
 	 * there is a $DISPLAY variable.
 	 */
 	if (!strcasecomp(environment,"XWINDOWS")) {
-	    if ((cp = getenv(DISPLAY)) != NULL && *cp != '\0')
+	    if (LYgetXDisplay() != NULL)
 		HTSetPresentation(mime_type, viewer, 1.0, 3.0, 0.0, 0);
 	} else if (!strcasecomp(environment,"NON_XWINDOWS")) {
-	    if ((cp = getenv(DISPLAY)) == NULL || *cp == '\0')
+	    if (LYgetXDisplay() == NULL)
 		HTSetPresentation(mime_type, viewer, 1.0, 3.0, 0.0, 0);
 	} else {
 	    HTSetPresentation(mime_type, viewer, 1.0, 3.0, 0.0, 0);
@@ -807,6 +802,9 @@ static Config_Type Config_Table [] =
      PARSE_FUN("color", CONF_FUN, color_fun),
 #endif
      PARSE_STR("cookie_accept_domains", CONF_STR, LYCookieAcceptDomains),
+#ifdef EXP_PERSISTENT_COOKIES
+     PARSE_STR("cookie_file", CONF_STR, LYCookieFile),
+#endif /* EXP_PERSISTENT_COOKIES */
      PARSE_STR("cookie_reject_domains", CONF_STR, LYCookieRejectDomains),
      PARSE_ENV("cso_proxy", CONF_ENV, 0 ),
 #ifdef VMS
@@ -831,6 +829,7 @@ static Config_Type Config_Table [] =
      PARSE_ADD("external", CONF_ADD_ITEM, externals),
 #endif
      PARSE_ENV("finger_proxy", CONF_ENV, 0 ),
+     PARSE_SET("force_8bit_toupper", CONF_BOOL, UCForce8bitTOUPPER),
      PARSE_SET("force_ssl_cookies_secure", CONF_BOOL, LYForceSSLCookiesSecure),
      PARSE_ENV("ftp_proxy", CONF_ENV, 0 ),
      PARSE_STR("global_extension_map", CONF_STR, global_extension_map),
@@ -875,7 +874,7 @@ static Config_Type Config_Table [] =
      PARSE_INT("messagesecs", CONF_INT, MessageSecs),
      PARSE_SET("minimal_comments", CONF_BOOL, minimal_comments),
      PARSE_INT("multi_bookmark_support", CONF_BOOL, LYMultiBookmarks),
-     PARSE_SET("ncr_in_bookmarks", CONF_BOOL, LYSaveBookmarksInUnicode),
+     PARSE_SET("ncr_in_bookmarks", CONF_BOOL, UCSaveBookmarksInUnicode),
      PARSE_FUN("news_chunk_size", CONF_FUN, news_chunk_size_fun),
      PARSE_FUN("news_max_chunk", CONF_FUN, news_max_chunk_fun),
      PARSE_FUN("news_posting", CONF_FUN, news_posting_fun),
diff --git a/src/LYShowInfo.c b/src/LYShowInfo.c
index 03f1cb02..7b88643c 100644
--- a/src/LYShowInfo.c
+++ b/src/LYShowInfo.c
@@ -71,19 +71,19 @@ PUBLIC int showinfo ARGS4(
 	}
     }
 
-    fprintf(fp0, "<head>\n");
+    fprintf(fp0, "<html>\n<head>\n");
     LYAddMETAcharsetToFD(fp0, -1);
     fprintf(fp0, "<title>%s</title>\n</head>\n<body>\n",
 		 SHOWINFO_TITLE);
 
 #ifdef LYNX_COMPILE_OPTS
-    fprintf(fp0, "<h1>%s %s (<a href=\"%s\">%s</a>) - <a href=\"%s\">compile time settings</a>\n",
+    fprintf(fp0, "<h1>%s %s (<a href=\"%s\">%s</a>) - <a href=\"%s\">compile time settings</a></h1>\n",
 		 LYNX_NAME, LYNX_VERSION,
 		 (LYNX_RELEASE ? LYNX_WWW_HOME   : LYNX_WWW_DIST),
 		 (LYNX_RELEASE ? "major release" : "development version"),
 		 LYNX_COMPILE_OPTS);
 #else
-    fprintf(fp0, "<h1>%s %s (<a href=\"%s\">%s</a>)\n",
+    fprintf(fp0, "<h1>%s %s (<a href=\"%s\">%s</a>)</h1>\n",
 		 LYNX_NAME, LYNX_VERSION,
 		 (LYNX_RELEASE ? LYNX_WWW_HOME   : LYNX_WWW_DIST),
 		 (LYNX_RELEASE ? "major release" : "development version") );
@@ -346,7 +346,7 @@ PUBLIC int showinfo ARGS4(
 #ifdef DIRED_SUPPORT
     }
 #endif /* DIRED_SUPPORT */
-    fprintf(fp0, "</body>\n");
+    EndInternalPage(fp0);
 
     refresh();
 
diff --git a/src/LYSystem.h b/src/LYSystem.h
deleted file mode 100644
index 6acd02b3..00000000
--- a/src/LYSystem.h
+++ /dev/null
@@ -1,10 +0,0 @@
-
-#ifndef LYSYSTEM_H
-#define LYSYSTEM_H
-
-#ifdef VMS
-extern int DCLsystem PARAMS((char *command));
-#define system(a) DCLsystem(a) /* use LYCurses.c routines for spawns */
-#endif /* VMS */
-
-#endif /* LYSYSTEM_H */
diff --git a/src/LYUpload.c b/src/LYUpload.c
index 78609f2c..8d1c5e62 100644
--- a/src/LYUpload.c
+++ b/src/LYUpload.c
@@ -25,7 +25,6 @@
 #include <LYClean.h>
 #include <LYGetFile.h>
 #include <LYUpload.h>
-#include <LYSystem.h>
 #include <LYLocal.h>
 
 #include <LYexit.h>
@@ -180,8 +179,7 @@ retry:
     FREE(dir);
     stop_curses();
     CTRACE(tfp, "command: %s\n", cmd);
-    system(cmd);
-    fflush(stdout);
+    LYSystem(cmd);
     start_curses();
 #ifdef UNIX
     chmod(buffer, HIDE_CHMOD);
@@ -232,18 +230,14 @@ PUBLIC int LYUpload_options ARGS2(
 	cp += 5;
     strcpy(curloc,cp);
     HTUnEscape(curloc);
-    if (curloc[strlen(curloc) - 1] == '/')
-	curloc[strlen(curloc) - 1] = '\0';
+    LYTrimPathSep(curloc);
 #endif /* VMS */
 
     LYLocalFileToURL(LYUploadFileURL, tempfile);
     StrAllocCopy(*newfile, LYUploadFileURL);
 
-    fprintf(fp0, "<head>\n<title>%s</title>\n</head>\n<body>\n",
-		 UPLOAD_OPTIONS_TITLE);
-    fprintf(fp0, "<h1>%s (%s), help on <a href=\"%s%s\">%s</a></h1>\n",
-		 LYNX_NAME, LYNX_VERSION,
-		 helpfilepath, UPLOAD_OPTIONS_HELP, UPLOAD_OPTIONS_TITLE);
+    BeginInternalPage(fp0, UPLOAD_OPTIONS_TITLE, UPLOAD_OPTIONS_HELP);
+
     fprintf(fp0, "<pre>\n");
     fprintf(fp0, "   <em>Upload To:</em> %s\n", curloc);
     fputs("\nUpload options:\n", fp0);
@@ -266,7 +260,8 @@ Please refer to the <a href=\"%s\">lynx.cfg</a> file, \
 sections 'UPLOAD' and 'INCLUDE'.\n",
 	LYNX_CFG_FILE);
     }
-    fprintf(fp0, "</pre>\n</body>\n");
+    fprintf(fp0, "</pre>\n");
+    EndInternalPage(fp0);
     LYCloseTempFP(fp0);
 
     LYforce_no_cache = TRUE;
diff --git a/src/LYUtils.c b/src/LYUtils.c
index 532bd69d..caebd6b0 100644
--- a/src/LYUtils.c
+++ b/src/LYUtils.c
@@ -4,12 +4,14 @@
 #include <HTCJK.h>
 #include <HTAlert.h>
 #include <LYCurses.h>
+#include <LYHistory.h>
 #include <LYUtils.h>
 #include <LYStrings.h>
 #include <LYGlobalDefs.h>
 #include <LYSignal.h>
 #include <GridText.h>
 #include <LYCharSets.h>
+#include <LYCharUtils.h>
 
 #ifdef DOSPATH
 #include <HTDOS.h>
@@ -2393,7 +2395,7 @@ PUBLIC int LYCheckForProxyURL ARGS1(
 	if (isdigit((unsigned char)*cp1)) {
 	    while (*cp1 && isdigit((unsigned char)*cp1))
 		cp1++;
-	    if (*cp1 && *cp1 != '/')
+	    if (*cp1 && !LYIsHtmlSep(*cp1))
 		return(UNKNOWN_URL_TYPE);
 	}
     }
@@ -2462,7 +2464,7 @@ PUBLIC int is_url ARGS1(
      *	also to avoid false positives if there was
      *	a colon later in the string. - KW
      */
-    if (*cp == '/')
+    if (LYIsHtmlSep(*cp))
 	return(0);
 
 #if defined (DOSPATH) || defined (__EMX__) /* sorry! */
@@ -2510,7 +2512,7 @@ PUBLIC int is_url ARGS1(
     } else if (compare_type(cp, "file:", 5)) {
 	if (LYisLocalFile(cp)) {
 	    return(FILE_URL_TYPE);
-	} else if (cp[5] == '/' && cp[6] == '/') {
+	} else if (LYIsHtmlSep(cp[5]) && LYIsHtmlSep(cp[6])) {
 	    return(FTP_URL_TYPE);
 	} else {
 	    return(0);
@@ -2742,8 +2744,11 @@ PUBLIC char * quote_pathname ARGS1(
     if (result == NULL)
 	outofmem(__FILE__, "quote_pathname");
 
-    result[0] = '\'';
-    for (i = 0, n = 1; i < strlen(pathname); i++)
+    n = 0;
+#ifndef __DJGPP__
+    result[n++] = '\'';
+#endif /* __DJGPP__ */
+    for (i = 0; i < strlen(pathname); i++) {
 	if (pathname[i] == '\'') {
 	    result[n++] = '\'';
 	    result[n++] = '"';
@@ -2753,7 +2758,10 @@ PUBLIC char * quote_pathname ARGS1(
 	} else {
 	    result[n++] = pathname[i];
 	}
+    }
+#ifndef __DJGPP__
     result[n++] = '\'';
+#endif /* !__DJGPP__ */
     result[n] = '\0';
     return result;
 }
@@ -2991,7 +2999,7 @@ PUBLIC void change_sug_filename ARGS1(
 #else
     cp = lynx_temp_space;
 #endif
-    if (*cp == '/') {
+    if (LYIsHtmlSep(*cp)) {
 	sprintf(temp, "file://localhost%s%d", cp, (int)getpid());
     } else {
 	sprintf(temp, "file://localhost/%s%d", cp, (int)getpid());
@@ -3900,8 +3908,7 @@ have_VMS_URL:
 #else
 		StrAllocCopy(temp, curdir);
 #endif
-		if(curdir[strlen(curdir)-1] != '/')
-		    StrAllocCat(temp, "/");
+		LYAddPathSep(&temp);
 		LYstrncpy(curdir, temp, (DIRNAMESIZE - 1));
 		StrAllocCat(temp, old_string);
 	    } else {
@@ -3939,8 +3946,7 @@ have_VMS_URL:
 	    } else {
 		char *cp2 = NULL;
 		StrAllocCopy(temp2, curdir);
-		if (curdir[0] != '\0' && curdir[strlen(curdir)-1] != '/')
-		    StrAllocCat(temp2, "/");
+		LYAddPathSep(&temp2);
 		StrAllocCopy(cp, old_string);
 		if ((fragment = strchr(cp, '#')) != NULL)
 		    *fragment = '\0';	/* keep as pointer into cp string */
@@ -3965,8 +3971,7 @@ have_VMS_URL:
 			 *  old_string as given. - kw
 			 */
 			temp = HTEscape(curdir, URL_PATH);
-			if (curdir[0] != '\0' && curdir[strlen(curdir)-1] != '/')
-			    StrAllocCat(temp, "/");
+			LYAddHtmlSep(&temp);
 			StrAllocCat(temp, old_string);
 		    } else {
 			temp = HTEscape(temp2, URL_PATH);
@@ -3996,8 +4001,7 @@ have_VMS_URL:
 			 *  old_string as given. - kw
 			 */
 			temp = HTEscape(curdir, URL_PATH);
-			if (curdir[0] != '\0' && curdir[strlen(curdir)-1] != '/')
-			    StrAllocCat(temp, "/");
+			LYAddHtmlSep(&temp);
 			StrAllocCat(temp, old_string);
 		    } else {
 			temp = HTEscape(temp2, URL_PATH);
@@ -4552,13 +4556,13 @@ PUBLIC void LYTrimRelFromAbsPath ARGS1(
     /*
      *	Make sure we have a pointer to an absolute path. - FM
      */
-    if (path == NULL || *path != '/')
+    if (path == NULL || !LYIsPathSep(*path))
 	return;
 
     /*
      *	Check whether the path has a terminal slash. - FM
      */
-    TerminalSlash = (path[(strlen(path) - 1)] == '/');
+    TerminalSlash = LYIsPathSep(path[(strlen(path) - 1)]);
 
     /*
      *	Simplify the path and then do any necessary trimming. - FM
@@ -4571,7 +4575,7 @@ PUBLIC void LYTrimRelFromAbsPath ARGS1(
 	     *	Eliminate trailing dot. - FM
 	     */
 	    cp[1] = '\0';
-	} else if (cp[2] == '/') {
+	} else if (LYIsPathSep(cp[2])) {
 	    /*
 	     *	Skip over the "/." of a "/./". - FM
 	     */
@@ -4604,9 +4608,8 @@ PUBLIC void LYTrimRelFromAbsPath ARGS1(
 	    path[i] = cp[i];
 	path[i] = '\0';
     }
-    if (TerminalSlash == FALSE &&
-	path[(strlen(path) - 1)] == '/') {
-	path[(strlen(path) - 1)] = '\0';
+    if (TerminalSlash == FALSE) {
+	LYTrimPathSep(path);
     }
 }
 
@@ -4888,7 +4891,7 @@ PUBLIC BOOLEAN LYPathOffHomeOK ARGS2(
     /*
      *	Check for a URL or absolute path, and reject if present. - FM
      */
-    if (is_url(cp) || *cp == '/') {
+    if (is_url(cp) || LYIsPathSep(*cp)) {
 	FREE(file);
 	return(FALSE);
     }
@@ -4910,8 +4913,11 @@ PUBLIC BOOLEAN LYPathOffHomeOK ARGS2(
     /*
      *	Check for spoofing. - FM
      */
-    if (*cp == '\0' || *cp == '/' || cp[(strlen(cp) - 1)] == '/' ||
-	strstr(cp, "..") != NULL || !strcmp(cp, ".")) {
+    if (*cp == '\0'
+     || LYIsPathSep(*cp)
+     || LYIsPathSep(cp[(strlen(cp) - 1)])
+     || strstr(cp, "..") != NULL
+     || !strcmp(cp, ".")) {
 	FREE(file);
 	return(FALSE);
     }
@@ -5820,3 +5826,254 @@ PUBLIC void LYLocalFileToURL ARGS2(
 #endif /* VMS */
 #endif /* DOSPATH */
 }
+
+PUBLIC void BeginInternalPage ARGS3(
+	FILE *, fp0,
+	char*, Title,
+	char*, HelpURL)
+{
+    fprintf(fp0, "<html>\n<head>\n");
+    LYAddMETAcharsetToFD(fp0, -1);
+    if (!strcmp(Title, LIST_PAGE_TITLE)) {
+	if (strchr(HTLoadedDocumentURL(), '"') == NULL) {
+	    char *Address = NULL;
+	    /*
+	     * Insert a BASE tag so there is some way to relate the List Page
+	     * file to its underlying document after we are done.  It won't be
+	     * actually used for resolving relative URLs.  - kw
+	     */
+	    StrAllocCopy(Address, HTLoadedDocumentURL());
+	    LYEntify(&Address, FALSE);
+	    fprintf(fp0, "<base href=\"%s\">\n", Address);
+	    FREE(Address);
+	}
+    }
+    fprintf(fp0, "<title>%s</title>\n</head>\n<body>\n",
+		 Title);
+
+    if ((user_mode == NOVICE_MODE)
+     && LYwouldPush(Title)
+     && (HelpURL != 0)) {
+        fprintf(fp0, "<h1>%s (%s), help on <a href=\"%s%s\">%s</a></h1>\n",
+		LYNX_NAME, LYNX_VERSION,
+		helpfilepath, HelpURL, Title);
+    } else {
+        fprintf(fp0, "<h1>%s (%s Version %s)</h1>\n",
+		Title, LYNX_NAME, LYNX_VERSION);
+    }
+}
+
+
+PUBLIC void EndInternalPage ARGS1(
+	FILE *, fp0)
+{
+    fprintf(fp0, "</body>\n</html>");
+}
+
+/*
+ * Trim a trailing path-separator to avoid confusing other programs when we concatenate
+ * to it.  This only applies to local filesystems.
+ */
+PUBLIC void LYTrimPathSep ARGS1(
+	char *,	path)
+{
+    size_t len;
+
+    if (path != 0
+     && (len = strlen(path)) != 0
+     && LYIsPathSep(path[len-1]))
+    	path[len-1] = 0;
+}
+
+#ifdef DOSPATH
+#define PATHSEP_STR "\\"
+#else
+#define PATHSEP_STR "/"
+#endif
+
+/*
+ * Add a trailing path-separator to avoid confusing other programs when we concatenate
+ * to it.  This only applies to local filesystems.
+ */
+PUBLIC void LYAddPathSep ARGS1(
+	char **,	path)
+{
+    size_t len;
+    char *temp;
+
+    if ((path != 0)
+     && ((temp = *path) != 0)
+     && (len = strlen(temp)) != 0
+     && !LYIsPathSep(temp[len-1])) {
+	StrAllocCat(*path, PATHSEP_STR);
+    }
+}
+
+/*
+ * Add a trailing path-separator to avoid confusing other programs when we concatenate
+ * to it.  This only applies to local filesystems.
+ */
+PUBLIC void LYAddPathSep0 ARGS1(
+	char *,	path)
+{
+    size_t len;
+
+    if ((path != 0)
+     && (len = strlen(path)) != 0
+     && !LYIsPathSep(path[len-1])) {
+	strcat(path, PATHSEP_STR);
+    }
+}
+
+/*
+ * Trim a trailing path-separator to avoid confusing other programs when we concatenate
+ * to it.  This only applies to HTML paths.
+ */
+PUBLIC void LYTrimHtmlSep ARGS1(
+	char *,	path)
+{
+    size_t len;
+
+    if (path != 0
+     && (len = strlen(path)) != 0
+     && LYIsHtmlSep(path[len-1]))
+    	path[len-1] = 0;
+}
+
+/*
+ * Add a trailing path-separator to avoid confusing other programs when we concatenate
+ * to it.  This only applies to HTML paths.
+ */
+PUBLIC void LYAddHtmlSep ARGS1(
+	char **,	path)
+{
+    size_t len;
+    char *temp;
+
+    if ((path != 0)
+     && ((temp = *path) != 0)
+     && (len = strlen(temp)) != 0
+     && !LYIsHtmlSep(temp[len-1])) {
+	StrAllocCat(*path, "/");
+    }
+}
+
+/*
+ * Add a trailing path-separator to avoid confusing other programs when we concatenate
+ * to it.  This only applies to HTML paths.
+ */
+PUBLIC void LYAddHtmlSep0 ARGS1(
+	char *,	path)
+{
+    size_t len;
+
+    if ((path != 0)
+     && (len = strlen(path)) != 0
+     && !LYIsHtmlSep(path[len-1])) {
+	strcat(path, "/");
+    }
+}
+
+/*
+ * Invoke a shell command
+ */
+PUBLIC int LYSystem ARGS1(
+	char *,	command)
+{
+    int code;
+
+    fflush(stdout);
+    fflush(stderr);
+
+#ifdef __DJGPP__
+    __djgpp_set_ctrl_c(0);
+    _go32_want_ctrl_break(1);
+#endif /* __DJGPP__ */
+
+#ifdef VMS
+    code = DCLsystem(command);
+#else
+    code = system(command);
+#endif
+
+#ifdef __DJGPP__
+    __djgpp_set_ctrl_c(1);
+    _go32_want_ctrl_break(0);
+#endif /* __DJGPP__ */
+
+    fflush(stdout);
+    fflush(stderr);
+
+    return code;
+}
+
+/*
+ * Return a string which can be used in LYSystem() for spawning a subshell
+ */
+PUBLIC char *LYSysShell NOARGS
+{
+    char *shell = 0;
+#ifdef DOSPATH
+    if (getenv("SHELL") != NULL) {
+	shell = getenv("SHELL");
+    } else {
+	shell = (getenv("COMSPEC") == NULL) ? "command.com" : getenv("COMSPEC");
+    }
+#else
+#ifdef __EMX__
+    if (getenv("SHELL") != NULL) {
+	shell = getenv("SHELL");
+    } else {
+	shell = (getenv("COMSPEC") == NULL) ? "cmd.exe" : getenv("COMSPEC");
+    }
+#else
+#ifdef VMS
+    shell = "";
+#else
+    shell = "exec $SHELL";
+#endif /* __EMX__ */
+#endif /* VMS */
+#endif /* DOSPATH */
+    return shell;
+}
+
+#ifdef VMS
+#define DISPLAY "DECW$DISPLAY"
+#else
+#define DISPLAY "DISPLAY"
+#endif /* VMS */
+
+/*
+ * Return the X-Window $DISPLAY string if it is nonnull/nonempty
+ */
+PUBLIC char *LYgetXDisplay NOARGS
+{
+    char *cp;
+    if ((cp = getenv(DISPLAY)) == NULL || *cp == '\0')
+ 	cp = 0;
+    return cp;
+}
+
+/*
+ * Set the value of the X-Window $DISPLAY variable (yes it leaks memory, but
+ * that is putenv's fault).
+ */
+PUBLIC void LYsetXDisplay ARGS1(
+	char *,	new_display)
+{
+    if (new_display != 0 && *new_display != '\0') {
+#ifdef VMS
+	LYUpperCase(new_display);
+	Define_VMSLogical(DISPLAY, new_display);
+#else
+	static char *display_putenv_command;
+	display_putenv_command = malloc(strlen(new_display) + 12);
+
+	sprintf(display_putenv_command, "DISPLAY=%s", new_display);
+	putenv(display_putenv_command);
+#endif /* VMS */
+	if ((new_display = LYgetXDisplay()) != 0) {
+	    StrAllocCopy(x_display, new_display);
+	}
+    }
+}
diff --git a/src/LYUtils.h b/src/LYUtils.h
index 5fd0868b..fee1718e 100644
--- a/src/LYUtils.h
+++ b/src/LYUtils.h
@@ -5,71 +5,89 @@
 #include <HTList.h>
 #endif /* HTLIST_H */
 
-extern void highlight PARAMS((int flag, int cur, char *target));
-extern void free_and_clear PARAMS((char **obj));
-extern void convert_to_spaces PARAMS((char *string, BOOL condense));
-extern char * strip_trailing_slash PARAMS((char * my_dirname));
-extern void statusline PARAMS((CONST char *text));
-extern void toggle_novice_line NOPARAMS;
-extern void noviceline PARAMS((int more_flag));
-extern void LYFakeZap PARAMS((BOOL set));
-extern int HTCheckForInterrupt NOPARAMS;
+#ifdef DOSPATH
+#define LYIsPathSep(ch) ((ch) == '/' || (ch) == '\\')
+#else
+#define LYIsPathSep(ch) ((ch) == '/')
+#endif
+
+#define LYIsHtmlSep(ch) ((ch) == '/')
+
+extern BOOLEAN LYAddSchemeForURL PARAMS((char **AllocatedString, char *default_scheme));
+extern BOOLEAN LYCachedTemp PARAMS((char *result, char **cached));
+extern BOOLEAN LYCanDoHEAD PARAMS((CONST char *address));
+extern BOOLEAN LYExpandHostForURL PARAMS((char **AllocatedString, char *prefix_list, char *suffix_list));
+extern BOOLEAN LYPathOffHomeOK PARAMS((char *fbuffer, size_t fbuffer_size));
+extern BOOLEAN LYisLocalAlias PARAMS((char *filename));
 extern BOOLEAN LYisLocalFile PARAMS((char *filename));
 extern BOOLEAN LYisLocalHost PARAMS((char *filename));
-extern void LYLocalhostAliases_free NOPARAMS;
-extern void LYAddLocalhostAlias PARAMS((char *alias));
-extern BOOLEAN LYisLocalAlias PARAMS((char *filename));
+extern BOOLEAN inlocaldomain NOPARAMS;
+extern CONST char *Home_Dir NOPARAMS;
+extern FILE *LYAppendToTxtFile PARAMS((char * name));
+extern FILE *LYNewBinFile PARAMS((char * name));
+extern FILE *LYNewTxtFile PARAMS((char * name));
+extern FILE *LYOpenScratch PARAMS((char *result, CONST char *prefix));
+extern FILE *LYOpenTemp PARAMS((char *result, CONST char *suffix, CONST char *mode));
+extern FILE *LYReopenTemp PARAMS((char *name));
+extern char *LYPathLeaf PARAMS((char * pathname));
+extern char *LYSysShell NOPARAMS;
+extern char *LYgetXDisplay NOPARAMS;
+extern char *quote_pathname PARAMS((char *pathname));
+extern char *strip_trailing_slash PARAMS((char * my_dirname));
+extern int HTCheckForInterrupt NOPARAMS;
 extern int LYCheckForProxyURL PARAMS((char *filename));
+extern int LYSystem PARAMS((char *command));
 extern int is_url PARAMS((char *filename));
-extern BOOLEAN LYCanDoHEAD PARAMS((CONST char *address));
-extern void remove_backslashes PARAMS((char *buf));
-extern char *quote_pathname PARAMS((char *pathname));
-extern BOOLEAN inlocaldomain NOPARAMS;
-extern void size_change PARAMS((int sig));
-extern void HTSugFilenames_free NOPARAMS;
-extern void HTAddSugFilename PARAMS((char *fname));
-extern void change_sug_filename PARAMS((char *fname));
 extern int number2arrows PARAMS((int number));
-extern void parse_restrictions PARAMS((CONST char *s));
-extern void checkmail NOPARAMS;
+extern time_t LYmktime PARAMS((char *string, BOOL absolute));
+extern void BeginInternalPage PARAMS((FILE *fp0, char *Title, char *HelpURL));
+extern void EndInternalPage PARAMS((FILE *fp0));
+extern void HTAddSugFilename PARAMS((char *fname));
+extern void HTSugFilenames_free NOPARAMS;
+extern void LYAddHtmlSep PARAMS((char **path));
+extern void LYAddHtmlSep0 PARAMS((char *path));
+extern void LYAddLocalhostAlias PARAMS((char *alias));
+extern void LYAddPathSep PARAMS((char **path));
+extern void LYAddPathSep0 PARAMS((char *path));
+extern void LYAddPathToHome PARAMS((char *fbuffer, size_t fbuffer_size, char *fname));
 extern void LYCheckMail NOPARAMS;
-extern void LYEnsureAbsoluteURL PARAMS((char **href, CONST char *name));
+extern void LYCleanupTemp NOPARAMS;
+extern void LYCloseTemp PARAMS((char *name));
+extern void LYCloseTempFP PARAMS((FILE *fp));
 extern void LYConvertToURL PARAMS((char **AllocatedString));
-extern BOOLEAN LYExpandHostForURL PARAMS((
-	char **AllocatedString, char *prefix_list, char *suffix_list));
-extern BOOLEAN LYAddSchemeForURL PARAMS((
-	char **AllocatedString, char *default_scheme));
-extern void LYTrimRelFromAbsPath PARAMS((char *path));
 extern void LYDoCSI PARAMS((char *url, CONST char *comment, char **csi));
+extern void LYEnsureAbsoluteURL PARAMS((char **href, CONST char *name));
+extern void LYFakeZap PARAMS((BOOL set));
+extern void LYLocalFileToURL PARAMS((char *target, char *source));
+extern void LYLocalhostAliases_free NOPARAMS;
+extern void LYRemoveTemp PARAMS((char *name));
+extern void LYTrimHtmlSep PARAMS((char *path));
+extern void LYTrimPathSep PARAMS((char *path));
+extern void LYTrimRelFromAbsPath PARAMS((char *path));
+extern void LYsetXDisplay PARAMS((char *new_display));
+extern void change_sug_filename PARAMS((char *fname));
+extern void checkmail NOPARAMS;
+extern void convert_to_spaces PARAMS((char *string, BOOL condense));
+extern void free_and_clear PARAMS((char **obj));
+extern void highlight PARAMS((int flag, int cur, char *target));
+extern void noviceline PARAMS((int more_flag));
+extern void parse_restrictions PARAMS((CONST char *s));
+extern void remove_backslashes PARAMS((char *buf));
+extern void size_change PARAMS((int sig));
+extern void statusline PARAMS((CONST char *text));
+extern void toggle_novice_line NOPARAMS;
+
 #ifdef VMS
-extern void Define_VMSLogical PARAMS((
-	char *LogicalName, char *LogicalValue));
+extern void Define_VMSLogical PARAMS((char *LogicalName, char *LogicalValue));
 #endif /* VMS */
-extern CONST char *Home_Dir NOPARAMS;
-extern char *LYPathLeaf PARAMS((char * pathname));
-extern BOOLEAN LYPathOffHomeOK PARAMS((char *fbuffer, size_t fbuffer_size));
-extern void LYAddPathToHome PARAMS((
-	char *fbuffer, size_t fbuffer_size, char *fname));
-extern time_t LYmktime PARAMS((char *string, BOOL absolute));
+
 #if ! HAVE_PUTENV
 extern int putenv PARAMS((CONST char *string));
 #endif /* HAVE_PUTENV */
 
-extern FILE *LYNewBinFile PARAMS((char * name));
-extern FILE *LYNewTxtFile PARAMS((char * name));
-extern FILE *LYAppendToTxtFile PARAMS((char * name));
 #ifdef UNIX
 extern void LYRelaxFilePermissions PARAMS((CONST char * name));
 #endif
-extern BOOLEAN LYCachedTemp PARAMS((char *result, char **cached));
-extern FILE *LYOpenTemp PARAMS((char *result, CONST char *suffix, CONST char *mode));
-extern FILE *LYReopenTemp PARAMS((char *name));
-extern FILE *LYOpenScratch PARAMS((char *result, CONST char *prefix));
-extern void LYCloseTemp PARAMS((char *name));
-extern void LYCloseTempFP PARAMS((FILE *fp));
-extern void LYRemoveTemp PARAMS((char *name));
-extern void LYCleanupTemp NOPARAMS;
-extern void LYLocalFileToURL PARAMS((char *target, char *source));
 
 /*
  *  Whether or not the status line must be shown.
diff --git a/src/LYrcFile.c b/src/LYrcFile.c
index 77f5dca1..c5326615 100644
--- a/src/LYrcFile.c
+++ b/src/LYrcFile.c
@@ -451,7 +451,7 @@ PUBLIC void read_rc NOPARAMS
 		cp = cp2 + 1;
 	    while (isspace(*cp))
 		cp++; /* get rid of spaces */
-            cookie_add_acceptlist(cp);
+	    cookie_add_acceptlist(cp);
 
 
 	/*
@@ -465,6 +465,19 @@ PUBLIC void read_rc NOPARAMS
 		cp++; /* get rid of spaces */
 	    cookie_add_rejectlist(cp);
 
+#ifdef EXP_PERSISTENT_COOKIES
+	/*
+	 * File to store cookies in.
+	 */
+	} else if ((cp = LYstrstr(line_buffer, "cookie_file"))
+		!= NULL && cp-line_buffer < number_sign) {
+	    if((cp2 = (char *)strchr(cp,'=')) != NULL)
+		cp = cp2 + 1;
+	    while (isspace(*cp))
+		cp++; /* get rid of spaces */
+
+	    StrAllocCopy(LYCookieFile, cp);
+#endif /* EXP_PERSISTENT_COOKIES */
 
 	/*
 	 *  User mode.
@@ -892,6 +905,44 @@ PUBLIC int save_rc NOPARAMS
 			 (user_mode == ADVANCED_MODE ?
 					  "ADVANCED" : "INTERMEDIATE")));
 
+    /*
+     * Cookie options
+     */
+    fprintf(fp, "\
+# accept_all_cookies allows the user to tell Lynx to automatically\n\
+# accept all cookies if desired.  The default is \"FALSE\" which will\n\
+# prompt for each cookie.  Set accept_all_cookies to \"TRUE\" to accept\n\
+# all cookies.\n");
+    fprintf(fp, "accept_all_cookies=%s\n\n",
+		(LYAcceptAllCookies == FALSE ? "FALSE" : "TRUE"));
+
+    fprintf(fp, "\
+# cookie_accept_domains and cookie_reject_domains are comma-delimited\n\
+# lists of domains (with a leading '.') to automatically accept or\n\
+# reject all cookies from.  The accept_all_cookies parameter will\n\
+# override any settings made here.  If a single domain is specified in\n\
+# both cookie_accept_domains and in cookie_reject_domains, the rejection\n\
+# will take precedence.\n");
+    fprintf(fp, "# cookie_accept_domains=\n");
+    fprintf(fp, "# cookie_reject_domains=\n\n");
+
+    /*
+     * cookie_accept_domains and cookie_reject_domains not set here because
+     * there's not currently a method on the options menu (maybe later?)
+     * to set them.
+     */
+
+#ifdef EXP_PERSISTENT_COOKIES
+    /*
+     * Cookie file.
+     */
+    fprintf(fp, "\
+# cookie_file specifies the file in which to store persistent cookies.\n\
+# The default is ~/.lynx_cookies.\n");
+    fprintf(fp, "cookie_file=%s\n\n",
+		(LYCookieFile == NULL ? "~/.lynx_cookies" : LYCookieFile));
+#endif /* EXP_PERSISTENT_COOKIES */
+
 #if defined(EXEC_LINKS) || defined(EXEC_SCRIPTS)
     /*
      *  Local execution mode - all links.
diff --git a/src/UCAuto.c b/src/UCAuto.c
index 7d910a20..a3584ecb 100644
--- a/src/UCAuto.c
+++ b/src/UCAuto.c
@@ -15,6 +15,7 @@
 */
 
 #include <HTUtils.h>
+#include <LYUtils.h>
 
 #include <UCMap.h>
 #include <UCDefs.h>
@@ -25,12 +26,6 @@
 
 #ifdef EXP_CHARTRANS_AUTOSWITCH
 
-#ifdef VMS
-#define DISPLAY "DECW$DISPLAY"
-#else
-#define DISPLAY "DISPLAY"
-#endif /* VMS */
-
 #ifdef LINUX
 typedef enum {
     Is_Unset, Is_Set, Dunno, Dont_Care
@@ -83,7 +78,7 @@ PRIVATE void call_setfont ARGS3(
 
     if (*T_setfont_cmd) {
 	CTRACE(tfp, "Executing setfont: '%s'\n", T_setfont_cmd);
-	system(T_setfont_cmd);
+	LYSystem(T_setfont_cmd);
     }
 }
 
@@ -130,7 +125,6 @@ PUBLIC void UCChangeTerminalCodepage ARGS2(
     TGen_state_t HasUmap = Dunno;
 
     char tmpbuf1[100], tmpbuf2[20];
-    char *cp;
 
     /*
      *	Restore the original character set.
@@ -149,7 +143,7 @@ PUBLIC void UCChangeTerminalCodepage ARGS2(
 		    sprintf(tmpbuf1, "%s %s %s",
 			    SETFONT, old_font, NOOUTPUT);
 		}
-		system(tmpbuf1);
+		LYSystem(tmpbuf1);
 	    }
 
 	    remove(old_font);
@@ -166,7 +160,7 @@ PUBLIC void UCChangeTerminalCodepage ARGS2(
 	old_font = tempnam((char *)0, "font");
 	sprintf(tmpbuf1, "%s -o %s -ou %s %s",
 		SETFONT, old_font, old_umap, NOOUTPUT);
-	system(tmpbuf1);
+	LYSystem(tmpbuf1);
     }
 
     name = p->MIMEname;
@@ -182,8 +176,8 @@ PUBLIC void UCChangeTerminalCodepage ARGS2(
     /*
      *	Use this for output of escape sequences.
      */
-    if ((display != NULL) ||
-	((cp = getenv(DISPLAY)) != NULL && *cp != '\0')) {
+    if ((x_display != NULL) ||
+	LYgetXDisplay() != NULL) {
 	/*
 	 *  We won't do anything in an xterm.  Better that way...
 	 */
diff --git a/src/chrtrans/README.tables b/src/chrtrans/README.tables
index b9311729..5993ccee 100644
--- a/src/chrtrans/README.tables
+++ b/src/chrtrans/README.tables
@@ -4,6 +4,7 @@ ftp://dkuug.dk/) and are believed to be correct in their mappings,
 but not checked in detail.  The Unicode/UCS2 values
 for some of the RFC 1345 Mnemonic codes are out of date,
 a cleanup and update would be needed for serious use.
+[See also http://czyborra.com/charsets/iso8859.html for codepages survey.]
 
 More translation files can be easily provided (and new character entities
 added to entities.h), this set is just to test whether the system works
diff --git a/src/chrtrans/cp1250_uni.tbl b/src/chrtrans/cp1250_uni.tbl
index e7b19995..49ba9008 100644
--- a/src/chrtrans/cp1250_uni.tbl
+++ b/src/chrtrans/cp1250_uni.tbl
@@ -2,7 +2,7 @@
 Mwindows-1250
 
 #Name as a Display Charset (used on Options screen)
-OWinLatin2 (cp1250)
+OEastern European (windows-1250)
 
 #
 #    Name:     cp1250 to Unicode table
diff --git a/src/chrtrans/cp1251_uni.tbl b/src/chrtrans/cp1251_uni.tbl
index ed4a1e18..541f8640 100644
--- a/src/chrtrans/cp1251_uni.tbl
+++ b/src/chrtrans/cp1251_uni.tbl
@@ -2,7 +2,7 @@
 Mwindows-1251
 
 #Name as a Display Charset (used on Options screen)
-OWinCyrillic (cp1251)
+OCyrillic (windows-1251)
 
 #
 #    Name:     cp1251 to Unicode table
diff --git a/src/chrtrans/cp1252_uni.tbl b/src/chrtrans/cp1252_uni.tbl
index d5912022..09ee9b6a 100644
--- a/src/chrtrans/cp1252_uni.tbl
+++ b/src/chrtrans/cp1252_uni.tbl
@@ -6,7 +6,7 @@ D0
 Mwindows-1252
 
 #Name as a Display Charset (used on Options screen)
-OWinLatin1 (cp1252)
+OWestern (windows-1252)
 
 #
 #    Name:     cp1252 to Unicode table
diff --git a/src/chrtrans/cp1253_uni.tbl b/src/chrtrans/cp1253_uni.tbl
index ed50b1ed..b53e44a2 100644
--- a/src/chrtrans/cp1253_uni.tbl
+++ b/src/chrtrans/cp1253_uni.tbl
@@ -2,7 +2,7 @@
 Mwindows-1253
 
 #Name as a Display Charset (used on Options screen)
-OWinGreek (cp1253)
+OGreek (windows-1253)
 
 #
 #    Name:     cp1253 to Unicode table
@@ -26,7 +26,7 @@ OWinGreek (cp1253)
 
 0x20-0x7e       idem
 #
-0x80    U+20AC  #EURO SIGN
+0x80	U+20AC	#EURO SIGN
 0x81		#UNDEFINED
 0x82	U+201A	#SINGLE LOW-9 QUOTATION MARK
 0x83	U+0192	#LATIN SMALL LETTER F WITH HOOK
diff --git a/src/chrtrans/cp1255_uni.tbl b/src/chrtrans/cp1255_uni.tbl
index 67517353..6c4ca7d0 100644
--- a/src/chrtrans/cp1255_uni.tbl
+++ b/src/chrtrans/cp1255_uni.tbl
@@ -2,7 +2,7 @@
 Mwindows-1255
 
 #Name as a Display Charset (used on Options screen).
-OWinHebrew (cp1255)
+OHebrew (windows-1255)
 
 #
 #    Name:     cp1255 to Unicode table
diff --git a/src/chrtrans/cp1256_uni.tbl b/src/chrtrans/cp1256_uni.tbl
index 844e450d..23af4614 100644
--- a/src/chrtrans/cp1256_uni.tbl
+++ b/src/chrtrans/cp1256_uni.tbl
@@ -2,7 +2,7 @@
 Mwindows-1256
 
 #Name as a Display Charset (used on Options screen).
-OWinArabic (cp1256)
+OArabic (windows-1256)
 
 #
 #    Name:     cp1256 to Unicode table
diff --git a/src/chrtrans/cp1257_uni.tbl b/src/chrtrans/cp1257_uni.tbl
index 5339fa7c..4c1e70e6 100644
--- a/src/chrtrans/cp1257_uni.tbl
+++ b/src/chrtrans/cp1257_uni.tbl
@@ -2,7 +2,7 @@
 Mwindows-1257
 
 #Name as a Display Charset (used on Options screen)
-OWinBaltRim (cp1257)
+OBaltic Rim (windows-1257)
 
 #
 #    Name:     cp1257 to Unicode table
diff --git a/src/chrtrans/cp437_uni.tbl b/src/chrtrans/cp437_uni.tbl
index 621e730e..289f73ea 100644
--- a/src/chrtrans/cp437_uni.tbl
+++ b/src/chrtrans/cp437_uni.tbl
@@ -6,7 +6,7 @@ D0
 Mcp437
 
 #Name as a Display Charset (used on Options screen)
-ODosLatinUS (cp437)
+OLatinUS (cp437)
 #
 #    Name:     cp437_DOSLatinUS to Unicode table
 #    Unicode version: 1.1
diff --git a/src/chrtrans/cp737_uni.tbl b/src/chrtrans/cp737_uni.tbl
index 32f01c8c..81442ccc 100644
--- a/src/chrtrans/cp737_uni.tbl
+++ b/src/chrtrans/cp737_uni.tbl
@@ -2,7 +2,7 @@
 Mcp737
 
 #Name as a Display Charset (used on Options screen)
-ODosGreek (cp737)
+OGreek (cp737)
 
 #
 #    Name:     cp737_DOSGreek to Unicode table
diff --git a/src/chrtrans/cp775_uni.tbl b/src/chrtrans/cp775_uni.tbl
index 02a8b61b..8e56c3f4 100644
--- a/src/chrtrans/cp775_uni.tbl
+++ b/src/chrtrans/cp775_uni.tbl
@@ -2,7 +2,7 @@
 Mcp775
 
 #Name as a Display Charset (used on Options screen)
-ODosBaltRim (cp775)
+OBaltic Rim (cp775)
 
 #    Name:     cp775_DOSBaltRim to Unicode table
 #    Unicode version: 2.0
diff --git a/src/chrtrans/cp850_uni.tbl b/src/chrtrans/cp850_uni.tbl
index 05685971..816cc2db 100644
--- a/src/chrtrans/cp850_uni.tbl
+++ b/src/chrtrans/cp850_uni.tbl
@@ -8,7 +8,7 @@ D0
 Mcp850
 
 #Name as a Display Charset (used on Options screen)
-ODosLatin1 (cp850)
+OWestern (cp850)
 
 #
 #    Name:     cp850_DOSLatin1 to Unicode table
diff --git a/src/chrtrans/cp852_uni.tbl b/src/chrtrans/cp852_uni.tbl
index 0658d893..79047ace 100644
--- a/src/chrtrans/cp852_uni.tbl
+++ b/src/chrtrans/cp852_uni.tbl
@@ -2,7 +2,7 @@
 Mcp852
 
 #Name as a Display Charset (used on Options screen)
-ODosLatin2 (cp852)
+OEastern European (cp852)
 
 #
 #    Name:     cp852_DOSLatin2 to Unicode table
diff --git a/src/chrtrans/cp862_uni.tbl b/src/chrtrans/cp862_uni.tbl
index 3d21c138..60d9692e 100644
--- a/src/chrtrans/cp862_uni.tbl
+++ b/src/chrtrans/cp862_uni.tbl
@@ -2,7 +2,7 @@
 Mcp862
 
 #Name as a Display Charset (used on Options screen).
-ODosHebrew (cp862)
+OHebrew (cp862)
 
 #    Name:     cp862_DOSHebrew to Unicode table
 #    Unicode version: 2.0
diff --git a/src/chrtrans/cp864_uni.tbl b/src/chrtrans/cp864_uni.tbl
index d6e92431..8411f8b7 100644
--- a/src/chrtrans/cp864_uni.tbl
+++ b/src/chrtrans/cp864_uni.tbl
@@ -2,7 +2,7 @@
 Mcp864
 
 #Name as a Display Charset (used on Options screen).
-ODosArabic (cp864)
+OArabic (cp864)
 
 #    Name:     cp864_DOSArabic to Unicode table
 #    Unicode version: 2.0
diff --git a/src/chrtrans/cp866_uni.tbl b/src/chrtrans/cp866_uni.tbl
index 2d02ce1b..55ce0718 100644
--- a/src/chrtrans/cp866_uni.tbl
+++ b/src/chrtrans/cp866_uni.tbl
@@ -3,7 +3,7 @@
 Mcp866
 
 #Name as a Display Charset (used on Options screen)
-ODosCyrillic (cp866)
+OCyrillic (cp866)
 #
 #    Name:     cp866_DOSCyrillicRussian to Unicode table
 #    Unicode version: 2.0
diff --git a/src/chrtrans/cp869_uni.tbl b/src/chrtrans/cp869_uni.tbl
index 21cdeb95..1f418728 100644
--- a/src/chrtrans/cp869_uni.tbl
+++ b/src/chrtrans/cp869_uni.tbl
@@ -2,7 +2,7 @@
 Mcp869
 
 #Name as a Display Charset (used on Options screen)
-ODosGreek2 (cp869)
+OGreek2 (cp869)
 
 #    Name:     cp869_DOSGreek2 to Unicode table
 #    Unicode version: 2.0
diff --git a/src/chrtrans/iso01_uni.tbl b/src/chrtrans/iso01_uni.tbl
index f792164d..5b697e02 100644
--- a/src/chrtrans/iso01_uni.tbl
+++ b/src/chrtrans/iso01_uni.tbl
@@ -8,7 +8,7 @@ D0
 Miso-8859-1
 
 #Name as a Display Charset (used on Options screen)
-OISO Latin 1
+OWestern (ISO-8859-1)
 
 #
 #	Name:             ISO 8859-1 (1987) to Unicode
diff --git a/src/chrtrans/iso02_uni.tbl b/src/chrtrans/iso02_uni.tbl
index af97bc55..7fa0df92 100644
--- a/src/chrtrans/iso02_uni.tbl
+++ b/src/chrtrans/iso02_uni.tbl
@@ -2,7 +2,7 @@
 Miso-8859-2
 
 #Name as a Display Charset (used on Options screen)
-OISO Latin 2
+OEastern European (ISO-8859-2)
 
 #
 #	Name:             ISO 8859-2 (1987) to Unicode
diff --git a/src/chrtrans/iso03_uni.tbl b/src/chrtrans/iso03_uni.tbl
index bb8cd90f..a3c1f07a 100644
--- a/src/chrtrans/iso03_uni.tbl
+++ b/src/chrtrans/iso03_uni.tbl
@@ -2,7 +2,7 @@
 Miso-8859-3
 
 #Name as a Display Charset (used on Options screen)
-OISO Latin 3
+OLatin 3 (ISO-8859-3)
  
 #
 #	Name:             ISO 8859-3 (1988) to Unicode
diff --git a/src/chrtrans/iso04_uni.tbl b/src/chrtrans/iso04_uni.tbl
index 3f54afda..29be0be5 100644
--- a/src/chrtrans/iso04_uni.tbl
+++ b/src/chrtrans/iso04_uni.tbl
@@ -2,7 +2,7 @@
 Miso-8859-4
 
 #Name as a Display Charset (used on Options screen)
-OISO Latin 4
+OLatin 4 (ISO-8859-4)
  
 #
 #	Name:             ISO 8859-4 (1988) to Unicode
diff --git a/src/chrtrans/iso05_uni.tbl b/src/chrtrans/iso05_uni.tbl
index 40cdc24d..a715b64f 100644
--- a/src/chrtrans/iso05_uni.tbl
+++ b/src/chrtrans/iso05_uni.tbl
@@ -2,7 +2,7 @@
 Miso-8859-5
 
 #Name as a Display Charset (used on Options screen)
-OISO 8859-5 Cyrillic
+OCyrillic (ISO-8859-5)
 
 #
 #	Name:             ISO 8859-5 (1988) to Unicode
diff --git a/src/chrtrans/iso06_uni.tbl b/src/chrtrans/iso06_uni.tbl
index c9418864..549b592d 100644
--- a/src/chrtrans/iso06_uni.tbl
+++ b/src/chrtrans/iso06_uni.tbl
@@ -2,7 +2,7 @@
 Miso-8859-6
 
 #Name as a Display Charset (used on Options screen).
-OISO 8859-6 Arabic
+OArabic (ISO-8859-6)
 
 #
 #	Name:             ISO 8859-6 (1987) to Unicode
diff --git a/src/chrtrans/iso07_uni.tbl b/src/chrtrans/iso07_uni.tbl
index 368209bf..dffca758 100644
--- a/src/chrtrans/iso07_uni.tbl
+++ b/src/chrtrans/iso07_uni.tbl
@@ -2,7 +2,7 @@
 Miso-8859-7
 
 #Name as a Display Charset (used on Options screen)
-OISO 8859-7 Greek
+OGreek (ISO-8859-7)
  
 #
 #	Name:             ISO 8859-7 (1987) to Unicode
diff --git a/src/chrtrans/iso08_uni.tbl b/src/chrtrans/iso08_uni.tbl
index 4d83f5c4..050be29d 100644
--- a/src/chrtrans/iso08_uni.tbl
+++ b/src/chrtrans/iso08_uni.tbl
@@ -2,7 +2,7 @@
 Miso-8859-8
 
 #Name as a Display Charset (used on Options screen).
-OISO 8859-8 Hebrew
+OHebrew (ISO-8859-8)
 
 #
 #	Name:             ISO 8859-8 (1988) to Unicode
diff --git a/src/chrtrans/iso09_uni.tbl b/src/chrtrans/iso09_uni.tbl
index 1b204835..5abe799f 100644
--- a/src/chrtrans/iso09_uni.tbl
+++ b/src/chrtrans/iso09_uni.tbl
@@ -2,7 +2,7 @@
 Miso-8859-9
 
 #Name as a Display Charset (used on Options screen)
-OISO 8859-9 (Latin 5)
+OTurkish (ISO-8859-9)
  
 #
 #	Name:             ISO 8859-9 (1989) to Unicode
diff --git a/src/chrtrans/iso10_uni.tbl b/src/chrtrans/iso10_uni.tbl
index be3c02cd..ab8128f0 100644
--- a/src/chrtrans/iso10_uni.tbl
+++ b/src/chrtrans/iso10_uni.tbl
@@ -10,7 +10,7 @@ D0
 Miso-8859-10
 
 #Name as a Display Charset (used on Options screen)
-OISO 8859-10
+OISO-8859-10
  
 0x20-0x7e	idem
 #0x7f		U+2302
diff --git a/src/chrtrans/koi8r_uni.tbl b/src/chrtrans/koi8r_uni.tbl
index 09e8743c..69eef3c2 100644
--- a/src/chrtrans/koi8r_uni.tbl
+++ b/src/chrtrans/koi8r_uni.tbl
@@ -1,5 +1,5 @@
 # Options screen name for this character set
-OKOI8-R Cyrillic
+OCyrillic (KOI8-R)
 
 # MIME name for this charset
 Mkoi8-r
diff --git a/src/chrtrans/utf8_uni.tbl b/src/chrtrans/utf8_uni.tbl
index 67ff3460..9fc470ad 100644
--- a/src/chrtrans/utf8_uni.tbl
+++ b/src/chrtrans/utf8_uni.tbl
@@ -7,7 +7,7 @@
 Mutf-8
 
 #Name as a Display Charset (used on Options screen)
-OUNICODE UTF-8
+OUNICODE (UTF-8)
 
 # Some kind of raw Unicode?
 # Use 6 for for really "raw" 16bit UCS-2, 7 for UTF-8, ...
diff --git a/userdefs.h b/userdefs.h
index a0537fcd..f3a2067a 100644
--- a/userdefs.h
+++ b/userdefs.h
@@ -610,53 +610,57 @@
  * will be used as the default.  Also see lynx.cfg for information about
  * the -raw switch and LYK_RAW_TOGGLE command.
  *
- * The default character sets include:
- *
- *   Display Character Set name		MIME name
- *   ==========================		=========
- *   7 bit approximations		us-ascii
- *   Chinese				euc-cn
- *   DEC Multinational			dec-mcs
- *   DosArabic (cp864)			cp864
- *   DosBaltRim (cp775)			cp775
- *   DosCyrillic (cp866)		cp866
- *   DosGreek (cp737)			cp737
- *   DosGreek2 (cp869)			cp869
- *   DosHebrew (cp862)			cp862
- *   DosLatin1 (cp850)			cp850
- *   DosLatin2 (cp852)			cp852
- *   DosLatinUS (cp437)			cp437
- *   ISO 8859-10			iso-8859-10
- *   ISO 8859-5 Cyrillic		iso-8859-5
- *   ISO 8859-6 Arabic			iso-8859-6
- *   ISO 8859-7 Greek			iso-8859-7
- *   ISO 8859-8 Hebrew			iso-8859-8
- *   ISO 8859-9 (Latin 5)		iso-8859-9
- *   ISO Latin 1			iso-8859-1
- *   ISO Latin 2			iso-8859-2
- *   ISO Latin 3			iso-8859-3
- *   ISO Latin 4			iso-8859-4
- *   Japanese (EUC)			euc-jp
- *   Japanese (SJIS)			shift_jis
- *   KOI8-R Cyrillic			koi8-r
- *   Korean				euc-kr
- *   Macintosh (8 bit)			macintosh
- *   NeXT character set			next
- *   RFC 1345 Mnemonic			mnemonic
- *   RFC 1345 w/o Intro			mnemonic+ascii+0
- *   Taipei (Big5)			big5
- *   Transparent			x-transparent
- *   UNICODE UTF-8			utf-8
- *   Vietnamese (VISCII)		viscii
- *   WinArabic (cp1256)			windows-1256
- *   WinBaltRim (cp1257)		windows-1257
- *   WinCyrillic (cp1251)		windows-1251
- *   WinGreek (cp1253)			windows-1253
- *   WinHebrew (cp1255)			windows-1255
- *   WinLatin1 (cp1252)			windows-1252
- *   WinLatin2 (cp1250)			windows-1250
- */
-#define CHARACTER_SET "ISO Latin 1"
+ * Since Lynx now supports a wide range of platforms it may be useful
+ * to note that cpXXX codepages used by IBM PC compatible computers,
+ * and windows-xxxx used by native MS-Windows apps.
+ *
+ *  Recognized character sets include:
+ *
+ *     string for 'O'ptions Menu          MIME name
+ *     ===========================        =========
+ *     7 bit approximations (US-ASCII)    us-ascii
+ *     Western (ISO-8859-1)               iso-8859-1
+ *     Western (cp850)                    cp850
+ *     Western (windows-1252)             windows-1251
+ *     IBM PC US codepage (cp437)         cp437
+ *     DEC Multinational                  dec-mcs
+ *     Macintosh (8 bit)                  macintosh
+ *     NeXT character set                 next
+ *     Chinese                            euc-cn
+ *     Japanese (EUC-JP)                  euc-jp
+ *     Japanese (Shift_JIS)               shift_jis
+ *     Korean                             euc-kr
+ *     Taipei (Big5)                      big5
+ *     Vietnamese (VISCII)                viscii
+ *     Eastern European (ISO-8859-2)      iso-8859-2
+ *     Eastern European (cp852)           cp852
+ *     Eastern European (windows-1250)    windows-1250
+ *     Latin 3 (ISO-8859-3)               iso-8859-3
+ *     Latin 4 (ISO-8859-4)               iso-8859-4
+ *     Baltic Rim (cp775)                 cp775
+ *     Baltic Rim (windows-1257)          windows-1257
+ *     Cyrillic (ISO-8859-5)              is-8859-5
+ *     Cyrillic (cp866)                   cp866
+ *     Cyrillic (windows-1251)            windows-1251
+ *     Cyrillic (KOI8-R)                  koi8-r
+ *     Arabic (ISO-8859-6)                iso-8859-6
+ *     Arabic (cp864)                     cp864
+ *     Arabic (windows-1256)              windows-1256
+ *     Greek (ISO-8859-7)                 iso-8859-7
+ *     Greek (cp737)                      cp737
+ *     Greek2 (cp869)                     cp869
+ *     Greek (windows-1253)               windows-1253
+ *     Hebrew (ISO-8859-8)                iso-8859-8
+ *     Hebrew (cp862)                     cp862
+ *     Hebrew (windows-1255)              windows-1255
+ *     Turkish (ISO-8859-9)               iso-8859-9
+ *     ISO-8859-10                        iso-8859-10
+ *     UNICODE (UTF-8)                    utf-8
+ *     RFC 1345 w/o Intro                 mnemonic+ascii+0
+ *     RFC 1345 Mnemonic                  mnemonic
+ *     Transparent                        x-transparent
+ */
+#define CHARACTER_SET "iso-8859-1"
 
 /*****************************
  * PREFERRED_LANGUAGE is the language in MIME notation (e.g., "en",
@@ -727,7 +731,7 @@
  * cannot be opened as a local file (file://localhost/string).  Both
  * can be comma-separated lists.  Each prefix must end with a dot, each
  * suffix must begin with a dot, and either may contain other dots (e.g.,
- * .com.jp).  The default lists are defined here, and can be changed
+ * .co.jp).  The default lists are defined here, and can be changed
  * in lynx.cfg.  Each prefix will be used with each suffix, in order,
  * until a valid Internet host is created, based on a successful DNS
  * lookup (e.g., foo will be tested as www.foo.com and then www.foo.edu
@@ -1214,7 +1218,7 @@
  * the version definition with the Project Version on checkout. Just
  * ignore it. - kw */
 /* $Format: "#define LYNX_VERSION \"$ProjectVersion$\""$ */
-#define LYNX_VERSION "2.8.1dev.24"
+#define LYNX_VERSION "2.8.1dev.25"
 #define LYNX_WWW_HOME "http://lynx.browser.org/"
 #define LYNX_WWW_DIST "http://www.slcc.edu/lynx/current/"
 #define LYNX_RELEASE FALSE