about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--CHANGES50
-rw-r--r--INSTALLATION14
-rw-r--r--LYMessages_en.h2
-rw-r--r--README.jp133
-rw-r--r--WWW/Library/Implementation/HTFile.c4
-rw-r--r--WWW/Library/Implementation/HTFile.h2
-rw-r--r--WWW/Library/Implementation/HTFormat.c12
-rw-r--r--WWW/Library/Implementation/HTFormat.h6
-rw-r--r--WWW/Library/Implementation/HTRules.c6
-rw-r--r--WWW/Library/Implementation/HTTCP.c26
-rw-r--r--WWW/Library/Implementation/HTTCP.h5
-rw-r--r--WWW/Library/Implementation/HTVMSUtils.c9
-rw-r--r--WWW/Library/Implementation/www_tcp.h2
-rw-r--r--config.hin3
-rw-r--r--lynx.cfg178
-rw-r--r--makefile.in12
-rw-r--r--makefile.msc9
-rwxr-xr-xscripts/cfg2html.pl1
-rw-r--r--src/GridText.c5
-rw-r--r--src/HTFWriter.c12
-rw-r--r--src/HTInit.c2
-rw-r--r--src/LYCharUtils.c4
-rw-r--r--src/LYCurses.c6
-rw-r--r--src/LYCurses.h29
-rw-r--r--src/LYForms.c8
-rw-r--r--src/LYHistory.c7
-rw-r--r--src/LYMain.c105
-rw-r--r--src/LYOptions.c6
-rw-r--r--src/LYReadCFG.c34
-rw-r--r--src/LYStrings.c12
-rw-r--r--src/LYUtils.c17
-rw-r--r--src/Xsystem.c6
-rw-r--r--userdefs.h35
33 files changed, 551 insertions, 211 deletions
diff --git a/CHANGES b/CHANGES
index 9803c25d..b29a90bd 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,50 @@
 Changes since Lynx 2.8 release
 ===============================================================================
 
+2000-03-31 (2.8.3pre.1)
+* remove annoying trailing period from two statusline messages ending with host
+  name ("Looking up host.foo:81." and "Making HTTP connection to foo.bar.") -LP
+* lynx.cfg: use two lines to separate options description in this
+  configuration file (it looks more readable, for such a huge text) -LP
+* lynx.cfg:  make a few corrections to reorganize .h1 sections to improve
+  htmlized cattoc.html logic.  More corrections welcome -LP
+* fix some compiler warnings for DECC dealing with time_t being unsigned in
+  that environment (reported by Jerome Lauret) -TD
+* suppress Multinet prototypes in socket.h, to work around some places where
+  Multinet declares parameters a void* while DECC uses char * (patch by Jerome
+  Lauret <JLAURET@mail.chem.sunysb.edu>).
+* undo side-effect of config_enum() function in LYReadCFG.c from cleanup in
+  dev.22 which made default_user_mode and source_cache values not set properly
+  (reported by Alexei Anatski <alexei.anatski@srm.ru>) -TD
+* correct ifdef's in LYStrings.c for NCURSES_MOUSE_VERSION versus PDCURSES
+  adding new PDCURSES_MOUSE_VERSION to cover special case of DJGPP (reported by
+  LP, DK) -TD
+* add PRETTYSRC to lynx.cfg, supplementing -prettysrc commandline option -TD
+* add call to LYStoreCookies() from HTFWriter.c to save cookies when -source is
+  used (patch by KW)
+* remove const from LYGetHostByName() parameter -TD
+* modify makefile.in to ensure links within htmlized lynx.cfg are updated
+  if gzip-help is configured (reported by Ari Moisio) -TD
+* remove -DEXP_CHARTRANS from makefile.msc, makefile.bcb (reported by LP) -TD
+* trim trailing path-separator from lynx_temp_space before removing that
+  directory, on exit -TD
+* ifdef'd IsOurFile() to perform only an ownership check on single-user DOS
+  and OS/2 systems, so user can overwrite files -TD
+* simplified some initialization in LYMain.c with tildeExpand() -TD
+* change prototypes of HTSetPresentation(), HTSetSuffix5() to use double rather
+  than float, since this is the default promotion, working better with some
+  compilers -TD
+* add comments to makefile.msc to show how to build color-style version -TD
+* add fallback definition for getattrs(), move fallback definitions for
+  getbegy() and getbegx() in LYCurses.h to allow building color-style version
+  with PDCurses -TD
+* correct a call on lib$find_file() in HTVMSUtils.c which broke by not
+  supplying it with a fixed-size buffer, from dev.23 changes -TD
+* correct an out-of-range indexing error in LYstatusline_messages_on_exit(),
+  and add a check in to_stack() for a similar problem -TD
+* add definitions and description of USE_TH_JP_AUTO_DETECT,
+  CONV_JISX0201KANA_JISX0208KANA, and KANJI_CODE_OVERRIDE to userdefs.h, along
+  with a new file README.jp -TH
 2000-03-26 (2.8.3dev.23)
 * make -nounderline option apply to overloading of colors 4 & 5 with
   underlines, in slang configuration -TD
@@ -8,13 +52,13 @@ Changes since Lynx 2.8 release
   we cannot easily determine if someone could alter our temp-files.  If so,
   make a subdirectory of that, with appropriate permissions -TD
 * disable setuid on initialization -TD
-* add a definition USE_MKSTEMP in userdefs.h which supercedes EXP_RAND_TEMPNAME
+* add a definition USE_MKSTEMP in userdefs.h which supersedes EXP_RAND_TEMPNAME
   for sys-admins who believe in mkstemp() -TD
 * change logic for EXP_RAND_TEMPNAME to avoid allowing fmt_tempname() to return
   the same name during a session.  Define EXP_NAME_TEMPNAME in userdefs.h -TD
 * add Last-Modified header into the printed/downloaded source, in addition to
   the Date header (it is there for years).  (Last-Modified field will not be
-  printed if it is vanished from Date or equal to 1 Jan 1970 (i.e., ctime(0)),
+  printed if it is not present, or equal to 1 Jan 1970 (i.e., ctime(0)),
   a common mistake in scripts) -LP
 * defined DIRED_SUPPORT in makefile.msc -TD
 * several small fixes in LYLocal.c for dired support, mostly win32-specific -TD
@@ -69,7 +113,7 @@ Changes since Lynx 2.8 release
 * add configure option --enable-htmlized-cfg to install the htmlized lynx.cfg
   in the help directory (request by LP) -TD
 * suppress sleep's in crawl or traversal mode (request by LV) -TD
-* cleanup LYrcFile.c a little, using new functions putBool, getBool, putEnum
+* cleanup LYReadCFG.c, LYrcFile.c a little, using new functions putBool, getBool, putEnum
   and getEnum -TD
 * change default mode for visited-links-page to match original behavior, add
   visited_links to .lynxrc file (requests by KD, LP) -TD
diff --git a/INSTALLATION b/INSTALLATION
index 97f8bb81..bc14f004 100644
--- a/INSTALLATION
+++ b/INSTALLATION
@@ -756,20 +756,6 @@ V. Compile instructions -- 386 DOS
     you wish to use PDCurses 2.4, you need to first apply the following
     patch:
 
-    --- curses.h.ori	Mon Jan 17 13:35:36 2000
-    +++ curses.h	Fri Mar  3 00:18:30 2000
-    @@ -1949,9 +1949,11 @@
-     #define echochar(c)             (addch((chtype)c)==ERR?ERR:refresh())
-     #define erase()                 werase( stdscr )
-     #define fixterm()               reset_prog_mode()
-    +#define getattrs(w)             (w)->_attrs
-     #define getbegx(w)              (w)->_begx
-     #define getbegy(w)              (w)->_begy
-     #define getbegyx(w,y,x)         ( y = (w)->_begy, x = (w)->_begx )
-    +#define getbkgd(w)              (w)->_bkgd
-     #define getch()                 wgetch(stdscr)
-     #define getmaxx(w)              (w)->_maxx
-     #define getmaxy(w)              (w)->_maxy
     --- dos/pdckbd.c.ori	Sun Dec 26 23:15:04 1999
     +++ dos/pdckbd.c	Fri Mar  3 00:20:14 2000
     @@ -336,7 +336,7 @@
diff --git a/LYMessages_en.h b/LYMessages_en.h
index 4b8be538..c06ad3cf 100644
--- a/LYMessages_en.h
+++ b/LYMessages_en.h
@@ -576,7 +576,7 @@
 #define CONTENT_TYPE_MSG gettext("Content-type: %s")
 #define COMMAND_PROMPT gettext("Command: ")
 #define VERSION_SEGMENT gettext(" Version ")
-#define FIRST_SEGMENT gettext(" first.")
+#define FIRST_SEGMENT gettext(" first")
 #define GUESSING_SEGMENT gettext(", guessing...")
 #define PERMISSIONS_SEGMENT gettext("Permissions for ")
 #define SELECT_SEGMENT gettext("Select ")
diff --git a/README.jp b/README.jp
new file mode 100644
index 00000000..b2d5a526
--- /dev/null
+++ b/README.jp
@@ -0,0 +1,133 @@
+README for Japanese
+===================
+
+This document shows some supplements for Japanese in Japanese.
+この文書では日本語で御利用の方のための補足事項が記述されています。
+
+1. 概要
+
+Lynx Version 2.8.3 (と恐らくそれ以降の Lynx) では、2.8.2 以前の
+ものと日本語の文字コードの扱いが異なっています。この文書では 
+Lynx を日本語環境で利用される場合の固有の設定を簡単に説明します。
+
+特に ASSUME_CHARSET の扱いが変更された関係上、以前と同じ設定で利用
+していると従来文字化けしていなかった文章が文字化けしてしまう可能性が
+ありますので御注意ください。この点に関しては、この文書の
+「4. lynx.cfg の設定」の章を御参照ください。
+
+
+2. 日本語の文書の新しい処理方法
+
+(1) 日本語で記述された HTML 文書の文字コード (Character-Set) が、
+    META 要素、もしくは HTTP の応答で指定されていた場合、文書が
+    その文字コードで記述されていると仮定して処理します。
+
+(2) (1) 以外の場合で、ASSUME_CHARSET が shift_jis もしくは euc_jp に
+    設定されていた場合、文書がその文字コードで記述されていると仮定して
+    処理します。
+
+(3) (1) および (2) 以外の場合、複数の文字コードを用いてひとつの文書が
+    書かれていないと仮定して処理します。
+
+
+3. インストール
+
+インストール時における日本語固有の設定には以下のものがあります。
+必要に応じて設定を変更してインストールしてください。
+
+configure オプション
+  ・enable-cjk
+        千秋氏による主に日本語の処理にかかわる拡張を有効にするための
+        オプションです。これらの拡張は今後標準で組み込まれるか、他の
+        オプションにより有効にする方針のため、このオプションは将来
+        廃止されると思われます。
+
+マクロ
+  ・USE_TH_JP_AUTO_DETECT
+        前章 (3) の処理を有効にします。
+        このマクロは userdefs.h において標準で定義されています。
+
+  ・CONV_JISX0201KANA_JISX0208KANA
+        いわゆる半角カナを全角に変換して表示します。
+        このマクロは userdefs.h において標準で定義されています。
+
+  ・KANJI_CODE_OVERRIDE
+        文書の文字コードをユーザが指定できるようにする処理を有効に
+        します。この指定は、META 要素、HTTP の応答、ASSUME_CHARSET 
+        で指定された文字コードよりも優先されます。主に文書が間違った
+        文字コードを指定していた場合に有効です。文字コードは ^L により
+        切り替えることができます。ただし、多くのケースでは不要です。
+        このマクロは標準で定義 *されません*。
+
+  ・SH_EX
+        千秋氏による一般的な拡張を有効にするためのマクロです。
+        このマクロを設定すると、上記 KANJI_CODE_OVERRIDE を有効に
+        した場合の文字コードが画面上部に常に表示されるようになります。
+        このマクロは標準で定義 *されません*。
+
+
+4. lynx.cfg の設定
+
+********************   重 要   ********************
+lynx.cfg では ASSUME_CHARSET、ASSUME_LOCAL_CHARSET、
+ASSUME_UNREC_CHARSET を設定しないでください。
+********************   重 要   ********************
+
+Lynx Version 2.8.3 以降では、日本語で記述された HTML 文書の文字コード
+が明示的に指定されていない場合で、ASSUME_CHARSET が shift_jis もしくは 
+euc_jp に設定されていた場合、文書がその文字コードで記述されていると
+仮定して処理するようになりました。
+
+ただし、ASSUME_CHARSET を指定しなくても日本語の文字コードは自動的に
+判別され、多くのケースでは適切に処理されます。むしろ、ASSUME_CHARSET 
+を shift_jis や euc_jp に指定していると、それぞれ EUC、SJIS で書かれた
+文書が文字化けすることがあります。
+
+従って、lynx.cfg 内に、
+
+-------------------- ここから --------------------
+ASSUME_CHARSET:euc-jp
+-------------------- ここまで --------------------
+
+のように記述されていると文字化けの原因になりますので、特に理由がない
+限り、以下のようにコメントアウトするなどして ASSUME_CHARSET が設定
+されないようにしてください (ASSUME_LOCAL_CHARSET、ASSUME_UNREC_CHARSET 
+についても同様)。
+
+-------------------- ここから --------------------
+#ASSUME_CHARSET:euc-jp
+-------------------- ここまで --------------------
+
+必要であれば ASSUME_CHARSET はオプションメニュー、もしくは
+コマンドラインオプションから変更して下さい。
+
+補足:
+ASSUME_LOCAL_CHARSET は Lynx Version 2.8.3 では参照していないかも
+しれませんが、将来参照するようになるかもしれませんので、やはり設定
+しない方がいいと思います。
+
+
+5. 日本語が文字化けしたら
+
+すべての日本語で書かれた文書が文字化けするなら、オプションメニューで
+「Display Character Set」を「Japanese (EUC-JP)」、もしくは 
+「Japanese (Shift_JIS)」に変更して、変更を保存してください。
+もしくは lynx.cfg 内で CHARACTER_SET を euc-jp もしくは shift_jis に
+設定してください。
+
+一部の日本語で書かれた文書が文字化けするなら、前章「4. lynx.cfg の設定」
+を参照し、ASSUME_CHARSET を設定しないようにするか、もしくはオプション
+メニューで「assumed document character set」の部分を参照し、shift_jis 
+や euc-jp になっていないか確認し、もしなっていたら iso-8859-1 等に変更
+して、Lynx が日本語の文字コードを自動判別するようにしてください。
+
+それでも文字化けする場合は、
+  ・META 要素、もしくは HTTP の応答で指定されてる文字コードとは異なる
+    文字コードで文書が記述されている
+もしくは
+  ・ひとつの文書中に複数の文字コードで書かれた文字が含まれている
+と思われます。前者の場合は文書の管理者に改善を依頼するか、
+KANJI_CODE_OVERRIDE を定義してコンパイルした Lynx をお使いください。
+後者の場合は残念ですがあきらめてください。
+----
+2000/3/28 Takeshi Hataguchi <patakuti@t3.rim.or.jp>
diff --git a/WWW/Library/Implementation/HTFile.c b/WWW/Library/Implementation/HTFile.c
index 571968c9..8a1ad8cd 100644
--- a/WWW/Library/Implementation/HTFile.c
+++ b/WWW/Library/Implementation/HTFile.c
@@ -463,7 +463,7 @@ PUBLIC void HTSetSuffix5 ARGS5(
 	CONST char *,	representation,
 	CONST char *,	encoding,
 	CONST char *,	desc,
-	float,		value)
+	double,		value)
 {
     HTSuffix * suff;
     BOOL trivial_enc = (BOOL) IsUnityEncStr(encoding);
@@ -516,7 +516,7 @@ PUBLIC void HTSetSuffix5 ARGS5(
 
     StrAllocCopy(suff->desc, desc);
 
-    suff->quality = value;
+    suff->quality = (float) value;
 }
 
 #ifdef LY_FIND_LEAKS
diff --git a/WWW/Library/Implementation/HTFile.h b/WWW/Library/Implementation/HTFile.h
index d2207645..2cb1d92a 100644
--- a/WWW/Library/Implementation/HTFile.h
+++ b/WWW/Library/Implementation/HTFile.h
@@ -127,7 +127,7 @@ extern void HTSetSuffix5 PARAMS((
         CONST char *    representation,
         CONST char *    encoding,
         CONST char *    desc,
-        float           quality));
+        double          quality));
 
 #define HTSetSuffix(suff,rep,enc,q) HTSetSuffix5(suff, rep, enc, NULL, q)
 
diff --git a/WWW/Library/Implementation/HTFormat.c b/WWW/Library/Implementation/HTFormat.c
index 37a3172e..68b5f7c3 100644
--- a/WWW/Library/Implementation/HTFormat.c
+++ b/WWW/Library/Implementation/HTFormat.c
@@ -90,9 +90,9 @@ PRIVATE void HTFreePresentations NOPARAMS;
 PUBLIC void HTSetPresentation ARGS6(
 	CONST char *,	representation,
 	CONST char *,	command,
-	float,		quality,
-	float,		secs,
-	float,		secs_per_byte,
+	double,		quality,
+	double,		secs,
+	double,		secs_per_byte,
 	long int,	maxbytes)
 {
     HTPresentation * pres = (HTPresentation *)malloc(sizeof(HTPresentation));
@@ -102,9 +102,9 @@ PUBLIC void HTSetPresentation ARGS6(
     pres->rep = HTAtom_for(representation);
     pres->rep_out = WWW_PRESENT;		/* Fixed for now ... :-) */
     pres->converter = HTSaveAndExecute;		/* Fixed for now ...	 */
-    pres->quality = quality;
-    pres->secs = secs;
-    pres->secs_per_byte = secs_per_byte;
+    pres->quality = (float) quality;
+    pres->secs = (float) secs;
+    pres->secs_per_byte = (float) secs_per_byte;
     pres->maxbytes = maxbytes;
     pres->command = NULL;
     StrAllocCopy(pres->command, command);
diff --git a/WWW/Library/Implementation/HTFormat.h b/WWW/Library/Implementation/HTFormat.h
index a60e44ac..b1fbf8b4 100644
--- a/WWW/Library/Implementation/HTFormat.h
+++ b/WWW/Library/Implementation/HTFormat.h
@@ -210,9 +210,9 @@ HTSetPresentation: Register a system command to present a format
 extern void HTSetPresentation PARAMS((
         CONST char *	representation,
         CONST char *	command,
-        float		quality,
-        float		secs,
-        float		secs_per_byte,
+        double		quality,
+        double		secs,
+        double		secs_per_byte,
 	long int	maxbytes
 ));
 
diff --git a/WWW/Library/Implementation/HTRules.c b/WWW/Library/Implementation/HTRules.c
index e8177af1..def5f7dd 100644
--- a/WWW/Library/Implementation/HTRules.c
+++ b/WWW/Library/Implementation/HTRules.c
@@ -473,9 +473,9 @@ PUBLIC int  HTSetConfiguration ARGS1(
 			    &quality, &secs, &secs_per_byte, &maxbytes);
 	else status = 0;
 	HTSetPresentation(word2, word3,
-		    status >= 1 ? quality		: (float) 1.0,
-		    status >= 2 ? secs			: (float) 0.0,
-		    status >= 3 ? secs_per_byte 	: (float) 0.0,
+		    status >= 1 ? quality		: 1.0,
+		    status >= 2 ? secs			: 0.0,
+		    status >= 3 ? secs_per_byte 	: 0.0,
 		    status >= 4 ? maxbytes		: 0 );
 
     } else if (0==strncasecomp(word1, "htbin", 5) ||
diff --git a/WWW/Library/Implementation/HTTCP.c b/WWW/Library/Implementation/HTTCP.c
index 0f2c0a28..ac8f6096 100644
--- a/WWW/Library/Implementation/HTTCP.c
+++ b/WWW/Library/Implementation/HTTCP.c
@@ -330,10 +330,10 @@ PUBLIC CONST char * HTInetString ARGS1(
 **	returns 1 if valid, otherwise 0.
 */
 PUBLIC BOOL valid_hostname ARGS1(
-	CONST char *,	name)
+	char *,	name)
 {
     int i=1, iseg = 0;
-    CONST char *cp = name;
+    char *cp = name;
     if (!(name && *name))
 	return NO;
     for (; (*cp && i <= 253); cp++, i++) {
@@ -623,10 +623,10 @@ extern int h_errno;
 **	HT_INTERNAL		Internal error
 */
 PUBLIC struct hostent * LYGetHostByName ARGS1(
-	CONST char *,	str)
+	char *,	str)
 {
 #ifndef _WINDOWS_NSL
-    CONST char *host = str;
+    char *host = str;
 #endif
 #ifdef NSL_FORK
     /* for transfer of result between from child to parent: */
@@ -720,10 +720,10 @@ PUBLIC struct hostent * LYGetHostByName ARGS1(
 	*/
 	pid_t fpid, waitret;
 	int pfd[2], selret, readret, waitstat = 0;
-	time_t start_time = time(NULL);
+	time_t start_time = time((time_t *)0);
 	fd_set readfds;
 	struct timeval timeout;
-	int dns_patience = 30; /* how many seconds will we wait for DNS? */
+	long dns_patience = 30; /* how many seconds will we wait for DNS? */
 	int child_exited = 0;
 
 	    /*
@@ -894,7 +894,7 @@ PUBLIC struct hostent * LYGetHostByName ARGS1(
 		goto failed;
 	}
 
-	while (child_exited || time(NULL) - start_time < dns_patience) {
+	while (child_exited || (long)(time((time_t *)0) - start_time) < dns_patience) {
 
 	    FD_ZERO(&readfds);
 	    /*
@@ -1074,11 +1074,11 @@ PUBLIC struct hostent * LYGetHostByName ARGS1(
 
 	if (!system_is_NT) {	/* for Windows9x */
 	    unsigned long t;
-	    t = (unsigned long)inet_addr((char *)host);
+	    t = (unsigned long)inet_addr(host);
 	    if ((int)t != -1)
 		phost = gethostbyaddr((char *)&t, sizeof (t), AF_INET);
 	    else
-		phost = gethostbyname((char *)host);
+		phost = gethostbyname(host);
 	} else {		/* for Windows NT */
 	    phost = (struct hostent *) NULL;
 	    hThread = CreateThread((void *)NULL, 4096UL,
@@ -1114,7 +1114,7 @@ PUBLIC struct hostent * LYGetHostByName ARGS1(
 #else /* !NSL_FORK, !_WINDOWS_NSL: */
     {
 	struct hostent  *phost;
-	phost = gethostbyname((char *)host);	/* See netdb.h */
+	phost = gethostbyname(host);	/* See netdb.h */
 #ifdef MVS
 	CTRACE((tfp, "LYGetHostByName: gethostbyname() returned %d\n", phost));
 #endif /* MVS */
@@ -1405,7 +1405,7 @@ PRIVATE void get_host_details NOARGS
 
 #ifndef DECNET	/* Decnet ain't got no damn name server 8#OO */
 #ifdef NEED_HOST_ADDRESS		/* no -- needs name server! */
-    phost = gethostbyname((CONST char *)name);	/* See netdb.h */
+    phost = gethostbyname(name);	/* See netdb.h */
     if (!OK_HOST(phost)) {
 	CTRACE((tfp, "TCP: Can't find my own internet node address for `%s'!!\n",
 		    name));
@@ -1471,7 +1471,7 @@ PUBLIC int HTDoConnect ARGS4(
     }
     FREE(p1);
 
-    HTSprintf0 (&line, gettext("Looking up %s."), host);
+    HTSprintf0 (&line, "%s%s", WWW_FIND_MESSAGE, host);
     _HTProgress (line);
     status = HTParseInet(soc_in, host);
     if (status) {
@@ -1494,7 +1494,7 @@ PUBLIC int HTDoConnect ARGS4(
 	return status;
     }
 
-    HTSprintf0 (&line, gettext("Making %s connection to %s."), protocol, host);
+    HTSprintf0 (&line, gettext("Making %s connection to %s"), protocol, host);
     _HTProgress (line);
     FREE(host);
     FREE(line);
diff --git a/WWW/Library/Implementation/HTTCP.h b/WWW/Library/Implementation/HTTCP.h
index 8644b69d..56a0ee31 100644
--- a/WWW/Library/Implementation/HTTCP.h
+++ b/WWW/Library/Implementation/HTTCP.h
@@ -66,7 +66,7 @@ extern unsigned int HTCardinal PARAMS((int *pstatus,
 **	-------------------------------------------------
 */
 
-extern BOOL valid_hostname PARAMS((CONST char * name));
+extern BOOL valid_hostname PARAMS((char * name));
 
 /*	Resolve an internet hostname, like gethostbyname
 **	------------------------------------------------
@@ -87,8 +87,7 @@ extern int lynx_nsl_status;
 #if defined(__DJGPP__) && !defined(WATT32)
 #define LYGetHostByName(host) resolv(host) /* we'll use it the same way */
 #else
-extern struct hostent * LYGetHostByName PARAMS((
-	CONST char *	str));
+extern struct hostent * LYGetHostByName PARAMS((char * str));
 #endif
 
 
diff --git a/WWW/Library/Implementation/HTVMSUtils.c b/WWW/Library/Implementation/HTVMSUtils.c
index 5ec51d5f..f4209ce2 100644
--- a/WWW/Library/Implementation/HTVMSUtils.c
+++ b/WWW/Library/Implementation/HTVMSUtils.c
@@ -35,8 +35,6 @@
 #include <LYLeaks.h>
 #include <LYStrings.h>
 
-#define INFINITY 512			/* File name length @@ FIXME */
-
 PUBLIC BOOL HTVMSFileVersions=FALSE; /* Include version numbers in listing? */
 
 typedef struct {
@@ -454,6 +452,7 @@ long status;
 struct dsc$descriptor_s entryname_desc;
 struct dsc$descriptor_s dirname_desc;
 static char *DirEntry;
+char Actual[256];
 char VMSentry[256];
 char UnixEntry[256];
 int index;
@@ -502,12 +501,14 @@ char *dot;
       *dot = ']';
       StrAllocCat(DirEntry,".dir");
    }
+   /* lib$find_file needs a fixed-size buffer */
+   LYstrncpy(Actual, DirEntry, sizeof(Actual)-1);
 
    dir.context = 0;
-   dirname_desc.dsc$w_length = strlen(DirEntry);
+   dirname_desc.dsc$w_length = strlen(Actual);
    dirname_desc.dsc$b_dtype = DSC$K_DTYPE_T;
    dirname_desc.dsc$b_class = DSC$K_CLASS_S;
-   dirname_desc.dsc$a_pointer = (char *)&(DirEntry);
+   dirname_desc.dsc$a_pointer = (char *)&(Actual);
 
    /* look for the directory */
    entryname_desc.dsc$w_length = 255;
diff --git a/WWW/Library/Implementation/www_tcp.h b/WWW/Library/Implementation/www_tcp.h
index 81db0187..d1be848c 100644
--- a/WWW/Library/Implementation/www_tcp.h
+++ b/WWW/Library/Implementation/www_tcp.h
@@ -362,7 +362,9 @@ extern char *vms_errno_string();
 #define __TIME 1  /* to avoid double definitions in in.h */
 #endif /* __TIME_LOADED */
 #include "multinet_root:[multinet.include.sys]time.h"
+#define MULTINET_NO_PROTOTYPES	/* DECC is compatible-but-different */
 #include "multinet_root:[multinet.include.sys]socket.h"
+#undef MULTINET_NO_PROTOTYPES
 #include "multinet_root:[multinet.include.netinet]in.h"
 #include "multinet_root:[multinet.include.arpa]inet.h"
 #include "multinet_root:[multinet.include]netdb.h"
diff --git a/config.hin b/config.hin
index 68bfb6ce..90caa3c8 100644
--- a/config.hin
+++ b/config.hin
@@ -12,7 +12,6 @@
 #undef CJK_EX			/* CF_ARG_ENABLE(cjk) */
 #undef COLOR_CURSES		/* defined by CF_COLOR_CURSES */
 #undef COMPRESS_PATH		/* CF_PATH_PROG(compress) */
-#undef CONV_JISX0201KANA_JISX0208KANA /* CF_ARG_ENABLE(kanji) */
 #undef COPY_PATH		/* CF_PATH_PROG(cp) */
 #undef CURS_PERFORMANCE		/* CF_CURS_PERFORMANCE */
 #undef DEBUG			/* configure --enable-debug */
@@ -132,7 +131,6 @@
 #undef IGNORE_CTRL_C		/* FIXME: make tests? */
 #undef INSTALL_ARGS		/* CF_PATH_PROG(install) */
 #undef INSTALL_PATH		/* CF_PATH_PROG(install) */
-#undef KANJI_CODE_OVERRIDE	/* CF_ARG_ENABLE(kanji) */
 #undef LINKEDSTYLES		/* see USE_COLOR_STYLE */
 #undef LINUX			/* FIXME: make tests? */
 #undef LOCALE			/* for locale support */
@@ -195,7 +193,6 @@
 #undef USE_SLANG		/* AC_ARG_WITH(screen=slang) */
 #undef USE_SOCKS4_PREFIX	/* CF_SOCKS5 */
 #undef USE_SOCKS5		/* CF_SOCKS5 */
-#undef USE_TH_JP_AUTO_DETECT	/* CF_ARG_ENABLE(kanji) */
 #undef USE_ZLIB			/* AC_ARG_WITH(zlib) */
 #undef UTMPX_FOR_UTMP		/* use <utmpx.h> since <utmp.h> not found */
 #undef UUDECODE_PATH		/* CF_PATH_PROG(uudecode) */
diff --git a/lynx.cfg b/lynx.cfg
index bb8f8963..f367ba7f 100644
--- a/lynx.cfg
+++ b/lynx.cfg
@@ -22,7 +22,11 @@
 ### The conversion is done via the scripts/cfg2html.pl script.
 ### Several directives beginning with '.' are used for this purpose.
 
-.h1 Internal Behavior
+
+.h1 Auxiliary Facilities
+# These settings control the auxiliary navigating facilities of lynx, e.g.,
+# jumpfiles, bookmarks, default URLs.
+
 
 .h2 INCLUDE
 # Starting with Lynx 2.8.1, the lynx.cfg file has a crude "include"
@@ -71,9 +75,6 @@
 # user-defined configuration file if the original list of allowed settings is
 # secure.
 
-.h1 Auxiliary Facilities
-# These settings control the auxiliary navigating facilities of lynx, e.g.,
-# jumpfiles, bookmarks, default URLs.
 
 .h2 STARTFILE
 # STARTFILE is the default starting URL if none is specified
@@ -97,6 +98,7 @@ STARTFILE:http://lynx.browser.org/
 # you can connect to reliably.  Otherwise users will become confused and think
 # that they cannot run Lynx.
 
+
 .h2 HELPFILE
 # HELPFILE must be defined as a URL and must have a
 # complete path if local:
@@ -112,6 +114,7 @@ HELPFILE:http://www.crl.com/~subir/lynx/lynx_help/lynx_help_main.html
 .ex
 #HELPFILE:file://localhost/PATH_TO/lynx_help/lynx_help_main.html
 
+
 .h2 DEFAULT_INDEX_FILE
 # DEFAULT_INDEX_FILE is the default file retrieved when the
 # user presses the 'I' key when viewing any document.
@@ -120,6 +123,7 @@ HELPFILE:http://www.crl.com/~subir/lynx/lynx_help/lynx_help_main.html
 #
 DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 
+
 .h1 Interaction
 
 .h2 GOTOBUFFER
@@ -131,7 +135,6 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #GOTOBUFFER:FALSE
 
-.h1 Interaction
 
 .h2 JUMP_PROMPT
 # JUMP_PROMPT is the default statusline prompt for selecting a jumps file
@@ -145,6 +148,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #JUMP_PROMPT:Jump to (use '?' for list):
 
+
 .h1 Auxiliary Facilities
 
 .h2 JUMPFILE
@@ -171,6 +175,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 # but do not include 'file://localhost' in the line.
 #JUMPFILE:/FULL_LOCAL_PATH/jumps.html
 
+
 .h2 JUMPBUFFER
 # Set JUMPBUFFER to TRUE if you want to have the previous jump target,
 # if any, offered for reuse or editing when using the 'J'ump command.
@@ -186,6 +191,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #JUMPBUFFER:FALSE
 
+
 .h1 Internal Behavior
 
 .h2 SAVE_SPACE
@@ -201,6 +207,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #SAVE_SPACE:~/foo/
 
+
 .h2 REUSE_TEMPFILES
 # Lynx uses temporary files for (among other purposes) the content of
 # various user interface pages.  REUSE_TEMPFILES changes the behavior
@@ -221,6 +228,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #REUSE_TEMPFILES:FALSE
 
+
 .h2 LYNX_HOST_NAME
 # If LYNX_HOST_NAME is defined here or in userdefs.h, it will be
 # treated as an alias for the local host name in checks for URLs on
@@ -231,6 +239,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #LYNX_HOST_NAME:www.cc.ukans.edu
 
+
 .h2 LOCALHOST_ALIAS
 # localhost aliases
 # Any LOCALHOST_ALIAS definitions also will be accepted as local when
@@ -242,6 +251,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #LOCALHOST_ALIAS:gopher.server.domain
 #LOCALHOST_ALIAS:news.server.domain
 
+
 .h2 LOCAL_DOMAIN
 # LOCAL_DOMAIN is used for a tail match with the ut_host element of
 # the utmp or utmpx structure on systems with utmp capabilities, to
@@ -253,8 +263,8 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #LOCAL_DOMAIN:ukans.edu
 
-.h1 Content/Rendering
-# These settings control character set (charsets) issues.
+
+.h1 Character sets
 
 .h2 CHARACTER_SET
 # CHARACTER_SET defines the display character set, i.e., assumed to be
@@ -368,6 +378,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #CHARACTER_SET:iso-8859-1
 
+
 .h2 ASSUME_CHARSET
 # ASSUME_CHARSET changes the handling of documents which do not
 # explicitly specify a charset.  Normally Lynx assumes that 8-bit
@@ -382,6 +393,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #ASSUME_CHARSET:iso-8859-1
 
+
 .h2 ASSUMED_DOC_CHARSET_CHOICE
 .h2 DISPLAY_CHARSET_CHOICE
 # It is possible to reduce the number of charset choices in the 'O'ptions menu
@@ -424,6 +436,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #ASSUMED_DOC_CHARSET_CHOICE:*
 #DISPLAY_CHARSET_CHOICE:*
 
+
 .h2 ASSUME_LOCAL_CHARSET
 # ASSUME_LOCAL_CHARSET is like ASSUME_CHARSET but only applies to local
 # files.  If no setting is given here or by an -assume_local_charset
@@ -436,6 +449,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #ASSUME_LOCAL_CHARSET:iso-8859-1
 
+
 .h2 PREPEND_CHARSET_TO_SOURCE
 # PREPEND_CHARSET_TO_SOURCE:TRUE tells Lynx to prepend a META CHARSET line
 # to text/html source files when they are retrieved for 'd'ownloading
@@ -451,6 +465,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #PREPEND_CHARSET_TO_SOURCE:TRUE
 
+
 .h2 NCR_IN_BOOKMARKS
 # NCR_IN_BOOKMARKS:TRUE allows you to save 8-bit characters in bookmark titles
 # in the unicode format (NCR).  This may be useful if you need to switch
@@ -464,6 +479,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #NCR_IN_BOOKMARKS:FALSE
 
+
 .h2 FORCE_8BIT_TOUPPER
 # FORCE_8BIT_TOUPPER overrides locale settings and uses internal 8-bit
 # case-conversion mechanism for case-insensitive searches in non-ASCII display
@@ -472,6 +488,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #FORCE_8BIT_TOUPPER:FALSE
 
+
 .h2 OUTGOING_MAIL_CHARSET
 # While Lynx supports different platforms and display character sets
 # we need to limit the charset in outgoing mail to reduce
@@ -482,6 +499,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #OUTGOING_MAIL_CHARSET:
 
+
 .h2 ASSUME_UNREC_CHARSET
 # If Lynx encounters a charset parameter it doesn't recognize, it will
 # replace the value given by ASSUME_UNREC_CHARSET (or a corresponding
@@ -503,6 +521,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #PREFERRED_LANGUAGE:en
 
+
 .h2 PREFERRED_CHARSET
 # PREFERRED_CHARSET specifies the character set in MIME notation (e.g.,
 # "ISO-8859-2", "ISO-8859-5") which Lynx will indicate you prefer in
@@ -521,6 +540,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #PREFERRED_CHARSET:
 
+
 .h1 Interaction
 
 .h2 URL_DOMAIN_PREFIXES
@@ -549,27 +569,34 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #URL_DOMAIN_PREFIXES:www.
 #URL_DOMAIN_SUFFIXES:.com,.edu,.net,.org
 
+
 .h2 FORMS_OPTIONS
 # Toggle whether the Options Menu is key-based or form-based;
 # the key-based version is available only if specified at compile time.
 #FORMS_OPTIONS:TRUE
 
+
 .h2 PARTIAL
 # Display partial pages while downloading
 #PARTIAL:TRUE
 
+
 .h2 PARTIAL_THRES
 # Set the threshold # of lines Lynx must render before it
 # redraws the screen in PARTIAL mode.  Anything < 0 implies
 # use of the screen size.
 #PARTIAL_THRES:-1
 
+
 .h2 SHOW_KB_RATE
 # While getting large files, Lynx shows the approximate rate of transfer.
 # Set this to change the units shown:
 # TRUE for KB/sec or FALSE for bytes/sec:  default is TRUE.
 #SHOW_KB_RATE:TRUE
 
+
+.h1 Timeouts
+
 .h2 INFOSECS
 .h2 MESSAGESECS
 .h2 ALERTSECS
@@ -590,6 +617,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #MESSAGESECS:2
 #ALERTSECS:3
 
+
 .h1 Appearance
 # These settings category control the appearance of Lynx's screen and the way
 # Lynx renders some tags.
@@ -606,6 +634,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #USE_SELECT_POPUPS:TRUE
 
+
 .h2 SHOW_CURSOR
 # SHOW_CURSOR controls whether or not the cursor is hidden or appears
 # over the current link in documents or the current option in popups.
@@ -620,6 +649,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #SHOW_CURSOR:FALSE
 
+
 .h2 BOLD_HEADERS
 # If BOLD_HEADERS is set to TRUE the HT_BOLD default style will be acted
 # upon for <H1> through <H6> headers.  The compilation default is FALSE
@@ -629,6 +659,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #BOLD_HEADERS:FALSE
 
+
 .h2 BOLD_H1
 # If BOLD_H1 is set to TRUE the HT_BOLD default style will be acted
 # upon for <H1> headers even if BOLD_HEADERS is FALSE.  The compilation
@@ -637,6 +668,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #BOLD_H1:FALSE
 
+
 .h2 BOLD_NAME_ANCHORS
 # If BOLD_NAME_ANCHORS is set to TRUE the content of anchors without
 # an HREF attribute, (i.e., anchors with a NAME or ID attribute) will
@@ -646,6 +678,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #BOLD_NAME_ANCHORS:FALSE
 
+
 .h1 Internal Behavior
 
 .h2 DEFAULT_CACHE_SIZE
@@ -677,6 +710,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #DEFAULT_CACHE_SIZE:10
 #DEFAULT_VIRTUAL_MEMORY_SIZE:512000
 
+
 .h2 SOURCE_CACHE
 # SOURCE_CACHE sets the source caching behavior for Lynx:
 # FILE causes Lynx to keep a temporary file for each cached document
@@ -692,6 +726,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #SOURCE_CACHE:NONE
 
+
 .h2 ALWAYS_RESUBMIT_POSTS
 # If ALWAYS_RESUBMIT_POSTS is set TRUE, Lynx always will resubmit forms
 # with method POST, dumping any cache from a previous submission of the
@@ -707,6 +742,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #ALWAYS_RESUBMIT_POSTS:FALSE
 
+
 .h1 HTML Parsing
 
 .h2 NO_ISMAP_IF_USEMAP
@@ -726,6 +762,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #NO_ISMAP_IF_USEMAP:FALSE
 
+
 .h2 SEEK_FRAG_MAP_IN_CUR
 # If SEEK_FRAG_MAP_IN_CUR is set FALSE, then USEMAP attribute values
 # (in IMG or OBJECT tags) consisting of only a fragment (USEMAP="#foo")
@@ -740,6 +777,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #SEEK_FRAG_MAP_IN_CUR:TRUE
 
+
 .h2 SEEK_FRAG_AREA_IN_CUR
 # If SEEK_FRAG_AREA_IN_CUR is set FALSE, then HREF attribute values
 # in AREA tags consisting of only a fragment (HREF="#foo") will be
@@ -751,6 +789,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #SEEK_FRAG_AREA_IN_CUR:TRUE
 
+
 .h1 CGI scripts
 # These settings control Lynx's ability to execute various types of scripts.
 
@@ -783,6 +822,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #LOCAL_EXECUTION_LINKS_ALWAYS_ON:FALSE
 #LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE:FALSE
 
+
 .h2 TRUSTED_EXEC
 # If LOCAL_EXECUTION_LINK_ON_BUT_NOT_REMOTE is TRUE, and no TRUSTED_EXEC
 # rule is defined, it defaults to "file://localhost/" and any lynxexec
@@ -830,6 +870,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #TRUSTED_EXEC:none
 
+
 .h2 ALWAYS_TRUSTED_EXEC
 # If EXEC_LINKS was defined, any lynxexec or lynxprog URL can be made
 # always enabled by an ALWAYS_TRUSTED_EXEC rule for it.  This is useful for
@@ -851,6 +892,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #ALWAYS_TRUSTED_EXEC:none
 
+
 .h2 TRUSTED_LYNXCGI
 # Unix:
 # =====
@@ -870,6 +912,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #TRUSTED_LYNXCGI:none
 
+
 .h2 LYNXCGI_ENVIRONMENT
 # Unix:
 # =====
@@ -886,6 +929,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #LYNXCGI_ENVIRONMENT:
 
+
 .h2 LYNXCGI_DOCUMENT_ROOT
 # Unix:
 # =====
@@ -901,7 +945,8 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #LYNXCGI_DOCUMENT_ROOT:
 
-.h1 Cookie Handling
+
+.h1 Cookies
 
 .h2 FORCE_SSL_COOKIES_SECURE
 # If FORCE_SSL_COOKIES_SECURE is set to TRUE, then SSL encrypted cookies
@@ -913,6 +958,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #FORCE_SSL_COOKIES_SECURE:FALSE
 
+
 .h1 Internal Behavior
 
 .h2 MAIL_SYSTEM_ERROR_LOGGING
@@ -924,6 +970,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #MAIL_SYSTEM_ERROR_LOGGING:FALSE
 
+
 .h2 CHECKMAIL
 # If CHECKMAIL is set to TRUE, the user will be informed (via a statusline
 # message) about the existence of any unread mail at startup of Lynx, and
@@ -943,6 +990,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #CHECKMAIL:FALSE
 
+
 .h1 News-groups
 
 .h2 NNTPSERVER
@@ -961,6 +1009,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #NNTPSERVER:news.server.dom
 
+
 .h2 LIST_NEWS_NUMBERS
 # If LIST_NEWS_NUMBERS is set TRUE, Lynx will use an ordered list and include
 # the numbers of articles in news listings, instead of using an unordered
@@ -968,6 +1017,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #LIST_NEWS_NUMBERS:FALSE
 
+
 .h2 LIST_NEWS_DATES
 # If LIST_NEWS_DATES is set TRUE, Lynx will include the dates of articles in
 # news listings.  The dates always are included in the articles, themselves.
@@ -975,6 +1025,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #LIST_NEWS_DATES:FALSE
 
+
 .h2 NEWS_CHUNK_SIZE
 .h2 NEWS_MAX_CHUNK
 # NEWS_CHUNK_SIZE and NEWS_MAX_CHUNK regulate the chunking of news article
@@ -996,6 +1047,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #NEWS_CHUNK_SIZE:30
 #NEWS_MAX_CHUNK:40
 
+
 .h2 NEWS_POSTING
 # Set NEWS_POSTING to FALSE if you do not want to support posting to
 # news groups via Lynx.  If left TRUE, Lynx will use its news gateway to
@@ -1014,6 +1066,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #NEWS_POSTING:TRUE
 
+
 .h2 LYNX_SIG_FILE
 # LYNX_SIG_FILE defines the name of a file containing a signature which
 # can be appended to email messages and news postings or followups.  The
@@ -1024,6 +1077,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #LYNX_SIG_FILE:.lynxsig
 
+
 .h1 Interaction
 # These settings control interaction of the user with lynx.
 
@@ -1035,6 +1089,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 # for the strip along which the scrollbar moves).
 #SCROLLBAR:FALSE
 
+
 .h2 SCROLLBAR_ARROW
 # If SCROLLBAR_ARROW is set TRUE, Lynx's scrollbar will have arrows at the
 # ends.  With mouse enabled, the arrows are clickable, and scroll the window by
@@ -1044,13 +1099,16 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 # the strip.
 #SCROLLBAR_ARROW:TRUE
 
+
 .h2 USE_MOUSE
 # If USE_MOUSE is set TRUE, Lynx (when configured with ncurses) will allow
 # the user to click with button-1 on links to select them.
 #USE_MOUSE:FALSE
 
+
 .h1 HTML Parsing
-# These settings control the way Lynx parses HTML.
+# These settings control the way Lynx parses invalid HTML
+# and how it may resolve such issues.
 
 .h2 COLLAPSE_BR_TAGS
 # If COLLAPSE_BR_TAGS is set FALSE, Lynx will not collapse serial BR tags.
@@ -1060,14 +1118,15 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #COLLAPSE_BR_TAGS:TRUE
 
+
 .h2 TAGSOUP
 # If TAGSOUP is set, Lynx uses the "Tag Soup DTD" rather than "SortaSGML".
 # The two approaches differ by the style of error detection and recovery.
 # Tag Soup DTD allows for improperly nested tags; SortaSGML is stricter.
 #TAGSOUP:FALSE
 
-.h1 Cookie Handling
-# These settings control support of cookies in lynx.
+
+.h1 Cookies
 
 .h2 SET_COOKIES
 # If SET_COOKIES is set FALSE, Lynx will ignore Set-Cookie headers
@@ -1084,6 +1143,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #SET_COOKIES:TRUE
 
+
 .h2 ACCEPT_ALL_COOKIES
 # If ACCEPT_ALL_COOKIES is set TRUE, Lynx will accept cookies from all
 # domains with no user interaction.  This is equivalent to automatically
@@ -1096,6 +1156,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #ACCEPT_ALL_COOKIES:FALSE
 
+
 .h2 COOKIE_ACCEPT_DOMAINS
 .h2 COOKIE_REJECT_DOMAINS
 # COOKIE_ACCEPT_DOMAINS and COOKIE_REJECT_DOMAINS are comma-delimited lists
@@ -1111,6 +1172,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #COOKIE_ACCEPT_DOMAINS:
 #COOKIE_REJECT_DOMAINS:
 
+
 .h2 COOKIE_LOOSE_INVALID_DOMAINS
 .h2 COOKIE_STRICT_INVALID_DOMAINS
 .h2 COOKIE_QUERY_INVALID_DOMAINS
@@ -1136,6 +1198,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #COOKIE_STRICT_INVALID_DOMAINS:
 #COOKIE_QUERY_INVALID_DOMAINS:
 
+
 .h2 PERSISTENT_COOKIES
 # PERSISTENT_COOKIES indicates that cookies should be read at startup from
 # the COOKIE_FILE, and saved at exit for storage between Lynx sessions.
@@ -1145,6 +1208,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #PERSISTENT_COOKIES:FALSE
 
+
 .h2 COOKIE_FILE
 # COOKIE_FILE is the default file from which persistent cookies are read
 # at startup (if the file exists), if Lynx was compiled with
@@ -1153,6 +1217,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #COOKIE_FILE:~/.lynx_cookies
 
+
 .h2 COOKIE_SAVE_FILE
 # COOKIE_SAVE_FILE is the default file in which persistent cookies are
 # stored at exit, if Lynx was compiled with EXP_PERSISTENT_COOKIES and the
@@ -1165,6 +1230,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #COOKIE_SAVE_FILE:~/.lynx_cookies
 
+
 .h1 Mail-related
 # The settings control mailing facilities of lynx.
 
@@ -1216,6 +1282,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #SYSTEM_MAIL:sendmail -f me@my.host -h my.host -r my.smtp.mailer -m SMTP
 
+
 .h2 MAIL_ADRS
 # VMS ONLY:
 # ========
@@ -1226,6 +1293,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #MAIL_ADRS:"IN%%""%s"""
 
+
 .h2 USE_FIXED_RECORDS
 # VMS ONLY:
 # ========
@@ -1240,9 +1308,11 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #USE_FIXED_RECORDS:TRUE
 
-.h1 Input
+
+.h1 Keyboard Input
 # These settings control the way Lynx interprets user input.
 
+
 .h2 VI_KEYS_ALWAYS_ON
 .h2 EMACS_KEYS_ALWAYS_ON
 # Vi or Emacs movement keys, i.e. familiar hjkl or ^N^P^F^B .
@@ -1250,6 +1320,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #VI_KEYS_ALWAYS_ON:FALSE
 #EMACS_KEYS_ALWAYS_ON:FALSE
 
+
 .h2 DEFAULT_KEYPAD_MODE
 # DEFAULT_KEYPAD_MODE may be set to NUMBERS_AS_ARROWS
 #                                or LINKS_ARE_NUMBERED
@@ -1263,6 +1334,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #DEFAULT_KEYPAD_MODE:NUMBERS_AS_ARROWS
 
+
 .h2 DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS
 # Obsolete form of DEFAULT_KEYPAD_MODE,
 # numbers work like arrows or numbered links.
@@ -1273,12 +1345,14 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS:TRUE
 
+
 .h2 CASE_SENSITIVE_ALWAYS_ON
 # The default search type.
 # This is a default that can be overridden by the user!
 #
 #CASE_SENSITIVE_ALWAYS_ON:FALSE
 
+
 .h1 Auxiliary Facilities
 
 .h2 DEFAULT_BOOKMARK_FILE
@@ -1300,6 +1374,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #DEFAULT_BOOKMARK_FILE:lynx_bookmarks.html
 
+
 .h2 MULTI_BOOKMARK_SUPPORT
 # If MULTI_BOOKMARK_SUPPORT is set TRUE, and BLOCK_MULTI_BOOKMARKS (see
 # below) is FALSE, and sub-bookmarks exist, all bookmark operations will
@@ -1322,6 +1397,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #MULTI_BOOKMARK_SUPPORT:FALSE
 
+
 .h2 BLOCK_MULTI_BOOKMARKS
 # If BLOCK_MULTI_BOOKMARKS is set TRUE, multiple bookmark support will
 # be forced off, and cannot to toggled on via the 'o'ptions menu.  The
@@ -1331,6 +1407,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #BLOCK_MULTI_BOOKMARKS:FALSE
 
+
 .h1 Interaction
 
 .h2 DEFAULT_USER_MODE
@@ -1341,6 +1418,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #DEFAULT_USER_MODE:NOVICE
 
+
 .h1 External Programs
 
 .h2 DEFAULT_EDITOR
@@ -1356,17 +1434,15 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #DEFAULT_EDITOR:
 
+
 .h2 SYSTEM_EDITOR
 # SYSTEM_EDITOR behaves the same as DEFAULT_EDITOR,
 # except that it can't be changed by users.
 #
 #SYSTEM_EDITOR:
 
-.h1 Internal Behavior
-# These settings control internal lynx behavior - the way it interacts with the
-# operating system and Internet.  Modifying these settings will not change
-# the rendition of documents that you browse with lynx, but can change various
-# delays and resource utilization.
+
+.h1 Proxy
 
 .h2 HTTP_PROXY
 .h2 HTTPS_PROXY
@@ -1409,6 +1485,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #cso_proxy:http://some.server.dom:port/
 #no_proxy:host.domain.dom
 
+
 .h2 NO_PROXY
 # The no_proxy variable can be a comma-separated list of strings defining
 # no-proxy zones in the DNS domain name space.  If a tail substring of the
@@ -1427,6 +1504,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 # for the .mil domain as well as the .il domain.  If the entry is '.il' this
 # will not happen.
 
+
 .h1 External Programs
 
 .h2 PRINTER
@@ -1533,6 +1611,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 .ex
 #DOWNLOADER:Save OS/390 binary file: iconv -f IBM-1047 -t ISO8859-1 %s >%s:FALSE
 
+
 .h1 Interaction
 
 .h2 NO_DOT_FILES
@@ -1546,6 +1625,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #NO_DOT_FILES:TRUE
 
+
 .h1 Internal Behavior
 
 .h2 NO_FROM_HEADER
@@ -1558,6 +1638,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #NO_FROM_HEADER:TRUE
 
+
 .h2 NO_REFERER_HEADER
 # If NO_REFERER_HEADER is TRUE, Referer headers never will be sent in
 # transmissions to servers.  Lynx normally sends the URL of the document
@@ -1569,6 +1650,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #NO_REFERER_HEADER:FALSE
 
+
 .h1 Internal Behavior
 
 .h2 NO_FILE_REFERER
@@ -1581,6 +1663,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #NO_FILE_REFERER:FALSE
 
+
 .h2 REFERER_WITH_QUERY
 # REFERER_WITH_QUERY controls what happens when the URL in a Referer
 # header to be sent would contain a query part in the form of a '?'
@@ -1604,6 +1687,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #REFERER_WITH_QUERY:DROP
 
+
 .h1 Appearance
 
 .h2 VERBOSE_IMAGES
@@ -1617,7 +1701,6 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #VERBOSE_IMAGES:TRUE
 
-.h1 HTML Parsing
 
 .h2 MAKE_LINKS_FOR_ALL_IMAGES
 # If MAKE_LINKS_FOR_ALL_IMAGES is TRUE, all images will be given links
@@ -1649,7 +1732,6 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #MAKE_PSEUDO_ALTS_FOR_INLINES:TRUE
 
-.h1 Appearance
 
 .h2 SUBSTITUTE_UNDERSCORES
 # If SUBSTITUTE_UNDERSCORES is TRUE, the _underline_ format will be used
@@ -1660,6 +1742,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #SUBSTITUTE_UNDERSCORES:FALSE
 
+
 .h1 Interaction
 
 .h2 QUIT_DEFAULT_YES
@@ -1670,6 +1753,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #QUIT_DEFAULT_YES:TRUE
 
+
 .h1 HTML Parsing
 
 .h2 HISTORICAL_COMMENTS
@@ -1684,6 +1768,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 #HISTORICAL_COMMENTS:FALSE
 
+
 .h2 MINIMAL_COMMENTS
 # If MINIMAL_COMMENTS is TRUE, Lynx will not use Valid comment parsing
 # of '--' pairs as serial comments within an overall comment element,
@@ -1703,6 +1788,7 @@ DEFAULT_INDEX_FILE:http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html
 #
 MINIMAL_COMMENTS:TRUE
 
+
 .h2 SOFT_DQUOTES
 # If SOFT_DQUOTES is TRUE, Lynx will emulate the invalid behavior of
 # treating '>' as a co-terminator of a double-quoted attribute value
@@ -1714,6 +1800,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #SOFT_DQUOTES:FALSE
 
+
 .h2 STRIP_DOTDOT_URLS
 # If STRIP_DOTDOT_URLS is TRUE, Lynx emulates the invalid behavior of many
 # browsers to strip a leading "../" segment from relative URLs in HTML
@@ -1732,6 +1819,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #STRIP_DOTDOT_URLS:TRUE
 
+
 .h1 Appearance
 
 .h2 ENABLE_SCROLLBACK
@@ -1757,6 +1845,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #ENABLE_SCROLLBACK:FALSE
 
+
 .h2 SCAN_FOR_BURIED_NEWS_REFS
 # If SCAN_FOR_BURIED_NEWS_REFS is set to TRUE, Lynx will scan the bodies
 # of news articles for buried article and URL references and convert them
@@ -1771,6 +1860,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #SCAN_FOR_BURIED_NEWS_REFS:TRUE
 
+
 .h2 PREPEND_BASE_TO_SOURCE
 # If PREPEND_BASE_TO_SOURCE is set to FALSE, Lynx will not prepend a
 # Request URL comment and BASE element to text/html source files when
@@ -1782,6 +1872,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #PREPEND_BASE_TO_SOURCE:TRUE
 
+
 # MIME types and viewers!
 #
 # file extensions may be assigned to MIME types using
@@ -1803,6 +1894,7 @@ MINIMAL_COMMENTS:TRUE
 #       (see below) for those MIME types requires a certain suffix for the
 #       temporary file passed to it.]
 
+
 .h1 External Programs
 
 .h2 GLOBAL_EXTENSION_MAP
@@ -1824,6 +1916,7 @@ MINIMAL_COMMENTS:TRUE
 #	VMS (sought in user's sys$login directory):
 #PERSONAL_EXTENSION_MAP:mime.types
 
+
 .h2 SUFFIX_ORDER
 # With SUFFIX_ORDER the precedence of suffix mappings can be changed.
 # Two kinds of settings are recognized:
@@ -1853,6 +1946,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #SUFFIX_ORDER:PRECEDENCE_OTHER
 
+
 .h2 SUFFIX
 # The SUFFIX definition takes the form of:
 #
@@ -1955,6 +2049,7 @@ MINIMAL_COMMENTS:TRUE
 #SUFFIX:.html:text/html
 #SUFFIX:.txt:text/plain
 
+
 .h2 XLOADIMAGE_COMMAND
 # VMS:
 # ====
@@ -2047,6 +2142,7 @@ MINIMAL_COMMENTS:TRUE
 #VIEWER:image/jpeg:xli %s&:XWINDOWS
 #VIEWER:video/mpeg:mpeg_play %s &:XWINDOWS
 
+
 .h2 GLOBAL_MAILCAP
 .h2 PERSONAL_MAILCAP
 # The global and personal MAILCAP files allow you to specify external
@@ -2065,7 +2161,8 @@ MINIMAL_COMMENTS:TRUE
 # 	Sought in user's home (Unix) or sys$login (VMS) directory.
 #PERSONAL_MAILCAP:.mailcap
 
-.h1 Input
+
+.h1 Keyboard Input
 
 .h2 KEYBOARD_LAYOUT
 # If your terminal (or terminal emulator, or operating system) does not
@@ -2080,6 +2177,7 @@ MINIMAL_COMMENTS:TRUE
 # This feature is ifdef'd with EXP_KEYBOARD_LAYOUT.
 #KEYBOARD_LAYOUT:JCUKEN Cyrillic, for AT 101-key kbd
 
+
 .h2 KEYMAP
 # Key remapping definitions!
 #
@@ -2340,6 +2438,7 @@ MINIMAL_COMMENTS:TRUE
 #KEYMAP:^U::ERASE:1	# set line-edit binding for ^U, for default style
 #KEYMAP:^[::SETM2:3	# use escape key as modifier - works only sometimes
 
+
 .h2 JUMPFILE
 # Alternate jumps files can be defined and mapped to keys here.  If the
 # keys have already been mapped, then those mappings will be replaced,
@@ -2357,6 +2456,7 @@ MINIMAL_COMMENTS:TRUE
 .ex
 #JUMPFILE:/Lynx_Dir/ips.html:i:IP or Interest group (? for list):
 
+
 .h1 External Programs
 # These settings control the ability of Lynx to invoke various programs for
 # the user.
@@ -2382,8 +2482,10 @@ MINIMAL_COMMENTS:TRUE
 #
 #CSWING_PATH:swing
 
+
 .h1 Internal Behavior
 
+.h2 AUTO_UNCACHE_DIRLISTS
 # AUTO_UNCACHE_DIRLISTS determines when local file directory listings are
 # automatically regenerated (by re-reading the actual directory from disk). 
 # Set the value to 0 to avoid automatic regeneration in most cases.  This is
@@ -2401,6 +2503,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #AUTO_UNCACHE_DIRLISTS:2
 
+
 .h1 Appearance
 
 .h2 LIST_FORMAT
@@ -2448,6 +2551,7 @@ MINIMAL_COMMENTS:TRUE
 .ex
 #LIST_FORMAT:    %p %4l %-8.8o %-8.8g %7s %-12.12d %a
 
+
 .h1 External Programs
 
 .h2 DIRED_MENU
@@ -2559,6 +2663,7 @@ MINIMAL_COMMENTS:TRUE
 #DIRED_MENU:TAG::Remove all tagged files and directories.::LYNXDIRED://REMOVE_TAGGED
 #DIRED_MENU:TAG::Untag all tagged items.::LYNXDIRED://CLEAR_TAGGED
 
+
 .h1 Internal Behavior
 
 .h2 NONRESTARTING_SIGWINCH
@@ -2593,6 +2698,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #NONRESTARTING_SIGWINCH:FALSE
 
+
 .h2 NO_FORCED_CORE_DUMP
 # Unix ONLY:
 #===========
@@ -2608,6 +2714,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #NO_FORCED_CORE_DUMP:FALSE
 
+
 .h1 Appearance
 
 .h2 COLOR
@@ -2649,6 +2756,7 @@ MINIMAL_COMMENTS:TRUE
 #COLOR:6:red:white
 #COLOR:7:magenta:cyan
 
+
 .h2 ASSUMED_COLOR
 # If built with a library that recognizes default colors, initializes it
 # to assume the corresponding foreground and background colors.  Default
@@ -2661,6 +2769,7 @@ MINIMAL_COMMENTS:TRUE
 # The first value given is the foreground, the second is the background.
 #ASSUMED_COLOR:default:default
 
+
 .h1 External Programs
 
 .h2 EXTERNAL
@@ -2702,6 +2811,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #EXTERNAL:ftp:wget %s &:TRUE
 
+
 .h1 Internal Behavior
 
 .h2 RULE
@@ -2724,10 +2834,13 @@ MINIMAL_COMMENTS:TRUE
 #	RULE:Fail	finger:*		     # but not others
 #	RULE:Redirect	http://old.server/*	http://new.server/*
 
+
 .h1 Appearance
 
-.h2 HTMLSRC_ATTRNAME_XFORM
-.h2 HTMLSRC_TAGNAME_XFORM
+.h2 PRETTYSRC
+# Enable pretty source view
+#PRETTYSRC:FALSE
+
 .h2 PRETTYSRC_SPEC
 # Pretty source view settings. These settings are in effect when -prettysrc
 # is specified.
@@ -2827,15 +2940,17 @@ MINIMAL_COMMENTS:TRUE
 #PRETTYSRC_SPEC:BADTAG::
 #PRETTYSRC_SPEC:BADATTR::
 #PRETTYSRC_SPEC:SGMLSPECIAL:b:!b
-#
-# Other source-view related options:
-#
+
+
+.h2 HTMLSRC_ATTRNAME_XFORM
+.h2 HTMLSRC_TAGNAME_XFORM
 # Options HTMLSRC_TAGNAME_XFORM and HTMLSRC_ATTRNAME_XFORM control the way the
 # names of tags and names of attributes are transformed correspondingly.
 # Possible values: 0 - lowercase, 1 - leave as is, 2 - uppercase.
 #HTMLSRC_TAGNAME_XFORM:2
 #HTMLSRC_ATTRNAME_XFORM:2
 
+
 .h2 PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING
 # PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING - pretty source view setting
 # If "keypad mode" in 'O'ptions screen is "Links are numbered" or
@@ -2846,6 +2961,7 @@ MINIMAL_COMMENTS:TRUE
 # Default is FALSE.
 #PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING:FALSE
 
+
 .h1 HTML Parsing
 
 .h2 FORCE_EMPTY_HREFLESS_A
@@ -2860,6 +2976,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #FORCE_EMPTY_HREFLESS_A:FALSE
 
+
 .h1 Appearance
 
 .h2 JUSTIFY
@@ -2883,6 +3000,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #JUSTIFY_MAX_VOID_PERCENT:35
 
+
 .h1 Interaction
 
 .h2 TEXTFIELDS_NEED_ACTIVATION
@@ -2909,13 +3027,21 @@ MINIMAL_COMMENTS:TRUE
 #
 #LEFTARROW_IN_TEXTFIELD_PROMPT:FALSE
 
-.h1 Internal Behavior
+
+.h1 Timeouts
 
 .h2 CONNECT_TIMEOUT
 # Specifies (in seconds) connect timeout. Not available under DOS (use
 # sockdelay parameter of wattcp). Default value is rather huge.
 #CONNECT_TIMEOUT:18000
 
+
+.h1 Internal Behavior
+# These settings control internal lynx behavior - the way it interacts with the
+# operating system and Internet.  Modifying these settings will not change
+# the rendition of documents that you browse with lynx, but can change various
+# delays and resource utilization.
+
 .h2 FTP_PASSIVE
 # Set FTP_PASSIVE to TRUE if you want to use passive mode ftp transfers.
 # You might have to do this if you're behind a restrictive firewall.
diff --git a/makefile.in b/makefile.in
index 9e37e98f..f9cc4258 100644
--- a/makefile.in
+++ b/makefile.in
@@ -230,6 +230,7 @@ clean:
 @INTLDIR_MAKE@	cd intl && $(MAKE) $@
 @MSG_DIR_MAKE@	cd po && $(MAKE) $@
 	rm -f *.b src/lynx$x *.leaks cfg_defs.h LYHelp.h lint.*
+@LYNXCFG_MAKE@	-rm -f alphatoc.html body.html cattoc.html
 	rm -f help_files.sed
 	rm -f core *.core
 
@@ -337,8 +338,11 @@ help_files.sed : makefile $(srcdir)/lynx_help/help_files.txt
 	@echo Constructing sed-script $@
 	@-rm -f $@ help_files.tmp
 	@cat $(srcdir)/lynx_help/help_files.txt > help_files.tmp
-@LYNXCFG_MAKE@	@echo 's!http://www.hippo.ru/%7Ehvv/lynxcfg_toc.html#alphatoc!alphatoc.html$(COMPRESS_EXT)!' >> help_files.tmp
-@LYNXCFG_MAKE@	@echo 's!http://www.hippo.ru/%7Ehvv/lynxcfg_toc.html!cattoc.html$(COMPRESS_EXT)!' >> help_files.tmp
+@LYNXCFG_MAKE@	@echo 's!http://www.hippo.ru/%7Ehvv/lynxcfg_toc.html#alphatoc!alphatoc.html!g' >> help_files.tmp
+@LYNXCFG_MAKE@	@echo 's!http://www.hippo.ru/%7Ehvv/lynxcfg_toc.html!cattoc.html!g' >> help_files.tmp
+@LYNXCFG_MAKE@	@echo 's!alphatoc\.html!alphatoc.html$(COMPRESS_EXT)!g' >> help_files.tmp
+@LYNXCFG_MAKE@	@echo 's!cattoc\.html!cattoc.html$(COMPRESS_EXT)!g' >> help_files.tmp
+@LYNXCFG_MAKE@	@echo 's!body\.html!body.html$(COMPRESS_EXT)!g' >> help_files.tmp
 	@ECHO_CC@sed	-e '/^#/d' -e '/^$$/d' \
 		-e 's%\(.*\)=\(.*\@.*\)$$%s=@\1@=\2=g%' \
 		-e 's%\(.*\)=\(http:.*\)$$%s=@\1@=\2=g%' \
@@ -358,9 +362,11 @@ install-help : help_files.sed $(HELPDIR)
 @LYNXCFG_MAKE@	@echo 'Making htmlized lynx.cfg'
 @LYNXCFG_MAKE@	@-rm -f alphatoc.html body.html cattoc.html
 @LYNXCFG_MAKE@	perl $(srcdir)/scripts/cfg2html.pl $(srcdir)/lynx.cfg
-@LYNXCFG_MAKE@	mv alphatoc.html body.html cattoc.html $(HELPDIR)
 	@echo Translating/copying html files
 	@cat help_files.sed > $(HELPDIR)/help_files.sed
+@LYNXCFG_MAKE@	@$(SHELL) -c 'for f in alphatoc.html body.html cattoc.html ; do \
+@LYNXCFG_MAKE@		sed -f $(HELPDIR)/help_files.sed $$f > $(HELPDIR)/$$f ; \
+@LYNXCFG_MAKE@		done'
 	@ECHO_CC@$(SHELL) -c 'cd $(srcdir)/lynx_help && ( \
 		dirs=keystrokes; \
 		(cd $(HELPDIR) && mkdir $$dirs 2>/dev/null ) ; \
diff --git a/makefile.msc b/makefile.msc
index a7887ef9..2e0bd75f 100644
--- a/makefile.msc
+++ b/makefile.msc
@@ -11,13 +11,18 @@ WWW_DIR = WWW\Library\Implementation
 # pdcurses.lib panel.lib dirent.obj curses.h panel.h dirent.h
 ETC_LIB = lib
 
+# Uncomment the CS_DEFS and CS_OBJS lines if you wish to build the color-style
+# configuration.
+#CS_DEFS = /D "CHAR_BIT=8" /D "USE_HASH" /D "USE_COLOR_STYLE" /D "LINKEDSTYLES"
+#CS_OBJS = "LYHash.obj" "LYStyle.obj"
+
 INCLUDES = \
  /I "." \
  /I "$(SRC_DIR)" \
  /I "$(SRC_DIR)\chrtrans" \
  /I "$(WWW_DIR)" \
  /I "$(ETC_LIB)"
-DEFS = \
+DEFS = $(CS_DEFS) \
  /D "__WIN32__" \
  /D "_CONSOLE" \
  /D "_MBCS" \
@@ -69,7 +74,7 @@ LIBS     = kernel32.lib user32.lib wsock32.lib /NODEFAULTLIB:libc\
 COMPILE = $(CC) $(CFLAGS) $(INCLUDES) $(DEFS)
 LINK    = $(LD) $(LDFLAGS) /out:$@
 
-OBJS = \
+OBJS = $(CS_OBJS) \
 	"DefaultStyle.obj" \
 	"GridText.obj" \
 	"HTAABrow.obj" \
diff --git a/scripts/cfg2html.pl b/scripts/cfg2html.pl
index 5a0ca9a8..8e5dcc31 100755
--- a/scripts/cfg2html.pl
+++ b/scripts/cfg2html.pl
@@ -370,7 +370,6 @@ EOF
 	for $n (0..$#major) {
 		printf FP "\n";
 		printf FP "<h2><a name=\"%s\">%s</a></h2>\n", $cats{$major[$n]}, $major[$n];
-		printf FP "<h3>Description</h3>\n%s\n", $descs{$major[$n]};
 		$c = $index{$major[$n]};
 		if ( $c ne "" ) {
 			@c = split(/\n/, $c);
diff --git a/src/GridText.c b/src/GridText.c
index eced2386..a6f4f88b 100644
--- a/src/GridText.c
+++ b/src/GridText.c
@@ -3526,7 +3526,7 @@ PUBLIC void HText_appendCharacter ARGS2(
     if ((HTCJK == JAPANESE) && (text->detected_kcode != DET_MIXED) &&
 	(text->specified_kcode != SJIS) && (text->specified_kcode != EUC)) {
 	unsigned char c;
-	int save_d_kcode;
+	enum _detected_kcode save_d_kcode;
 
 	c = ch;
 	save_d_kcode = text->detected_kcode;
@@ -3612,6 +3612,9 @@ PUBLIC void HText_appendCharacter ARGS2(
 	    case DET_MIXED:
 		CTRACE((tfp, "TH_JP_AUTO_DETECT: This document's kcode seems mixed!\n"));
 		break;
+	    default:
+		CTRACE((tfp, "TH_JP_AUTO_DETECT: This document's kcode is unexpected!\n"));
+		break;
 	    }
 	}
     }
diff --git a/src/HTFWriter.c b/src/HTFWriter.c
index 6e7c78ae..aadd1dbd 100644
--- a/src/HTFWriter.c
+++ b/src/HTFWriter.c
@@ -37,6 +37,10 @@ extern int exec_command(char * cmd, int wait_flag); /* xsystem.c */
 #include <LYLeaks.h>
 #include <LYKeymap.h>
 
+#ifdef EXP_PERSISTENT_COOKIES 
+#include <LYCookie.h>
+#endif
+
 PUBLIC char * WWW_Download_File=NULL; /* contains the name of the temp file
 				      ** which is being downloaded into
 				      */
@@ -421,6 +425,14 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me)
 	if (me->anchor->FileCache)
 	    remove(me->anchor->FileCache);
 	FREE(me);
+#ifdef EXP_PERSISTENT_COOKIES 
+	/* 
+	 *  We want to save cookies picked up when in source 
+	 *  mode.  ... 
+	 */ 
+	if (persistent_cookies) 
+	    LYStoreCookies(LYCookieSaveFile); 
+#endif /* EXP_PERSISTENT_COOKIES */ 
 	exit_immediately(0);
     }
 
diff --git a/src/HTInit.c b/src/HTInit.c
index 76103f28..151863b8 100644
--- a/src/HTInit.c
+++ b/src/HTInit.c
@@ -343,7 +343,7 @@ PRIVATE int ProcessMailcapEntry ARGS2(
     mc->printcommand = NULL;
     mc->contenttype = NULL;
     StrAllocCopy(mc->contenttype, rawentry);
-    mc->quality = 1.0;
+    mc->quality = (float) 1.0;
     mc->maxbytes = 0;
     t = GetCommand(s, &mc->command);
     if (!t) {
diff --git a/src/LYCharUtils.c b/src/LYCharUtils.c
index 48eecd5f..b3e09e74 100644
--- a/src/LYCharUtils.c
+++ b/src/LYCharUtils.c
@@ -1661,10 +1661,10 @@ PUBLIC char ** LYUCFullyTranslateString ARGS9(
 	} what = P_text;
 #ifdef KANJI_CODE_OVERRIDE
     static unsigned char sjis_1st = '\0';
-#endif
 #ifdef CONV_JISX0201KANA_JISX0208KANA
     unsigned char sjis_str[3];
 #endif
+#endif
 
     /*
     **	Make sure we have a non-empty string. - FM
@@ -2789,7 +2789,7 @@ PUBLIC void LYHandleMETA ARGS4(
 		    me->node_anchor->no_cache = TRUE;
 		    HText_setNoCache(me->text);
 		}
-	    } else if (LYmktime(content, FALSE) <= 0) {
+	    } else if (LYmktime(content, FALSE) == 0) {
 		/*
 		 *  We don't have a Date header, and
 		 *  the value is in past for us. - FM
diff --git a/src/LYCurses.c b/src/LYCurses.c
index e475043d..f74b38b3 100644
--- a/src/LYCurses.c
+++ b/src/LYCurses.c
@@ -944,7 +944,7 @@ PUBLIC void lynx_enable_mouse ARGS1(int,state)
     SLtt_flush_output ();
 #else
 
-#if defined(WIN_EX) && defined(PDCURSES)
+#if defined(WIN_EX) && defined(PDCURSES_MOUSE_VERSION)
     if (state)
     {
 	SetConsoleMode(hConIn, ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT);
@@ -984,9 +984,9 @@ PUBLIC void lynx_enable_mouse ARGS1(int,state)
     } else
 	mousemask(0, NULL);
 #endif /* NCURSES_MOUSE_VERSION */
-#endif /* WIN_EX and PDCURSES */
+#endif /* WIN_EX and PDCURSES_MOUSE_VERSION */
 
-#if defined(PDCURSES)
+#if defined(PDCURSES_MOUSE_VERSION)
     if (state)
 	mouse_set(
 	    	BUTTON1_CLICKED | BUTTON1_PRESSED | BUTTON1_RELEASED |
diff --git a/src/LYCurses.h b/src/LYCurses.h
index 882e3d8f..67d14698 100644
--- a/src/LYCurses.h
+++ b/src/LYCurses.h
@@ -105,13 +105,6 @@
 #define USE_KEYMAPS		1
 #endif
 
-#ifndef getbegx
-#define getbegx(win) ((win)->_begx)
-#endif
-#ifndef getbegy
-#define getbegy(win) ((win)->_begy)
-#endif
-
 #else
 # if defined(VMS) && defined(__GNUC__)
 #  include <LYGCurses.h>
@@ -128,6 +121,13 @@
 extern void LYsubwindow PARAMS((WINDOW * param));
 #endif /* NCURSES */
 
+/*
+ * PDCurses' mouse code does nothing in the DJGPP configuration.
+ */
+#if defined(PDCURSES) && !defined(__DJGPP__)
+#define PDCURSES_MOUSE_VERSION 1
+#endif
+
 #ifdef VMS
 extern void VMSbox PARAMS((WINDOW *win, int height, int width));
 #else
@@ -135,6 +135,21 @@ extern void LYbox PARAMS((WINDOW *win, BOOLEAN formfield));
 #endif /* VMS */
 #endif /* USE_SLANG */
 
+/*
+ * Useful macros not in PDCurses or very old ncurses headers.
+ */
+#ifndef getattrs
+#define getattrs(win) ((win)->_attrs)
+#endif
+#ifndef getbegx
+#define getbegx(win) ((win)->_begx)
+#endif
+#ifndef getbegy
+#define getbegy(win) ((win)->_begy)
+#endif
+#ifndef getbkgd
+#define getbkgd(win) ((win)->_bkgd)
+#endif
 
 /* Both slang and curses: */
 #ifndef TRUE
diff --git a/src/LYForms.c b/src/LYForms.c
index 4a3ae9d4..0ff32863 100644
--- a/src/LYForms.c
+++ b/src/LYForms.c
@@ -462,11 +462,11 @@ again:
 	    ch = 7;
 	}
 #endif /* VMS */
-#  if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES)
+#  if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES_MOUSE_VERSION)
 	if (ch != -1 && (ch & LKC_ISLAC) && !(ch & LKC_ISLECLAC)) /* already lynxactioncode? */
 	    break;	/* @@@ maybe move these 2 lines outside ifdef -kw */
 	if (ch == MOUSE_KEY) {		/* Need to process ourselves */
-#if defined(PDCURSES)
+#if defined(PDCURSES_MOUSE_VERSION)
 	    int curx, cury;
 
 	    request_mouse_pos();
@@ -493,7 +493,7 @@ again:
 		} else
 		    ch = RTARROW;
 	    }
-#endif /* PDCURSES */
+#endif /* PDCURSES_MOUSE_VERSION */
 	    else {
 		/*  Mouse event passed to us as MOUSE_KEY, and apparently
 		 *  not on this field's line?  Something is not as it
@@ -506,7 +506,7 @@ again:
 	    }
 	    last_xlkc = -1;
 	} else
-#  endif	/* defined NCURSES_MOUSE_VERSION || PDCURSES */
+#  endif	/* defined NCURSES_MOUSE_VERSION || PDCURSES_MOUSE_VERSION */
 	{
 	    if (!(ch & LKC_ISLECLAC))
 		ch |= MyEdit.current_modifiers;
diff --git a/src/LYHistory.c b/src/LYHistory.c
index 3ffbe9d0..b318aa3e 100644
--- a/src/LYHistory.c
+++ b/src/LYHistory.c
@@ -837,7 +837,7 @@ PRIVATE void to_stack ARGS1(char *, str)
     /*
      *  Cycle buffer:
      */
-    if (topOfStack == STATUSBUFSIZE) {
+    if (topOfStack >= STATUSBUFSIZE) {
 	topOfStack = 0;
     }
 
@@ -853,6 +853,9 @@ PRIVATE void to_stack ARGS1(char *, str)
 	atexit(free_messages_stack);
     }
 #endif
+    if (topOfStack >= STATUSBUFSIZE) {
+	topOfStack = 0;
+    }
 }
 
 
@@ -873,7 +876,7 @@ PUBLIC void LYstatusline_messages_on_exit ARGS1(
      * probably a single message but let's do it.
      */
     i = topOfStack - 1;
-    while (++i <= STATUSBUFSIZE) {
+    while (++i < STATUSBUFSIZE) {
 	if (buffstack[i] != NULL) {
 	    StrAllocCat(*buf, buffstack[i]);
 	    StrAllocCat(*buf, "\n");
diff --git a/src/LYMain.c b/src/LYMain.c
index fdc415fd..58807e7b 100644
--- a/src/LYMain.c
+++ b/src/LYMain.c
@@ -773,6 +773,29 @@ PRIVATE int argncmp ARGS2(
 #endif
 }
 
+PRIVATE void tildeExpand ARGS2(
+	char **,	pathname,
+	BOOLEAN,	embedded)
+{
+    char *temp = embedded
+		? (*pathname != 0
+		    ? strchr(*pathname, '~')
+		    : 0)
+		: *pathname;
+
+    if (temp != NULL
+     && temp[0] == '~'
+     && temp[1] == '/'
+     && temp[2] != '\0') {
+	temp = NULL;
+	StrAllocCopy(temp, *pathname + 2);
+	StrAllocCopy(*pathname, wwwName(Home_Dir()));
+	LYAddPathSep(pathname);
+	StrAllocCat(*pathname, temp);
+	FREE(temp);
+    }
+}
+
 /*
  * Wow!  Someone wants to start up Lynx.
  */
@@ -1007,19 +1030,11 @@ PUBLIC int main ARGS2(
     }
 #endif
 
-    if ((cp = strchr(lynx_temp_space, '~')) != 0
 #ifdef WIN_EX	/* for Windows 2000 ... 1999/08/23 (Mon) 08:24:35 */
-	 && (access(lynx_temp_space, 0) != 0)
+    if (access(lynx_temp_space, 0) != 0)
 #endif
-      ) {
-	*(cp++) = '\0';
-	StrAllocCopy(temp, lynx_temp_space);
-	LYTrimPathSep(temp);
-	StrAllocCat(temp, wwwName(Home_Dir()));
-	StrAllocCat(temp, cp);
-	StrAllocCopy(lynx_temp_space, temp);
-	FREE(temp);
-    }
+	tildeExpand(&lynx_temp_space, TRUE);
+
     if ((cp = strstr(lynx_temp_space, "$USER")) != NULL) {
 	char *cp1;
 
@@ -1408,22 +1423,8 @@ PUBLIC int main ARGS2(
     if (!lynx_cfg_file)
 	StrAllocCopy(lynx_cfg_file, LYNX_CFG_FILE);
 
-    /*
-     *	Convert a '~' in the configuration file path to $HOME.
-     */
 #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] == '~') && LYIsPathSep(lynx_cfg_file[1]))
-     {
-#ifdef VMS
-	StrAllocCopy(temp, HTVMS_wwwName(Home_Dir()));
-#else
-	StrAllocCopy(temp, Home_Dir());
-#endif /* VMS */
-	StrAllocCat(temp, lynx_cfg_file + 1);
-	StrAllocCopy(lynx_cfg_file, temp);
-	FREE(temp);
-     }
+    tildeExpand(&lynx_cfg_file, FALSE);
 #endif
 
     /*
@@ -1493,22 +1494,8 @@ PUBLIC int main ARGS2(
     if (!lynx_lss_file)
 	StrAllocCopy(lynx_lss_file, LYNX_LSS_FILE);
 
-    /*
-     *	Convert a '~' in the lynx-style file path to $HOME.
-     */
-    if ((cp = strchr(lynx_lss_file, '~'))) {
-	*(cp++) = '\0';
-	StrAllocCopy(temp, lynx_lss_file);
-	LYTrimPathSep(temp);
-#ifdef VMS
-	StrAllocCat(temp, HTVMS_wwwName(Home_Dir()));
-#else
-	StrAllocCat(temp, Home_Dir());
-#endif /* VMS */
-	StrAllocCat(temp, cp);
-	StrAllocCopy(lynx_lss_file, temp);
-	FREE(temp);
-    }
+    tildeExpand(&lynx_lss_file, TRUE);
+
     /*
      *	If the lynx-style file is not available,
      *	inform the user and exit.
@@ -1632,32 +1619,16 @@ PUBLIC int main ARGS2(
      */
     if (persistent_cookies) {
 	if(LYCookieFile == NULL) {
-	   LYAddPathToHome(LYCookieFile = malloc(LY_MAXPATH), LY_MAXPATH, COOKIE_FILE);
+	    LYAddPathToHome(LYCookieFile = malloc(LY_MAXPATH), LY_MAXPATH, COOKIE_FILE);
 	} else {
-	    if (LYCookieFile[0] == '~' && LYCookieFile[1] == '/' &&
-		LYCookieFile[2] != '\0') {
-		temp = NULL;
-		StrAllocCopy(temp, LYCookieFile + 2);
-		StrAllocCopy(LYCookieFile, wwwName(Home_Dir()));
-		LYAddPathSep(&LYCookieFile);
-		StrAllocCat(LYCookieFile, temp);
-		FREE(temp);
-	    }
+	    tildeExpand(&LYCookieFile, FALSE);
 	}
 	LYLoadCookies(LYCookieFile);
     }
 
     /* tilde-expand LYCookieSaveFile */
     if (LYCookieSaveFile != NULL) {
-	if (LYCookieSaveFile[0] == '~' && LYCookieSaveFile[1] == '/' &&
-	  LYCookieSaveFile[2] != '\0') {
-	    temp = NULL;
-	    StrAllocCopy(temp, LYCookieSaveFile + 2);
-	    StrAllocCopy(LYCookieSaveFile, wwwName(Home_Dir()));
-	    LYAddPathSep(&LYCookieSaveFile);
-	    StrAllocCat(LYCookieSaveFile, temp);
-	    FREE(temp);
-	}
+	tildeExpand(&LYCookieSaveFile, FALSE);
     }
 
     /*
@@ -1697,15 +1668,7 @@ PUBLIC int main ARGS2(
 	FREE(lynx_save_space);
     }
     if (lynx_save_space) {
-	if ((cp = strchr(lynx_save_space, '~')) != NULL) {
-	    *(cp++) = '\0';
-	    StrAllocCopy(temp, lynx_save_space);
-	    LYTrimPathSep(temp);
-	    StrAllocCat(temp, wwwName(Home_Dir()));
-	    StrAllocCat(temp, cp);
-	    StrAllocCopy(lynx_save_space, temp);
-	    FREE(temp);
-	}
+	tildeExpand(&lynx_save_space, TRUE);
 #ifdef VMS
 	LYLowerCase(lynx_save_space);
 	if (strchr(lynx_save_space, '/') != NULL) {
@@ -3654,7 +3617,7 @@ treated '>' as a co-terminator for double-quotes and tags"
       "underscore",	TOGGLE_ARG,		&use_underscore,
       "toggles use of _underline_ format in dumps"
    ),
-#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES) || defined(USE_SLANG_MOUSE)
+#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES_MOUSE_VERSION) || defined(USE_SLANG_MOUSE)
    PARSE_SET(
       "use_mouse",	SET_ARG,		&LYUseMouse,
       "turn on mouse support"
diff --git a/src/LYOptions.c b/src/LYOptions.c
index 803c37d0..3f28736e 100644
--- a/src/LYOptions.c
+++ b/src/LYOptions.c
@@ -28,7 +28,7 @@ BOOLEAN term_options;
 
 PRIVATE void terminate_options	PARAMS((int sig));
 
-#if !defined(NO_OPTION_MENU) || (defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES))
+#if !defined(NO_OPTION_MENU) || (defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES_MOUSE_VERSION))
 #define COL_OPTION_VALUES 36  /* display column where option values start */
 #endif
 
@@ -2138,7 +2138,7 @@ draw_bookmark_list:
     signal(SIGINT, cleanup_sig);
 }
 
-#if !defined(NO_OPTION_MENU) || (defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES))
+#if !defined(NO_OPTION_MENU) || (defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES_MOUSE_VERSION))
 /*
 **  This function prompts for a choice or page number.
 **  If a 'g' or 'p' suffix is included, that will be
@@ -2384,7 +2384,7 @@ PUBLIC int popup_choice ARGS7(
 	StrAllocCopy(popup_status_msg, CHOICE_LIST_UNM_MSG);
     } else if (!for_mouse) {
 	StrAllocCopy(popup_status_msg, CHOICE_LIST_MESSAGE);
-#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES)
+#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES_MOUSE_VERSION)
     } else {
 	StrAllocCopy(popup_status_msg, gettext(
 		"Left mouse button or return to select, arrow keys to scroll."));
diff --git a/src/LYReadCFG.c b/src/LYReadCFG.c
index 80ac04e6..a2e66a87 100644
--- a/src/LYReadCFG.c
+++ b/src/LYReadCFG.c
@@ -517,16 +517,19 @@ typedef struct
 }
 Config_Enum;
 
-static int config_enum ARGS2(
+static BOOLEAN config_enum ARGS3(
     Config_Enum *,	table,
-    CONST char *,	name)
+    CONST char *,	name,
+    int *,		result)
 {
     while (table->name != 0) {
-	if (!strcasecomp(table->name, name))
+	if (!strncasecomp(table->name, name, strlen(table->name))) {
+	    *result = table->value;
 	    break;
+	}
 	table++;
     }
-    return table->value;
+    return (table->name != 0);
 }
 
 static int assume_charset_fun ARGS1(
@@ -682,10 +685,9 @@ static int default_user_mode_fun ARGS1(
     	{ "NOVICE",	NOVICE_MODE },
 	{ "INTER",	INTERMEDIATE_MODE },
 	{ "ADVANCE",	ADVANCED_MODE },
-	{ NULL,		NOVICE_MODE }
+	{ NULL,		-1 }
     };
-    user_mode = config_enum(table, value);
-
+    config_enum(table, value, &user_mode);
     return 0;
 }
 
@@ -949,10 +951,9 @@ static int source_cache_fun ARGS1(
 	{ "FILE",	SOURCE_CACHE_FILE },
 	{ "MEM",	SOURCE_CACHE_MEMORY },
 	{ "NONE",	SOURCE_CACHE_NONE },
-	{ NULL,		SOURCE_CACHE_NONE },
+	{ NULL,		-1 },
     };
-    LYCacheSource = config_enum(table, value);
-
+    config_enum(table, value, &LYCacheSource);
     return 0;
 }
 #endif
@@ -962,7 +963,7 @@ static int suffix_fun ARGS1(
 {
     char *mime_type, *p;
     char *encoding = NULL, *sq = NULL, *description = NULL;
-    float q = 1.0;
+    double q = 1.0;
 
     if ((strlen (value) < 3)
     || (NULL == (mime_type = strchr (value, ':')))) {
@@ -1027,7 +1028,7 @@ static int suffix_fun ARGS1(
 		   sq, value));
 	    q = -1.0;
 	} else {
-	    q = (float) df;
+	    q = df;
 	}
     }
     HTSetSuffix5(value, mime_type, encoding, description, q);
@@ -1287,7 +1288,7 @@ PRIVATE int psrcspec_fun ARGS1(char*,s)
 	return 0;
     }
     *e = '\0';
-    if ((found = config_enum(lexemnames, s)) < 0) {
+    if (!config_enum(lexemnames, s, &found)) {
 	CTRACE((tfp,"bad format of PRETTYSRC_SPEC setting value, ignored %s:%s\n",s,e+1));
 	return 0;
     }
@@ -1326,7 +1327,7 @@ static int read_htmlsrc_tagname_xform ARGS1( char*,str)
 }
 #endif
 
-/* This table should be sorted alphabetically */
+/* This table should be sorted alphabetically, ignoring case */
 static Config_Type Config_Table [] =
 {
      PARSE_SET("accept_all_cookies", CONF_BOOL, &LYAcceptAllCookies),
@@ -1503,7 +1504,8 @@ static Config_Type Config_Table [] =
      PARSE_SET("prepend_base_to_source", CONF_BOOL, &LYPrependBaseToSource),
      PARSE_SET("prepend_charset_to_source", CONF_BOOL, &LYPrependCharsetToSource),
 #ifdef USE_PRETTYSRC
-     PARSE_FUN("prettysrc_spec" ,CONF_FUN, psrcspec_fun),
+     PARSE_SET("prettysrc", CONF_BOOL, &LYpsrc),
+     PARSE_FUN("prettysrc_spec", CONF_FUN, psrcspec_fun),
      PARSE_SET("prettysrc_view_no_anchor_numbering", CONF_BOOL, &psrcview_no_anchor_numbering),
 #endif
      PARSE_FUN("printer", CONF_FUN, printer_fun),
@@ -1561,7 +1563,7 @@ static Config_Type Config_Table [] =
 #ifdef VMS
      PARSE_SET("use_fixed_records", CONF_BOOL, &UseFixedRecords),
 #endif
-#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES) || defined(USE_SLANG_MOUSE)
+#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES_MOUSE_VERSION) || defined(USE_SLANG_MOUSE)
      PARSE_SET("use_mouse", CONF_BOOL, &LYUseMouse),
 #endif
      PARSE_SET("use_select_popups", CONF_BOOL, &LYSelectPopups),
diff --git a/src/LYStrings.c b/src/LYStrings.c
index 43ab4378..d617f921 100644
--- a/src/LYStrings.c
+++ b/src/LYStrings.c
@@ -15,7 +15,7 @@
 #include <HTString.h>
 #include <LYCharUtils.h>
 #include <HTParse.h>
-#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES) || defined(USE_SLANG_MOUSE)
+#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES_MOUSE_VERSION) || defined(USE_SLANG_MOUSE)
 #include <LYMainLoop.h>
 #endif
 
@@ -115,7 +115,7 @@ PUBLIC int fancy_mouse ARGS3(
 {
     int cmd = LYK_DO_NOTHING;
 
-#if defined(WIN_EX) && defined(PDCURSES)
+#if defined(WIN_EX) && defined(PDCURSES_MOUSE_VERSION)
 
     request_mouse_pos();
 
@@ -1263,7 +1263,7 @@ PUBLIC int lynx_initialize_keymaps NOARGS
 
 #endif				       /* USE_KEYMAPS */
 
-#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES)
+#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES_MOUSE_VERSION)
 PRIVATE int LYmouse_menu ARGS4(int, x, int, y, int, atlink, int, code)
 {
     static char *choices[] = {
@@ -1954,13 +1954,13 @@ re_read:
 	   c = 0x218;
 	   break;
 #endif /* PDCurses */
-#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES)
+#if defined(NCURSES_MOUSE_VERSION) || defined(PDCURSES_MOUSE_VERSION)
 	case KEY_MOUSE:
 	    CTRACE((tfp, "KEY_MOUSE\n"));
 	    if (code == FOR_CHOICE) {
 		c = MOUSE_KEY;		/* Will be processed by the caller */
 	    }
-#if !defined(_WINDOWS)	/* 1999/07/15 (Thu) 08:40:18 */
+#if defined(NCURSES_MOUSE_VERSION)
 	    else if (code == FOR_SINGLEKEY) {
 		MEVENT event;
 		getmouse(&event);	/* Completely ignore event - kw */
@@ -1968,7 +1968,7 @@ re_read:
 	    }
 #endif
 	    else {
-#if !(defined(WIN_EX) && defined(PDCURSES))
+#if defined(NCURSES_MOUSE_VERSION)
 		MEVENT event;
 		int err;
 		int lac = LYK_UNKNOWN;
diff --git a/src/LYUtils.c b/src/LYUtils.c
index df1f23b5..7b652d1d 100644
--- a/src/LYUtils.c
+++ b/src/LYUtils.c
@@ -6098,7 +6098,7 @@ PUBLIC time_t LYmktime ARGS2(
 		     (hour * 60 * 60) +
 		     (minutes * 60) +
 		     seconds);
-    if (absolute == FALSE && clock2 <= time(NULL))
+    if (absolute == FALSE && (long)(time((time_t *)0) - clock2) >= 0)
 	clock2 = (time_t)0;
     if (clock2 > 0)
 	CTRACE((tfp, "LYmktime: clock=%ld, ctime=%s",
@@ -6220,7 +6220,11 @@ PRIVATE BOOL IsOurFile ARGS1(char *, name)
     && data.st_nlink == 1
     && data.st_uid == getuid()) {
 	int linked = FALSE;
-#if HAVE_LSTAT
+	/*
+	 * ( If this is not a single-user system, the other user is presumed by
+	 * some people busy trying to use a symlink attack on our files ;-)
+	 */
+#if defined(HAVE_LSTAT) && !(defined(DOSPATH) || defined(__EMX__))
 	char *path = 0;
 	char *leaf;
 
@@ -6778,8 +6782,13 @@ PUBLIC void LYCleanupTemp NOARGS
 	LYRemoveTemp(ly_temp->name);
     }
 #ifdef UNIX
-    if (lynx_temp_subspace)
-	rmdir(lynx_temp_space);
+    if (lynx_temp_subspace) {
+	char result[LY_MAXPATH];
+	LYstrncpy(result, lynx_temp_space, sizeof(result)-1);
+	LYTrimPathSep(result);
+	CTRACE((tfp, "LYCleanupTemp removing %s\n", result));
+	rmdir(result);
+    }
 #endif
 }
 
diff --git a/src/Xsystem.c b/src/Xsystem.c
index b0fa4a81..60782125 100644
--- a/src/Xsystem.c
+++ b/src/Xsystem.c
@@ -1,4 +1,4 @@
-/* @Id: Xsystem.c 1.6 Sun, 26 Mar 2000 19:14:00 -0800 dickey @
+/* @Id: Xsystem.c 1.7 Fri, 31 Mar 2000 16:33:40 -0800 dickey @
  *	like system("cmd") but return with exit code of "cmd"
  *	for Turbo-C/MS-C/LSI-C
  *  This code is in the public domain.
@@ -34,6 +34,8 @@
 #include <dos.h>
 #endif
 
+#include <LYStrings.h>
+
 #ifndef USECMDLINE
 #define USECMDLINE	0
 #endif
@@ -57,11 +59,13 @@ extern char *mktemp(char *);
 #define issep2(c) (issep(c) || (c) == '.' || (c) == '\\' || (c) == '/')
 #define isdeg(c) ('0' <= (c) && (c) <= '9')
 
+#ifndef NEAR
 #if 0	/* MS-C */
 #define NEAR	_near
 #else
 #define NEAR
 #endif
+#endif
 
 typedef struct _proc {
     struct _proc *next;
diff --git a/userdefs.h b/userdefs.h
index b6a425d2..9de8fda8 100644
--- a/userdefs.h
+++ b/userdefs.h
@@ -1339,12 +1339,12 @@
  * the version definition with the Project Version on checkout.  Just
  * ignore it. - kw */
 /* $Format: "#define LYNX_VERSION \"$ProjectVersion$\""$ */
-#define LYNX_VERSION "2.8.3dev.23"
+#define LYNX_VERSION "2.8.3pre.1"
 #define LYNX_WWW_HOME "http://lynx.browser.org/"
 #define LYNX_WWW_DIST "http://lynx.isc.org/current/"
 #define LYNX_RELEASE FALSE
 /* $Format: "#define LYNX_DATE \"$ProjectDate$\""$ */
-#define LYNX_DATE "Sun, 26 Mar 2000 19:14:00 -0800"
+#define LYNX_DATE "Fri, 31 Mar 2000 16:33:40 -0800"
 #define LYNX_DATE_OFF 5		/* truncate the automatically-generated date */
 #define LYNX_DATE_LEN 11	/* truncate the automatically-generated date */
 #define LYNX_RELEASE_DATE "1999"
@@ -1441,6 +1441,37 @@
 #endif /* VMS */
 
 
+/***************************** 
+ * USE_TH_JP_AUTO_DETECT, CONV_JISX0201KANA_JISX0208KANA,  
+ * and KANJI_CODE_OVERRIDE are the macros for Japanese. - TH 
+ */ 
+/***************************** 
+ * USE_TH_JP_AUTO_DETECT enables a new Japanese charset detection routine. 
+ * With the old detection strategy, Lynx always thought a document was 
+ * written in mixture of three kanji codes (JIS, EUC and SJIS).  The new 
+ * strategy is for Lynx to first assume the document is written in one code 
+ * or JIS + one other kanji code (JIS, EUC, SJIS, EUC+JIS and SJIS+JIS). 
+ * The first assumption is usually correct, but if the assumption is wrong, 
+ * Lynx falls back to the old assumption of the three kanji codes mixed. 
+ */ 
+#define USE_TH_JP_AUTO_DETECT 
+ 
+/***************************** 
+ * If CONV_JISX0201KANA_JISX0208KANA is set, Lynx will convert 
+ * JIS X0201 Kana to JIS X0208 Kana, i.e., convert half-width kana 
+ * to full-width. 
+ */ 
+#define CONV_JISX0201KANA_JISX0208KANA 
+ 
+/***************************** 
+ * Uncomment the following line to enable the kanji code override routine. 
+ * The code can be changed by pressing ^L.  More precisely, this allows 
+ * the user to override the assumption about the kanji code for the document 
+ * which Lynx has made on the basis of a META tag and HTTP response. 
+ */ 
+/*#define KANJI_CODE_OVERRIDE */ 
+ 
+
 /****************************************************************
  *  Section 4.  Things you MUST check only if you plan to use Lynx
  *              in an anonymous account (allow public access to Lynx).