about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--BUILD/VS2003/lynx/lynx_cfg.h134
-rw-r--r--BUILD/VS2005X/lynx/lynx_cfg.h138
-rw-r--r--BUILD/VS2008X/lynx/lynx_cfg.h138
-rw-r--r--CHANGES51
-rw-r--r--INSTALLATION70
-rw-r--r--PACKAGE/lynx.iss11
-rw-r--r--WWW/Library/Implementation/HTAABrow.c12
-rw-r--r--WWW/Library/Implementation/HTDOS.c6
-rw-r--r--WWW/Library/Implementation/HTDOS.h10
-rw-r--r--WWW/Library/Implementation/HTFTP.c4
-rw-r--r--WWW/Library/Implementation/HTRules.c15
-rw-r--r--WWW/Library/Implementation/HTString.c4
-rw-r--r--WWW/Library/Implementation/HTTP.c17
-rw-r--r--WWW/Library/Implementation/HTTelnet.c6
-rw-r--r--WWW/Library/Implementation/HTUtils.h7
-rw-r--r--WWW/Library/Implementation/SGML.h4
-rw-r--r--WWW/Library/Implementation/dtd_util.c10
-rw-r--r--WWW/Library/Implementation/src0_HTMLDTD.h4
-rw-r--r--WWW/Library/Implementation/src1_HTMLDTD.h4
-rw-r--r--aclocal.m420
-rw-r--r--config.hin10
-rwxr-xr-xconfigure564
-rw-r--r--configure.in126
-rw-r--r--docs/README.defines1
-rw-r--r--lynx.cfg136
-rw-r--r--lynx_help/Lynx_users_guide.html92
-rw-r--r--lynx_help/lynx_url_support.html6
-rw-r--r--makefile.bcb6
-rw-r--r--makefile.in27
-rw-r--r--makefile.msc6
-rw-r--r--makelynx.bat34
-rw-r--r--po/de.po594
-rw-r--r--po/lynx.pot200
-rw-r--r--samples/lynx-demo.cfg9
-rwxr-xr-xscripts/cfg2html.pl63
-rw-r--r--src/GridText.c30
-rw-r--r--src/HTAlert.c6
-rw-r--r--src/HTML.c22
-rw-r--r--src/LYCharSets.c10
-rw-r--r--src/LYCharSets.h8
-rw-r--r--src/LYCharUtils.c4
-rw-r--r--src/LYCookie.c8
-rw-r--r--src/LYCurses.c63
-rw-r--r--src/LYCurses.h3
-rw-r--r--src/LYEdit.c36
-rw-r--r--src/LYForms.c6
-rw-r--r--src/LYGlobalDefs.h4
-rw-r--r--src/LYJustify.h14
-rw-r--r--src/LYKeymap.c4
-rw-r--r--src/LYLocal.c294
-rw-r--r--src/LYMail.c50
-rw-r--r--src/LYMain.c22
-rw-r--r--src/LYMainLoop.c10
-rw-r--r--src/LYOptions.c6
-rw-r--r--src/LYReadCFG.c14
-rw-r--r--src/LYStrings.c12
-rw-r--r--src/LYStrings.h6
-rw-r--r--src/LYUtils.c26
-rw-r--r--src/LYUtils.h6
-rw-r--r--src/chrtrans/makeuctb.c4
-rw-r--r--userdefs.h6
61 files changed, 1715 insertions, 1498 deletions
diff --git a/BUILD/VS2003/lynx/lynx_cfg.h b/BUILD/VS2003/lynx/lynx_cfg.h
index 25234fbb..da393951 100644
--- a/BUILD/VS2003/lynx/lynx_cfg.h
+++ b/BUILD/VS2003/lynx/lynx_cfg.h
@@ -1,68 +1,68 @@
-// $LynxId: lynx_cfg.h,v 1.2 2009/02/01 23:08:47 tom Exp $

-// definitions abstracted from makefile.msc

-

-#ifndef LYNX_CFG_H

-#define LYNX_CFG_H 1

-

-#define __WIN32__

-#define _WINDOWS

-#define _WIN32_WINNT 0x0400 

-

-#define ACCESS_AUTH 1

-#define CJK_EX 1

-#define DIRED_SUPPORT 1

-#define DISP_PARTIAL 1

-#define DOSPATH 1

-#define EXP_ALT_BINDINGS 1

-#define EXP_CMD_LOGGING 1

-#define EXP_JUSTIFY_ELTS 1

-#define EXP_NESTED_TABLES 1

-#define HAVE_KEYPAD 1

-#define HAVE_PUTENV 1

-#define LONG_LIST 1

-#define NDEBUG 1

-#define NO_CONFIG_INFO 1

-#define NO_CUSERID 1

-#define NO_FILIO_H 1

-#define NO_TTYTYPE 1

-#define NO_UNISTD_H 1

-#define NO_UTMP 1

-#define NOSIGHUP 1

-#define NOUSERS 1

-#define OK_OVERRIDE 1

-#define SH_EX 1

-#define USE_EXTERNALS 1

-#define USE_FILE_UPLOAD 1

-#define USE_MULTIBYTE_CURSES 1

-#define USE_PERSISTENT_COOKIES 1

-#define USE_PRETTYSRC 1

-#define USE_READPROGRESS 1

-#define USE_SCROLLBAR 1

-#define USE_SOURCE_CACHE 1

-#define USE_ZLIB 1

-#define WIN_EX 1

-

-// definitions to account for using this file (see HTUtils.h, userdefs.h)

-#define ANSI_VARARGS 1

-#define HAVE_GETCWD 1

-#define HAVE_STDARG_H 1

-#define HAVE_STDLIB_H 1

-#define LYNX_CFG_FILE "./lynx.cfg"

-#define UNDERLINE_LINKS FALSE

-#define socklen_t int

-

-// configuration choices

-#define PDCURSES 1

-#define USE_WINSOCK2_H 1

-

-#ifdef PDCURSES

-#define USE_COLOR_STYLE 1

-#define COLOR_CURSES 1

-#define FANCY_CURSES 1

-#endif

-

-#pragma warning (disable : 4244) /* conversion from 'xxx' to 'yyy', possible loss of data */

-#pragma warning (disable : 4267) /* conversion from 'xxx' to 'yyy', possible loss of data */

-#pragma warning (disable : 4311) /* 'type cast': pointer truncation from 'xxx' to 'yyy' FIXME */

-

+// $LynxId: lynx_cfg.h,v 1.4 2009/11/21 16:33:41 tom Exp $
+// definitions abstracted from makefile.msc
+
+#ifndef LYNX_CFG_H
+#define LYNX_CFG_H 1
+
+#define __WIN32__
+#define _WINDOWS
+#define _WIN32_WINNT 0x0400 
+
+#define ACCESS_AUTH 1
+#define CJK_EX 1
+#define DIRED_SUPPORT 1
+#define DISP_PARTIAL 1
+#define DOSPATH 1
+#define EXP_ALT_BINDINGS 1
+#define EXP_NESTED_TABLES 1
+#define HAVE_KEYPAD 1
+#define HAVE_PUTENV 1
+#define LONG_LIST 1
+#define NDEBUG 1
+#define NOSIGHUP 1
+#define NOUSERS 1
+#define NO_CONFIG_INFO 1
+#define NO_CUSERID 1
+#define NO_FILIO_H 1
+#define NO_TTYTYPE 1
+#define NO_UNISTD_H 1
+#define NO_UTMP 1
+#define OK_OVERRIDE 1
+#define SH_EX 1
+#define USE_CMD_LOGGING 1
+#define USE_EXTERNALS 1
+#define USE_FILE_UPLOAD 1
+#define USE_JUSTIFY_ELTS 1
+#define USE_MULTIBYTE_CURSES 1
+#define USE_PERSISTENT_COOKIES 1
+#define USE_PRETTYSRC 1
+#define USE_READPROGRESS 1
+#define USE_SCROLLBAR 1
+#define USE_SOURCE_CACHE 1
+#define USE_ZLIB 1
+#define WIN_EX 1
+
+// definitions to account for using this file (see HTUtils.h, userdefs.h)
+#define ANSI_VARARGS 1
+#define HAVE_GETCWD 1
+#define HAVE_STDARG_H 1
+#define HAVE_STDLIB_H 1
+#define LYNX_CFG_FILE "./lynx.cfg"
+#define UNDERLINE_LINKS FALSE
+#define socklen_t int
+
+// configuration choices
+#define PDCURSES 1
+#define USE_WINSOCK2_H 1
+
+#ifdef PDCURSES
+#define USE_COLOR_STYLE 1
+#define COLOR_CURSES 1
+#define FANCY_CURSES 1
+#endif
+
+#pragma warning (disable : 4244) /* conversion from 'xxx' to 'yyy', possible loss of data */
+#pragma warning (disable : 4267) /* conversion from 'xxx' to 'yyy', possible loss of data */
+#pragma warning (disable : 4311) /* 'type cast': pointer truncation from 'xxx' to 'yyy' FIXME */
+
 #endif /* LYNX_CFG_H */
\ No newline at end of file
diff --git a/BUILD/VS2005X/lynx/lynx_cfg.h b/BUILD/VS2005X/lynx/lynx_cfg.h
index a526bb0a..5a6fe71d 100644
--- a/BUILD/VS2005X/lynx/lynx_cfg.h
+++ b/BUILD/VS2005X/lynx/lynx_cfg.h
@@ -1,70 +1,70 @@
-// $LynxId: lynx_cfg.h,v 1.1 2007/06/30 14:30:52 tom Exp $

-// definitions abstracted from makefile.msc

-

-#ifndef LYNX_CFG_H

-#define LYNX_CFG_H 1

-

-#define __WIN32__

-#define _WINDOWS

-#define _WIN32_WINNT 0x0400

-#define WIN32_LEAN_AND_MEAN 1	// fixes redefinition of winsock2.h

-

-#define ACCESS_AUTH 1

-#define CJK_EX 1

-#define DIRED_SUPPORT 1

-#define DISP_PARTIAL 1

-#define DOSPATH 1

-#define EXP_ALT_BINDINGS 1

-#define EXP_CMD_LOGGING 1

-#define EXP_JUSTIFY_ELTS 1

-#define EXP_NESTED_TABLES 1

-#define HAVE_KEYPAD 1

-#define HAVE_PUTENV 1

-#define LONG_LIST 1

-#define NDEBUG 1

-#define NO_CONFIG_INFO 1

-#define NO_CUSERID 1

-#define NO_FILIO_H 1

-#define NO_TTYTYPE 1

-#define NO_UNISTD_H 1

-#define NO_UTMP 1

-#define NOSIGHUP 1

-#define NOUSERS 1

-#define OK_OVERRIDE 1

-#define SH_EX 1

-#define USE_EXTERNALS 1

-#define USE_FILE_UPLOAD 1

-#define USE_MULTIBYTE_CURSES 1

-#define USE_PERSISTENT_COOKIES 1

-#define USE_PRETTYSRC 1

-#define USE_READPROGRESS 1

-#define USE_SCROLLBAR 1

-#define USE_SOURCE_CACHE 1

-#define USE_ZLIB 1

-#define WIN_EX 1

-

-// definitions to account for using this file (see HTUtils.h, userdefs.h)

-#define ANSI_VARARGS 1

-#define HAVE_GETCWD 1

-#define HAVE_STDARG_H 1

-#define HAVE_STDLIB_H 1

-#define LYNX_CFG_FILE "./lynx.cfg"

-#define UNDERLINE_LINKS FALSE

-#define socklen_t int

-

-// configuration choices

-#define PDCURSES 1

-#define USE_WINSOCK2_H 1

-

-#ifdef PDCURSES

-#define USE_COLOR_STYLE 1

-#define COLOR_CURSES 1

-#define FANCY_CURSES 1

-#endif

-

-#pragma warning (disable : 4244) /* conversion from 'xxx' to 'yyy', possible loss of data */

-#pragma warning (disable : 4267) /* conversion from 'xxx' to 'yyy', possible loss of data */

-#pragma warning (disable : 4311) /* 'type cast': pointer truncation from 'xxx' to 'yyy' FIXME */

-#pragma warning (disable : 4996) /* 'xxx': This function or variable may be unsafe. Consider using yyy instead. */

-

+// $LynxId: lynx_cfg.h,v 1.3 2009/11/21 16:33:41 tom Exp $
+// definitions abstracted from makefile.msc
+
+#ifndef LYNX_CFG_H
+#define LYNX_CFG_H 1
+
+#define __WIN32__
+#define _WINDOWS
+#define _WIN32_WINNT 0x0400
+#define WIN32_LEAN_AND_MEAN 1	// fixes redefinition of winsock2.h
+
+#define ACCESS_AUTH 1
+#define CJK_EX 1
+#define DIRED_SUPPORT 1
+#define DISP_PARTIAL 1
+#define DOSPATH 1
+#define EXP_ALT_BINDINGS 1
+#define EXP_NESTED_TABLES 1
+#define HAVE_KEYPAD 1
+#define HAVE_PUTENV 1
+#define LONG_LIST 1
+#define NDEBUG 1
+#define NOSIGHUP 1
+#define NOUSERS 1
+#define NO_CONFIG_INFO 1
+#define NO_CUSERID 1
+#define NO_FILIO_H 1
+#define NO_TTYTYPE 1
+#define NO_UNISTD_H 1
+#define NO_UTMP 1
+#define OK_OVERRIDE 1
+#define SH_EX 1
+#define USE_CMD_LOGGING 1
+#define USE_EXTERNALS 1
+#define USE_FILE_UPLOAD 1
+#define USE_JUSTIFY_ELTS 1
+#define USE_MULTIBYTE_CURSES 1
+#define USE_PERSISTENT_COOKIES 1
+#define USE_PRETTYSRC 1
+#define USE_READPROGRESS 1
+#define USE_SCROLLBAR 1
+#define USE_SOURCE_CACHE 1
+#define USE_ZLIB 1
+#define WIN_EX 1
+
+// definitions to account for using this file (see HTUtils.h, userdefs.h)
+#define ANSI_VARARGS 1
+#define HAVE_GETCWD 1
+#define HAVE_STDARG_H 1
+#define HAVE_STDLIB_H 1
+#define LYNX_CFG_FILE "./lynx.cfg"
+#define UNDERLINE_LINKS FALSE
+#define socklen_t int
+
+// configuration choices
+#define PDCURSES 1
+#define USE_WINSOCK2_H 1
+
+#ifdef PDCURSES
+#define USE_COLOR_STYLE 1
+#define COLOR_CURSES 1
+#define FANCY_CURSES 1
+#endif
+
+#pragma warning (disable : 4244) /* conversion from 'xxx' to 'yyy', possible loss of data */
+#pragma warning (disable : 4267) /* conversion from 'xxx' to 'yyy', possible loss of data */
+#pragma warning (disable : 4311) /* 'type cast': pointer truncation from 'xxx' to 'yyy' FIXME */
+#pragma warning (disable : 4996) /* 'xxx': This function or variable may be unsafe. Consider using yyy instead. */
+
 #endif /* LYNX_CFG_H */
\ No newline at end of file
diff --git a/BUILD/VS2008X/lynx/lynx_cfg.h b/BUILD/VS2008X/lynx/lynx_cfg.h
index a526bb0a..5a6fe71d 100644
--- a/BUILD/VS2008X/lynx/lynx_cfg.h
+++ b/BUILD/VS2008X/lynx/lynx_cfg.h
@@ -1,70 +1,70 @@
-// $LynxId: lynx_cfg.h,v 1.1 2007/06/30 14:30:52 tom Exp $

-// definitions abstracted from makefile.msc

-

-#ifndef LYNX_CFG_H

-#define LYNX_CFG_H 1

-

-#define __WIN32__

-#define _WINDOWS

-#define _WIN32_WINNT 0x0400

-#define WIN32_LEAN_AND_MEAN 1	// fixes redefinition of winsock2.h

-

-#define ACCESS_AUTH 1

-#define CJK_EX 1

-#define DIRED_SUPPORT 1

-#define DISP_PARTIAL 1

-#define DOSPATH 1

-#define EXP_ALT_BINDINGS 1

-#define EXP_CMD_LOGGING 1

-#define EXP_JUSTIFY_ELTS 1

-#define EXP_NESTED_TABLES 1

-#define HAVE_KEYPAD 1

-#define HAVE_PUTENV 1

-#define LONG_LIST 1

-#define NDEBUG 1

-#define NO_CONFIG_INFO 1

-#define NO_CUSERID 1

-#define NO_FILIO_H 1

-#define NO_TTYTYPE 1

-#define NO_UNISTD_H 1

-#define NO_UTMP 1

-#define NOSIGHUP 1

-#define NOUSERS 1

-#define OK_OVERRIDE 1

-#define SH_EX 1

-#define USE_EXTERNALS 1

-#define USE_FILE_UPLOAD 1

-#define USE_MULTIBYTE_CURSES 1

-#define USE_PERSISTENT_COOKIES 1

-#define USE_PRETTYSRC 1

-#define USE_READPROGRESS 1

-#define USE_SCROLLBAR 1

-#define USE_SOURCE_CACHE 1

-#define USE_ZLIB 1

-#define WIN_EX 1

-

-// definitions to account for using this file (see HTUtils.h, userdefs.h)

-#define ANSI_VARARGS 1

-#define HAVE_GETCWD 1

-#define HAVE_STDARG_H 1

-#define HAVE_STDLIB_H 1

-#define LYNX_CFG_FILE "./lynx.cfg"

-#define UNDERLINE_LINKS FALSE

-#define socklen_t int

-

-// configuration choices

-#define PDCURSES 1

-#define USE_WINSOCK2_H 1

-

-#ifdef PDCURSES

-#define USE_COLOR_STYLE 1

-#define COLOR_CURSES 1

-#define FANCY_CURSES 1

-#endif

-

-#pragma warning (disable : 4244) /* conversion from 'xxx' to 'yyy', possible loss of data */

-#pragma warning (disable : 4267) /* conversion from 'xxx' to 'yyy', possible loss of data */

-#pragma warning (disable : 4311) /* 'type cast': pointer truncation from 'xxx' to 'yyy' FIXME */

-#pragma warning (disable : 4996) /* 'xxx': This function or variable may be unsafe. Consider using yyy instead. */

-

+// $LynxId: lynx_cfg.h,v 1.3 2009/11/21 16:33:41 tom Exp $
+// definitions abstracted from makefile.msc
+
+#ifndef LYNX_CFG_H
+#define LYNX_CFG_H 1
+
+#define __WIN32__
+#define _WINDOWS
+#define _WIN32_WINNT 0x0400
+#define WIN32_LEAN_AND_MEAN 1	// fixes redefinition of winsock2.h
+
+#define ACCESS_AUTH 1
+#define CJK_EX 1
+#define DIRED_SUPPORT 1
+#define DISP_PARTIAL 1
+#define DOSPATH 1
+#define EXP_ALT_BINDINGS 1
+#define EXP_NESTED_TABLES 1
+#define HAVE_KEYPAD 1
+#define HAVE_PUTENV 1
+#define LONG_LIST 1
+#define NDEBUG 1
+#define NOSIGHUP 1
+#define NOUSERS 1
+#define NO_CONFIG_INFO 1
+#define NO_CUSERID 1
+#define NO_FILIO_H 1
+#define NO_TTYTYPE 1
+#define NO_UNISTD_H 1
+#define NO_UTMP 1
+#define OK_OVERRIDE 1
+#define SH_EX 1
+#define USE_CMD_LOGGING 1
+#define USE_EXTERNALS 1
+#define USE_FILE_UPLOAD 1
+#define USE_JUSTIFY_ELTS 1
+#define USE_MULTIBYTE_CURSES 1
+#define USE_PERSISTENT_COOKIES 1
+#define USE_PRETTYSRC 1
+#define USE_READPROGRESS 1
+#define USE_SCROLLBAR 1
+#define USE_SOURCE_CACHE 1
+#define USE_ZLIB 1
+#define WIN_EX 1
+
+// definitions to account for using this file (see HTUtils.h, userdefs.h)
+#define ANSI_VARARGS 1
+#define HAVE_GETCWD 1
+#define HAVE_STDARG_H 1
+#define HAVE_STDLIB_H 1
+#define LYNX_CFG_FILE "./lynx.cfg"
+#define UNDERLINE_LINKS FALSE
+#define socklen_t int
+
+// configuration choices
+#define PDCURSES 1
+#define USE_WINSOCK2_H 1
+
+#ifdef PDCURSES
+#define USE_COLOR_STYLE 1
+#define COLOR_CURSES 1
+#define FANCY_CURSES 1
+#endif
+
+#pragma warning (disable : 4244) /* conversion from 'xxx' to 'yyy', possible loss of data */
+#pragma warning (disable : 4267) /* conversion from 'xxx' to 'yyy', possible loss of data */
+#pragma warning (disable : 4311) /* 'type cast': pointer truncation from 'xxx' to 'yyy' FIXME */
+#pragma warning (disable : 4996) /* 'xxx': This function or variable may be unsafe. Consider using yyy instead. */
+
 #endif /* LYNX_CFG_H */
\ No newline at end of file
diff --git a/CHANGES b/CHANGES
index d1d05f98..efca62f0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,14 +1,51 @@
--- $LynxId: CHANGES,v 1.440 2009/09/06 18:48:52 tom Exp $
+-- $LynxId: CHANGES,v 1.458 2009/11/24 00:03:22 tom Exp $
 ===============================================================================
 Changes since Lynx 2.8 release
 ===============================================================================
 
-2009-09-?? (2.8.8dev.2)
-* modify configure script to check if linkage for bzlib and zlib succeeded -TD
+2009-11-?? (2.8.8dev.2)
+* document the various xxx_PATH settings in lynx.cfg -TD
+* modify cfg2html.pl to improve formatting of cattoc.html -TD
+* split-up top-level makefile install-html rule to allow generating the htmlized
+  cfg without doing an install -TD
+* suppress positioning for editor when using it to edit files via dired -TD
+* modify samples/lynx-demo.cfg to suppress external file-utilities, since the
+  intent is to make the installer work standalone, but allow extension -TD
+* add traces for builtin dired operations -TD
+* modify built-in "touch" for dired to use binary mode when opening file -TD
+* remove check from 2.8.5dev.11 which prevents user from moving a directory in
+  dired unless the external program "mv" is provided -TD
+* regularize use of isEmpty(), non_empty() -BL
+* match built-in "positionable" editor names more liberally -BL
+* promote some experimental options to normal, tidy up related EXP_xxx vs
+  USE_xxx symbols -TD
+  EXP_ASCII_CTYPES is now USE_ASCII_CTYPES
+  EXP_JUSTIFY_ELTS is now USE_JUSTIFY_ELTS 
+  EXP_CHARSET_CHOICE is now USE_CHARSET_CHOICE
+  The scrollbar, progressbar, sessions and session-cache options are now
+  enabled by default.
+* modify scanning in HTRules.c to only trim comments where '#' is either at
+  the beginning of a line, or follows whitespace (patch by Kihara Hideto).
+* correct a place where LYStrExtent2 was used where byte-count is needed
+  (patch by Bake Timmons).
+* modify LYExecv() in LYLocal.c to allow win32 applications to use this
+  function -TD
+* modify ok_stat() in LYLocal.c to retry with "." appended when the path syntax
+  indicates that it is probably a directory name -TD
+* fix an old typo in configure macro CF_CHECK_FUNCDECL -TD
+* change library dependency for gnutls from crypt to gcrypt, originally in
+  2.8.5dev.15 (Debian #555579) -TD
+* update de.po from
+    http://translationproject.org/latest/lynx
+* fix some tidy- and linklint-warnings in help-files -TD
+* amend change from 2.8.7dev.14 to not use clrscr() function in stop_curses()
+  if using PDCurses, since clrscr() is not in the win32 api -TD
+* modify configure script to check if linkage for bzlib and zlib succeeded,
+  before defining symbol which makes the compiler uses these libraries -TD
 * update lynx_help_main.html to point to "release/lynx2-8-7" documentation -TD
 
 2009-08-28 (2.8.8dev.1)
-* add <sys/types.h> include in socklen_t configure check, from OpenBSD CVS
+* add <sys/types.h> include in socklen_t configure check (from OpenBSD CVS)
 * eliminate UCPutUtf8ToBuffer() - redundant -TD
 * use memset's to simplify some initialization in HTML.c, extending a change
   made in 2.8.7dev.10 (prompted by issue in OpenBSD) -TD 
@@ -37,7 +74,7 @@ Changes since Lynx 2.8 release
 * update config.guess (2009-08-19), config.sub (2009-08-19)
 
 2009-07-05 (2.8.7rel.1)
-* update metrics for 2.8.7 release.
+* update metrics for 2.8.7 release -TD
 * fix ifdef'ing for cfg_bad_html (report by Gabor Z Papp) -TD
 
 2009-06-23 (2.8.7pre.6)
@@ -94,8 +131,8 @@ Changes since Lynx 2.8 release
   FEDORA-2008-9597), and modify compiled-in configuration default for
   consistency with other lynx.cfg settings to require that lynx.cfg be set to
   permit use of lynxcgi scripts -TD
-* correct parsing of "--" command-line parameter (Redhat #311031)
-* check for malformed select before adding last-option (Redhat #152146)
+* correct parsing of "--" command-line parameter (Redhat #311031) -TD
+* check for malformed select before adding last-option (Redhat #152146) -TD
 * change default for --enable-ascii-ctypes to true -TD
 * modify Lynx's DTD information to allow it to display form-related tags that
   are inline, even without being in a form as indicated in
diff --git a/INSTALLATION b/INSTALLATION
index aaa36ea7..ca0ef28d 100644
--- a/INSTALLATION
+++ b/INSTALLATION
@@ -308,7 +308,7 @@ II. Compile instructions -- UNIX
 	requested, the configure script will otherwise use the messages in the
 	./po subdirectory.
 
-  --disable-justify-elts		(define EXP_JUSTIFY_ELTS)
+  --disable-justify-elts		(define USE_JUSTIFY_ELTS)
 	Do not use element-justification logic.
 
   --disable-largefile			(prevent defining LONG_LIST)
@@ -335,25 +335,43 @@ II. Compile instructions -- UNIX
 	it.
 
   --disable-persistent-cookies		(prevent defining USE_PERSISTENT_COOKIES)
-	Use this option to tell configure whether to compile-in support for
-	saving cookies to a file, for subsequent reuse.  Persistent cookie
-	support will use (or create) the file specified by the 'COOKIE_FILE'
-	option, or default to ".lynx_cookies" in the home directory.
-	(Currently there is no protection against conflict if several lynx
-	sessions are active from the same account).
+	Turn off support for saving cookies to a file, for subsequent reuse. 
+	Persistent cookie support will use (or create) the file specified by
+	the 'COOKIE_FILE' option, or default to ".lynx_cookies" in the home
+	directory.  (Currently there is no protection against conflict if
+	several lynx sessions are active from the same account).
 
   --disable-prettysrc			(define USE_PRETTYSRC)
-	Use this option to compile-in support for colorizing the source view of
-	HTML pages.  If compiled-in, new source view mode is available with
-	-prettysrc command line option.
+	Turn off support for colorizing the source view of HTML pages.  If
+	compiled-in, new source view mode is available with -prettysrc command
+	line option.
+
+  --disable-progressbar			(define USE_PROGRESSBAR)
+	Turn off support for a "progress bar" which displays at the bottom
+	of the screen when doing downloads and other time-consuming (but
+	interruptible) processes.  This feature can be selected in the
+	options menu.
 
   --disable-read-eta			(define USE_READPROGRESS)
-	Enhance the read-progress message to show ETA (estimated time to
+	Turn off enhanced read-progress message showing ETA (estimated time to
 	completion), as well as the amount of time stalled without any data
 	transferred.
 
+  --disable-scrollbar			(define USE_SCROLLBAR)
+	Turn off support for scrollbar on the right-margin of the screen. 
+	If you configure with ncurses, this works with the mouse on xterm,
+	etc.
+
+  --disable-session-cache		(define USE_CACHE_JAR)
+	Turn off support for saving/restoring session information in files. 
+	Configurable from lynx.cfg
+
+  --disable-sessions			(define USE_SESSIONS)
+	Turn off support for sessions, which allows the user to automatically
+	save and restore history information.
+
   --disable-source-cache		(define USE_SOURCE_CACHE)
-	Use this option to compile-in support for caching HTML pages locally,
+	Turn off support for caching HTML pages locally,
 	in files or in memory.	Configurable from lynx.cfg
 
   --disable-trace			(define NO_LYNX_TRACE)
@@ -366,7 +384,7 @@ II. Compile instructions -- UNIX
 	Compiles-in an alternative list-page, bound to 'A' rather than 'l',
 	which always lists URLs rather than titles.
 
-  --enable-ascii-ctypes			(define EXP_ASCII_CTYPES)
+  --enable-ascii-ctypes			(define USE_ASCII_CTYPES)
 	Compiles-in alternative case-conversion functions which ensure that
 	configuration names, etc., are compared in POSIX locale.  This is
 	important for operating in some locale such as Turkish.
@@ -379,7 +397,7 @@ II. Compile instructions -- UNIX
   	Allow users to change the execution status within the options screen.
 	See EXEC_LINKS and EXEC_SCRIPTS.
 
-  --enable-charset-choice		(define EXP_CHARSET_CHOICE)
+  --enable-charset-choice		(define USE_CHARSET_CHOICE)
 	Add logic for ASSUMED_DOC_CHARSET_CHOICE and DISPLAY_CHARSET_CHOICE in
 	lynx.cfg, allowing user to configure a subset of the compiled-in
 	charsets for normal use.
@@ -466,7 +484,7 @@ II. Compile instructions -- UNIX
   	Use nl_langinfo(CODESET) to determine initial value for display
 	charset, overrides character_set value in .lynxrc file.
 
-  --enable-nested-tables
+  --enable-nested-tables		(define EXP_NESTED_TABLES)
 	Extends TRST to format nested tables, as well as be smarter about
 	<BR> and <P> tags in table cells.
 
@@ -477,26 +495,6 @@ II. Compile instructions -- UNIX
 	Disabled by default, this allows interruption of NSL requests,
 	so that `z' will stop the `look-up' phase of a connection.
 
-  --enable-progressbar			(define USE_PROGRESSBAR)
-	Compile-in support for a "progress bar" which displays at the bottom
-	of the screen when doing downloads and other time-consuming (but
-	interruptible) processes.  This feature can be selected in the
-	options menu.
-
-  --enable-scrollbar			(define USE_SCROLLBAR)
-	Compile-in support for scrollbar on the right-margin of the screen. 
-	If you configure with ncurses, this works with the mouse on xterm,
-	etc.
-
-  --enable-session-cache		(define USE_CACHE_JAR)
-	Use this option to compile-in experimental support for
-	saving/restoring session information in files.  Configurable from
-	lynx.cfg
-
-  --enable-sessions			(define USE_SESSIONS)
-	Compile-in experimental support for sessions, which allow the user
-	to automatically save and restore history information.
-
   --enable-syslog			(define SYSLOG_REQUESTED_URLS)
 	Use this option to log NSL requests via syslog().
 
@@ -1377,4 +1375,4 @@ VIII. Acknowledgment
 
 -- 1999/04/24 - H. Nelson <lynx-admin@irm.nara.kindai.ac.jp>
 -- vile:txtmode
--- $LynxId: INSTALLATION,v 1.107 2009/08/27 21:00:43 tom Exp $
+-- $LynxId: INSTALLATION,v 1.110 2009/11/21 16:23:25 tom Exp $
diff --git a/PACKAGE/lynx.iss b/PACKAGE/lynx.iss
index a5b154ed..9a7da935 100644
--- a/PACKAGE/lynx.iss
+++ b/PACKAGE/lynx.iss
@@ -1,4 +1,4 @@
-; $LynxId: lynx.iss,v 1.3 2009/03/17 23:11:46 tom Exp $

+; $LynxId: lynx.iss,v 1.4 2009/11/22 23:59:04 tom Exp $

 ; vile:ts=2 sw=2 notabinsert

 ;

 ; This is the BASE script for different flavors of the installer for Lynx.

@@ -307,6 +307,15 @@ begin
 

   SaveStringToFile(CfgFile, 'HELPFILE:' + AppDir + '/help/Lynx_help_main.html.gz' + #10, True);

   SaveStringToFile(CfgFile, 'COLOR_STYLE:' + AppDir + '/opaque.lss' + #10, True);

+

+  SaveStringToFile(CfgFile, 'CHMOD_PATH:' + #10, True);

+  SaveStringToFile(CfgFile, 'COPY_PATH:' + #10, True);

+  SaveStringToFile(CfgFile, 'MKDIR_PATH:' + #10, True);

+  SaveStringToFile(CfgFile, 'MV_PATH:' + #10, True);

+  SaveStringToFile(CfgFile, 'RMDIR_PATH:' + #10, True);

+  SaveStringToFile(CfgFile, 'RM_PATH:' + #10, True);

+  SaveStringToFile(CfgFile, 'TOUCH_PATH:' + #10, True);

+

   Log('** customized ' + CfgFile);

 

   if isTaskSelected('use_sendto') then

diff --git a/WWW/Library/Implementation/HTAABrow.c b/WWW/Library/Implementation/HTAABrow.c
index 1b859e24..10e80a0d 100644
--- a/WWW/Library/Implementation/HTAABrow.c
+++ b/WWW/Library/Implementation/HTAABrow.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTAABrow.c,v 1.29 2009/01/03 00:55:16 tom Exp $
+ * $LynxId: HTAABrow.c,v 1.30 2009/11/21 17:05:33 Bela.Lubkin Exp $
  *
  * MODULE							HTAABrow.c
  *		BROWSER SIDE ACCESS AUTHORIZATION MODULE
@@ -1078,12 +1078,12 @@ BOOL HTAA_shouldRetryWithAuth(char *start_of_headers,
 		 0 == strcasecomp(fieldname, "Proxy-Authenticate:")) ||
 		(!IsProxy &&
 		 0 == strcasecomp(fieldname, "WWW-Authenticate:"))) {
-		if (!(arg1 && *arg1 && args && *args)) {
+		if (isEmpty(arg1) || isEmpty(args)) {
 		    HTSprintf0(&temp, gettext("Invalid header '%s%s%s%s%s'"), line,
-			       (!isEmpty(arg1) ? " " : ""),
-			       (!isEmpty(arg1) ? arg1 : ""),
-			       (!isEmpty(args) ? " " : ""),
-			       (!isEmpty(args) ? args : ""));
+			       (non_empty(arg1) ? " " : ""),
+			       NonNull(arg1),
+			       (non_empty(args) ? " " : ""),
+			       NonNull(args));
 		    HTAlert(temp);
 		    FREE(temp);
 		} else if (HTAA_UNKNOWN != (scheme = HTAAScheme_enum(arg1))) {
diff --git a/WWW/Library/Implementation/HTDOS.c b/WWW/Library/Implementation/HTDOS.c
index 69772043..a8090235 100644
--- a/WWW/Library/Implementation/HTDOS.c
+++ b/WWW/Library/Implementation/HTDOS.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTDOS.c,v 1.36 2009/01/03 01:58:39 tom Exp $
+ * $LynxId: HTDOS.c,v 1.37 2009/09/09 00:40:55 tom Exp $
  *							DOS specific routines
  */
 
@@ -103,7 +103,7 @@ char *HTDOS_slashes(char *path)
  * ON EXIT:
  *	returns		DOS file specification
  */
-char *HTDOS_name(char *wwwname)
+char *HTDOS_name(const char *wwwname)
 {
     static char *result = NULL;
     int joe;
@@ -150,7 +150,7 @@ char *HTDOS_name(char *wwwname)
 }
 
 #ifdef WIN_EX
-char *HTDOS_short_name(char *path)
+char *HTDOS_short_name(const char *path)
 {
     static char sbuf[LY_MAXPATH];
     char *ret;
diff --git a/WWW/Library/Implementation/HTDOS.h b/WWW/Library/Implementation/HTDOS.h
index 188b9794..e1613cb0 100644
--- a/WWW/Library/Implementation/HTDOS.h
+++ b/WWW/Library/Implementation/HTDOS.h
@@ -1,4 +1,8 @@
-/*             DOS specific routines            */
+/*
+ * $LynxId: HTDOS.h,v 1.14 2009/09/09 00:16:06 tom Exp $
+ *
+ * DOS specific routines
+ */
 
 #ifndef HTDOS_H
 #define HTDOS_H
@@ -33,10 +37,10 @@ char *HTDOS_slashes(char *path);
  *
  * Bug:	Returns pointer to static -- non-reentrant
  */
-char *HTDOS_name(char *wwwname);
+char *HTDOS_name(const char *wwwname);
 
 #ifdef WIN_EX
-char *HTDOS_short_name(char *fn);
+char *HTDOS_short_name(const char *fn);
 
 #else
 #define HTDOS_short_name(fn)  fn
diff --git a/WWW/Library/Implementation/HTFTP.c b/WWW/Library/Implementation/HTFTP.c
index 6f71fae9..93857a0d 100644
--- a/WWW/Library/Implementation/HTFTP.c
+++ b/WWW/Library/Implementation/HTFTP.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTFTP.c,v 1.89 2009/02/01 12:49:00 tom Exp $
+ * $LynxId: HTFTP.c,v 1.90 2009/09/07 23:36:28 tom Exp $
  *
  *			File Transfer Protocol (FTP) Client
  *			for a WorldWideWeb browser
@@ -1631,8 +1631,10 @@ static void parse_eplf_line(char *line,
 static void parse_ls_line(char *line,
 			  EntryInfo *entry)
 {
+#ifdef LONG_LIST
     char *next;
     char *cp;
+#endif
     int i, j;
     unsigned long base = 1;
     unsigned long size_num = 0;
diff --git a/WWW/Library/Implementation/HTRules.c b/WWW/Library/Implementation/HTRules.c
index 3f129f16..b235414d 100644
--- a/WWW/Library/Implementation/HTRules.c
+++ b/WWW/Library/Implementation/HTRules.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTRules.c,v 1.38 2009/02/01 21:19:02 tom Exp $
+ * $LynxId: HTRules.c,v 1.39 2009/11/21 15:01:20 Kihara.Hideto Exp $
  *
  *	Configuration manager for Hypertext Daemon		HTRules.c
  *	==========================================
@@ -462,10 +462,17 @@ int HTSetConfiguration(char *config)
 
     StrAllocCopy(line, config);
     {
-	char *p = strchr(line, '#');	/* Chop off comments */
+	char *p = line;
 
-	if (p)
-	    *p = 0;
+	/* Chop off comments */
+	while ((p = strchr(p, '#'))) {
+	    if (p == line || isspace(UCH(*(p - 1)))) {
+		*p = 0;
+		break;
+	    } else {
+		p++;
+	    }
+	}
     }
     pointer = line;
     word1 = HTNextField(&pointer);
diff --git a/WWW/Library/Implementation/HTString.c b/WWW/Library/Implementation/HTString.c
index 9c5d5172..c6bdb348 100644
--- a/WWW/Library/Implementation/HTString.c
+++ b/WWW/Library/Implementation/HTString.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTString.c,v 1.57 2009/03/17 22:27:59 tom Exp $
+ * $LynxId: HTString.c,v 1.58 2009/11/21 17:05:33 Bela.Lubkin Exp $
  *
  *	Case-independent string comparison		HTString.c
  *
@@ -1307,7 +1307,7 @@ bstring *HTBprintf(bstring **pstr, const char *fmt,...)
     LYva_start(ap, fmt);
     {
 	temp = StrAllocVsprintf(&temp, 0, fmt, &ap);
-	if (!isEmpty(temp)) {
+	if (non_empty(temp)) {
 	    HTSABCat(pstr, temp, strlen(temp));
 	}
 	FREE(temp);
diff --git a/WWW/Library/Implementation/HTTP.c b/WWW/Library/Implementation/HTTP.c
index 2a70cb49..b7ac85fa 100644
--- a/WWW/Library/Implementation/HTTP.c
+++ b/WWW/Library/Implementation/HTTP.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTTP.c,v 1.110 2009/08/27 00:56:00 tom Exp $
+ * $LynxId: HTTP.c,v 1.112 2009/11/21 17:05:33 Bela.Lubkin Exp $
  *
  * HyperText Tranfer Protocol	- Client implementation		HTTP.c
  * ==========================
@@ -1159,7 +1159,7 @@ static int HTLoadHTTP(const char *arg,
 	}
 
 	if (LYSendUserAgent || no_useragent) {
-	    if (!isEmpty(LYUserAgent)) {
+	    if (non_empty(LYUserAgent)) {
 		char *cp = LYSkipBlanks(LYUserAgent);
 
 		/* Won't send it at all if all blank - kw */
@@ -1977,12 +1977,13 @@ static int HTLoadHTTP(const char *arg,
 		switch (server_status) {
 		case 401:	/* Unauthorized */
 		    /*
-		     * Authorization for orgin server required.  If show_401 is
-		     * set, proceed to showing the 401 body.  Otherwise, if we
-		     * can set up authorization based on the WWW-Authenticate
-		     * header, and the user provides a username and password,
-		     * try again.  Otherwise, check whether to show the 401
-		     * body or restore the current document.  - FM
+		     * Authorization for origin server required.  If show_401
+		     * is set, proceed to showing the 401 body.  Otherwise, if
+		     * we can set up authorization based on the
+		     * WWW-Authenticate header, and the user provides a
+		     * username and password, try again.  Otherwise, check
+		     * whether to show the 401 body or restore the current
+		     * document - FM
 		     */
 		    if (show_401)
 			break;
diff --git a/WWW/Library/Implementation/HTTelnet.c b/WWW/Library/Implementation/HTTelnet.c
index 7765920e..f525d5c7 100644
--- a/WWW/Library/Implementation/HTTelnet.c
+++ b/WWW/Library/Implementation/HTTelnet.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTTelnet.c,v 1.38 2007/07/01 23:13:22 Daniel.Dickman Exp $
+ * $LynxId: HTTelnet.c,v 1.39 2009/11/21 17:05:33 Bela.Lubkin Exp $
  *
  *		Telnet Access, Rlogin, etc			HTTelnet.c
  *		==========================
@@ -44,11 +44,11 @@ static void do_system(char *) GCC_UNUSED;
 
 static void do_system(char *command)
 {
-    if (!isEmpty(command)) {
+    if (non_empty(command)) {
 	CTRACE((tfp, "HTTelnet: Command is: %s\n\n", command));
 	LYSystem(command);
-	FREE(command);
     }
+    FREE(command);
 }
 
 /*	Telnet or "rlogin" access
diff --git a/WWW/Library/Implementation/HTUtils.h b/WWW/Library/Implementation/HTUtils.h
index ecd20607..60cf00c3 100644
--- a/WWW/Library/Implementation/HTUtils.h
+++ b/WWW/Library/Implementation/HTUtils.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTUtils.h,v 1.94 2009/05/10 23:06:31 tom Exp $
+ * $LynxId: HTUtils.h,v 1.96 2009/11/21 17:05:33 Bela.Lubkin Exp $
  *
  * Utility macros for the W3 code library
  * MACROS FOR GENERAL USE
@@ -310,6 +310,7 @@ Standard C library for malloc() etc
 #endif
 
 #define isEmpty(s)   ((s) == 0 || *(s) == 0)
+#define non_empty(s) !isEmpty(s)
 
 #define NonNull(s) (((s) != 0) ? s : "")
 #define NONNULL(s) (((s) != 0) ? s : "(null)")
@@ -466,7 +467,7 @@ Out Of Memory checking for malloc() return:
 
 #ifndef TOLOWER
 
-#ifdef EXP_ASCII_CTYPES
+#ifdef USE_ASCII_CTYPES
 
 #define TOLOWER(c) ascii_tolower(UCH(c))
 #define TOUPPER(c) ascii_toupper(UCH(c))
@@ -738,7 +739,7 @@ extern int WWW_TraceMask;
 extern "C" {
 #endif
 #ifndef TOLOWER
-#ifdef EXP_ASCII_CTYPES
+#ifdef USE_ASCII_CTYPES
     extern int ascii_toupper(int);
     extern int ascii_tolower(int);
     extern int ascii_isupper(int);
diff --git a/WWW/Library/Implementation/SGML.h b/WWW/Library/Implementation/SGML.h
index 08c1538a..7868317d 100644
--- a/WWW/Library/Implementation/SGML.h
+++ b/WWW/Library/Implementation/SGML.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: SGML.h,v 1.43 2009/04/16 00:50:16 tom Exp $
+ * $LynxId: SGML.h,v 1.44 2009/11/21 15:24:48 tom Exp $
  *			       SGML parse and stream definition for libwww
  *                             SGML AND STRUCTURED STREAMS
  *
@@ -148,7 +148,7 @@ extern "C" {
 #ifdef USE_COLOR_STYLE
 	unsigned name_len;	/* The length of the name */
 #endif
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	BOOL can_justify;	/* justification allowed? */
 #endif
 	AttrList attributes;	/* The list of acceptable attributes */
diff --git a/WWW/Library/Implementation/dtd_util.c b/WWW/Library/Implementation/dtd_util.c
index cfa5a789..407b8b65 100644
--- a/WWW/Library/Implementation/dtd_util.c
+++ b/WWW/Library/Implementation/dtd_util.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: dtd_util.c,v 1.72 2009/04/16 22:59:33 tom Exp $
+ * $LynxId: dtd_util.c,v 1.73 2009/11/21 15:24:48 tom Exp $
  *
  * Given a SGML_dtd structure, write a corresponding flat file, or "C" source.
  * Given the flat-file, write the "C" source.
@@ -580,7 +580,7 @@ static void dump_src_HTTag(FILE *output, const SGML_dtd * dtd, int which)
     HTTag *tag = &(dtd->tags[which]);
     char *P_macro = "P";
 
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     if (!tag->can_justify)
 	P_macro = "P0";
 #endif
@@ -724,7 +724,7 @@ static void dump_source(FILE *output, const SGML_dtd * dtd, int dtd_version)
     NOTE("#define NULL_HTTag_ NULL");
     NOTE("#endif");
     NOTE("");
-    NOTE("#ifdef EXP_JUSTIFY_ELTS");
+    NOTE("#ifdef USE_JUSTIFY_ELTS");
     NOTE("#define P(x) P_(x), 1");
     NOTE("#define P0(x) P_(x), 0");
     NOTE("#define NULL_HTTag NULL_HTTag_,0");
@@ -952,7 +952,7 @@ static void dump_flat_TagFlags(FILE *output, const char *name, TagFlags theFlags
 static void dump_flat_HTTag(FILE *output, unsigned n, HTTag * tag)
 {
     fprintf(output, "\t%u:%s\n", n, tag->name);
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     fprintf(output, "\t\t%s\n", tag->can_justify ? "justify" : "nojustify");
 #endif
     dump_flat_attrs(output, tag->attributes, AttrCount(tag));
@@ -1199,7 +1199,7 @@ static int load_flat_HTTag(FILE *input, unsigned nref, HTTag * tag, AttrType * a
 #ifdef USE_COLOR_STYLE
 	tag->name_len = strlen(tag->name);
 #endif
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	if (fscanf(input, "%s\n", name) == 1) {
 	    tag->can_justify = !strcmp(name, "justify");
 	} else {
diff --git a/WWW/Library/Implementation/src0_HTMLDTD.h b/WWW/Library/Implementation/src0_HTMLDTD.h
index 845ed598..53d6620d 100644
--- a/WWW/Library/Implementation/src0_HTMLDTD.h
+++ b/WWW/Library/Implementation/src0_HTMLDTD.h
@@ -1,4 +1,4 @@
-/* $LynxId: src0_HTMLDTD.h,v 1.42 2009/04/16 22:55:54 tom Exp $ */
+/* $LynxId: src0_HTMLDTD.h,v 1.43 2009/11/21 15:24:48 tom Exp $ */
 #ifndef src_HTMLDTD_H0
 #define src_HTMLDTD_H0 1
 
@@ -2275,7 +2275,7 @@ static const attr UL_attr[] = {         /* DIR attributes */
 #define NULL_HTTag_ NULL
 #endif
 
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 #define P(x) P_(x), 1
 #define P0(x) P_(x), 0
 #define NULL_HTTag NULL_HTTag_,0
diff --git a/WWW/Library/Implementation/src1_HTMLDTD.h b/WWW/Library/Implementation/src1_HTMLDTD.h
index c2bc87fb..d4ee6e43 100644
--- a/WWW/Library/Implementation/src1_HTMLDTD.h
+++ b/WWW/Library/Implementation/src1_HTMLDTD.h
@@ -1,4 +1,4 @@
-/* $LynxId: src1_HTMLDTD.h,v 1.42 2009/04/16 22:55:54 tom Exp $ */
+/* $LynxId: src1_HTMLDTD.h,v 1.43 2009/11/21 15:24:48 tom Exp $ */
 #ifndef src_HTMLDTD_H1
 #define src_HTMLDTD_H1 1
 
@@ -2275,7 +2275,7 @@ static const attr UL_attr[] = {         /* DIR attributes */
 #define NULL_HTTag_ NULL
 #endif
 
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 #define P(x) P_(x), 1
 #define P0(x) P_(x), 0
 #define NULL_HTTag NULL_HTTag_,0
diff --git a/aclocal.m4 b/aclocal.m4
index 7effbbaa..0ef88457 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,11 +1,11 @@
-dnl $LynxId: aclocal.m4,v 1.143 2009/08/27 20:25:03 tom Exp $
+dnl $LynxId: aclocal.m4,v 1.144 2009/11/20 10:41:22 tom Exp $
 dnl Macros for auto-configure script.
 dnl by T.E.Dickey <dickey@invisible-island.net>
 dnl and Jim Spath <jspath@mail.bcpl.lib.md.us>
 dnl and Philippe De Muyter <phdm@macqel.be>
 dnl
 dnl Created: 1997/1/28
-dnl Updated: 2009/8/25
+dnl Updated: 2009/11/20
 dnl
 dnl The autoconf used in Lynx development is GNU autoconf 2.13 or 2.52, patched
 dnl by Thomas Dickey.  See your local GNU archives, and this URL:
@@ -1362,7 +1362,7 @@ fi
 
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_FUNCDECL version: 6 updated: 1999/03/30 12:24:31
+dnl CF_CHECK_FUNCDECL version: 7 updated: 2009/10/15 19:39:18
 dnl -----------------
 dnl Check if a function is declared by including a set of include files.
 dnl Invoke the corresponding actions according to whether it is found or not.
@@ -1377,12 +1377,12 @@ AC_DEFUN([CF_CHECK_FUNCDECL],
 AC_MSG_CHECKING([for $2 declaration])
 AC_CACHE_VAL(ac_cv_func_decl_$2,
 [AC_TRY_COMPILE([$1],
-[#ifndef ${ac_func}
-extern	int	${ac_func}();
+[#ifndef $2
+extern	int	$2();
 #endif],[
 AC_TRY_COMPILE([$1],
-[#ifndef ${ac_func}
-int	(*p)() = ${ac_func};
+[#ifndef $2
+int	(*p)() = $2;
 #endif],[
 eval "ac_cv_func_decl_$2=yes"],[
 eval "ac_cv_func_decl_$2=no"])],[
@@ -2721,7 +2721,7 @@ rm -f conftest*
 AC_SUBST(EXTRA_CFLAGS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GNUTLS version: 15 updated: 2008/12/25 09:30:14
+dnl CF_GNUTLS version: 16 updated: 2009/11/20 05:36:52
 dnl ---------
 dnl Check for gnutls library (TLS "is" SSL)
 dnl $1 = the [optional] directory in which the library may be found
@@ -2792,7 +2792,7 @@ AC_DEFUN([CF_GNUTLS],[
 			cf_cv_have_gnutls=yes,
 			cf_cv_have_gnutls=no,
 			,
-			ifelse($2,,[-lgnutls-openssl -lgnutls-extra -lgnutls -lcrypt],[-lgnutls -lcrypt]))
+			ifelse($2,,[-lgnutls-openssl -lgnutls-extra -lgnutls -lgcrypt],[-lgnutls -lgcrypt]))
 
 		CPPFLAGS=$cf_gnutls_CPPFLAGS
 	fi
@@ -2811,7 +2811,7 @@ AC_DEFUN([CF_GNUTLS],[
 		if test -n "$cf_cv_library_path_gnutls" ; then
 			CF_ADD_LIBDIR($cf_cv_library_path_gnutls)
 		fi
-		LIBS="-lgnutls -lcrypt $LIBS"
+		LIBS="-lgnutls -lgcrypt $LIBS"
 
 		ifelse($2,,
 			[if test "$cf_pkg_gnutls" = none ; then
diff --git a/config.hin b/config.hin
index 1efd2a06..f0d60adf 100644
--- a/config.hin
+++ b/config.hin
@@ -1,5 +1,5 @@
 /*
- * $LynxId: config.hin,v 1.113 2009/08/27 19:24:45 tom Exp $
+ * $LynxId: config.hin,v 1.116 2009/11/21 15:52:17 tom Exp $
  * vile:cmode
  *
  * The configure script translates "config.hin" into "lynx_cfg.h"
@@ -40,11 +40,8 @@
 #undef EXEC_SCRIPTS		/* CF_ARG_ENABLE(exec-scripts) */
 #undef EXP_ADDRLIST_PAGE	/* CF_ARG_ENABLE(addrlist-page) */
 #undef EXP_ALT_BINDINGS		/* CF_ARG_ENABLE(alt-bindings) */
-#undef EXP_ASCII_CTYPES		/* CF_ARG_ENABLE(ascii-ctypes) */
-#undef EXP_CHARSET_CHOICE	/* CF_ARG_ENABLE(charset-choice) */
 #undef EXP_CHARTRANS_AUTOSWITCH	/* CF_ARG_ENABLE(font-switch) */
 #undef EXP_JAPANESEUTF8_SUPPORT	/* CF_ARG_ENABLE(japanese-utf8) */
-#undef EXP_JUSTIFY_ELTS		/* CF_ARG_ENABLE(justify-elts) */
 #undef EXP_KEYBOARD_LAYOUT	/* CF_ARG_ENABLE(kbd-layout) */
 #undef EXP_LIBJS		/* CF_ARG_ENABLE(libjs) */
 #undef EXP_NESTED_TABLES	/* CF_ARG_ENABLE(nested-tables) */
@@ -141,8 +138,8 @@
 #undef HAVE_SYS_IOCTL_H		/* have <sys/ioctl.h> */
 #undef HAVE_SYS_NDIR_H		/* AC_HEADER_DIRENT */
 #undef HAVE_SYS_PARAM_H		/* AM_GNU_GETTEXT */
-#undef HAVE_SYS_TIME_H		/* have <sys/time.h> */
 #undef HAVE_SYS_TIMEB_H		/* have <sys/timeb.h> */
+#undef HAVE_SYS_TIME_H		/* have <sys/time.h> */
 #undef HAVE_SYS_WAIT_H		/* have <sys/wait.h> */
 #undef HAVE_TERMIOS_H		/* have <termios.h> */
 #undef HAVE_TERMIO_H		/* have <termio.h> */
@@ -246,8 +243,10 @@
 #undef UNDERLINE_LINKS		/* CF_ARG_ENABLE(underlines) */
 #undef UNIX
 #undef UNZIP_PATH		/* CF_PATH_PROG(unzip) */
+#undef USE_ASCII_CTYPES		/* CF_ARG_ENABLE(ascii-ctypes) */
 #undef USE_BZLIB		/* AC_ARG_WITH(bzlib) */
 #undef USE_CACHEJAR		/* CF_ARG_ENABLE(session-cache) */
+#undef USE_CHARSET_CHOICE	/* CF_ARG_ENABLE(charset-choice) */
 #undef USE_COLOR_STYLE		/* CF_ARG_ENABLE(color-style) */
 #undef USE_DEFAULT_COLORS	/* CF_ARG_ENABLE(default-colors) */
 #undef USE_EXECVP		/* CF_ARG_DISABLE(full-paths) */
@@ -257,6 +256,7 @@
 #undef USE_GNUTLS_FUNCS		/* CF_GNUTLS */
 #undef USE_GNUTLS_INCL		/* CF_GNUTLS */
 #undef USE_IDNA			/* CF_ARG_DISABLE(idna) */
+#undef USE_JUSTIFY_ELTS		/* CF_ARG_ENABLE(justify-elts) */
 #undef USE_LOCALE_CHARSET	/* CF_ARG_ENABLE(locale-charset) */
 #undef USE_OPENSSL_INCL		/* CF_SSL */
 #undef USE_PERSISTENT_COOKIES	/* CF_ARG_ENABLE(persistent-cookies) */
diff --git a/configure b/configure
index a4635750..255201e0 100755
--- a/configure
+++ b/configure
@@ -732,20 +732,17 @@ Experimental Options:
   --disable-config-info   disable browsable configuration-info
   --disable-forms-options disable forms-based options
   --disable-menu-options  disable old-style option menu
+  --disable-sessions      use experimental sessions code
+  --disable-session-cache use experimental session-caching code
   --enable-addrlist-page  use experimental address-list page
-  --enable-ascii-ctypes   use experimental ascii case-conversion
-  --enable-charset-choice use experimental charset-selection logic
   --enable-cjk            use experimental CJK logic
   --enable-japanese-utf8  use experimental Japanese UTF-8 logic
   --enable-default-colors enable use of default-colors (ncurses/slang)
   --enable-kbd-layout     use experimental keyboard-layout support
   --enable-nested-tables  use experimental nested-table support
-  --enable-progressbar    use experimental progress-bar
-  --enable-scrollbar      use experimental scrollbar, with mouse
-  --enable-sessions       use experimental sessions code
-  --enable-session-cache  use experimental session-caching code
 Miscellaneous Options:
   --disable-alt-bindings  disable alternative line-edit bindings
+  --disable-ascii-ctypes  use ascii case-conversion
   --disable-extended-dtd  disable extended HTML DTD logic
   --disable-file-upload   use file-upload support
   --disable-idna          provide IDNA support
@@ -753,8 +750,11 @@ Miscellaneous Options:
   --disable-partial       use partial-display logic
   --disable-persistent-cookies  disable persistent-cookie support
   --disable-prettysrc     colorize HTML source
+  --disable-progressbar   use progress-bar
   --disable-read-eta      read-progress message shows ETA
   --disable-source-cache  cache HTML source for parse mode changes
+  --disable-scrollbar     use scrollbar, with mouse
+  --enable-charset-choice use charset-selection logic
   --enable-externs        use external commands
   --enable-font-switch    use Linux setfont for character-translation
   --enable-cgi-links      support cgi links w/o a http daemon
@@ -13346,7 +13346,7 @@ cf_search="$cf_library_path_list $cf_search"
 echo "${as_me-configure}:13346: testing ... testing $cf_cv_library_path_gnutls ..." 1>&5
 
             CPPFLAGS="$cf_test_CPPFLAGS"
-            LIBS="-lgnutls -lgnutls -lcrypt $cf_save_LIBS"
+            LIBS="-lgnutls -lgnutls -lgcrypt $cf_save_LIBS"
             LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_gnutls"
             cat >conftest.$ac_ext <<_ACEOF
 #line 13352 "configure"
@@ -13551,7 +13551,7 @@ echo "${as_me-configure}:13545: testing adding $cf_add_libdir to library-path ..
 fi
 
 		fi
-		LIBS="-lgnutls -lcrypt $LIBS"
+		LIBS="-lgnutls -lgcrypt $LIBS"
 
 		EXTRA_OBJS="$EXTRA_OBJS tidy_tls\$o"
 
@@ -14323,7 +14323,7 @@ cf_search="$cf_library_path_list $cf_search"
 echo "${as_me-configure}:14323: testing ... testing $cf_cv_library_path_gnutls ..." 1>&5
 
             CPPFLAGS="$cf_test_CPPFLAGS"
-            LIBS="-lgnutls -lgnutls-openssl -lgnutls-extra -lgnutls -lcrypt $cf_save_LIBS"
+            LIBS="-lgnutls -lgnutls-openssl -lgnutls-extra -lgnutls -lgcrypt $cf_save_LIBS"
             LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_gnutls"
             cat >conftest.$ac_ext <<_ACEOF
 #line 14329 "configure"
@@ -14528,7 +14528,7 @@ echo "${as_me-configure}:14522: testing adding $cf_add_libdir to library-path ..
 fi
 
 		fi
-		LIBS="-lgnutls -lcrypt $LIBS"
+		LIBS="-lgnutls -lgcrypt $LIBS"
 
 		if test "$cf_pkg_gnutls" = none ; then
 				echo "$as_me:14534: checking for SSL_connect in -lgnutls-openssl" >&5
@@ -25225,8 +25225,8 @@ else
 int
 main ()
 {
-#ifndef ${ac_func}
-extern	int	${ac_func}();
+#ifndef $ac_func
+extern	int	$ac_func();
 #endif
   ;
   return 0;
@@ -25252,8 +25252,8 @@ cat >conftest.$ac_ext <<_ACEOF
 int
 main ()
 {
-#ifndef ${ac_func}
-int	(*p)() = ${ac_func};
+#ifndef $ac_func
+int	(*p)() = $ac_func;
 #endif
   ;
   return 0;
@@ -25323,8 +25323,8 @@ else
 int
 main ()
 {
-#ifndef ${ac_func}
-extern	int	${ac_func}();
+#ifndef $ac_func
+extern	int	$ac_func();
 #endif
   ;
   return 0;
@@ -25352,8 +25352,8 @@ cat >conftest.$ac_ext <<_ACEOF
 int
 main ()
 {
-#ifndef ${ac_func}
-int	(*p)() = ${ac_func};
+#ifndef $ac_func
+int	(*p)() = $ac_func;
 #endif
   ;
   return 0;
@@ -26815,76 +26815,83 @@ test $use_menu_options = no && cat >>confdefs.h <<\EOF
 #define NO_OPTION_MENU 1
 EOF
 
-echo "$as_me:26818: checking if experimental address-list page should be used" >&5
-echo $ECHO_N "checking if experimental address-list page should be used... $ECHO_C" >&6
+echo "$as_me:26818: checking if sessions code should be used" >&5
+echo $ECHO_N "checking if sessions code should be used... $ECHO_C" >&6
 
-# Check whether --enable-addrlist-page or --disable-addrlist-page was given.
-if test "${enable_addrlist_page+set}" = set; then
-  enableval="$enable_addrlist_page"
-  test "$enableval" != yes && enableval=no
-  if test "$enableval" != "no" ; then
-    use_addrlist_page=$enableval
+# Check whether --enable-sessions or --disable-sessions was given.
+if test "${enable_sessions+set}" = set; then
+  enableval="$enable_sessions"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    use_sessions=$enableval
   else
-    use_addrlist_page=no
+    use_sessions=yes
   fi
 else
-  enableval=no
-  use_addrlist_page=no
+  enableval=yes
+  use_sessions=yes
 
 fi;
-echo "$as_me:26835: result: $use_addrlist_page" >&5
-echo "${ECHO_T}$use_addrlist_page" >&6
-test $use_addrlist_page != no && cat >>confdefs.h <<\EOF
-#define EXP_ADDRLIST_PAGE 1
+echo "$as_me:26835: result: $use_sessions" >&5
+echo "${ECHO_T}$use_sessions" >&6
+if test $use_sessions != no ; then
+	cat >>confdefs.h <<\EOF
+#define USE_SESSIONS 1
 EOF
 
-echo "$as_me:26841: checking if experimental ascii case-conversion should be used" >&5
-echo $ECHO_N "checking if experimental ascii case-conversion should be used... $ECHO_C" >&6
+	EXTRA_OBJS="$EXTRA_OBJS LYSession\$o"
+fi
 
-# Check whether --enable-ascii-ctypes or --disable-ascii-ctypes was given.
-if test "${enable_ascii_ctypes+set}" = set; then
-  enableval="$enable_ascii_ctypes"
-  test "$enableval" != yes && enableval=no
-  if test "$enableval" != "no" ; then
-    use_ascii_ctypes=$enableval
+echo "$as_me:26845: checking if session-caching code should be used" >&5
+echo $ECHO_N "checking if session-caching code should be used... $ECHO_C" >&6
+
+# Check whether --enable-session-cache or --disable-session-cache was given.
+if test "${enable_session_cache+set}" = set; then
+  enableval="$enable_session_cache"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    use_session_cache=$enableval
   else
-    use_ascii_ctypes=yes
+    use_session_cache=yes
   fi
 else
-  enableval=no
-  use_ascii_ctypes=yes
+  enableval=yes
+  use_session_cache=yes
 
 fi;
-echo "$as_me:26858: result: $use_ascii_ctypes" >&5
-echo "${ECHO_T}$use_ascii_ctypes" >&6
-test $use_ascii_ctypes != no && cat >>confdefs.h <<\EOF
-#define EXP_ASCII_CTYPES 1
+echo "$as_me:26862: result: $use_session_cache" >&5
+echo "${ECHO_T}$use_session_cache" >&6
+if test $use_session_cache != no ; then
+    cat >>confdefs.h <<\EOF
+#define USE_CACHEJAR 1
 EOF
 
-echo "$as_me:26864: checking if experimental charset-selection logic should be used" >&5
-echo $ECHO_N "checking if experimental charset-selection logic should be used... $ECHO_C" >&6
+fi
 
-# Check whether --enable-charset-choice or --disable-charset-choice was given.
-if test "${enable_charset_choice+set}" = set; then
-  enableval="$enable_charset_choice"
+echo "$as_me:26871: checking if experimental address-list page should be used" >&5
+echo $ECHO_N "checking if experimental address-list page should be used... $ECHO_C" >&6
+
+# Check whether --enable-addrlist-page or --disable-addrlist-page was given.
+if test "${enable_addrlist_page+set}" = set; then
+  enableval="$enable_addrlist_page"
   test "$enableval" != yes && enableval=no
   if test "$enableval" != "no" ; then
-    use_charset_choice=$enableval
+    use_addrlist_page=$enableval
   else
-    use_charset_choice=no
+    use_addrlist_page=no
   fi
 else
   enableval=no
-  use_charset_choice=no
+  use_addrlist_page=no
 
 fi;
-echo "$as_me:26881: result: $use_charset_choice" >&5
-echo "${ECHO_T}$use_charset_choice" >&6
-test $use_charset_choice != no && cat >>confdefs.h <<\EOF
-#define EXP_CHARSET_CHOICE 1
+echo "$as_me:26888: result: $use_addrlist_page" >&5
+echo "${ECHO_T}$use_addrlist_page" >&6
+test $use_addrlist_page != no && cat >>confdefs.h <<\EOF
+#define EXP_ADDRLIST_PAGE 1
 EOF
 
-echo "$as_me:26887: checking if experimental CJK logic should be used" >&5
+echo "$as_me:26894: checking if experimental CJK logic should be used" >&5
 echo $ECHO_N "checking if experimental CJK logic should be used... $ECHO_C" >&6
 
 # Check whether --enable-cjk or --disable-cjk was given.
@@ -26901,13 +26908,13 @@ else
   use_cjk=no
 
 fi;
-echo "$as_me:26904: result: $use_cjk" >&5
+echo "$as_me:26911: result: $use_cjk" >&5
 echo "${ECHO_T}$use_cjk" >&6
 test $use_cjk != no && cat >>confdefs.h <<\EOF
 #define CJK_EX 1
 EOF
 
-echo "$as_me:26910: checking if experimental Japanese UTF-8 logic should be used" >&5
+echo "$as_me:26917: checking if experimental Japanese UTF-8 logic should be used" >&5
 echo $ECHO_N "checking if experimental Japanese UTF-8 logic should be used... $ECHO_C" >&6
 
 # Check whether --enable-japanese-utf8 or --disable-japanese-utf8 was given.
@@ -26924,7 +26931,7 @@ else
   use_ja_utf8=no
 
 fi;
-echo "$as_me:26927: result: $use_ja_utf8" >&5
+echo "$as_me:26934: result: $use_ja_utf8" >&5
 echo "${ECHO_T}$use_ja_utf8" >&6
 if test $use_ja_utf8 != no ; then
 	cat >>confdefs.h <<\EOF
@@ -26969,7 +26976,7 @@ if test -n "$cf_searchpath/include" ; then
 			  cf_save_CPPFLAGS=$CPPFLAGS
 			  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 			  cat >conftest.$ac_ext <<_ACEOF
-#line 26972 "configure"
+#line 26979 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -26981,16 +26988,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:26984: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26991: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26987: \$? = $ac_status" >&5
+  echo "$as_me:26994: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:26990: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26997: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26993: \$? = $ac_status" >&5
+  echo "$as_me:27000: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   :
 else
@@ -27007,7 +27014,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
 		if test "$cf_have_incdir" = no ; then
 		  test -n "$verbose" && echo "	adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me-configure}:27010: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me-configure}:27017: testing adding $cf_add_incdir to include-path ..." 1>&5
 
 		  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -27048,7 +27055,7 @@ if test -n "$cf_searchpath/../include" ; then
 			  cf_save_CPPFLAGS=$CPPFLAGS
 			  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 			  cat >conftest.$ac_ext <<_ACEOF
-#line 27051 "configure"
+#line 27058 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -27060,16 +27067,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:27063: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:27070: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:27066: \$? = $ac_status" >&5
+  echo "$as_me:27073: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:27069: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27076: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27072: \$? = $ac_status" >&5
+  echo "$as_me:27079: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   :
 else
@@ -27086,7 +27093,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
 		if test "$cf_have_incdir" = no ; then
 		  test -n "$verbose" && echo "	adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me-configure}:27089: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me-configure}:27096: testing adding $cf_add_incdir to include-path ..." 1>&5
 
 		  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -27102,7 +27109,7 @@ echo "${as_me-configure}:27089: testing adding $cf_add_incdir to include-path ..
 fi
 
 	else
-{ { echo "$as_me:27105: error: cannot find libiconv under $withval" >&5
+{ { echo "$as_me:27112: error: cannot find libiconv under $withval" >&5
 echo "$as_me: error: cannot find libiconv under $withval" >&2;}
    { (exit 1); exit 1; }; }
 	fi
@@ -27127,7 +27134,7 @@ if test -n "$cf_searchpath/lib" ; then
       if test "$cf_have_libdir" = no ; then
         test -n "$verbose" && echo "	adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me-configure}:27130: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me-configure}:27137: testing adding $cf_add_libdir to library-path ..." 1>&5
 
         LDFLAGS="-L$cf_add_libdir $LDFLAGS"
       fi
@@ -27156,7 +27163,7 @@ if test -n "$cf_searchpath" ; then
       if test "$cf_have_libdir" = no ; then
         test -n "$verbose" && echo "	adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me-configure}:27159: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me-configure}:27166: testing adding $cf_add_libdir to library-path ..." 1>&5
 
         LDFLAGS="-L$cf_add_libdir $LDFLAGS"
       fi
@@ -27165,7 +27172,7 @@ echo "${as_me-configure}:27159: testing adding $cf_add_libdir to library-path ..
 fi
 
 	else
-{ { echo "$as_me:27168: error: cannot find libiconv under $withval" >&5
+{ { echo "$as_me:27175: error: cannot find libiconv under $withval" >&5
 echo "$as_me: error: cannot find libiconv under $withval" >&2;}
    { (exit 1); exit 1; }; }
 	fi
@@ -27176,7 +27183,7 @@ done
 
 fi;
 
-  echo "$as_me:27179: checking for iconv" >&5
+  echo "$as_me:27186: checking for iconv" >&5
 echo $ECHO_N "checking for iconv... $ECHO_C" >&6
 if test "${am_cv_func_iconv+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -27187,10 +27194,10 @@ else
 cf_cv_header_path_iconv=
 cf_cv_library_path_iconv=
 
-echo "${as_me-configure}:27190: testing Starting FIND_LINKAGE(iconv,) ..." 1>&5
+echo "${as_me-configure}:27197: testing Starting FIND_LINKAGE(iconv,) ..." 1>&5
 
 cat >conftest.$ac_ext <<_ACEOF
-#line 27193 "configure"
+#line 27200 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -27209,16 +27216,16 @@ main ()
 }
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:27212: \"$ac_link\"") >&5
+if { (eval echo "$as_me:27219: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:27215: \$? = $ac_status" >&5
+  echo "$as_me:27222: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:27218: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27225: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27221: \$? = $ac_status" >&5
+  echo "$as_me:27228: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   cf_cv_find_linkage_iconv=yes
 else
@@ -27229,9 +27236,9 @@ cat conftest.$ac_ext >&5
 
     test -n "$verbose" && echo "	find linkage for iconv library" 1>&6
 
-echo "${as_me-configure}:27232: testing find linkage for iconv library ..." 1>&5
+echo "${as_me-configure}:27239: testing find linkage for iconv library ..." 1>&5
 
-echo "${as_me-configure}:27234: testing Searching for headers in FIND_LINKAGE(iconv,) ..." 1>&5
+echo "${as_me-configure}:27241: testing Searching for headers in FIND_LINKAGE(iconv,) ..." 1>&5
 
     cf_save_CPPFLAGS="$CPPFLAGS"
     cf_test_CPPFLAGS="$CPPFLAGS"
@@ -27339,11 +27346,11 @@ cf_search="$cf_header_path_list $cf_search"
       if test -d $cf_cv_header_path_iconv ; then
         test -n "$verbose" && echo "	... testing $cf_cv_header_path_iconv" 1>&6
 
-echo "${as_me-configure}:27342: testing ... testing $cf_cv_header_path_iconv ..." 1>&5
+echo "${as_me-configure}:27349: testing ... testing $cf_cv_header_path_iconv ..." 1>&5
 
         CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_iconv"
         cat >conftest.$ac_ext <<_ACEOF
-#line 27346 "configure"
+#line 27353 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -27362,21 +27369,21 @@ main ()
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:27365: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:27372: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:27368: \$? = $ac_status" >&5
+  echo "$as_me:27375: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:27371: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27378: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27374: \$? = $ac_status" >&5
+  echo "$as_me:27381: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
             test -n "$verbose" && echo "	... found iconv headers in $cf_cv_header_path_iconv" 1>&6
 
-echo "${as_me-configure}:27379: testing ... found iconv headers in $cf_cv_header_path_iconv ..." 1>&5
+echo "${as_me-configure}:27386: testing ... found iconv headers in $cf_cv_header_path_iconv ..." 1>&5
 
             cf_cv_find_linkage_iconv=maybe
             cf_test_CPPFLAGS="$CPPFLAGS"
@@ -27394,7 +27401,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
 
     if test "$cf_cv_find_linkage_iconv" = maybe ; then
 
-echo "${as_me-configure}:27397: testing Searching for iconv library in FIND_LINKAGE(iconv,) ..." 1>&5
+echo "${as_me-configure}:27404: testing Searching for iconv library in FIND_LINKAGE(iconv,) ..." 1>&5
 
       cf_save_LIBS="$LIBS"
       cf_save_LDFLAGS="$LDFLAGS"
@@ -27490,13 +27497,13 @@ cf_search="$cf_library_path_list $cf_search"
           if test -d $cf_cv_library_path_iconv ; then
             test -n "$verbose" && echo "	... testing $cf_cv_library_path_iconv" 1>&6
 
-echo "${as_me-configure}:27493: testing ... testing $cf_cv_library_path_iconv ..." 1>&5
+echo "${as_me-configure}:27500: testing ... testing $cf_cv_library_path_iconv ..." 1>&5
 
             CPPFLAGS="$cf_test_CPPFLAGS"
             LIBS="-liconv  $cf_save_LIBS"
             LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_iconv"
             cat >conftest.$ac_ext <<_ACEOF
-#line 27499 "configure"
+#line 27506 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -27515,21 +27522,21 @@ main ()
 }
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:27518: \"$ac_link\"") >&5
+if { (eval echo "$as_me:27525: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:27521: \$? = $ac_status" >&5
+  echo "$as_me:27528: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:27524: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27531: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27527: \$? = $ac_status" >&5
+  echo "$as_me:27534: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
                 test -n "$verbose" && echo "	... found iconv library in $cf_cv_library_path_iconv" 1>&6
 
-echo "${as_me-configure}:27532: testing ... found iconv library in $cf_cv_library_path_iconv ..." 1>&5
+echo "${as_me-configure}:27539: testing ... found iconv library in $cf_cv_library_path_iconv ..." 1>&5
 
                 cf_cv_find_linkage_iconv=yes
                 cf_cv_library_file_iconv="-liconv"
@@ -27565,7 +27572,7 @@ am_cv_func_iconv="no, consider installing GNU libiconv"
 fi
 
 fi
-echo "$as_me:27568: result: $am_cv_func_iconv" >&5
+echo "$as_me:27575: result: $am_cv_func_iconv" >&5
 echo "${ECHO_T}$am_cv_func_iconv" >&6
 
   if test "$am_cv_func_iconv" = yes; then
@@ -27574,14 +27581,14 @@ cat >>confdefs.h <<\EOF
 #define HAVE_ICONV 1
 EOF
 
-    echo "$as_me:27577: checking if the declaration of iconv() needs const." >&5
+    echo "$as_me:27584: checking if the declaration of iconv() needs const." >&5
 echo $ECHO_N "checking if the declaration of iconv() needs const.... $ECHO_C" >&6
 if test "${am_cv_proto_iconv_const+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
       cat >conftest.$ac_ext <<_ACEOF
-#line 27584 "configure"
+#line 27591 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -27606,16 +27613,16 @@ main ()
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:27609: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:27616: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:27612: \$? = $ac_status" >&5
+  echo "$as_me:27619: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:27615: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27622: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27618: \$? = $ac_status" >&5
+  echo "$as_me:27625: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   am_cv_proto_iconv_const=no
 else
@@ -27625,7 +27632,7 @@ am_cv_proto_iconv_const=yes
 fi
 rm -f conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:27628: result: $am_cv_proto_iconv_const" >&5
+echo "$as_me:27635: result: $am_cv_proto_iconv_const" >&5
 echo "${ECHO_T}$am_cv_proto_iconv_const" >&6
 
     if test "$am_cv_proto_iconv_const" = yes ; then
@@ -27667,7 +27674,7 @@ if test -n "$cf_cv_header_path_iconv" ; then
 			  cf_save_CPPFLAGS=$CPPFLAGS
 			  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 			  cat >conftest.$ac_ext <<_ACEOF
-#line 27670 "configure"
+#line 27677 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -27679,16 +27686,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:27682: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:27689: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:27685: \$? = $ac_status" >&5
+  echo "$as_me:27692: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:27688: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27695: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27691: \$? = $ac_status" >&5
+  echo "$as_me:27698: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   :
 else
@@ -27705,7 +27712,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
 		if test "$cf_have_incdir" = no ; then
 		  test -n "$verbose" && echo "	adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me-configure}:27708: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me-configure}:27715: testing adding $cf_add_incdir to include-path ..." 1>&5
 
 		  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -27742,7 +27749,7 @@ if test -n "$cf_cv_library_path_iconv" ; then
       if test "$cf_have_libdir" = no ; then
         test -n "$verbose" && echo "	adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me-configure}:27745: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me-configure}:27752: testing adding $cf_add_libdir to library-path ..." 1>&5
 
         LDFLAGS="-L$cf_add_libdir $LDFLAGS"
       fi
@@ -27766,7 +27773,7 @@ curses|slang|ncurses*)
 esac
 
 if test "$use_dft_colors" != no ; then
-echo "$as_me:27769: checking if you want to use default-colors" >&5
+echo "$as_me:27776: checking if you want to use default-colors" >&5
 echo $ECHO_N "checking if you want to use default-colors... $ECHO_C" >&6
 
 # Check whether --enable-default-colors or --disable-default-colors was given.
@@ -27783,7 +27790,7 @@ else
   use_dft_colors=no
 
 fi;
-echo "$as_me:27786: result: $use_dft_colors" >&5
+echo "$as_me:27793: result: $use_dft_colors" >&5
 echo "${ECHO_T}$use_dft_colors" >&6
 test $use_dft_colors = "yes" && cat >>confdefs.h <<\EOF
 #define USE_DEFAULT_COLORS 1
@@ -27791,7 +27798,7 @@ EOF
 
 fi
 
-echo "$as_me:27794: checking if experimental keyboard-layout logic should be used" >&5
+echo "$as_me:27801: checking if experimental keyboard-layout logic should be used" >&5
 echo $ECHO_N "checking if experimental keyboard-layout logic should be used... $ECHO_C" >&6
 
 # Check whether --enable-kbd-layout or --disable-kbd-layout was given.
@@ -27808,13 +27815,13 @@ else
   use_kbd_layout=no
 
 fi;
-echo "$as_me:27811: result: $use_kbd_layout" >&5
+echo "$as_me:27818: result: $use_kbd_layout" >&5
 echo "${ECHO_T}$use_kbd_layout" >&6
 test $use_kbd_layout != no && cat >>confdefs.h <<\EOF
 #define EXP_KEYBOARD_LAYOUT 1
 EOF
 
-echo "$as_me:27817: checking if experimental nested-table logic should be used" >&5
+echo "$as_me:27824: checking if experimental nested-table logic should be used" >&5
 echo $ECHO_N "checking if experimental nested-table logic should be used... $ECHO_C" >&6
 
 # Check whether --enable-nested-tables or --disable-nested-tables was given.
@@ -27831,109 +27838,13 @@ else
   use_nested_tables=no
 
 fi;
-echo "$as_me:27834: result: $use_nested_tables" >&5
+echo "$as_me:27841: result: $use_nested_tables" >&5
 echo "${ECHO_T}$use_nested_tables" >&6
 test $use_nested_tables != no && cat >>confdefs.h <<\EOF
 #define EXP_NESTED_TABLES 1
 EOF
 
-echo "$as_me:27840: checking if progress-bar code should be used" >&5
-echo $ECHO_N "checking if progress-bar code should be used... $ECHO_C" >&6
-
-# Check whether --enable-progressbar or --disable-progressbar was given.
-if test "${enable_progressbar+set}" = set; then
-  enableval="$enable_progressbar"
-  test "$enableval" != yes && enableval=no
-  if test "$enableval" != "no" ; then
-    use_progressbar=$enableval
-  else
-    use_progressbar=no
-  fi
-else
-  enableval=no
-  use_progressbar=no
-
-fi;
-echo "$as_me:27857: result: $use_progressbar" >&5
-echo "${ECHO_T}$use_progressbar" >&6
-test $use_progressbar != no && cat >>confdefs.h <<\EOF
-#define USE_PROGRESSBAR 1
-EOF
-
-echo "$as_me:27863: checking if scrollbar code should be used" >&5
-echo $ECHO_N "checking if scrollbar code should be used... $ECHO_C" >&6
-
-# Check whether --enable-scrollbar or --disable-scrollbar was given.
-if test "${enable_scrollbar+set}" = set; then
-  enableval="$enable_scrollbar"
-  test "$enableval" != yes && enableval=no
-  if test "$enableval" != "no" ; then
-    use_scrollbar=$enableval
-  else
-    use_scrollbar=no
-  fi
-else
-  enableval=no
-  use_scrollbar=no
-
-fi;
-echo "$as_me:27880: result: $use_scrollbar" >&5
-echo "${ECHO_T}$use_scrollbar" >&6
-
-echo "$as_me:27883: checking if sessions code should be used" >&5
-echo $ECHO_N "checking if sessions code should be used... $ECHO_C" >&6
-
-# Check whether --enable-sessions or --disable-sessions was given.
-if test "${enable_sessions+set}" = set; then
-  enableval="$enable_sessions"
-  test "$enableval" != yes && enableval=no
-  if test "$enableval" != "no" ; then
-    use_sessions=$enableval
-  else
-    use_sessions=no
-  fi
-else
-  enableval=no
-  use_sessions=no
-
-fi;
-echo "$as_me:27900: result: $use_sessions" >&5
-echo "${ECHO_T}$use_sessions" >&6
-if test $use_sessions != no ; then
-	cat >>confdefs.h <<\EOF
-#define USE_SESSIONS 1
-EOF
-
-	EXTRA_OBJS="$EXTRA_OBJS LYSession\$o"
-fi
-
-echo "$as_me:27910: checking if session-caching code should be used" >&5
-echo $ECHO_N "checking if session-caching code should be used... $ECHO_C" >&6
-
-# Check whether --enable-session-cache or --disable-session-cache was given.
-if test "${enable_session_cache+set}" = set; then
-  enableval="$enable_session_cache"
-  test "$enableval" != yes && enableval=no
-  if test "$enableval" != "no" ; then
-    use_session_cache=$enableval
-  else
-    use_session_cache=no
-  fi
-else
-  enableval=no
-  use_session_cache=no
-
-fi;
-echo "$as_me:27927: result: $use_session_cache" >&5
-echo "${ECHO_T}$use_session_cache" >&6
-if test $use_session_cache != no ; then
-    cat >>confdefs.h <<\EOF
-#define USE_CACHEJAR 1
-EOF
-
-fi
-
-echo "$as_me:27936: checking if alternative line-edit bindings should be used" >&5
+echo "$as_me:27847: checking if alternative line-edit bindings should be used" >&5
 echo $ECHO_N "checking if alternative line-edit bindings should be used... $ECHO_C" >&6
 
 # Check whether --enable-alt-bindings or --disable-alt-bindings was given.
@@ -27950,13 +27861,36 @@ else
   use_alt_bindings=yes
 
 fi;
-echo "$as_me:27953: result: $use_alt_bindings" >&5
+echo "$as_me:27864: result: $use_alt_bindings" >&5
 echo "${ECHO_T}$use_alt_bindings" >&6
 test $use_alt_bindings != no && cat >>confdefs.h <<\EOF
 #define EXP_ALT_BINDINGS 1
 EOF
 
-echo "$as_me:27959: checking if you want to use extended HTML DTD logic" >&5
+echo "$as_me:27870: checking if ascii case-conversion should be used" >&5
+echo $ECHO_N "checking if ascii case-conversion should be used... $ECHO_C" >&6
+
+# Check whether --enable-ascii-ctypes or --disable-ascii-ctypes was given.
+if test "${enable_ascii_ctypes+set}" = set; then
+  enableval="$enable_ascii_ctypes"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    use_ascii_ctypes=$enableval
+  else
+    use_ascii_ctypes=yes
+  fi
+else
+  enableval=yes
+  use_ascii_ctypes=yes
+
+fi;
+echo "$as_me:27887: result: $use_ascii_ctypes" >&5
+echo "${ECHO_T}$use_ascii_ctypes" >&6
+test $use_ascii_ctypes != no && cat >>confdefs.h <<\EOF
+#define USE_ASCII_CTYPES 1
+EOF
+
+echo "$as_me:27893: checking if you want to use extended HTML DTD logic" >&5
 echo $ECHO_N "checking if you want to use extended HTML DTD logic... $ECHO_C" >&6
 
 # Check whether --enable-extended-dtd or --disable-extended-dtd was given.
@@ -27973,13 +27907,13 @@ else
   use_ext_htmldtd=yes
 
 fi;
-echo "$as_me:27976: result: $use_ext_htmldtd" >&5
+echo "$as_me:27910: result: $use_ext_htmldtd" >&5
 echo "${ECHO_T}$use_ext_htmldtd" >&6
 test $use_ext_htmldtd = "no" && cat >>confdefs.h <<\EOF
 #define NO_EXTENDED_HTMLDTD 1
 EOF
 
-echo "$as_me:27982: checking if file-upload logic should be used" >&5
+echo "$as_me:27916: checking if file-upload logic should be used" >&5
 echo $ECHO_N "checking if file-upload logic should be used... $ECHO_C" >&6
 
 # Check whether --enable-file-upload or --disable-file-upload was given.
@@ -27996,13 +27930,13 @@ else
   use_file_upload=yes
 
 fi;
-echo "$as_me:27999: result: $use_file_upload" >&5
+echo "$as_me:27933: result: $use_file_upload" >&5
 echo "${ECHO_T}$use_file_upload" >&6
 test $use_file_upload != no && cat >>confdefs.h <<\EOF
 #define USE_FILE_UPLOAD 1
 EOF
 
-echo "$as_me:28005: checking if IDNA support should be used" >&5
+echo "$as_me:27939: checking if IDNA support should be used" >&5
 echo $ECHO_N "checking if IDNA support should be used... $ECHO_C" >&6
 
 # Check whether --enable-idna or --disable-idna was given.
@@ -28019,7 +27953,7 @@ else
   use_idna=yes
 
 fi;
-echo "$as_me:28022: result: $use_idna" >&5
+echo "$as_me:27956: result: $use_idna" >&5
 echo "${ECHO_T}$use_idna" >&6
 
 if test "$use_idna" = yes ; then
@@ -28058,7 +27992,7 @@ if test -n "$cf_searchpath/include" ; then
 			  cf_save_CPPFLAGS=$CPPFLAGS
 			  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 			  cat >conftest.$ac_ext <<_ACEOF
-#line 28061 "configure"
+#line 27995 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -28070,16 +28004,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:28073: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:28007: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:28076: \$? = $ac_status" >&5
+  echo "$as_me:28010: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:28079: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28013: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:28082: \$? = $ac_status" >&5
+  echo "$as_me:28016: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   :
 else
@@ -28096,7 +28030,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
 		if test "$cf_have_incdir" = no ; then
 		  test -n "$verbose" && echo "	adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me-configure}:28099: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me-configure}:28033: testing adding $cf_add_incdir to include-path ..." 1>&5
 
 		  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -28137,7 +28071,7 @@ if test -n "$cf_searchpath/../include" ; then
 			  cf_save_CPPFLAGS=$CPPFLAGS
 			  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 			  cat >conftest.$ac_ext <<_ACEOF
-#line 28140 "configure"
+#line 28074 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -28149,16 +28083,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:28152: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:28086: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:28155: \$? = $ac_status" >&5
+  echo "$as_me:28089: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:28158: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28092: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:28161: \$? = $ac_status" >&5
+  echo "$as_me:28095: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   :
 else
@@ -28175,7 +28109,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
 		if test "$cf_have_incdir" = no ; then
 		  test -n "$verbose" && echo "	adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me-configure}:28178: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me-configure}:28112: testing adding $cf_add_incdir to include-path ..." 1>&5
 
 		  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -28191,7 +28125,7 @@ echo "${as_me-configure}:28178: testing adding $cf_add_incdir to include-path ..
 fi
 
 	else
-{ { echo "$as_me:28194: error: cannot find  under $use_idna" >&5
+{ { echo "$as_me:28128: error: cannot find  under $use_idna" >&5
 echo "$as_me: error: cannot find  under $use_idna" >&2;}
    { (exit 1); exit 1; }; }
 	fi
@@ -28216,7 +28150,7 @@ if test -n "$cf_searchpath/lib" ; then
       if test "$cf_have_libdir" = no ; then
         test -n "$verbose" && echo "	adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me-configure}:28219: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me-configure}:28153: testing adding $cf_add_libdir to library-path ..." 1>&5
 
         LDFLAGS="-L$cf_add_libdir $LDFLAGS"
       fi
@@ -28245,7 +28179,7 @@ if test -n "$cf_searchpath" ; then
       if test "$cf_have_libdir" = no ; then
         test -n "$verbose" && echo "	adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me-configure}:28248: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me-configure}:28182: testing adding $cf_add_libdir to library-path ..." 1>&5
 
         LDFLAGS="-L$cf_add_libdir $LDFLAGS"
       fi
@@ -28254,7 +28188,7 @@ echo "${as_me-configure}:28248: testing adding $cf_add_libdir to library-path ..
 fi
 
 	else
-{ { echo "$as_me:28257: error: cannot find  under $use_idna" >&5
+{ { echo "$as_me:28191: error: cannot find  under $use_idna" >&5
 echo "$as_me: error: cannot find  under $use_idna" >&2;}
    { (exit 1); exit 1; }; }
 	fi
@@ -28268,10 +28202,10 @@ done
 cf_cv_header_path_idn=
 cf_cv_library_path_idn=
 
-echo "${as_me-configure}:28271: testing Starting FIND_LINKAGE(idn,) ..." 1>&5
+echo "${as_me-configure}:28205: testing Starting FIND_LINKAGE(idn,) ..." 1>&5
 
 cat >conftest.$ac_ext <<_ACEOF
-#line 28274 "configure"
+#line 28208 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -28289,16 +28223,16 @@ main ()
 }
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:28292: \"$ac_link\"") >&5
+if { (eval echo "$as_me:28226: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:28295: \$? = $ac_status" >&5
+  echo "$as_me:28229: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:28298: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28232: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:28301: \$? = $ac_status" >&5
+  echo "$as_me:28235: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   cf_cv_find_linkage_idn=yes
 else
@@ -28309,9 +28243,9 @@ cat conftest.$ac_ext >&5
 
     test -n "$verbose" && echo "	find linkage for idn library" 1>&6
 
-echo "${as_me-configure}:28312: testing find linkage for idn library ..." 1>&5
+echo "${as_me-configure}:28246: testing find linkage for idn library ..." 1>&5
 
-echo "${as_me-configure}:28314: testing Searching for headers in FIND_LINKAGE(idn,) ..." 1>&5
+echo "${as_me-configure}:28248: testing Searching for headers in FIND_LINKAGE(idn,) ..." 1>&5
 
     cf_save_CPPFLAGS="$CPPFLAGS"
     cf_test_CPPFLAGS="$CPPFLAGS"
@@ -28419,11 +28353,11 @@ cf_search="$cf_header_path_list $cf_search"
       if test -d $cf_cv_header_path_idn ; then
         test -n "$verbose" && echo "	... testing $cf_cv_header_path_idn" 1>&6
 
-echo "${as_me-configure}:28422: testing ... testing $cf_cv_header_path_idn ..." 1>&5
+echo "${as_me-configure}:28356: testing ... testing $cf_cv_header_path_idn ..." 1>&5
 
         CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_idn"
         cat >conftest.$ac_ext <<_ACEOF
-#line 28426 "configure"
+#line 28360 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -28441,21 +28375,21 @@ main ()
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:28444: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:28378: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:28447: \$? = $ac_status" >&5
+  echo "$as_me:28381: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:28450: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28384: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:28453: \$? = $ac_status" >&5
+  echo "$as_me:28387: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
             test -n "$verbose" && echo "	... found idn headers in $cf_cv_header_path_idn" 1>&6
 
-echo "${as_me-configure}:28458: testing ... found idn headers in $cf_cv_header_path_idn ..." 1>&5
+echo "${as_me-configure}:28392: testing ... found idn headers in $cf_cv_header_path_idn ..." 1>&5
 
             cf_cv_find_linkage_idn=maybe
             cf_test_CPPFLAGS="$CPPFLAGS"
@@ -28473,7 +28407,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
 
     if test "$cf_cv_find_linkage_idn" = maybe ; then
 
-echo "${as_me-configure}:28476: testing Searching for idn library in FIND_LINKAGE(idn,) ..." 1>&5
+echo "${as_me-configure}:28410: testing Searching for idn library in FIND_LINKAGE(idn,) ..." 1>&5
 
       cf_save_LIBS="$LIBS"
       cf_save_LDFLAGS="$LDFLAGS"
@@ -28569,13 +28503,13 @@ cf_search="$cf_library_path_list $cf_search"
           if test -d $cf_cv_library_path_idn ; then
             test -n "$verbose" && echo "	... testing $cf_cv_library_path_idn" 1>&6
 
-echo "${as_me-configure}:28572: testing ... testing $cf_cv_library_path_idn ..." 1>&5
+echo "${as_me-configure}:28506: testing ... testing $cf_cv_library_path_idn ..." 1>&5
 
             CPPFLAGS="$cf_test_CPPFLAGS"
             LIBS="-lidn  $cf_save_LIBS"
             LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_idn"
             cat >conftest.$ac_ext <<_ACEOF
-#line 28578 "configure"
+#line 28512 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -28593,21 +28527,21 @@ main ()
 }
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:28596: \"$ac_link\"") >&5
+if { (eval echo "$as_me:28530: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:28599: \$? = $ac_status" >&5
+  echo "$as_me:28533: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:28602: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28536: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:28605: \$? = $ac_status" >&5
+  echo "$as_me:28539: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
 
                 test -n "$verbose" && echo "	... found idn library in $cf_cv_library_path_idn" 1>&6
 
-echo "${as_me-configure}:28610: testing ... found idn library in $cf_cv_library_path_idn ..." 1>&5
+echo "${as_me-configure}:28544: testing ... found idn library in $cf_cv_library_path_idn ..." 1>&5
 
                 cf_cv_find_linkage_idn=yes
                 cf_cv_library_file_idn="-lidn"
@@ -28645,13 +28579,13 @@ EOF
 	LIBS="-lidn $LIBS"
 
 else
-{ echo "$as_me:28648: WARNING: Cannot find idn library" >&5
+{ echo "$as_me:28582: WARNING: Cannot find idn library" >&5
 echo "$as_me: WARNING: Cannot find idn library" >&2;}
 fi
 
 fi
 
-echo "$as_me:28654: checking if element-justification logic should be used" >&5
+echo "$as_me:28588: checking if element-justification logic should be used" >&5
 echo $ECHO_N "checking if element-justification logic should be used... $ECHO_C" >&6
 
 # Check whether --enable-justify-elts or --disable-justify-elts was given.
@@ -28668,13 +28602,13 @@ else
   use_justify_elts=yes
 
 fi;
-echo "$as_me:28671: result: $use_justify_elts" >&5
+echo "$as_me:28605: result: $use_justify_elts" >&5
 echo "${ECHO_T}$use_justify_elts" >&6
 test $use_justify_elts != no && cat >>confdefs.h <<\EOF
-#define EXP_JUSTIFY_ELTS 1
+#define USE_JUSTIFY_ELTS 1
 EOF
 
-echo "$as_me:28677: checking if partial-display should be used" >&5
+echo "$as_me:28611: checking if partial-display should be used" >&5
 echo $ECHO_N "checking if partial-display should be used... $ECHO_C" >&6
 
 # Check whether --enable-partial or --disable-partial was given.
@@ -28691,13 +28625,13 @@ else
   use_partial_display=yes
 
 fi;
-echo "$as_me:28694: result: $use_partial_display" >&5
+echo "$as_me:28628: result: $use_partial_display" >&5
 echo "${ECHO_T}$use_partial_display" >&6
 test $use_partial_display != no && cat >>confdefs.h <<\EOF
 #define DISP_PARTIAL 1
 EOF
 
-echo "$as_me:28700: checking if persistent-cookie logic should be used" >&5
+echo "$as_me:28634: checking if persistent-cookie logic should be used" >&5
 echo $ECHO_N "checking if persistent-cookie logic should be used... $ECHO_C" >&6
 
 # Check whether --enable-persistent-cookies or --disable-persistent-cookies was given.
@@ -28714,13 +28648,13 @@ else
   use_filed_cookies=yes
 
 fi;
-echo "$as_me:28717: result: $use_filed_cookies" >&5
+echo "$as_me:28651: result: $use_filed_cookies" >&5
 echo "${ECHO_T}$use_filed_cookies" >&6
 test $use_filed_cookies != no && cat >>confdefs.h <<\EOF
 #define USE_PERSISTENT_COOKIES 1
 EOF
 
-echo "$as_me:28723: checking if html source should be colorized" >&5
+echo "$as_me:28657: checking if html source should be colorized" >&5
 echo $ECHO_N "checking if html source should be colorized... $ECHO_C" >&6
 
 # Check whether --enable-prettysrc or --disable-prettysrc was given.
@@ -28737,13 +28671,36 @@ else
   use_prettysrc=yes
 
 fi;
-echo "$as_me:28740: result: $use_prettysrc" >&5
+echo "$as_me:28674: result: $use_prettysrc" >&5
 echo "${ECHO_T}$use_prettysrc" >&6
 test $use_prettysrc != no && cat >>confdefs.h <<\EOF
 #define USE_PRETTYSRC 1
 EOF
 
-echo "$as_me:28746: checking if read-progress message should show ETA" >&5
+echo "$as_me:28680: checking if progress-bar code should be used" >&5
+echo $ECHO_N "checking if progress-bar code should be used... $ECHO_C" >&6
+
+# Check whether --enable-progressbar or --disable-progressbar was given.
+if test "${enable_progressbar+set}" = set; then
+  enableval="$enable_progressbar"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    use_progressbar=$enableval
+  else
+    use_progressbar=yes
+  fi
+else
+  enableval=yes
+  use_progressbar=yes
+
+fi;
+echo "$as_me:28697: result: $use_progressbar" >&5
+echo "${ECHO_T}$use_progressbar" >&6
+test $use_progressbar != no && cat >>confdefs.h <<\EOF
+#define USE_PROGRESSBAR 1
+EOF
+
+echo "$as_me:28703: checking if read-progress message should show ETA" >&5
 echo $ECHO_N "checking if read-progress message should show ETA... $ECHO_C" >&6
 
 # Check whether --enable-read-eta or --disable-read-eta was given.
@@ -28760,13 +28717,13 @@ else
   use_read_eta=yes
 
 fi;
-echo "$as_me:28763: result: $use_read_eta" >&5
+echo "$as_me:28720: result: $use_read_eta" >&5
 echo "${ECHO_T}$use_read_eta" >&6
 test $use_read_eta != no && cat >>confdefs.h <<\EOF
 #define USE_READPROGRESS 1
 EOF
 
-echo "$as_me:28769: checking if source caching should be used" >&5
+echo "$as_me:28726: checking if source caching should be used" >&5
 echo $ECHO_N "checking if source caching should be used... $ECHO_C" >&6
 
 # Check whether --enable-source-cache or --disable-source-cache was given.
@@ -28783,12 +28740,55 @@ else
   use_source_cache=yes
 
 fi;
-echo "$as_me:28786: result: $use_source_cache" >&5
+echo "$as_me:28743: result: $use_source_cache" >&5
 echo "${ECHO_T}$use_source_cache" >&6
 test $use_source_cache != no && cat >>confdefs.h <<\EOF
 #define USE_SOURCE_CACHE 1
 EOF
 
+echo "$as_me:28749: checking if scrollbar code should be used" >&5
+echo $ECHO_N "checking if scrollbar code should be used... $ECHO_C" >&6
+
+# Check whether --enable-scrollbar or --disable-scrollbar was given.
+if test "${enable_scrollbar+set}" = set; then
+  enableval="$enable_scrollbar"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    use_scrollbar=$enableval
+  else
+    use_scrollbar=yes
+  fi
+else
+  enableval=yes
+  use_scrollbar=yes
+
+fi;
+echo "$as_me:28766: result: $use_scrollbar" >&5
+echo "${ECHO_T}$use_scrollbar" >&6
+
+echo "$as_me:28769: checking if charset-selection logic should be used" >&5
+echo $ECHO_N "checking if charset-selection logic should be used... $ECHO_C" >&6
+
+# Check whether --enable-charset-choice or --disable-charset-choice was given.
+if test "${enable_charset_choice+set}" = set; then
+  enableval="$enable_charset_choice"
+  test "$enableval" != yes && enableval=no
+  if test "$enableval" != "no" ; then
+    use_charset_choice=$enableval
+  else
+    use_charset_choice=no
+  fi
+else
+  enableval=no
+  use_charset_choice=no
+
+fi;
+echo "$as_me:28786: result: $use_charset_choice" >&5
+echo "${ECHO_T}$use_charset_choice" >&6
+test $use_charset_choice != no && cat >>confdefs.h <<\EOF
+#define USE_CHARSET_CHOICE 1
+EOF
+
 echo "$as_me:28792: checking if you want to use external commands" >&5
 echo $ECHO_N "checking if you want to use external commands... $ECHO_C" >&6
 
diff --git a/configure.in b/configure.in
index 5d2a01b9..5b957a2d 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-dnl $LynxId: configure.in,v 1.202 2009/09/06 18:47:55 tom Exp $
+dnl $LynxId: configure.in,v 1.206 2009/11/21 16:27:09 tom Exp $
 dnl
 dnl Process this file with autoconf to produce a configure script.
 dnl
@@ -828,6 +828,7 @@ dnl --------------------------------------------------------------------------
 CF_HELP_MESSAGE(
 Experimental Options:)
 
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if bibp: URLs should be supported)
 CF_ARG_DISABLE(bibp-urls,
 [  --disable-bibp-urls     disable support for bibp: URLs],
@@ -836,6 +837,7 @@ CF_ARG_DISABLE(bibp-urls,
 AC_MSG_RESULT($use_bibp_urls)
 test $use_bibp_urls = no && AC_DEFINE(DISABLE_BIBP)
 
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if configuration info should be browsable)
 CF_ARG_DISABLE(config-info,
 [  --disable-config-info   disable browsable configuration-info],
@@ -844,6 +846,7 @@ CF_ARG_DISABLE(config-info,
 AC_MSG_RESULT($use_config_info)
 test $use_config_info = no && AC_DEFINE(NO_CONFIG_INFO)
 
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if new-style forms-based options screen should be used)
 CF_ARG_DISABLE(forms-options,
 [  --disable-forms-options disable forms-based options],
@@ -852,6 +855,7 @@ CF_ARG_DISABLE(forms-options,
 AC_MSG_RESULT($use_forms_options)
 test $use_forms_options = no && AC_DEFINE(NO_OPTION_FORMS)
 
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if old-style options menu should be used)
 CF_ARG_DISABLE(menu-options,
 [  --disable-menu-options  disable old-style option menu],
@@ -860,6 +864,30 @@ CF_ARG_DISABLE(menu-options,
 AC_MSG_RESULT($use_menu_options)
 test $use_menu_options = no && AC_DEFINE(NO_OPTION_MENU)
 
+dnl --------------------------------------------------------------------------
+AC_MSG_CHECKING(if sessions code should be used)
+CF_ARG_DISABLE(sessions,
+[  --disable-sessions      use experimental sessions code],
+	[use_sessions=$enableval],
+	[use_sessions=yes])
+AC_MSG_RESULT($use_sessions)
+if test $use_sessions != no ; then
+	AC_DEFINE(USE_SESSIONS)
+	EXTRA_OBJS="$EXTRA_OBJS LYSession\$o"
+fi
+
+dnl --------------------------------------------------------------------------
+AC_MSG_CHECKING(if session-caching code should be used)
+CF_ARG_DISABLE(session-cache,
+[  --disable-session-cache use experimental session-caching code],
+	[use_session_cache=$enableval],
+	[use_session_cache=yes])
+AC_MSG_RESULT($use_session_cache)
+if test $use_session_cache != no ; then
+    AC_DEFINE(USE_CACHEJAR)
+fi
+
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if experimental address-list page should be used)
 CF_ARG_ENABLE(addrlist-page,
 [  --enable-addrlist-page  use experimental address-list page],
@@ -868,22 +896,7 @@ CF_ARG_ENABLE(addrlist-page,
 AC_MSG_RESULT($use_addrlist_page)
 test $use_addrlist_page != no && AC_DEFINE(EXP_ADDRLIST_PAGE)
 
-AC_MSG_CHECKING(if experimental ascii case-conversion should be used)
-CF_ARG_ENABLE(ascii-ctypes,
-[  --enable-ascii-ctypes   use experimental ascii case-conversion],
-	[use_ascii_ctypes=$enableval],
-	[use_ascii_ctypes=yes])
-AC_MSG_RESULT($use_ascii_ctypes)
-test $use_ascii_ctypes != no && AC_DEFINE(EXP_ASCII_CTYPES)
-
-AC_MSG_CHECKING(if experimental charset-selection logic should be used)
-CF_ARG_ENABLE(charset-choice,
-[  --enable-charset-choice use experimental charset-selection logic],
-	[use_charset_choice=$enableval],
-	[use_charset_choice=no])
-AC_MSG_RESULT($use_charset_choice)
-test $use_charset_choice != no && AC_DEFINE(EXP_CHARSET_CHOICE)
-
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if experimental CJK logic should be used)
 CF_ARG_ENABLE(cjk,
 [  --enable-cjk            use experimental CJK logic],
@@ -892,6 +905,7 @@ CF_ARG_ENABLE(cjk,
 AC_MSG_RESULT($use_cjk)
 test $use_cjk != no && AC_DEFINE(CJK_EX)
 
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if experimental Japanese UTF-8 logic should be used)
 CF_ARG_ENABLE(japanese-utf8,
 [  --enable-japanese-utf8  use experimental Japanese UTF-8 logic],
@@ -913,6 +927,7 @@ curses|slang|ncurses*)
 	;;
 esac
 
+dnl --------------------------------------------------------------------------
 if test "$use_dft_colors" != no ; then
 AC_MSG_CHECKING(if you want to use default-colors)
 CF_ARG_ENABLE(default-colors,
@@ -942,46 +957,6 @@ AC_MSG_RESULT($use_nested_tables)
 test $use_nested_tables != no && AC_DEFINE(EXP_NESTED_TABLES)
 
 dnl --------------------------------------------------------------------------
-AC_MSG_CHECKING(if progress-bar code should be used)
-CF_ARG_ENABLE(progressbar,
-[  --enable-progressbar    use experimental progress-bar],
-	[use_progressbar=$enableval],
-	[use_progressbar=no])
-AC_MSG_RESULT($use_progressbar)
-test $use_progressbar != no && AC_DEFINE(USE_PROGRESSBAR)
-
-dnl --------------------------------------------------------------------------
-AC_MSG_CHECKING(if scrollbar code should be used)
-CF_ARG_ENABLE(scrollbar,
-[  --enable-scrollbar      use experimental scrollbar, with mouse],
-	[use_scrollbar=$enableval],
-	[use_scrollbar=no])
-AC_MSG_RESULT($use_scrollbar)
-
-dnl --------------------------------------------------------------------------
-AC_MSG_CHECKING(if sessions code should be used)
-CF_ARG_ENABLE(sessions,
-[  --enable-sessions       use experimental sessions code],
-	[use_sessions=$enableval],
-	[use_sessions=no])
-AC_MSG_RESULT($use_sessions)
-if test $use_sessions != no ; then
-	AC_DEFINE(USE_SESSIONS)
-	EXTRA_OBJS="$EXTRA_OBJS LYSession\$o"
-fi
-
-dnl --------------------------------------------------------------------------
-AC_MSG_CHECKING(if session-caching code should be used)
-CF_ARG_ENABLE(session-cache,
-[  --enable-session-cache  use experimental session-caching code],
-	[use_session_cache=$enableval],
-	[use_session_cache=no])
-AC_MSG_RESULT($use_session_cache)
-if test $use_session_cache != no ; then
-    AC_DEFINE(USE_CACHEJAR)
-fi
-
-dnl --------------------------------------------------------------------------
 dnl Miscellaneous options that don't need to test system features
 dnl --------------------------------------------------------------------------
 
@@ -998,6 +973,15 @@ AC_MSG_RESULT($use_alt_bindings)
 test $use_alt_bindings != no && AC_DEFINE(EXP_ALT_BINDINGS)
 
 dnl --------------------------------------------------------------------------
+AC_MSG_CHECKING(if ascii case-conversion should be used)
+CF_ARG_DISABLE(ascii-ctypes,
+[  --disable-ascii-ctypes  use ascii case-conversion],
+	[use_ascii_ctypes=$enableval],
+	[use_ascii_ctypes=yes])
+AC_MSG_RESULT($use_ascii_ctypes)
+test $use_ascii_ctypes != no && AC_DEFINE(USE_ASCII_CTYPES)
+
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if you want to use extended HTML DTD logic)
 CF_ARG_DISABLE(extended-dtd,
 [  --disable-extended-dtd  disable extended HTML DTD logic],
@@ -1034,7 +1018,7 @@ CF_ARG_DISABLE(justify-elts,
 	[use_justify_elts=$enableval],
 	[use_justify_elts=yes])
 AC_MSG_RESULT($use_justify_elts)
-test $use_justify_elts != no && AC_DEFINE(EXP_JUSTIFY_ELTS)
+test $use_justify_elts != no && AC_DEFINE(USE_JUSTIFY_ELTS)
 
 dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if partial-display should be used)
@@ -1064,6 +1048,15 @@ AC_MSG_RESULT($use_prettysrc)
 test $use_prettysrc != no && AC_DEFINE(USE_PRETTYSRC)
 
 dnl --------------------------------------------------------------------------
+AC_MSG_CHECKING(if progress-bar code should be used)
+CF_ARG_DISABLE(progressbar,
+[  --disable-progressbar   use progress-bar],
+	[use_progressbar=$enableval],
+	[use_progressbar=yes])
+AC_MSG_RESULT($use_progressbar)
+test $use_progressbar != no && AC_DEFINE(USE_PROGRESSBAR)
+
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if read-progress message should show ETA)
 CF_ARG_DISABLE(read-eta,
 [  --disable-read-eta      read-progress message shows ETA],
@@ -1082,6 +1075,23 @@ AC_MSG_RESULT($use_source_cache)
 test $use_source_cache != no && AC_DEFINE(USE_SOURCE_CACHE)
 
 dnl --------------------------------------------------------------------------
+AC_MSG_CHECKING(if scrollbar code should be used)
+CF_ARG_DISABLE(scrollbar,
+[  --disable-scrollbar     use scrollbar, with mouse],
+	[use_scrollbar=$enableval],
+	[use_scrollbar=yes])
+AC_MSG_RESULT($use_scrollbar)
+
+dnl --------------------------------------------------------------------------
+AC_MSG_CHECKING(if charset-selection logic should be used)
+CF_ARG_ENABLE(charset-choice,
+[  --enable-charset-choice use charset-selection logic],
+	[use_charset_choice=$enableval],
+	[use_charset_choice=no])
+AC_MSG_RESULT($use_charset_choice)
+test $use_charset_choice != no && AC_DEFINE(USE_CHARSET_CHOICE)
+
+dnl --------------------------------------------------------------------------
 AC_MSG_CHECKING(if you want to use external commands)
 CF_ARG_ENABLE(externs,
 [  --enable-externs        use external commands],
diff --git a/docs/README.defines b/docs/README.defines
index 801a2533..a8c0a2d1 100644
--- a/docs/README.defines
+++ b/docs/README.defines
@@ -107,7 +107,6 @@ Both:
 
 Other general
 -------------
-# -DEXP_ASCII_CTYPES use POSIX locale for toupper/tolower/isupper
 # -DIGNORE_CTRL_C  Define if Control-C shouldn't exit lynx.
 # -DINACTIVE_INPUT_STYLE_VH  Different style for showing inactive text fields
 # -DMISC_EXP       Enable some truly experimental stuff
diff --git a/lynx.cfg b/lynx.cfg
index 17929f83..582997b1 100644
--- a/lynx.cfg
+++ b/lynx.cfg
@@ -1,4 +1,4 @@
-# $LynxId: lynx.cfg,v 1.184 2009/09/06 11:08:05 tom Exp $
+# $LynxId: lynx.cfg,v 1.189 2009/11/24 09:25:18 tom Exp $
 # lynx.cfg file.
 # The default placement for this file is /usr/local/lib/lynx.cfg (Unix)
 #                                     or Lynx_Dir:lynx.cfg (VMS)
@@ -2169,7 +2169,7 @@ MINIMAL_COMMENTS:TRUE
 #
 #    PRECEDENCE_OTHER or PRECEDENCE_HERE
 #      Suffix mappings can come from four sources: (1) SUFFIX rules
-#      given here - see below, (2) builtin defaults (HTInit.c), and the
+#      given here - see below, (2) built-in defaults (HTInit.c), and the
 #      (3) GLOBAL_EXTENSION_MAP and (4) PERSONAL_EXTENSION_MAP files.
 #      The order of precedence is normally as listed: (1) has the
 #      *lowest*, (4) has the *highest* precedence if there are conflicts.
@@ -2179,7 +2179,7 @@ MINIMAL_COMMENTS:TRUE
 #      mappings here override others made elsewhere.
 #
 #    NO_BUILTIN
-#      This disables all builtin default rules.  In other words, (2) in the
+#      This disables all built-in default rules.  In other words, (2) in the
 #      list above is skipped.  Some recognition for compressed files (".gz",
 #      ".Z") is still hardwired.   A mapping for some basic types, at least
 #      for text/html is probably necessary to get a usable configuration,
@@ -2209,7 +2209,7 @@ MINIMAL_COMMENTS:TRUE
 #                      refer to the defaults for otherwise unmatched files
 #                      (the first for filenames with a dot somewhere in
 #                      the name, the second without), these are currently
-#                      mapped to text/plain in the (HTInit.c) builtin code.
+#                      mapped to text/plain in the (HTInit.c) built-in code.
 #                      Lynx compares the file-extensions ignoring case.
 #
 #     <mime type> a MIME content type.  It can also contain a charset
@@ -3338,7 +3338,7 @@ COLOR:6:brightred:black
 # true, most of text (except headers and like this) will be justified.  This
 # has no influence on CJK text rendering.
 #
-# This option is only available if Lynx was compiled with EXP_JUSTIFY_ELTS.
+# This option is only available if Lynx was compiled with USE_JUSTIFY_ELTS.
 #
 #JUSTIFY:FALSE
 
@@ -3477,29 +3477,109 @@ COLOR:6:brightred:black
 # Any of the compiled-in pathnames of external programs can be overridden
 # by specifying the corresponding xxx_PATH variable.  If the variable is
 # given as an empty string, lynx will not use the program.  For a few cases,
-# there are internal functions (such as mkdir) which can be used instead.
-#BZIP2_PATH:
-#CHMOD_PATH:
-#COMPRESS_PATH:
-#COPY_PATH:
-#GZIP_PATH:
-#INFLATE_PATH:
-#INSTALL_PATH:
-#MKDIR_PATH:
-#MV_PATH:
-#RLOGIN_PATH:
-#RMDIR_PATH:
-#RM_PATH:
-#SETFONT_PATH:
-#TAR_PATH:
-#TELNET_PATH:
-#TN3270_PATH:
-#TOUCH_PATH:
-#UNCOMPRESS_PATH:
-#UNZIP_PATH:
-#UUDECODE_PATH:
-#ZCAT_PATH:
-#ZIP_PATH:
+# there are internal functions which can be used instead.
+
+.h2 BZIP2_PATH
+# This is the path used for DIRED mode and web connections to compress a file
+# to ".bz2", e.g., the Unix command "bzip2".
+
+.h2 CHMOD_PATH
+# This is the path used for DIRED mode to change file protection, e.g., the
+# Unix command "chmod".
+#
+# Setting this to an empty string will let lynx use a built-in version.
+
+.h2 COMPRESS_PATH
+# This is the path used for DIRED mode and web connections to compress a file
+# to ".Z", e.g., the Unix command "compress".
+
+.h2 COPY_PATH
+# This is the path used for DIRED mode to copy a file, e.g., the
+# Unix command "cp".
+#
+# Setting this to an empty string will let lynx use a built-in version.
+
+.h2 GZIP_PATH
+# This is the path used for DIRED mode and web connections to compress a file
+# to ".gz", e.g., the Unix command "gzip".
+
+.h2 INFLATE_PATH
+# This is the path used for web connections to compress a file using "inflate"
+# compression.
+
+.h2 INSTALL_PATH
+# This is the path used for DIRED mode to install files, e.g., the
+# Unix command "install".
+
+.h2 MKDIR_PATH
+# This is the path used for DIRED mode to create a directory, e.g., the
+# Unix command "mkdir".
+#
+# Setting this to an empty string will let lynx use a built-in version.
+
+.h2 MV_PATH
+# This is the path used for DIRED mode to move a file, e.g., the
+# Unix command "mv".
+#
+# Setting this to an empty string will let lynx use a built-in version.
+
+.h2 RLOGIN_PATH
+# This is the path used for DIRED mode to login remotely, e.g., the
+# Unix command "rlogin".
+
+.h2 RMDIR_PATH
+# This is the path used for DIRED mode to remove a directory, e.g., the
+# Unix command "rmdir".
+#
+# Setting this to an empty string will let lynx use a built-in version.
+
+.h2 RM_PATH
+# This is the path used for DIRED mode to remove a file, e.g., the
+# Unix command "rm".
+#
+# Setting this to an empty string will let lynx use a built-in version.
+
+.h2 SETFONT_PATH
+# This is the path used for a command which can be used to load a console font
+# for the experimental font-switch feature, e.g., the program "setfont".
+
+.h2 TAR_PATH
+# This is the path used for DIRED mode to create a tar archive from one or more
+# files.
+
+.h2 TELNET_PATH
+# This is the path for a program which can be used to make a "telnet" connection
+# to a remote host.
+
+.h2 TN3270_PATH
+# This is the path for a program which can be used to make an "IBM 3270"
+# connection to a remote host.
+
+.h2 TOUCH_PATH
+# This is the path used for DIRED mode to update the modification time of a
+# file to the current time,, e.g., the Unix command "touch".
+#
+# Setting this to an empty string will let lynx use a built-in version.
+
+.h2 UNCOMPRESS_PATH
+# This is the path used for DIRED mode and web connections to decompress a file
+# with ".Z" suffix, e.g., the Unix command "uncompress".
+
+.h2 UNZIP_PATH
+# This is the path used for DIRED mode to extract files from a zip-archive the
+# program "unzip".
+
+.h2 UUDECODE_PATH
+# This is the path used for DIRED mode to extract files from uuencoded files
+# e.g., the program "uudecode".
+
+.h2 ZCAT_PATH
+# This is the path used for DIRED mode to decompress files, writing the result
+# to a pipe as part of a shell command, e.g., the program "zcat".
+
+.h2 ZIP_PATH
+# This is the path used for DIRED mode to create a zip-archive from one or more
+# files, e.g., the program "unzip".
 
 .h1 Interaction
 
diff --git a/lynx_help/Lynx_users_guide.html b/lynx_help/Lynx_users_guide.html
index 9bee799e..2e4136ee 100644
--- a/lynx_help/Lynx_users_guide.html
+++ b/lynx_help/Lynx_users_guide.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 3.0//EN">
-<!-- $LynxId: Lynx_users_guide.html,v 1.106 2009/07/05 21:00:18 tom Exp $ -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- $LynxId: Lynx_users_guide.html,v 1.109 2009/11/18 09:30:13 tom Exp $ -->
 <html>
 <head>
 <title>Lynx Users Guide v2.8.7</title>
@@ -73,7 +73,7 @@ within a single LAN.
 <li><A HREF="#Hist" NAME="ToC-Hist">Lynx development history</A>
 </ul>
 
-<h2 ID="Help"><A NAME="Help"><em>Lynx online help</em></A></h2>
+<h2 ID="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
@@ -90,7 +90,7 @@ the '<em>k</em>' key if vi-like key movement is not on).
 If you want to recall recent status-line messages, you can do so
 by entering the `g' command, followed by `LYNXMESSAGES:'.
 
-<h2 ID="Local"><A NAME="Local"><em>Viewing local files with Lynx</em></A></h2>
+<h2 ID="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
@@ -168,14 +168,14 @@ mode.  Additional download methods may be defined in the
 <A HREF="#lynx.cfg">lynx.cfg</A> file.  Programs like kermit, zmodem
 and FTP are some possible options. [<A HREF="#ToC-Local">ToC</A>]
 
-<h2 ID="Leaving"><A NAME="Leaving"><em>Leaving Lynx</em></A></h2>
+<h2 ID="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-Leaving">ToC</A>]
 
-<h2 ID="Remote"><A NAME="Remote"><em>Starting Lynx with a Remote File</em></A></h2>
+<h2 ID="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
@@ -234,7 +234,7 @@ portions of it in the startfile argument.  For example:<br>
 See <a href="lynx_url_support.html">URL Schemes Supported by Lynx</a> for
 more detailed information.  [<A HREF="#ToC-Remote">ToC</A>]
 
-<h2 ID="EnVar"><A NAME="EnVar"><em>Starting Lynx with the WWW_HOME environment variable.</em></A></h2>
+<h2 ID="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,
@@ -256,7 +256,7 @@ environment variable,
 Note that on VMS the double-quoting <em>must</em> be included to preserve
 casing.  [<A HREF="#ToC-EnVar">ToC</A>]
 
-<h2 ID="IntraDocNav"><A NAME="IntraDocNav"><em>Navigating hypertext documents with Lynx</em></A></h2>
+<h2 ID="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
@@ -309,7 +309,7 @@ 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-IntraDocNav">ToC</A>]
 
-<h2 ID="Disposing"><A NAME="Disposing"
+<h2 ID="id-Disposing"><A NAME="Disposing"
 ><em>Printing, Mailing, and Saving rendered files to disk.</em></A></h2>
 
 Rendered HTML documents, and plain text files, may be printed using the
@@ -340,7 +340,7 @@ 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"
+<h2 ID="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
@@ -380,7 +380,7 @@ 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-LocalSource">ToC</A>]
 
-<h2 ID="RemoteSource"><A NAME="RemoteSource"><em>Downloading and Saving source files.</em></A></h2>
+<h2 ID="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
@@ -416,7 +416,7 @@ 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-RemoteSource">ToC</A>]
 
-<h2 ID="ReDo"><A NAME="ReDo"
+<h2 ID="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
@@ -434,7 +434,7 @@ regardless of whether the NOCACHE or ACTIVATE command is used (see <A
 HREF="#Forms"><em>Lynx and HTML Forms</em></A>).
 [<A HREF="#ToC-ReDo">ToC</A>]
 
-<h2 ID="Search"><A NAME="Search"><em>Lynx searching commands</em></A></h2>
+<h2 ID="id-Search"><A NAME="Search"><em>Lynx searching commands</em></A></h2>
 
 Two commands activate searching in Lynx: '<em>/</em>' and '<em>s</em>'.
 
@@ -481,7 +481,7 @@ strings for searching it, and include an element such as:<BR>
 for submitting a search of the Biologist's Addresses database directly
 to the net.bio.net WAIS server. [<A HREF="#ToC-Search">ToC</A>]
 
-<h2 ID="InteractiveOptions"><A NAME="InteractiveOptions"><em>Lynx Options Menu</em></A></h2>
+<h2 ID="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. It allows you to change options at runtime, if you need to.
@@ -797,7 +797,7 @@ return to Lynx or the '<em>&gt;</em>' command to save the options to a
                     lists.  Files are listed first.
           </dl>
 
-   <dt>Local directory sort order<dd>
+   <dt>Local directory sort order
           <dd>The Options Form also allows you to sort by the file attributes.
           <dl>
              <dt>By name
@@ -1121,7 +1121,7 @@ return to Lynx or the '<em>&gt;</em>' command to save the options to a
             from the environment if it has been previously set.
 </dl>
 
-<h2 ID="Mail"><A NAME="Mail"><em>Comments and mailto: links</em></A></h2>
+<h2 ID="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
@@ -1138,7 +1138,7 @@ insensitive).  For example, <pre>
 </pre>
 You may also add a TITLE attribute with, for example, the name of your page) If
 no ownership is specified then comments are disabled.  Certain links called
-<a href="lynx_url_support.html#mailto">mailto:</a> links will also allow
+<a href="lynx_url_support.html#mailto_url">mailto:</a> links will also allow
 you to send mail to other people.  Using the mail features within Lynx is
 straightforward.
 
@@ -1164,7 +1164,7 @@ 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-Mail">ToC</A>]
 
-<h2 ID="News"><A NAME="News"><em>USENET News posting</em></A></h2>
+<h2 ID="id-News"><A NAME="News"><em>USENET News posting</em></A></h2>
 
 While reading <a
 href="http://www.w3.org/LineMode/User/AboutNewsServers.html"
@@ -1198,7 +1198,7 @@ received the article supports posting from your site, a link that says
 See also <a
 href="http://www.w3.org/Protocols/rfc977/rfc977">RFC 977</a>.
 
-<h2 ID="Bookmarks"><A NAME="Bookmarks"><em>Lynx bookmarks</em></A></h2>
+<h2 ID="id-Bookmarks"><A NAME="Bookmarks"><em>Lynx bookmarks</em></A></h2>
 
 Bookmarks are entries in your <em>bookmark file</em>, which record
 the URL of a document you may want to return to easily, with a name
@@ -1258,7 +1258,7 @@ 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 ID="Jumps"><A NAME="Jumps"><em>Jump Command</em></a></h2>
+<h2 ID="id-Jumps"><A NAME="Jumps"><em>Jump Command</em></a></h2>
 
 Similar to the bookmarks file is the jumps file: for an example,
 look in the <em>samples</em> subdirectory in the distribution package.
@@ -1285,7 +1285,7 @@ For more advice how to set up the jumps command on your system
 and how to define short-cut names, read  <A HREF="#lynx.cfg">lynx.cfg</A> .
 [<A HREF="#ToC-Jumps">ToC</A>]
 
-<h2 ID="DirEd"><A NAME="DirEd"><em>Directory Editing</em></a></h2>
+<h2 ID="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
@@ -1331,14 +1331,14 @@ on your local system.  The commands available in DIRED mode are
 </dl>
 [<A HREF="#ToC-DirEd">ToC</A>]
 
-<h2 ID="ColorMouse"><A NAME="ColorMouse"><em>Using Color &amp; the Mouse</em></A></h2>
+<h2 ID="id-ColorMouse"><A NAME="ColorMouse"><em>Using Color &amp; the Mouse</em></A></h2>
 
 A limited range of colors &amp; mouse commands are available, if the user chooses:
 see <em>lynx.cfg</em> for details.
 
 [<A HREF="#ToC-ColorMouse">ToC</A>]
 
-<h2 ID="MiscKeys"><A NAME="MiscKeys"><em>Scrolling and Other useful commands</em></A></h2>
+<h2 ID="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
@@ -1522,7 +1522,7 @@ commands.
             [<A HREF="#ToC-MiscKeys">ToC</A>]
 </dl>
 
-<h2 ID="Forms"><A NAME="Forms"><em>Lynx and HTML Forms</em></a></h2>
+<h2 ID="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
@@ -1743,7 +1743,7 @@ positioned on a form submit button if you wish to download the server's
 reply to the submission instead of having Lynx render and display it.
 
 <p>Forms which have <em>POST</em> as the METHOD, or a <a
-href="lynx_url_support.html#mailto">mailto:</a> URL as the ACTION, are always
+href="lynx_url_support.html#mailto_url">mailto:</a> URL as the ACTION, are always
 resubmitted, even if the content has not changed, when you activate the
 <em>submit</em> button.  Lynx normally will not resubmit a form which has
 <em>POST</em> as the METHOD if the document returned by the form has links
@@ -1819,7 +1819,7 @@ be included in the submission.
 as <em>ENCTYPE="application/x-www-form-urlencoded"</em> for analysis by a
 script, and Lynx treats that as the default if no ENCTYPE is specified in the
 FORM start tag.  However, you can specify a <a
-href="lynx_url_support.html#mailto">mailto</a> URL as the form's ACTION to
+href="lynx_url_support.html#mailto_url">mailto</a> URL as the form's ACTION to
 have the form content sent, instead, to an email address.  In such cases, you
 may wish to specify <em>ENCTYPE="text/plain"</em> in the form markup, so that
 the content will not be encoded, but remain readable as plain text.
@@ -1868,7 +1868,7 @@ any document:
 </pre>
 [<A HREF="#ToC-Forms">ToC</A>]
 
-<h2 ID="Images"><A NAME="Images"><em>Lynx and HTML Images</em></a></h2>
+<h2 ID="id-Images"><A NAME="Images"><em>Lynx and HTML Images</em></a></h2>
 
 As a text browser, Lynx does not display images as such
 -- you need to define a viewer in <em>lynx.cfg</em>: see there -- ,
@@ -1900,7 +1900,7 @@ combines the effects of the `*' &amp; `[' keys, as follows:
      As links    clickable_images = TRUE,  pseudo_inline_alts = unchanged
 </pre>
 
-<h2 ID="Tables"><A NAME="Tables"><em>Lynx and HTML Tables</em></a></h2>
+<h2 ID="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.
@@ -1961,13 +1961,13 @@ not provide such scripts, but they can be written locally or downloaded
 from several sources.  It is suggested to use one of Lynx's facilities for
 invoking external programs (see <kbd>DOWNLOADER</kbd>, <kbd>PRINTER</kbd>,
 <kbd>EXTERNAL</kbd>, <kbd>TRUSTED_LYNXCGI</kbd> in <A
-HREF="#lynx.cfg">lynx.cfg</A> and <A HREF="lynx_url_support.html#cgi"><code
+HREF="#lynx.cfg">lynx.cfg</A> and <A HREF="lynx_url_support.html#cgi_url"><code
 >lynxcgi:</code></A> in <em>Supported URLs</em> for information on various
 ways for setting this up).
 
 [<A HREF="#ToC-Tables">ToC</A>]
 
-<h2 ID="Tabs"><A NAME="Tabs"><em>Lynx and HTML Tabs</em></a></h2>
+<h2 ID="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>
@@ -1989,7 +1989,7 @@ 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 ID="Frames"><A NAME="Frames"><em>Lynx and HTML Frames</em></a></h2>
+<h2 ID="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,
@@ -2014,7 +2014,7 @@ of those links to see if anything worthwhile is returned.
 You can simply ignore such warnings and access the frames
 via the Lynx-generated links as above.
 
-<h2 ID="Banners"><A NAME="Banners"><em>Lynx and HTML Banners</em></a></h2>
+<h2 ID="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
@@ -2083,7 +2083,7 @@ 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-Banners">ToC</A>]
 
-<h2 ID="Footnotes"><A NAME="Footnotes"><em>Lynx and HTML Footnotes</em></a></h2>
+<h2 ID="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>
@@ -2108,7 +2108,7 @@ you can return to your previous position in the document by pressing the
 markup that is valid in the BODY of the document.
 [<A HREF="#ToC-Footnotes">ToC</A>]
 
-<h2 ID="Notes"><A NAME="Notes"><em>Lynx and HTML Notes</em></a></h2>
+<h2 ID="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>
@@ -2134,7 +2134,7 @@ 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-Notes">ToC</A>]
 
-<h2 ID="Lists"><A NAME="Lists"><em>Lynx and HTML Lists</em></a></h2>
+<h2 ID="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>
@@ -2194,7 +2194,7 @@ 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-Lists">ToC</A>]
 
-<h2 ID="Quotes"><A NAME="Quotes"><em>Lynx and HTML Quotes</em></a></h2>
+<h2 ID="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
@@ -2221,7 +2221,7 @@ its first line.
 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 ID="Eightbit"><A NAME="Eightbit"><em>Lynx and HTML Internationalization: 8bit, UNICODE, etc.</em></a></h2>
+<h2 ID="id-Eightbit"><A NAME="Eightbit"><em>Lynx and HTML Internationalization: 8bit, UNICODE, etc.</em></a></h2>
 
 Lynx has superior support for HTML 4.0/I18N internationalization issues.
 However, to see the characters other than 7bit properly you <em>should</em>
@@ -2230,7 +2230,7 @@ from Option Menu and save its value, this is a Frequently Asked Question.
 Fine-turning is also available from <A HREF="#lynx.cfg">lynx.cfg</A>
 [<A HREF="#ToC-Eightbit">ToC</A>]
 
-<h2 ID="USEMAP"><A NAME="USEMAP"><em>Lynx and Client-Side-Image-Maps</em></a></h2>
+<h2 ID="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
@@ -2299,7 +2299,7 @@ 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-USEMAP">ToC</A>]
 
-<h2 ID="Refresh"><A NAME="Refresh"><em>Lynx and Client-Side-Pull</em></a></h2>
+<h2 ID="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>,
@@ -2329,7 +2329,7 @@ new documents or images at that interval, and you would be wasting
 bandwidth by activating the link at a shorter interval.
 [<A HREF="#ToC-Refresh">ToC</A>]
 
-<h2 ID="Cookies"><A NAME="Cookies"><em>Lynx State Management</em></A>
+<h2 ID="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
@@ -2402,7 +2402,7 @@ 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-Cookies">ToC</A>]
 
-<h2 ID="Cache"><A NAME="Cache"><em>Cached Documents</em></A></h2>
+<h2 ID="id-Cache"><A NAME="Cache"><em>Cached Documents</em></A></h2>
 
 A list of documents which are in lynx's internal cache is accessible through
 hypothetical <em>Cache Jar</em> which can be examined via the CACHE_JAR
@@ -2455,7 +2455,7 @@ compilation (<code>userdefs.h</code>),
 as well as enabled in lynx.cfg
 [<A HREF="#ToC-Cache">ToC</A>]
 
-<h2 ID="Sessions"><A NAME="Sessions"><em>Sessions</em></A></h2>
+<h2 ID="id-Sessions"><A NAME="Sessions"><em>Sessions</em></A></h2>
 
 Lynx's current state (all information about the user's
 current activity with lynx) is called a session.
@@ -2485,7 +2485,7 @@ You can use a text editor to modify, add
 new entries, or remove URLs you no longer want.
 [<A HREF="#ToC-Sessions">ToC</A>]
 
-<h2 ID="Invoking"><A NAME="Invoking"><em>The Lynx command line</em></A></h2>
+<h2 ID="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
@@ -3230,7 +3230,7 @@ for this rather technical information.
 [<A HREF="#ToC-Environment">ToC</A>]
 
 
-<h2 ID="lynx.cfg"><A NAME="lynx.cfg"><em>Main configuration file lynx.cfg</em></A></h2>
+<h2 ID="id-lynx.cfg"><A NAME="lynx.cfg"><em>Main configuration file lynx.cfg</em></A></h2>
 
 Lynx has several levels of customization:
 from the Options Menu (accessible on-line,
@@ -3268,7 +3268,7 @@ your lynx.cfg.
 
 [<A HREF="#ToC-lynx.cfg">ToC</A>]
 
-<h2 ID="Hist"><A NAME="Hist"><em>Lynx development history</em></A></h2>
+<h2 ID="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
@@ -3349,6 +3349,6 @@ of this distribution.
 <p>Information on obtaining the most current version of Lynx is available
 at <a href="http://lynx.isc.org/current/index.html">the current distribution page</a>.
 
-<p>[<A HREF="#TOC">ToC</A>]
+<p>[<A HREF="#Contents">ToC</A>]
 </body>
 </html>
diff --git a/lynx_help/lynx_url_support.html b/lynx_help/lynx_url_support.html
index 4095b3c9..45f461d9 100644
--- a/lynx_help/lynx_url_support.html
+++ b/lynx_help/lynx_url_support.html
@@ -258,7 +258,7 @@ irrelevant for anonymous ftp, but matters when using ftp for
 non-anonymous accounts.  If you are using ftp with a Unix server and
 do wish to get a listing of the login directory or have the <em>path</em>
 string treated as a file or path under the login directory, include a
-tilde (<em>~</em>) as for <a href="#file">file</a> URLs, e.g.:
+tilde (<em>~</em>) as for <a href="#file_url">file</a> URLs, e.g.:
 <pre>
       <em>ftp://user@myhost/~</em>
 </pre>
@@ -334,7 +334,7 @@ This is not in RFC1738 and may not be supported by all other clients.
 
 <p>Lynx allows you both to <em>reply</em> to the author of a news message
 via email, and, if news posting has been enabled, to send a <em>followup</em>
-message to the newsgroup (see <a href="#newspost">newspost, newsreply,
+message to the newsgroup (see <a href="#newspost_url">newspost, newsreply,
 snewspost, snewsreply</a>).
 
 <p>Lynx converts any strings in news messages which appear to be a URL
@@ -393,7 +393,7 @@ so that only the passages relevant to the followup message are retained.
 will exit after posting the message, and the newreply or snewsreply URLs
 degrade to newspost or snewpost URLs, respectively).  They also can be used
 as HREF attribute values in any HTML document homologously to <a
-href="#mailto">mailto</a> URLs, with the qualification that they presently
+href="#mailto_url">mailto</a> URLs, with the qualification that they presently
 are supported only by Lynx.
 <HR>
 
diff --git a/makefile.bcb b/makefile.bcb
index daa4ec11..6eaba88d 100644
--- a/makefile.bcb
+++ b/makefile.bcb
@@ -1,4 +1,4 @@
-# $LynxId: makefile.bcb,v 1.12 2008/09/23 00:10:14 tom Exp $
+# $LynxId: makefile.bcb,v 1.14 2009/11/21 16:33:41 tom Exp $
 #
 # Borland C++ / C++ builder
 # 1997/11/08 (Sat) 10:45:37
@@ -51,8 +51,6 @@ CC_FLAGS = $(DEBUG) $(CS_DEFS) $(SOCK_DEFS) \
 -DDONT_HAVE_TM_GMTOFF \
 -DDOSPATH \
 -DEXP_ALT_BINDINGS \
--DEXP_CMD_LOGGING \
--DEXP_JUSTIFY_ELTS \
 -DEXP_NESTED_TABLES \
 -DFANCY_CURSES \
 -DHAVE_DIRENT_H=1 \
@@ -69,7 +67,9 @@ CC_FLAGS = $(DEBUG) $(CS_DEFS) $(SOCK_DEFS) \
 -DNO_UTMP \
 -DPDCURSES \
 -DSH_EX \
+-DUSE_CMD_LOGGING \
 -DUSE_EXTERNALS \
+-DUSE_JUSTIFY_ELTS \
 -DUSE_MULTIBYTE_CURSES \
 -DUSE_PERSISTENT_COOKIES \
 -DUSE_PRETTYSRC \
diff --git a/makefile.in b/makefile.in
index f6394c1c..89a9c615 100644
--- a/makefile.in
+++ b/makefile.in
@@ -1,4 +1,4 @@
-# $LynxId: makefile.in,v 1.103 2009/09/06 11:08:16 tom Exp $
+# $LynxId: makefile.in,v 1.107 2009/11/24 09:54:56 tom Exp $
 ##makefile for lynx
 
 SHELL		= @CONFIG_SHELL@
@@ -98,6 +98,8 @@ scripts_dir=$(srcdir)/scripts
 
 MAKE_RECUR = $(MAKE) DESTDIR="$(DESTDIR)" CC="$(CC)"
 
+@LYNXCFG_MAKE@CFG2HTML = alphatoc.html body.html cattoc.html
+
 # !!!!!!!!!!! SUN resolv LIBRARY !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 # To include resolv in the LIBS="" list for SUN 3, 4 or Solaris OS,
 # point RESOLVLIB to that library.  You need this if you get the message
@@ -141,7 +143,6 @@ SITE_LYDEFS = # Your defines here
 SITE_DEFS = # Your defines here
 
 # defines for which there are no configure options:
-# -DEXP_ASCII_CTYPES use POSIX locale for toupper/tolower/isupper
 # -DHP_TERMINAL    For DIM workaround to REVERSE problems on HP terminals.
 # -DIGNORE_CTRL_C  Define if Control-C shouldn't exit lynx.
 # -DNO_RULES       Disables CERN-style access rules (see lynx.cfg).
@@ -217,7 +218,7 @@ clean:
 @MSG_DIR_MAKE@	rm -f LYMessages.c
 @MSG_DIR_MAKE@	cd $(PO_DIR) && $(MAKE_RECUR) $@
 	rm -f *.b $(SRC_DIR)/lynx$x *.leaks cfg_defs.h LYHelp.h lint.*
-@LYNXCFG_MAKE@	-rm -f alphatoc.html body.html cattoc.html tmp007
+@LYNXCFG_MAKE@	-rm -f $(CFG2HTML)
 	rm -f help_files.sed
 	rm -f core *.core
 
@@ -333,6 +334,15 @@ LYNX_URL='http://lynx.isc.org/release/lynx2-8-7'
 LYNXDOCS_URL='$(LYNX_URL)/docs/'
 LYNXHELP_URL='$(LYNX_URL)/lynx_help/'
 
+@LYNXCFG_MAKE@$(CFG2HTML) :
+@LYNXCFG_MAKE@	@echo 'Making htmlized lynx.cfg'
+@LYNXCFG_MAKE@	cd $(SRC_DIR) && $(MAKE_RECUR) LYReadCFG.i
+@LYNXCFG_MAKE@	@-rm -f $(CFG2HTML)
+@LYNXCFG_MAKE@	sed -n -e '/Config_Type  *Config_Table/,/{0, *0, *0}/ p' $(SRC_DIR)/LYReadCFG.i | \
+@LYNXCFG_MAKE@	sed  -e 's/ *{ *"\([^"]*\)".*/\1/' | \
+@LYNXCFG_MAKE@	perl $(scripts_dir)/cfg2html.pl -ms $(srcdir)/lynx.cfg
+@LYNXCFG_MAKE@	-rm -f $(SRC_DIR)/LYReadCFG.i
+
 help_files.sed : makefile $(srcdir)/lynx_help/help_files.txt
 	@echo Constructing sed-script $@
 	@-rm -f $@ help_files.tmp
@@ -357,20 +367,13 @@ help_files.sed : makefile $(srcdir)/lynx_help/help_files.txt
 	@ECHO_CC@if test -n "$(COMPRESS_EXT)"; then echo 's%\$(COMPRESS_EXT)\$(COMPRESS_EXT)%$(COMPRESS_EXT)%g' >> $@; fi
 	@-rm -f help_files.tmp
 
-install-help : help_files.sed $(HELPDIR)
+install-help : $(CFG2HTML) help_files.sed $(HELPDIR)
 	- (cd $(HELPDIR) && WD=`pwd` && HEAD=`echo $$WD|sed -e 's!/lynx_help$$!!'` && test $$WD != $$HEAD && rm -fr *)
 	test -d $(HELPDIR)/keystrokes || mkdir $(HELPDIR)/keystrokes
-@LYNXCFG_MAKE@	@echo 'Making htmlized lynx.cfg'
-@LYNXCFG_MAKE@	cd $(SRC_DIR) && $(MAKE_RECUR) LYReadCFG.i
-@LYNXCFG_MAKE@	@-rm -f alphatoc.html body.html cattoc.html
-@LYNXCFG_MAKE@	sed -n -e '/Config_Type  *Config_Table/,/{0, *0, *0}/ p' $(SRC_DIR)/LYReadCFG.i | \
-@LYNXCFG_MAKE@	sed  -e 's/ *{ *"\([^"]*\)".*/\1/' | \
-@LYNXCFG_MAKE@	perl $(scripts_dir)/cfg2html.pl -ms $(srcdir)/lynx.cfg
 	@echo Translating/copying html files
-@LYNXCFG_MAKE@	@$(SHELL) -c 'for f in alphatoc.html body.html cattoc.html ; do \
+@LYNXCFG_MAKE@	@$(SHELL) -c 'for f in $(CFG2HTML) ; do \
 @LYNXCFG_MAKE@		sed -f help_files.sed $$f > $(HELPDIR)/$$f ; \
 @LYNXCFG_MAKE@		done'
-@LYNXCFG_MAKE@	-rm -f $(SRC_DIR)/LYReadCFG.i
 	@ECHO_CC@$(SHELL) -c 'sed_prog=`pwd`/help_files.sed && \
 		cd $(srcdir)/lynx_help && \
 		dirs=keystrokes && \
diff --git a/makefile.msc b/makefile.msc
index a876e64e..69f1df3d 100644
--- a/makefile.msc
+++ b/makefile.msc
@@ -1,4 +1,4 @@
-# $LynxId: makefile.msc,v 1.21 2009/03/11 00:00:39 tom Exp $
+# $LynxId: makefile.msc,v 1.23 2009/11/21 16:33:41 tom Exp $
 #
 # Makefile for `Lynx' browser for Microsoft Visual C++ 4.2 or later
 #
@@ -74,8 +74,6 @@ DEFS = $(CS_DEFS) $(SOCK_DEFS) $(SSL_DEFS) $(SCREEN_DEFS) \
  /D "DONT_HAVE_TM_GMTOFF" \
  /D "DOSPATH" \
  /D "EXP_ALT_BINDINGS" \
- /D "EXP_CMD_LOGGING" \
- /D "EXP_JUSTIFY_ELTS" \
  /D "EXP_NESTED_TABLES" \
  /D "HAVE_KEYPAD" \
  /D "LONG_LIST" \
@@ -90,8 +88,10 @@ DEFS = $(CS_DEFS) $(SOCK_DEFS) $(SSL_DEFS) $(SCREEN_DEFS) \
  /D "NO_UTMP" \
  /D "OK_OVERRIDE" \
  /D "SH_EX" \
+ /D "USE_CMD_LOGGING" \
  /D "USE_EXTERNALS" \
  /D "USE_FILE_UPLOAD" \
+ /D "USE_JUSTIFY_ELTS" \
  /D "USE_MULTIBYTE_CURSES" \
  /D "USE_PERSISTENT_COOKIES" \
  /D "USE_PRETTYSRC" \
diff --git a/makelynx.bat b/makelynx.bat
index bf595870..7af02beb 100644
--- a/makelynx.bat
+++ b/makelynx.bat
@@ -1,5 +1,5 @@
 @echo off

-@rem $LynxId: makelynx.bat,v 1.13 2008/01/08 00:53:30 tom Exp $

+@rem $LynxId: makelynx.bat,v 1.14 2009/11/21 15:33:24 tom Exp $

 @echo Windows/Dos batch makefile for MingW32 and lynx.exe

 @echo Remember to precede this by "command /E:8192" for Windows prior to

 @echo W2000 and "cmd.exe /E:8192" for subsequent Window versions and to

@@ -67,39 +67,39 @@ echo #define _WIN_CC		 1 >> lynx_cfg.h
 rem echo #define USE_SCROLLBAR	 1 >> lynx_cfg.h

 

 SET DEFINES=-DCJK_EX

-SET DEFINES=%DEFINES% -DUSE_READPROGRESS

-SET DEFINES=%DEFINES% -DEXP_NESTED_TABLES

-SET DEFINES=%DEFINES% -DEXP_JUSTIFY_ELTS

 SET DEFINES=%DEFINES% -DEXP_ALT_BINDINGS

+SET DEFINES=%DEFINES% -DEXP_NESTED_TABLES

+SET DEFINES=%DEFINES% -DUSE_JUSTIFY_ELTS

 SET DEFINES=%DEFINES% -DUSE_PERSISTENT_COOKIES

+SET DEFINES=%DEFINES% -DUSE_READPROGRESS

 if not "%OS%" == "Windows_NT" goto next11

 SET DEFINES=%DEFINES% -DLY_MAXPATH=1024

 rem The following is unnecessary and causes the

 rem compile to fail:

 rem SET DEFINES=%DEFINES% -DUSE_WINSOCK2_H

 :next11

-SET DEFINES=%DEFINES% -DNO_CONFIG_INFO

-SET DEFINES=%DEFINES% -DSH_EX

-SET DEFINES=%DEFINES% -DWIN_EX

-SET DEFINES=%DEFINES% -D_WINDOWS

-SET DEFINES=%DEFINES% -DUSE_EXTERNALS

+SET DEFINES=%DEFINES% -DACCESS_AUTH

 SET DEFINES=%DEFINES% -DDIRED_SUPPORT

+SET DEFINES=%DEFINES% -DDISP_PARTIAL

 SET DEFINES=%DEFINES% -DDOSPATH

 SET DEFINES=%DEFINES% -DHAVE_DIRENT_H

 SET DEFINES=%DEFINES% -DHAVE_KEYPAD

-SET DEFINES=%DEFINES% -DACCESS_AUTH

+SET DEFINES=%DEFINES% -DLONG_LIST

+SET DEFINES=%DEFINES% -DNOSIGHUP

+SET DEFINES=%DEFINES% -DNOUSERS

+SET DEFINES=%DEFINES% -DNO_CONFIG_INFO

+SET DEFINES=%DEFINES% -DNO_CUSERID

 SET DEFINES=%DEFINES% -DNO_FILIO_H

+SET DEFINES=%DEFINES% -DNO_TTYTYPE

 SET DEFINES=%DEFINES% -DNO_UNISTD_H

 SET DEFINES=%DEFINES% -DNO_UTMP

-SET DEFINES=%DEFINES% -DNO_CUSERID

-SET DEFINES=%DEFINES% -DNO_TTYTYPE

-SET DEFINES=%DEFINES% -DNOSIGHUP

-SET DEFINES=%DEFINES% -DNOUSERS

-SET DEFINES=%DEFINES% -DLONG_LIST

-SET DEFINES=%DEFINES% -DDISP_PARTIAL

-SET DEFINES=%DEFINES% -DUSE_SOURCE_CACHE

+SET DEFINES=%DEFINES% -DSH_EX

+SET DEFINES=%DEFINES% -DUSE_EXTERNALS

 SET DEFINES=%DEFINES% -DUSE_PRETTYSRC

+SET DEFINES=%DEFINES% -DUSE_SOURCE_CACHE

 SET DEFINES=%DEFINES% -DWIN32

+SET DEFINES=%DEFINES% -DWIN_EX

+SET DEFINES=%DEFINES% -D_WINDOWS

 if not "%USE_ZLIB%" == "YES" goto next1

 SET DEFINES=%DEFINES% -DUSE_ZLIB

 :next1

diff --git a/po/de.po b/po/de.po
index d248cb56..18dc3383 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,5 +1,6 @@
 # German translations for the `lynx' program.
-# The TRANSLATIONS in this file are in the public domain.
+# This file is distributed under the same license as the lynx package.
+# But the TRANSLATIONS in this file are in the public domain.
 # This does not apply to the included original strings, which were
 # extracted from the Lynx source code by the xgettext program.
 #
@@ -7,14 +8,15 @@
 # Erwin Dieterich <bamse@gmx.de>, 2000.
 # Karl Eichwalder <ke@suse.de>, 2002-2004.
 # Fabian Fingerle <fabian@datensalat.eu>, 2008.
+# Roland Illig <roland.illig@gmx.de>, 2009.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lynx 2.8.6-dev6\n"
+"Project-Id-Version: lynx 2.8.7-dev12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-07 20:02-0500\n"
-"PO-Revision-Date: 2007-06-03 02:10+0200\n"
-"Last-Translator: Fabian Fingerle <fabian@datensalat.eu>\n"
+"POT-Creation-Date: 2008-12-26 20:04-0500\n"
+"PO-Revision-Date: 2009-11-10 22:04+0100\n"
+"Last-Translator: Roland Illig <roland.illig@gmx.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -822,9 +824,8 @@ msgstr "Diese Lesezeichendatei hat keine Einträge!"
 
 #. #define CACHE_D_OR_CANCEL
 #: LYMessages.c:304
-#, fuzzy
 msgid "D)elete cached document or C)ancel? (d,c): "
-msgstr "HEAD-Anforderung für D)okument senden, oder Abbrec)hen? (d,c): "
+msgstr "Zwischengespeichertes Dokument löschen (D) oder Abbrechen (C)?"
 
 #. #define BOOK_D_L_OR_CANCEL
 #: LYMessages.c:306
@@ -2227,9 +2228,8 @@ msgid "The Cookie Jar is empty."
 msgstr "Der Keksbeutel ist leer."
 
 #: LYMessages.c:705
-#, fuzzy
 msgid "The Cache Jar is empty."
-msgstr "Der Keksbeutel ist leer."
+msgstr "Der Cachebeutel ist leer."
 
 #. #define ACTIVATE_TO_GOBBLE
 #: LYMessages.c:707
@@ -2435,16 +2435,23 @@ msgstr "Rauf nach "
 msgid "Current directory is "
 msgstr "Dies Verzeichnis ist "
 
-#. HTGopher.c
+# This appears in FTP directory listings.  "Symbolischer Link"
+# does not fit in the (default?) format. - kw
+#. HTFTP.c
 #: LYMessages.c:765
+msgid "Symbolic Link"
+msgstr "Symbolic Link"
+
+#. HTGopher.c
+#: LYMessages.c:768
 msgid "No response from server!"
 msgstr "Keine Antwort vom Server!"
 
-#: LYMessages.c:766
+#: LYMessages.c:769
 msgid "CSO index"
 msgstr "CSO-index"
 
-#: LYMessages.c:767
+#: LYMessages.c:770
 msgid ""
 "\n"
 "This is a searchable index of a CSO database.\n"
@@ -2452,16 +2459,16 @@ msgstr ""
 "\n"
 "Dies ist ein abfragbarer Index einer CSO-Datenbank.\n"
 
-#: LYMessages.c:768
+#: LYMessages.c:771
 msgid "CSO Search Results"
 msgstr "CSO-Suchresultate"
 
-#: LYMessages.c:769
+#: LYMessages.c:772
 #, c-format
 msgid "Seek fail on %s\n"
 msgstr "Suchfehler auf %s\n"
 
-#: LYMessages.c:770
+#: LYMessages.c:773
 msgid ""
 "\n"
 "Press the 's' key and enter search keywords.\n"
@@ -2469,7 +2476,7 @@ msgstr ""
 "\n"
 "Drück die Taste 's' und dann gib Schbegriffe ein.\n"
 
-#: LYMessages.c:771
+#: LYMessages.c:774
 msgid ""
 "\n"
 "This is a searchable Gopher index.\n"
@@ -2477,35 +2484,35 @@ msgstr ""
 "\n"
 "Dies ist ein abfragbarer Gopher-Index.\n"
 
-#: LYMessages.c:772
+#: LYMessages.c:775
 msgid "Gopher index"
 msgstr "Gopher-Index"
 
-#: LYMessages.c:773
+#: LYMessages.c:776
 msgid "Gopher Menu"
 msgstr "Gophermenü"
 
-#: LYMessages.c:774
+#: LYMessages.c:777
 msgid " Search Results"
 msgstr " Suchergebnisse"
 
-#: LYMessages.c:775
+#: LYMessages.c:778
 msgid "Sending CSO/PH request."
 msgstr "CSO/PH-Request wird geschickt."
 
-#: LYMessages.c:776
+#: LYMessages.c:779
 msgid "Sending Gopher request."
 msgstr "Gopher-Request wird geschickt."
 
-#: LYMessages.c:777
+#: LYMessages.c:780
 msgid "CSO/PH request sent; waiting for response."
 msgstr "CSO/PH-Request geschickt; warten auf Antwort."
 
-#: LYMessages.c:778
+#: LYMessages.c:781
 msgid "Gopher request sent; waiting for response."
 msgstr "Gopher-Request geschickt; warten auf Godot."
 
-#: LYMessages.c:779
+#: LYMessages.c:782
 msgid ""
 "\n"
 "Please enter search keywords.\n"
@@ -2513,7 +2520,7 @@ msgstr ""
 "\n"
 "Bitte Suchwörter eingeben.\n"
 
-#: LYMessages.c:780
+#: LYMessages.c:783
 msgid ""
 "\n"
 "The keywords that you enter will allow you to search on a"
@@ -2521,205 +2528,204 @@ msgstr ""
 "\n"
 "Die einzugebenden Wörter erlauben die Suche nach einem"
 
-#: LYMessages.c:781
+#: LYMessages.c:784
 msgid " person's name in the database.\n"
 msgstr " Personennamen in der Datenbank.\n"
 
 #. HTNews.c
-#: LYMessages.c:784
+#: LYMessages.c:787
 msgid "Connection closed ???"
 msgstr "Verbindung zugemacht ???"
 
-#: LYMessages.c:785
+#: LYMessages.c:788
 msgid "Cannot open temporary file for news POST."
 msgstr "Temporäre Datei für das Posten der News-Message kann nicht geöffnet werden."
 
-#: LYMessages.c:786
+#: LYMessages.c:789
 msgid "This client does not contain support for posting to news with SSL."
 msgstr "Dieses Clientprogramm hat keine Unterstützung für das News-Posten mit SSL."
 
 # These functions are never being called.
 #. HTStyle.c
-#: LYMessages.c:789
+#: LYMessages.c:792
 #, c-format
 msgid "Style %d `%s' SGML:%s.  Font %s %.1f point.\n"
 msgstr "Stil %d `%s' SGML:%s. Schrift %s %.1f point.\n"
 
 # These functions are never being called.
-#: LYMessages.c:791
+#: LYMessages.c:794
 #, c-format
 msgid "\tAlign=%d, %d tabs. (%.0f before, %.0f after)\n"
 msgstr "\tAusrichten=%d, %d tabs. (%.0f vor, %.0f danach)\n"
 
 # These functions are never being called.
-#: LYMessages.c:792
+#: LYMessages.c:795
 #, c-format
 msgid "\t\tTab kind=%d at %.0f\n"
 msgstr "\t\tTabulator-Art=%d bei %.0f\n"
 
 #. HTTP.c
-#: LYMessages.c:795
+#: LYMessages.c:798
 msgid "Can't proceed without a username and password."
 msgstr "Weitermachen ohne Username und Passwort nicht möglich."
 
-#: LYMessages.c:796
+#: LYMessages.c:799
 msgid "Can't retry with authorization!  Contact the server's WebMaster."
 msgstr "Autorisierungversuche fehlgeschlagen!  Webmaster kontaktieren."
 
-#: LYMessages.c:797
+#: LYMessages.c:800
 msgid "Can't retry with proxy authorization!  Contact the server's WebMaster."
 msgstr "Proxy-Autorisierungversuche fehlgeschlagen! Frag den Cachemaster oder so..."
 
-#: LYMessages.c:798
+#: LYMessages.c:801
 msgid "Retrying with proxy authorization information."
 msgstr "Wir versuchen's noch einmal, mit Proxy-Autorisierungsinfo."
 
-#: LYMessages.c:799
+#: LYMessages.c:802
 #, c-format
 msgid "SSL error:%s-Continue?"
 msgstr "SSL-Fehler:%s - Fortfahren?"
 
 #. HTWAIS.c
-#: LYMessages.c:802
+#: LYMessages.c:805
 msgid "HTWAIS: Return message too large."
 msgstr "HTWAIS: Message zu lang."
 
-#: LYMessages.c:803
+#: LYMessages.c:806
 msgid "Enter WAIS query: "
 msgstr "Gib WAIS-Frage ein: "
 
 #. Miscellaneous status
-#: LYMessages.c:806
+#: LYMessages.c:809
 msgid "Retrying as HTTP0 request."
 msgstr "Wir versuchen's noch einmal, als HTTP0-Request."
 
-#: LYMessages.c:807
+#: LYMessages.c:810
 #, c-format
 msgid "Transferred %d bytes"
 msgstr "%d bytes übertragen"
 
-#: LYMessages.c:808
+#: LYMessages.c:811
 msgid "Data transfer complete"
 msgstr "Ãœbertragung komplett."
 
-#: LYMessages.c:809
+#: LYMessages.c:812
 #, c-format
 msgid "Error processing line %d of %s\n"
 msgstr "Fehler beim Verarbeiten von Zeile %d von %s\n"
 
 #. Lynx internal page titles
-#: LYMessages.c:812
+#: LYMessages.c:815
 msgid "Address List Page"
 msgstr "Linkadressenliste"
 
-#: LYMessages.c:813
+#: LYMessages.c:816
 msgid "Bookmark file"
 msgstr "Lesezeichendatei"
 
-#: LYMessages.c:814
+#: LYMessages.c:817
 msgid "Configuration Definitions"
 msgstr "Konfiguration"
 
-#: LYMessages.c:815
+#: LYMessages.c:818
 msgid "Cookie Jar"
 msgstr "Keksbeutel (Cookie Jar)"
 
-#: LYMessages.c:816
+#: LYMessages.c:819
 msgid "Current Key Map"
 msgstr "Aktuelle Tastaturbelegung"
 
-#: LYMessages.c:817
+#: LYMessages.c:820
 msgid "File Management Options"
 msgstr "Dateimanagement-Menü"
 
-#: LYMessages.c:818
+#: LYMessages.c:821
 msgid "Download Options"
 msgstr "Download-Menü"
 
-#: LYMessages.c:819
+#: LYMessages.c:822
 msgid "History Page"
 msgstr "History- oder Geschichtsseite"
 
-#: LYMessages.c:820
-#, fuzzy
+#: LYMessages.c:823
 msgid "Cache Jar"
-msgstr "Keksbeutel (Cookie Jar)"
+msgstr "Cachebeutel (Cache Jar)"
 
-#: LYMessages.c:821
+#: LYMessages.c:824
 msgid "List Page"
 msgstr "Linkliste"
 
-#: LYMessages.c:822
+#: LYMessages.c:825
 msgid "Lynx.cfg Information"
 msgstr "Informationen über lynx.cfg"
 
-#: LYMessages.c:823
+#: LYMessages.c:826
 msgid "Converted Mosaic Hotlist"
 msgstr "Konvertierte Mosaic-Hotlist"
 
-#: LYMessages.c:824
+#: LYMessages.c:827
 msgid "Options Menu"
 msgstr "Menü der persönlichen Konfigurationsoptionen"
 
-#: LYMessages.c:825
+#: LYMessages.c:828
 msgid "File Permission Options"
 msgstr "Dateizugriffserlaubnis Ändern"
 
-#: LYMessages.c:826
+#: LYMessages.c:829
 msgid "Printing Options"
 msgstr "Druckeroptionen"
 
-#: LYMessages.c:827
+#: LYMessages.c:830
 msgid "Information about the current document"
 msgstr "Informationen über das aktuelle Dokument"
 
-#: LYMessages.c:828
+#: LYMessages.c:831
 msgid "Your recent statusline messages"
 msgstr "Letzte Meldungen von der Statuszeile"
 
-#: LYMessages.c:829
+#: LYMessages.c:832
 msgid "Upload Options"
 msgstr "Upload-Optionen"
 
-#: LYMessages.c:830
+#: LYMessages.c:833
 msgid "Visited Links Page"
 msgstr "Seite der besuchten Links"
 
 #. CONFIG_DEF_TITLE subtitles
-#: LYMessages.c:833
+#: LYMessages.c:836
 msgid "See also"
 msgstr "Siehe auch"
 
-#: LYMessages.c:834
+#: LYMessages.c:837
 msgid "your"
 msgstr "dein"
 
-#: LYMessages.c:835
+#: LYMessages.c:838
 msgid "for runtime options"
 msgstr "für Runtime-Optionen"
 
-#: LYMessages.c:836
+#: LYMessages.c:839
 msgid "compile time options"
 msgstr "Einkompilierte Optionen"
 
-#: LYMessages.c:837
+#: LYMessages.c:840
 msgid "color-style configuration"
 msgstr "Farbstil-Konfiguration"
 
-#: LYMessages.c:838
+#: LYMessages.c:841
 msgid "latest release"
 msgstr "letzte Fassung"
 
-#: LYMessages.c:839
+#: LYMessages.c:842
 msgid "pre-release version"
 msgstr "Pre-Release-Version"
 
-#: LYMessages.c:840
+#: LYMessages.c:843
 msgid "development version"
 msgstr "Development-Version"
 
 #. #define AUTOCONF_CONFIG_CACHE
-#: LYMessages.c:842
+#: LYMessages.c:845
 msgid ""
 "The following data were derived during the automatic configuration/build\n"
 "process of this copy of Lynx.  When reporting a bug, please include a copy\n"
@@ -2730,7 +2736,7 @@ msgstr ""
 "Kopie dieser Seite beifügen."
 
 #. #define AUTOCONF_LYNXCFG_H
-#: LYMessages.c:846
+#: LYMessages.c:849
 msgid ""
 "The following data were used as automatically-configured compile-time\n"
 "definitions when this copy of Lynx was built."
@@ -2739,54 +2745,54 @@ msgstr ""
 "dieser Programmkopie als Definitionen verwendet."
 
 #. #define DIRED_NOVICELINE
-#: LYMessages.c:851
+#: LYMessages.c:854
 msgid "  C)reate  D)ownload  E)dit  F)ull menu  M)odify  R)emove  T)ag  U)pload     \n"
 msgstr "C) Erzeugen D)ownload E)dit F) Menü  M) Ändern R) Löschen T) Markieren U)pload\n"
 
-#: LYMessages.c:852
+#: LYMessages.c:855
 msgid "Failed to obtain status of current link!"
 msgstr "Der Status des aktuellen Links konnte nicht bestimmt werden!"
 
 #. #define INVALID_PERMIT_URL
-#: LYMessages.c:855
+#: LYMessages.c:858
 msgid "Special URL only valid from current File Permission menu!"
 msgstr "Dieser spezielle URL ist nur vom aktiven Zugriffsrechtemenü aus verwendbar!"
 
-#: LYMessages.c:859
+#: LYMessages.c:862
 msgid "External support is currently disabled."
 msgstr "Unterstützung für EXTERNAL ist zurzeit ausgeschaltet."
 
 #. new with 2.8.4dev.21
-#: LYMessages.c:863
+#: LYMessages.c:866
 msgid "Changing working-directory is currently disabled."
 msgstr "Wechseln des Arbeitsverzeichnisses ist zurzeit nicht aktiviert."
 
-#: LYMessages.c:864
+#: LYMessages.c:867
 msgid "Linewrap OFF!"
 msgstr "Linewrap AUS!"
 
-#: LYMessages.c:865
+#: LYMessages.c:868
 msgid "Linewrap ON!"
 msgstr "Linewrap AN!"
 
-#: LYMessages.c:866
+#: LYMessages.c:869
 msgid "Parsing nested-tables toggled OFF!  Reloading..."
 msgstr "Erkennung verschachtelter Tabellen ist AUSgeschaltet!  Reloading..."
 
-#: LYMessages.c:867
+#: LYMessages.c:870
 msgid "Parsing nested-tables toggled ON!  Reloading..."
 msgstr "Erkennung verschachtelter Tabellen ist EINgeschaltet!  Reloading..."
 
-#: LYMessages.c:868
+#: LYMessages.c:871
 msgid "Shifting is disabled while line-wrap is in effect"
 msgstr "Versetzen ist ausgeschaltet, solange Zeilenumbruch aktiv ist"
 
-#: LYMessages.c:869
+#: LYMessages.c:872
 msgid "Trace not supported"
 msgstr "Trace hat keine Unterstützung"
 
 # These functions are never being called.
-#: LYMessages.c:790
+#: LYMessages.c:793
 #, c-format
 msgid "\tIndents: first=%.0f others=%.0f, Height=%.1f Desc=%.1f\n"
 msgstr "\tEinrückungen: Erste=%.0f, Andere=%.0f, Höhe=%.1f, Nachklapp=%.1f\n"
@@ -2829,7 +2835,7 @@ msgstr "Dokument mit POST-Daten nicht im Seitencache gefunden. POST wiederholen?
 msgid "Loading failed, use a previous copy."
 msgstr "Laden fehlgeschalten, die vorherige Kopie wird verwendet."
 
-#: WWW/Library/Implementation/HTAccess.c:1047 src/GridText.c:8546
+#: WWW/Library/Implementation/HTAccess.c:1047 src/GridText.c:8542
 msgid "Loading incomplete."
 msgstr "Unvollständig geladen."
 
@@ -2852,7 +2858,7 @@ msgstr "**** HTAccess: Der empfangene Statuscode war %d\n"
 #. * hack: if we fail in HTAccess.c
 #. * avoid duplicating URL, oh.
 #.
-#: WWW/Library/Implementation/HTAccess.c:1087 src/LYMainLoop.c:7779
+#: WWW/Library/Implementation/HTAccess.c:1087 src/LYMainLoop.c:7756
 msgid "Can't Access"
 msgstr "Zugriff fehlgeschlagen:"
 
@@ -2877,30 +2883,20 @@ msgstr "close master socket"
 msgid "socket for master socket"
 msgstr "socket for master socket"
 
-# This appears in FTP directory listings.  "Symbolischer Link"
-# does not fit in the (default?) format. - kw
-#.
-#. * It's a symbolic link, does the user care about knowing if it is
-#. * symbolic?  I think so since it might be a directory.
-#.
-#: WWW/Library/Implementation/HTFTP.c:1733 WWW/Library/Implementation/HTFTP.c:2350
-msgid "Symbolic Link"
-msgstr "Symbolic Link"
-
-#: WWW/Library/Implementation/HTFTP.c:2707
+#: WWW/Library/Implementation/HTFTP.c:2977
 msgid "Receiving FTP directory."
 msgstr "FTP-Verzeichnis wird empfangen."
 
-#: WWW/Library/Implementation/HTFTP.c:2843
+#: WWW/Library/Implementation/HTFTP.c:3113
 #, c-format
 msgid "Transferred %d bytes (%5d)"
 msgstr "%d bytes übertragen (%5d)"
 
-#: WWW/Library/Implementation/HTFTP.c:3194
+#: WWW/Library/Implementation/HTFTP.c:3467
 msgid "connect for data"
 msgstr "connect for data"
 
-#: WWW/Library/Implementation/HTFTP.c:3855
+#: WWW/Library/Implementation/HTFTP.c:4128
 msgid "Receiving FTP file."
 msgstr "FTP-Datei wird empfangen."
 
@@ -3059,7 +3055,8 @@ msgstr "Adresslänge hat einen ungültigen port"
 msgid "Address length looks invalid"
 msgstr "Adresslänge scheint ungültig zu sein"
 
-#: WWW/Library/Implementation/HTTCP.c:1618 WWW/Library/Implementation/HTTCP.c:1636
+#: WWW/Library/Implementation/HTTCP.c:1618
+#: WWW/Library/Implementation/HTTCP.c:1636
 #, c-format
 msgid "Unable to locate remote host %s."
 msgstr "Remote Host %s nicht gefunden."
@@ -3068,7 +3065,8 @@ msgstr "Remote Host %s nicht gefunden."
 #. * but not HTAlert, because typically there will be other
 #. * alerts from the callers.  - kw
 #.
-#: WWW/Library/Implementation/HTTCP.c:1633 WWW/Library/Implementation/HTTelnet.c:115
+#: WWW/Library/Implementation/HTTCP.c:1633
+#: WWW/Library/Implementation/HTTelnet.c:115
 #, c-format
 msgid "Invalid hostname %s"
 msgstr "Hostname ist ungültig: %s"
@@ -3100,14 +3098,13 @@ msgid "Could not restore socket to blocking."
 msgstr "Socket konnte nicht wieder blocking gemacht werden."
 
 #: WWW/Library/Implementation/HTTCP.c:2016
-#, fuzzy
 msgid "Socket read failed (too many tries)."
-msgstr "Verbindungsfehler (zu viele Versuche)."
+msgstr "Lesefehler (zu viele Versuche)."
 
 #: WWW/Library/Implementation/HTTP.c:84
 #, c-format
 msgid "SSL callback:%s, preverify_ok=%d, ssl_okay=%d"
-msgstr ""
+msgstr "SSL callback:%s, preverify_ok=%d, ssl_okay=%d"
 
 #: WWW/Library/Implementation/HTTP.c:406
 #, c-format
@@ -3117,82 +3114,82 @@ msgstr "Adresse mit einem Username: %s"
 #: WWW/Library/Implementation/HTTP.c:460
 #, c-format
 msgid "Certificate issued by: %s"
-msgstr ""
+msgstr "Zertifikat herausgegeben von: %s"
 
-#: WWW/Library/Implementation/HTTP.c:620
+#: WWW/Library/Implementation/HTTP.c:643
 msgid "This client does not contain support for HTTPS URLs."
 msgstr "Dieses Programm hat keine Unterstützung für HTTPS-URLs."
 
-#: WWW/Library/Implementation/HTTP.c:645
+#: WWW/Library/Implementation/HTTP.c:668
 msgid "Unable to connect to remote host."
 msgstr "Verbindung zum remote Host konnte nicht hergestellt werden."
 
-#: WWW/Library/Implementation/HTTP.c:669
+#: WWW/Library/Implementation/HTTP.c:692
 msgid "Retrying connection without TLS."
 msgstr "Verbindung erneut versuchen, ohne TLS."
 
-#: WWW/Library/Implementation/HTTP.c:714
+#: WWW/Library/Implementation/HTTP.c:737
 msgid "no issuer was found"
-msgstr ""
+msgstr "Kein Herausgeber gefunden"
 
-#: WWW/Library/Implementation/HTTP.c:716
+#: WWW/Library/Implementation/HTTP.c:739
 msgid "issuer is not a CA"
-msgstr ""
+msgstr "Herausgeber ist keine CA"
 
-#: WWW/Library/Implementation/HTTP.c:718
+#: WWW/Library/Implementation/HTTP.c:741
 msgid "the certificate has no known issuer"
-msgstr ""
+msgstr "Das Zertifikat hat keinen bekannten Herausgeber"
 
-#: WWW/Library/Implementation/HTTP.c:720
+#: WWW/Library/Implementation/HTTP.c:743
 msgid "the certificate has been revoked"
 msgstr "Das Zertifikat wurde widerrufen"
 
-#: WWW/Library/Implementation/HTTP.c:722
+#: WWW/Library/Implementation/HTTP.c:745
 msgid "the certificate is not trusted"
-msgstr ""
+msgstr "Dem Zertifikat wird nicht vertraut"
 
-#: WWW/Library/Implementation/HTTP.c:807
+#: WWW/Library/Implementation/HTTP.c:821
 #, c-format
 msgid "Verified connection to %s (cert=%s)"
-msgstr ""
+msgstr "Verifizierte Verbindung zu %s (cert=%s)"
 
-#: WWW/Library/Implementation/HTTP.c:855 WWW/Library/Implementation/HTTP.c:901
+#: WWW/Library/Implementation/HTTP.c:869 WWW/Library/Implementation/HTTP.c:911
 #, c-format
 msgid "Verified connection to %s (subj=%s)"
-msgstr ""
+msgstr "Verifizierte Verbindung zu %s (subj=%s)"
 
-#: WWW/Library/Implementation/HTTP.c:931
+#: WWW/Library/Implementation/HTTP.c:941
 msgid "Can't find common name in certificate"
 msgstr "Kann Allgemeinen Namen im Zertifikat nicht finden"
 
-#: WWW/Library/Implementation/HTTP.c:934
+#: WWW/Library/Implementation/HTTP.c:944
 #, c-format
 msgid "SSL error:host(%s)!=cert(%s)-Continue?"
 msgstr "SSL-Fehler:host(%s)!=cert(%s) - Fortfahren?"
 
-#: WWW/Library/Implementation/HTTP.c:947
+#: WWW/Library/Implementation/HTTP.c:957
 #, c-format
 msgid "UNVERIFIED connection to %s (cert=%s)"
-msgstr ""
+msgstr "UNVERIFIZIERTE Verbindung zu %s (cert=%s)"
 
-#: WWW/Library/Implementation/HTTP.c:956
+#: WWW/Library/Implementation/HTTP.c:966
 #, c-format
 msgid "Secure %d-bit %s (%s) HTTP connection"
 msgstr "Sichere %d Bit %s (%s) HTTP-Verbindung"
 
-#: WWW/Library/Implementation/HTTP.c:1426
+#: WWW/Library/Implementation/HTTP.c:1433
 msgid "Sending HTTP request."
 msgstr "HTTP Request wird geschickt."
 
-#: WWW/Library/Implementation/HTTP.c:1465
+#: WWW/Library/Implementation/HTTP.c:1472
 msgid "Unexpected network write error; connection aborted."
 msgstr "Unerwarteter Netzschreibfehler; Verbindung abgebrochen."
 
-#: WWW/Library/Implementation/HTTP.c:1471
+#: WWW/Library/Implementation/HTTP.c:1478
 msgid "HTTP request sent; waiting for response."
 msgstr "HTTP Request geschickt; warten auf Antwort."
 
-#: WWW/Library/Implementation/HTTP.c:1539
+#: WWW/Library/Implementation/HTTP.c:1546
 msgid "Unexpected network read error; connection aborted."
 msgstr "Unerwarteter Netzlesefehler; Verbindung abgebrochen."
 
@@ -3205,7 +3202,7 @@ msgstr "Unerwarteter Netzlesefehler; Verbindung abgebrochen."
 #. * line and possibly other headers, so we'll deal with them by
 #. * showing the full header to the user as text/plain.  - FM
 #.
-#: WWW/Library/Implementation/HTTP.c:1733
+#: WWW/Library/Implementation/HTTP.c:1740
 msgid "Got unexpected Informational Status."
 msgstr "Unerwarteter Informations-Statuscode empfangen."
 
@@ -3215,7 +3212,7 @@ msgstr "Unerwarteter Informations-Statuscode empfangen."
 #. * content.  We'll instruct the user to do that, and
 #. * restore the current document.  - FM
 #.
-#: WWW/Library/Implementation/HTTP.c:1767
+#: WWW/Library/Implementation/HTTP.c:1774
 msgid "Request fulfilled.  Reset Content."
 msgstr "Request ausgeführt. Seiteninhalt zurücksetzen."
 
@@ -3225,27 +3222,27 @@ msgstr "Request ausgeführt. Seiteninhalt zurücksetzen."
 #. * status is inappropriate.  We'll deal with it by showing
 #. * the full header to the user as text/plain.  - FM
 #.
-#: WWW/Library/Implementation/HTTP.c:1884
+#: WWW/Library/Implementation/HTTP.c:1891
 msgid "Got unexpected 304 Not Modified status."
 msgstr "Unerwarteter Status 304 \"Not Modified\"."
 
-#: WWW/Library/Implementation/HTTP.c:1947
+#: WWW/Library/Implementation/HTTP.c:1954
 msgid "Redirection of POST content requires user approval."
 msgstr "Bestätigung ist erforderlich für Umleitung von POST-Daten."
 
-#: WWW/Library/Implementation/HTTP.c:1962
+#: WWW/Library/Implementation/HTTP.c:1969
 msgid "Have POST content.  Treating Permanent Redirection as Temporary.\n"
 msgstr "POST-Request. Permanente Umleitung wird als temporär behandelt.\n"
 
-#: WWW/Library/Implementation/HTTP.c:2004
+#: WWW/Library/Implementation/HTTP.c:2011
 msgid "Retrying with access authorization information."
 msgstr "Wir versuchen's noch einmal mit Autorisierungsinfo."
 
-#: WWW/Library/Implementation/HTTP.c:2016
+#: WWW/Library/Implementation/HTTP.c:2023
 msgid "Show the 401 message body?"
 msgstr "Inhalt der 401-Antwort zeigen?"
 
-#: WWW/Library/Implementation/HTTP.c:2059
+#: WWW/Library/Implementation/HTTP.c:2066
 msgid "Show the 407 message body?"
 msgstr "Inhalt der 407-Antwort zeigen?"
 
@@ -3253,7 +3250,7 @@ msgstr "Inhalt der 407-Antwort zeigen?"
 #. * Bad or unknown server_status number.  Take a chance and hope
 #. * there is something to display.  - FM
 #.
-#: WWW/Library/Implementation/HTTP.c:2159
+#: WWW/Library/Implementation/HTTP.c:2166
 msgid "Unknown status reply from server!"
 msgstr "Unbekannter Statuscode in Antwort vom Server!"
 
@@ -3517,30 +3514,30 @@ msgstr "\"Keygen\"-Feld"
 msgid "unknown form field"
 msgstr "unbekanntes Formfeld"
 
-#: src/GridText.c:10279
+#: src/GridText.c:10275
 msgid "Can't open file for uploading"
 msgstr "Datei konnte nicht zum Upload geöffnet werden!"
 
-#: src/GridText.c:11438
+#: src/GridText.c:11434
 #, c-format
 msgid "Submitting %s"
 msgstr "%s wird gesandt"
 
 #. ugliness has happened; inform user and do the best we can
-#: src/GridText.c:12491
+#: src/GridText.c:12487
 msgid "Hang Detect: TextAnchor struct corrupted - suggest aborting!"
 msgstr "Hänger festgestellt: TextAnchor-Konstruktion ist schadhaft - am besten abbrechen!"
 
 #. don't show previous state
-#: src/GridText.c:12628
+#: src/GridText.c:12624
 msgid "Wrap lines to fit displayed area?"
 msgstr "Zeilen umbrechen, um in den sichtbaren Bereich einzupassen?"
 
-#: src/GridText.c:12680
+#: src/GridText.c:12676
 msgid "Very long lines have been wrapped!"
 msgstr "Sehr lange Zeilen wurden umbrochen!"
 
-#: src/GridText.c:13185
+#: src/GridText.c:13181
 msgid "Very long lines have been truncated!"
 msgstr "Sehr lange Zeilen wurden abgeschnitten!"
 
@@ -3634,31 +3631,31 @@ msgstr "nein"
 msgid "Y/N/A/V"
 msgstr "J/N/A/V"
 
-#: src/HTML.c:5911
+#: src/HTML.c:5913
 msgid "Description:"
 msgstr "Beschreibung:"
 
-#: src/HTML.c:5916
+#: src/HTML.c:5918
 msgid "(none)"
 msgstr "(keine)"
 
-#: src/HTML.c:5920
+#: src/HTML.c:5922
 msgid "Filepath:"
 msgstr "Dateipfad:"
 
-#: src/HTML.c:5926
+#: src/HTML.c:5928
 msgid "(unknown)"
 msgstr "(unbekannt)"
 
-#: src/HTML.c:7353
+#: src/HTML.c:7355
 msgid "Document has only hidden links.  Use the 'l'ist command."
 msgstr "Dokument hat nur versteckte Links. Tastenbefehl 'L' für Liste."
 
-#: src/HTML.c:7852
+#: src/HTML.c:7854
 msgid "Source cache error - disk full?"
 msgstr "Source Cache Fehler - Festplatte voll?"
 
-#: src/HTML.c:7865
+#: src/HTML.c:7867
 msgid "Source cache error - not enough memory!"
 msgstr "Source Cache Fehler - nicht genug Speicher!"
 
@@ -3723,7 +3720,7 @@ msgstr "Datei kann möglicherweise während dieser Session mit %s wieder rekonst
 #: src/LYCgi.c:161
 #, c-format
 msgid "Do you want to execute \"%s\"?"
-msgstr ""
+msgstr "Wollen Sie \"%s\" ausführen?"
 
 #.
 #. * Neither the path as given nor any components examined by backing up
@@ -3753,19 +3750,19 @@ msgstr "Er hat state of the art CGI-Unterstützung.\n"
 msgid "Exiting via interrupt:"
 msgstr "Programmende durch Interrupt:"
 
-#: src/LYCookie.c:2461
+#: src/LYCookie.c:2477
 msgid "(from a previous session)"
 msgstr "(von vorheriger Session)"
 
-#: src/LYCookie.c:2522
+#: src/LYCookie.c:2538
 msgid "Maximum Gobble Date:"
 msgstr "Verfallsdatum:"
 
-#: src/LYCookie.c:2562
+#: src/LYCookie.c:2577
 msgid "Internal"
 msgstr "Intern"
 
-#: src/LYCookie.c:2563
+#: src/LYCookie.c:2578
 msgid "cookie_domain_flag_set error, aborting program"
 msgstr "cookie_domain_flag_set-Fehler, beende das Programm"
 
@@ -3822,52 +3819,52 @@ msgstr ""
 "konnte und andere relevante Information.\n"
 
 #: src/LYEdit.c:266
-#, fuzzy, c-format
+#, c-format
 msgid "Error starting editor, %s"
-msgstr "Fehler beim Verarbeiten von Zeile %d von %s\n"
+msgstr "Fehler beim Starten des Editors, %s"
 
 #: src/LYEdit.c:269
 msgid "Editor killed by signal"
 msgstr "Editor von Signal abgeschossen"
 
 #: src/LYEdit.c:274
-#, fuzzy, c-format
+#, c-format
 msgid "Editor returned with error status %s"
-msgstr "Editor mit Fehler-Status beendet, %s"
+msgstr "Editor mit Fehler-Status %s beendet"
 
-#: src/LYDownload.c:504
+#: src/LYDownload.c:506
 msgid "Downloaded link:"
 msgstr "Geladener Link:"
 
-#: src/LYDownload.c:509
+#: src/LYDownload.c:511
 msgid "Suggested file name:"
 msgstr "Vorgeschlagener Dateiname:"
 
-#: src/LYDownload.c:514
+#: src/LYDownload.c:516
 msgid "Standard download options:"
 msgstr "Normale Download-Optionen:"
 
-#: src/LYDownload.c:515
+#: src/LYDownload.c:517
 msgid "Download options:"
 msgstr "Download-Optionen:"
 
-#: src/LYDownload.c:531
+#: src/LYDownload.c:533
 msgid "Save to disk"
 msgstr "Speichern auf Disk"
 
-#: src/LYDownload.c:545
+#: src/LYDownload.c:547
 msgid "View temporary file"
 msgstr "Temporäre Datei ansehen"
 
-#: src/LYDownload.c:552
+#: src/LYDownload.c:554
 msgid "Save to disk disabled."
 msgstr "Speichern auf Disk nicht ermöglicht."
 
-#: src/LYDownload.c:556 src/LYPrint.c:1310
+#: src/LYDownload.c:558 src/LYPrint.c:1310
 msgid "Local additions:"
 msgstr "Lokale Zusätze:"
 
-#: src/LYDownload.c:567 src/LYUpload.c:211
+#: src/LYDownload.c:569 src/LYUpload.c:211
 msgid "No Name Given"
 msgstr "Kein Name gegeben"
 
@@ -4287,19 +4284,19 @@ msgstr "Diese Nachricht wurde automatisch generiert von"
 msgid "No system mailer configured"
 msgstr "Kein systemweiter Mailer konfiguriert"
 
-#: src/LYMain.c:1023
+#: src/LYMain.c:1025
 msgid "No Winsock found, sorry."
 msgstr "Kein Winsock gefunden, sorry."
 
-#: src/LYMain.c:1226
+#: src/LYMain.c:1222
 msgid "You MUST define a valid TMP or TEMP area!"
 msgstr "Es muß ein gültiger Bereich für TMP oder TEMP definiert sein!"
 
-#: src/LYMain.c:1279 src/LYMainLoop.c:5074
+#: src/LYMain.c:1275 src/LYMainLoop.c:5051
 msgid "No such directory"
 msgstr "Verzeichnis nicht vorhanden"
 
-#: src/LYMain.c:1464
+#: src/LYMain.c:1460
 #, c-format
 msgid ""
 "\n"
@@ -4310,7 +4307,7 @@ msgstr ""
 "Konfigurationsdatei %s ist nicht zugänglich.\n"
 "\n"
 
-#: src/LYMain.c:1474
+#: src/LYMain.c:1470
 #, c-format
 msgid ""
 "\n"
@@ -4321,7 +4318,7 @@ msgstr ""
 "Lynx-Zeichensätze nicht deklariert.\n"
 "\n"
 
-#: src/LYMain.c:1503
+#: src/LYMain.c:1499
 #, c-format
 msgid ""
 "\n"
@@ -4332,7 +4329,7 @@ msgstr ""
 "Lynx \"edit map\" nicht deklariert.\n"
 "\n"
 
-#: src/LYMain.c:1579
+#: src/LYMain.c:1575
 #, c-format
 msgid ""
 "\n"
@@ -4343,178 +4340,174 @@ msgstr ""
 "Lynx-Datei %s ist nicht verfügbar.\n"
 "\n"
 
-#: src/LYMain.c:1654
+#: src/LYMain.c:1650
 #, c-format
 msgid "Ignored %d characters from standard input.\n"
-msgstr ""
+msgstr "%d Zeichen von der Standardeingabe ignoriert.\n"
 
-#: src/LYMain.c:1656
+#: src/LYMain.c:1652
 #, c-format
 msgid "Use \"-stdin\" or \"-\" to tell how to handle piped input.\n"
-msgstr ""
+msgstr "Benutzen Sie \"-stdin\" oder \"-\", um festzulegen, wie die Eingabe behandelt wird.\n"
 
-#: src/LYMain.c:1804
+#: src/LYMain.c:1800
 msgid "Warning:"
 msgstr "Warnung:"
 
 # No idea what this means.  Seems highly experimental anyway. - kw
-#: src/LYMain.c:2372
+#: src/LYMain.c:2365
 msgid "persistent cookies state will be changed in next session only."
 msgstr "Beständige Kekse werden erst beim nächsten Programmaufruf geändert."
 
-#: src/LYMain.c:2617 src/LYMain.c:2662
+#: src/LYMain.c:2610 src/LYMain.c:2655
 #, c-format
 msgid "Lynx: ignoring unrecognized charset=%s\n"
 msgstr "Lynx: ignoriere unbekannte Codierung (charset)=%s\n"
 
-#: src/LYMain.c:3181
+#: src/LYMain.c:3174
 #, c-format
 msgid "%s Version %s (%s)"
 msgstr "%s Version %s (%s)"
 
-#: src/LYMain.c:3219
+#: src/LYMain.c:3212
 #, c-format
 msgid "Built on %s %s %s\n"
 msgstr "Kompiliert auf %s, %s %s\n"
 
-#: src/LYMain.c:3241
+#: src/LYMain.c:3234
 msgid "Copyrights held by the Lynx Developers Group,"
-msgstr ""
+msgstr "Die Vervielfältigungsrechte liegen bei der Lynx Developers Group,"
 
-#: src/LYMain.c:3242
-#, fuzzy
+#: src/LYMain.c:3235
 msgid "the University of Kansas, CERN, and other contributors."
-msgstr ""
-"Copyrights gehalten von der University of Kansas, dem CERN und anderen\n"
-"Beiträgern."
+msgstr "der Universität Kansas, dem CERN und anderen Beitragenden."
 
-#: src/LYMain.c:3243
-#, fuzzy
+#: src/LYMain.c:3236
 msgid "Distributed under the GNU General Public License (Version 2)."
-msgstr "Verbreitet unter den Bedingungen der GNU General Public License."
+msgstr "Verbreitet unter den Bedingungen der GNU General Public License (Version 2)."
 
-#: src/LYMain.c:3244
+#: src/LYMain.c:3237
 msgid "See http://lynx.isc.org/ and the online help for more information."
 msgstr "Weitere Informationen: http://lynx.isc.org/ und die Online-Hilfe."
 
-#: src/LYMain.c:4065
+#: src/LYMain.c:4056
 #, c-format
 msgid "USAGE: %s [options] [file]\n"
 msgstr "AUFRUF: %s [optionen] [datei oder URL]\n"
 
-#: src/LYMain.c:4066
+#: src/LYMain.c:4057
 #, c-format
 msgid "Options are:\n"
 msgstr "Optionen sind:\n"
 
-#: src/LYMain.c:4365
+#: src/LYMain.c:4356
 #, c-format
 msgid "%s: Invalid Option: %s\n"
 msgstr "%s: Ungültige Option: %s\n"
 
-#: src/LYMainLoop.c:594
+#: src/LYMainLoop.c:571
 #, c-format
 msgid "Internal error: Invalid mouse link %d!"
 msgstr "Interner Fehler: %d ist ungültig für mouse_link!"
 
-#: src/LYMainLoop.c:714 src/LYMainLoop.c:5096
+#: src/LYMainLoop.c:691 src/LYMainLoop.c:5073
 msgid "A URL specified by the user"
 msgstr "Ein vom Benutzer eingegegener URL"
 
-#: src/LYMainLoop.c:1173
+#: src/LYMainLoop.c:1150
 msgid "Enctype multipart/form-data not yet supported!  Cannot submit."
 msgstr "Enctype multipart/form-data noch nicht unterstützt! Submission unmöglich."
 
 #.
 #. * Make a name for this help file.
 #.
-#: src/LYMainLoop.c:3105
+#: src/LYMainLoop.c:3082
 msgid "Help Screen"
 msgstr "Hilfe-Seite"
 
-#: src/LYMainLoop.c:3226
+#: src/LYMainLoop.c:3203
 msgid "System Index"
 msgstr "Systemindex"
 
-#: src/LYMainLoop.c:3585 src/LYMainLoop.c:5320
+#: src/LYMainLoop.c:3562 src/LYMainLoop.c:5297
 msgid "Entry into main screen"
 msgstr "Eingang zur Hauptseite"
 
-#: src/LYMainLoop.c:3843
+#: src/LYMainLoop.c:3820
 msgid "No next document present"
 msgstr "Es gibt kein nächstes Dokument"
 
-#: src/LYMainLoop.c:4139
+#: src/LYMainLoop.c:4116
 msgid "charset for this document specified explicitly, sorry..."
 msgstr "Charset für dieses Dokument ist schon explizit angegeben..."
 
-#: src/LYMainLoop.c:5052
+#: src/LYMainLoop.c:5029
 msgid "cd to:"
 msgstr "cd nach:"
 
-#: src/LYMainLoop.c:5077
+#: src/LYMainLoop.c:5054
 msgid "A component of path is not a directory"
 msgstr "Eine Pfadkomponente ist kein Verzeichnis"
 
-#: src/LYMainLoop.c:5080
+#: src/LYMainLoop.c:5057
 msgid "failed to change directory"
 msgstr "Fehler beim Verzeichniswechsel"
 
 # How does one translate reparsing anyway? - kw
-#: src/LYMainLoop.c:6252
+#: src/LYMainLoop.c:6229
 msgid "Reparsing document under current settings..."
 msgstr "Dokument wird mit jetzigen Einstellungen reinterpretiert..."
 
-#: src/LYMainLoop.c:6543
+#: src/LYMainLoop.c:6520
 #, c-format
 msgid "Fatal error - could not open output file %s\n"
 msgstr "Fataler Fehler - Ausgabedatei %s konnte nicht geöffnet werden\n"
 
-#: src/LYMainLoop.c:6880
+#: src/LYMainLoop.c:6857
 msgid "TABLE center enable."
 msgstr "TABLE-Zentrierung aktivieren."
 
-#: src/LYMainLoop.c:6883
+#: src/LYMainLoop.c:6860
 msgid "TABLE center disable."
 msgstr "TABLE-Zentrierung ausschalten."
 
-#: src/LYMainLoop.c:6960
+#: src/LYMainLoop.c:6937
 msgid "Current URL is empty."
 msgstr "Aktueller URL ist leer."
 
-#: src/LYMainLoop.c:6962 src/LYUtils.c:1828
+#: src/LYMainLoop.c:6939 src/LYUtils.c:1828
 msgid "Copy to clipboard failed."
 msgstr "Kopieren in das Clipboard fehlgeschlagen."
 
-#: src/LYMainLoop.c:6964
+#: src/LYMainLoop.c:6941
 msgid "Document URL put to clipboard."
 msgstr "URL des Dokuments in das Clipboard gespeichert."
 
-#: src/LYMainLoop.c:6966
+#: src/LYMainLoop.c:6943
 msgid "Link URL put to clipboard."
 msgstr "URL des Links in das Clipboard gespeichert."
 
-#: src/LYMainLoop.c:6993
+#: src/LYMainLoop.c:6970
 msgid "No URL in the clipboard."
 msgstr "Kein URL in das Clipboard gespeichert."
 
-#: src/LYMainLoop.c:7664 src/LYMainLoop.c:7834
+#: src/LYMainLoop.c:7641 src/LYMainLoop.c:7811
 msgid "-index-"
 msgstr "-Index"
 
-#: src/LYMainLoop.c:7774
+#: src/LYMainLoop.c:7751
 msgid "lynx: Can't access startfile"
 msgstr "lynx: Unzugängliche Startdatei"
 
-#: src/LYMainLoop.c:7786
+#: src/LYMainLoop.c:7763
 msgid "lynx: Start file could not be found or is not text/html or text/plain"
 msgstr "lynx: Startdatei nicht gefunden oder nicht text/html oder text/plain"
 
-#: src/LYMainLoop.c:7787
+#: src/LYMainLoop.c:7764
 msgid "      Exiting..."
 msgstr "      Ende..."
 
-#: src/LYMainLoop.c:7828
+#: src/LYMainLoop.c:7805
 msgid "-more-"
 msgstr "-mehr-"
 
@@ -4591,7 +4584,8 @@ msgid "ON"
 msgstr "AN"
 
 #. verbose_img variable
-#: src/LYOptions.c:2128 src/LYOptions.c:2133 src/LYOptions.c:2285 src/LYOptions.c:2296
+#: src/LYOptions.c:2128 src/LYOptions.c:2133 src/LYOptions.c:2285
+#: src/LYOptions.c:2296
 msgid "OFF"
 msgstr "AUS"
 
@@ -4779,9 +4773,8 @@ msgid "Show %s/sec, ETA"
 msgstr "%s/sec, ETA, anzeigen"
 
 #: src/LYOptions.c:2379
-#, fuzzy
 msgid "Show progressbar"
-msgstr "Scrollbar zeigen"
+msgstr "Fortschrittsbalken zeigen"
 
 #: src/LYOptions.c:2391
 msgid "Accept lynx's internal types"
@@ -4809,7 +4802,7 @@ msgstr "gzip"
 
 #: src/LYOptions.c:2405
 msgid "deflate"
-msgstr ""
+msgstr "deflate"
 
 #: src/LYOptions.c:2408
 msgid "compress"
@@ -5039,7 +5032,7 @@ msgstr "Dateiverzeichnisse anlegen und auf Dateien zugreifen"
 #. FTP sort: SELECT
 #: src/LYOptions.c:3802
 msgid "Use Passive FTP"
-msgstr ""
+msgstr "Passives FTP benutzen"
 
 #. FTP sort: SELECT
 #: src/LYOptions.c:3808
@@ -5095,12 +5088,12 @@ msgstr "Lesezeichendatei"
 #. Auto Session: ON/OFF
 #: src/LYOptions.c:3903
 msgid "Auto Session"
-msgstr ""
+msgstr "Auto-Session"
 
 #. Session File Menu: INPUT
 #: src/LYOptions.c:3909
 msgid "Session file"
-msgstr ""
+msgstr "Session-Datei"
 
 #. Visited Pages: SELECT
 #: src/LYOptions.c:3915
@@ -5227,41 +5220,41 @@ msgstr "Lynx: Programmstart verweigert, Regeldatei %s (CERN rules file) nicht ve
 msgid "(no name)"
 msgstr "(ohne Namen)"
 
-#: src/LYReadCFG.c:1881
+#: src/LYReadCFG.c:1882
 #, c-format
 msgid "More than %d nested lynx.cfg includes -- perhaps there is a loop?!?\n"
 msgstr "Mehr als %d geschachtelte lynx.cfg-Includes -- wohl eine Schleife?!?\n"
 
-#: src/LYReadCFG.c:1883
+#: src/LYReadCFG.c:1884
 #, c-format
 msgid "Last attempted include was '%s',\n"
 msgstr "letztes INCLUDE war für '%s',\n"
 
-#: src/LYReadCFG.c:1884
+#: src/LYReadCFG.c:1885
 #, c-format
 msgid "included from '%s'.\n"
 msgstr "enthalten in '%s'.\n"
 
-#: src/LYReadCFG.c:2292 src/LYReadCFG.c:2305 src/LYReadCFG.c:2363
+#: src/LYReadCFG.c:2289 src/LYReadCFG.c:2302 src/LYReadCFG.c:2360
 msgid "The following is read from your lynx.cfg file."
 msgstr "Folgendes ist der aktuellen Konfigurationsdatei entnommen."
 
-#: src/LYReadCFG.c:2293 src/LYReadCFG.c:2306
+#: src/LYReadCFG.c:2290 src/LYReadCFG.c:2303
 msgid "Please read the distribution"
 msgstr "Bitte die installierte Konfigurationsdatei"
 
-#: src/LYReadCFG.c:2299 src/LYReadCFG.c:2309
+#: src/LYReadCFG.c:2296 src/LYReadCFG.c:2306
 msgid "for more comments."
 msgstr ""
 " \n"
 "für weitere Erläuterungen ansehen."
 
 # Looks dangerous to me, so I sneak in a warning. - kw
-#: src/LYReadCFG.c:2345
+#: src/LYReadCFG.c:2342
 msgid "RELOAD THE CHANGES"
 msgstr "NEULADEN NACH ÄNDERUNG, AUF EIGENE GEFAHR!"
 
-#: src/LYReadCFG.c:2353
+#: src/LYReadCFG.c:2350
 msgid "Your primary configuration"
 msgstr "Ihre primäre Konfiguration"
 
@@ -5391,9 +5384,8 @@ msgid "Content-Length:"
 msgstr "Content-Length:"
 
 #: src/LYShowInfo.c:362
-#, fuzzy
 msgid "Length:"
-msgstr "Content-Length:"
+msgstr "Länge:"
 
 #: src/LYShowInfo.c:367
 msgid "Language:"
@@ -5540,25 +5532,25 @@ msgstr "URL des Download-Dokuments in das Clipboard gespeichert."
 msgid "Unexpected access protocol for this URL scheme."
 msgstr "Unerwartetes Zugangsprotokoll für dieses URL-Schema."
 
-#: src/LYUtils.c:3419
+#: src/LYUtils.c:3423
 msgid "Too many tempfiles"
 msgstr "Zu viele temporäre Dateien"
 
-#: src/LYUtils.c:3719
+#: src/LYUtils.c:3723
 msgid "unknown restriction"
 msgstr "unbekannte Beschränkung"
 
-#: src/LYUtils.c:3750
+#: src/LYUtils.c:3754
 #, c-format
 msgid "No restrictions set.\n"
 msgstr "Keine Beschränkungen gesetzt.\n"
 
-#: src/LYUtils.c:3753
+#: src/LYUtils.c:3757
 #, c-format
 msgid "Restrictions set:\n"
 msgstr "Aktuelle Beschränkungen:\n"
 
-#: src/LYUtils.c:5131
+#: src/LYUtils.c:5135
 msgid "Cannot find HOME directory"
 msgstr "Das HOME-Verzeichnis ist nicht zu finden"
 
@@ -5585,6 +5577,11 @@ msgid ""
 "Lynx will use the personal email address.  Set anonftp_password\n"
 "to a different value if you choose.\n"
 msgstr ""
+"anonftp_password ermöglicht es dem Benutzer, Lynx zu sagen, dass\n"
+"es die persönliche Emailadresse als Passwort für anonymes FTP verwenden\n"
+"soll. Wenn kein Wert angegeben ist, benutzt Lynx die persönliche\n"
+"Emailadresse. Setzen Sie anonftp_password auf einen anderen Wert,\n"
+"wenn Sie wollen.\n"
 
 #: src/LYrcFile.c:332
 msgid ""
@@ -5639,13 +5636,12 @@ msgstr ""
 "in cookie_reject_domains erscheint, hat die Verweigerung vorrang.\n"
 
 #: src/LYrcFile.c:357
-#, fuzzy
 msgid ""
 "cookie_file specifies the file from which to read persistent cookies.\n"
 "The default is ~/"
 msgstr ""
 "cookie_file gibt die Datei an, von der langlebige Kekse gelesen werden.\n"
-"Standardeinstellung ist ~/.lynx_cookies.\n"
+"Standardeinstellung ist ~/"
 
 #: src/LYrcFile.c:362
 msgid ""
@@ -6135,6 +6131,8 @@ msgid ""
 "Lynx User Defaults File\n"
 "\n"
 msgstr ""
+"Lynx-Benutzereinstellungs-Datei\n"
+"\n"
 
 #: src/LYrcFile.c:882
 msgid ""
@@ -6142,12 +6140,17 @@ msgid ""
 "with the 'o' key).  To save options with that screen, you must select the\n"
 "checkbox:\n"
 msgstr ""
+"Diese Datei enthält Optionen, die aus dem Lynx-Optionsschirm gespeichert\n"
+"wurden (normalerweise mit der Taste \"o\"). Um die Optionen mit diesem Schirm\n"
+"zu speichern, müssen Sie das Kästchen ankreuzen:\n"
 
 #: src/LYrcFile.c:889
 msgid ""
 "You must then save the settings using the link on the line above the\n"
 "checkbox:\n"
 msgstr ""
+"Danach müssen Sie die Einstellungen speichern, indem Sie dem Link in\n"
+"der Zeile über dem Ankreuzkästchen folgen:\n"
 
 #: src/LYrcFile.c:896
 msgid ""
@@ -6155,6 +6158,10 @@ msgid ""
 "the simpler Options Menu instead.  Save options with that using the '>' key.\n"
 "\n"
 msgstr ""
+"Sie können auch die Kommandozeilenoption \"-forms_options\" benutzen, die\n"
+"ein einfachereres Menü anzeigt. Speichern Sie die Optionen damit, indem Sie\n"
+"die Taste \">\" drücken.\n"
+"\n"
 
 #: src/LYrcFile.c:903
 msgid ""
@@ -6162,9 +6169,11 @@ msgid ""
 "with the '>' key).\n"
 "\n"
 msgstr ""
+"Diese Datei enthält Optionen, die aus dem Lynx-Options-Bildschirm gespeichert\n"
+"wurden (normalerweise mit der Taste \">\").\n"
+"\n"
 
 #: src/LYrcFile.c:910
-#, fuzzy
 msgid ""
 "There is normally no need to edit this file manually, since the defaults\n"
 "here can be controlled from the Options Screen, and the next time options\n"
@@ -6175,17 +6184,15 @@ msgid ""
 "called \"lynx.cfg\".  It has different content and a different format.\n"
 "It is not this file.\n"
 msgstr ""
-"Lynx User Defaults File\n"
-"\n"
-"Diese Datei enthält Optionen, die vom Lynx Options Screen gespeichert\n"
-"worden sind (üblicherweise mit der Taste '>').  Normalerweise braucht\n"
-"diese Datei nicht manuell editiert zu werden, da die Einstellungen\n"
-"hier vom der Optionsseite kontrolliert werden können.  Außerdem wird\n"
-"diese Datei das nächstemal, wenn Optionen von der Optionsseite gespeichert\n"
-"werden, komplett überschrieben.  Sie sind gewarnt worden...\n"
+"Normalerweise braucht diese Datei nicht manuell editiert zu werden, da\n"
+"die Einstellungen hier von der Optionsseite kontrolliert werden können.\n"
+"Außerdem wird diese Datei das nächste Mal, wenn Optionen von der\n"
+"Optionsseite gespeichert werden, komplett überschrieben. Sie sind\n"
+"gewarnt worden...\n"
 "Wenn Sie nach der generellen Konfigurationsdatei suchen - da sind sie\n"
 "hier am falschen Ort.  Die generelle Konfigurationsdatei wird üblicherweise\n"
-"lynx.cfg genannt, und ihr Inhalt und Format ist verschieden.\n"
+"lynx.cfg genannt, und ihr Inhalt und Format ist verschieden. Das hier ist\n"
+"sie jedenfalls nicht.\n"
 
 #~ msgid "Socket read failed for 180,000 tries."
 #~ msgstr "Lesefehler nach 180.000 Versuchen."
@@ -6240,66 +6247,3 @@ msgstr ""
 
 #~ msgid "Left mouse button or return to select, arrow keys to scroll."
 #~ msgstr "RETURN oder linke Maustaste wählt aus, Pfeiltasten zum Auf- und Abbewegen."
-
-# This claim makes even less sense in languages other than English. - kw
-#~ msgid "WARNING: Misrepresentation of the User-Agent may be a copyright violation!"
-#~ msgstr "WARNUNG: Sollte \"Lynx\" enthalten, um absichtliche Täuschung zu vermeiden!"
-
-#~ msgid "Looking up %s."
-#~ msgstr "Suche nach %s."
-
-#~ msgid "Got redirection with a bad Location header."
-#~ msgstr "Umleitung mit ungültigem Location-Header empfangen."
-
-#~ msgid "Got redirection with no Location header."
-#~ msgstr "Umleitung ohne Location-Header empfangen."
-
-#~ msgid "Searching type"
-#~ msgstr "Suchmodus"
-
-#~ msgid "Document Layout"
-#~ msgstr "Dokumentlayout"
-
-#~ msgid "Bookmark Options"
-#~ msgstr "Lesezeichen/Bookmarks"
-
-#~ msgid "Are you sure you want to quit? [N] "
-#~ msgstr "Programm wirklich beenden? [N] "
-
-#~ msgid "Really exit from Lynx? [N] "
-#~ msgstr "Willst du wirklich raus? [N] "
-
-#~ msgid ""
-#~ "     You can delete links using the remove bookmark command.  It is usually\n"
-#~ "     the 'R' key but may have been remapped by you or your system\n"
-#~ "     administrator.<br>\n"
-#~ "     This file also may be edited with a standard text editor to delete\n"
-#~ "     outdated or invalid links, or to change their order.\n"
-#~ "\n"
-#~ "<!--\n"
-#~ "Note: if you edit this file manually\n"
-#~ "      you should not change the format within the lines\n"
-#~ "      or add other HTML markup.\n"
-#~ "      Make sure any bookmark link saved as a single line\n"
-#~ "-->\n"
-#~ "\n"
-#~ "     <p>\n"
-#~ "<ol>\n"
-#~ msgstr ""
-#~ "     Links können mit dem Tastenbefehl für \"remove bookmark\" entfernt\n"
-#~ "     werden.  Das ist normalerweise der Buchstabe 'R', außer wenn die\n"
-#~ "     Tastenbelegung geändert worden ist.<br>\n"
-#~ "     Diese Datei kann auch mit einem normalen Texteditor geändert\n"
-#~ "     werden um alte oder ungültige Links zu entfernen oder um die\n"
-#~ "     Reihenfolge zu ändern.\n"
-#~ "\n"
-#~ "<!--\n"
-#~ "Achtung: Beim manuellen Editieren dieser Datei sollte\n"
-#~ "         das Format innerhalb der Zeilen nicht verändert\n"
-#~ "         werden. Zusätzliches HTML-Markup sollte nicht\n"
-#~ "         verwendet werden. Jeder einzelne Link muss vollständig\n"
-#~ "         in einer einzigen Zeile enthalten sein.\n"
-#~ "-->\n"
-#~ "\n"
-#~ "     <p>\n"
-#~ "<ol>\n"
diff --git a/po/lynx.pot b/po/lynx.pot
index bed38594..9a7e4d78 100644
--- a/po/lynx.pot
+++ b/po/lynx.pot
@@ -1,9 +1,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: lynx 2.8.7pre.5\n"
+"Project-Id-Version: lynx 2.8.8dev.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-07 14:38-0400\n"
+"POT-Creation-Date: 2009-11-20 04:45-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -2858,20 +2858,20 @@ msgstr ""
 msgid "socket for master socket"
 msgstr ""
 
-#: WWW/Library/Implementation/HTFTP.c:2976
+#: WWW/Library/Implementation/HTFTP.c:2978
 msgid "Receiving FTP directory."
 msgstr ""
 
-#: WWW/Library/Implementation/HTFTP.c:3112
+#: WWW/Library/Implementation/HTFTP.c:3114
 #, c-format
 msgid "Transferred %d bytes (%5d)"
 msgstr ""
 
-#: WWW/Library/Implementation/HTFTP.c:3467
+#: WWW/Library/Implementation/HTFTP.c:3469
 msgid "connect for data"
 msgstr ""
 
-#: WWW/Library/Implementation/HTFTP.c:4128
+#: WWW/Library/Implementation/HTFTP.c:4130
 msgid "Receiving FTP file."
 msgstr ""
 
@@ -3202,15 +3202,15 @@ msgstr ""
 msgid "Have POST content.  Treating Permanent Redirection as Temporary.\n"
 msgstr ""
 
-#: WWW/Library/Implementation/HTTP.c:2005
+#: WWW/Library/Implementation/HTTP.c:2006
 msgid "Retrying with access authorization information."
 msgstr ""
 
-#: WWW/Library/Implementation/HTTP.c:2017
+#: WWW/Library/Implementation/HTTP.c:2018
 msgid "Show the 401 message body?"
 msgstr ""
 
-#: WWW/Library/Implementation/HTTP.c:2060
+#: WWW/Library/Implementation/HTTP.c:2061
 msgid "Show the 407 message body?"
 msgstr ""
 
@@ -3218,7 +3218,7 @@ msgstr ""
 #. * Bad or unknown server_status number.  Take a chance and hope
 #. * there is something to display.  - FM
 #.
-#: WWW/Library/Implementation/HTTP.c:2160
+#: WWW/Library/Implementation/HTTP.c:2161
 msgid "Unknown status reply from server!"
 msgstr ""
 
@@ -3593,31 +3593,31 @@ msgstr ""
 msgid "Y/N/A/V"
 msgstr ""
 
-#: src/HTML.c:5950
+#: src/HTML.c:5894
 msgid "Description:"
 msgstr ""
 
-#: src/HTML.c:5955
+#: src/HTML.c:5899
 msgid "(none)"
 msgstr ""
 
-#: src/HTML.c:5959
+#: src/HTML.c:5903
 msgid "Filepath:"
 msgstr ""
 
-#: src/HTML.c:5965
+#: src/HTML.c:5909
 msgid "(unknown)"
 msgstr ""
 
-#: src/HTML.c:7442
+#: src/HTML.c:7348
 msgid "Document has only hidden links.  Use the 'l'ist command."
 msgstr ""
 
-#: src/HTML.c:7951
+#: src/HTML.c:7847
 msgid "Source cache error - disk full?"
 msgstr ""
 
-#: src/HTML.c:7964
+#: src/HTML.c:7860
 msgid "Source cache error - not enough memory!"
 msgstr ""
 
@@ -3957,225 +3957,221 @@ msgstr ""
 msgid "The specified name is already in use!  Request ignored."
 msgstr ""
 
-#: src/LYLocal.c:592
+#: src/LYLocal.c:593
 msgid "Destination has different owner!  Request denied."
 msgstr ""
 
-#: src/LYLocal.c:595
+#: src/LYLocal.c:596
 msgid "Destination is not a valid directory!  Request denied."
 msgstr ""
 
-#: src/LYLocal.c:617
+#: src/LYLocal.c:612
+msgid "Source and destination are the same location!  Request ignored!"
+msgstr ""
+
+#: src/LYLocal.c:636
 msgid "Remove all tagged files and directories?"
 msgstr ""
 
-#: src/LYLocal.c:675
+#: src/LYLocal.c:709
 msgid "Enter new location for tagged items: "
 msgstr ""
 
-#: src/LYLocal.c:745
+#: src/LYLocal.c:723
 msgid "Path too long"
 msgstr ""
 
-#: src/LYLocal.c:776
-msgid "Source and destination are the same location - request ignored!"
-msgstr ""
-
-#: src/LYLocal.c:833
+#: src/LYLocal.c:808
 msgid "Enter new name for directory: "
 msgstr ""
 
-#: src/LYLocal.c:835
+#: src/LYLocal.c:810
 msgid "Enter new name for file: "
 msgstr ""
 
-#: src/LYLocal.c:847
+#: src/LYLocal.c:822
 msgid "Illegal character (path-separator) found! Request ignored."
 msgstr ""
 
-#: src/LYLocal.c:897
+#: src/LYLocal.c:870
 msgid "Enter new location for directory: "
 msgstr ""
 
-#: src/LYLocal.c:903
+#: src/LYLocal.c:876
 msgid "Enter new location for file: "
 msgstr ""
 
-#: src/LYLocal.c:930
+#: src/LYLocal.c:903
 msgid "Unexpected failure - unable to find trailing path separator"
 msgstr ""
 
-#: src/LYLocal.c:950
-msgid "Source and destination are the same location!  Request ignored!"
-msgstr ""
-
-#: src/LYLocal.c:997
+#: src/LYLocal.c:961
 msgid "Modify name, location, or permission (n, l, or p): "
 msgstr ""
 
-#: src/LYLocal.c:999
+#: src/LYLocal.c:963
 msgid "Modify name or location (n or l): "
 msgstr ""
 
 #.
 #. * Code for changing ownership needed here.
 #.
-#: src/LYLocal.c:1028
+#: src/LYLocal.c:992
 msgid "This feature not yet implemented!"
 msgstr ""
 
-#: src/LYLocal.c:1048
+#: src/LYLocal.c:1012
 msgid "Enter name of file to create: "
 msgstr ""
 
-#: src/LYLocal.c:1052 src/LYLocal.c:1088
+#: src/LYLocal.c:1016 src/LYLocal.c:1052
 msgid "Illegal redirection \"//\" found! Request ignored."
 msgstr ""
 
-#: src/LYLocal.c:1084
+#: src/LYLocal.c:1048
 msgid "Enter name for new directory: "
 msgstr ""
 
-#: src/LYLocal.c:1124
+#: src/LYLocal.c:1088
 msgid "Create file or directory (f or d): "
 msgstr ""
 
-#: src/LYLocal.c:1166
+#: src/LYLocal.c:1130
 #, c-format
 msgid "Remove directory '%s'?"
 msgstr ""
 
-#: src/LYLocal.c:1169
+#: src/LYLocal.c:1133
 msgid "Remove directory?"
 msgstr ""
 
-#: src/LYLocal.c:1174
+#: src/LYLocal.c:1138
 #, c-format
 msgid "Remove file '%s'?"
 msgstr ""
 
-#: src/LYLocal.c:1176
+#: src/LYLocal.c:1140
 msgid "Remove file?"
 msgstr ""
 
-#: src/LYLocal.c:1181
+#: src/LYLocal.c:1145
 #, c-format
 msgid "Remove symbolic link '%s'?"
 msgstr ""
 
-#: src/LYLocal.c:1183
+#: src/LYLocal.c:1147
 msgid "Remove symbolic link?"
 msgstr ""
 
-#: src/LYLocal.c:1278
+#: src/LYLocal.c:1243
 msgid "Sorry, don't know how to permit non-UNIX files yet."
 msgstr ""
 
-#: src/LYLocal.c:1308
+#: src/LYLocal.c:1273
 msgid "Unable to open permit options file"
 msgstr ""
 
-#: src/LYLocal.c:1338
+#: src/LYLocal.c:1303
 msgid "Specify permissions below:"
 msgstr ""
 
-#: src/LYLocal.c:1339 src/LYShowInfo.c:265
+#: src/LYLocal.c:1304 src/LYShowInfo.c:265
 msgid "Owner:"
 msgstr ""
 
-#: src/LYLocal.c:1355
+#: src/LYLocal.c:1320
 msgid "Group"
 msgstr ""
 
-#: src/LYLocal.c:1371
+#: src/LYLocal.c:1336
 msgid "Others:"
 msgstr ""
 
-#: src/LYLocal.c:1389
+#: src/LYLocal.c:1354
 msgid "form to permit"
 msgstr ""
 
-#: src/LYLocal.c:1484
+#: src/LYLocal.c:1449
 msgid "Invalid mode format."
 msgstr ""
 
-#: src/LYLocal.c:1488
+#: src/LYLocal.c:1453
 msgid "Invalid syntax format."
 msgstr ""
 
-#: src/LYLocal.c:1670
+#: src/LYLocal.c:1635
 msgid "Warning!  UUDecoded file will exist in the directory you started Lynx."
 msgstr ""
 
-#: src/LYLocal.c:1860
+#: src/LYLocal.c:1825
 msgid "NULL URL pointer"
 msgstr ""
 
-#: src/LYLocal.c:1942
+#: src/LYLocal.c:1907
 #, c-format
 msgid "Executing %s "
 msgstr ""
 
-#: src/LYLocal.c:1945
+#: src/LYLocal.c:1910
 msgid "Executing system command. This might take a while."
 msgstr ""
 
-#: src/LYLocal.c:2017
+#: src/LYLocal.c:1982
 msgid "Current directory:"
 msgstr ""
 
-#: src/LYLocal.c:2020 src/LYLocal.c:2038
+#: src/LYLocal.c:1985 src/LYLocal.c:2003
 msgid "Current selection:"
 msgstr ""
 
-#: src/LYLocal.c:2024
+#: src/LYLocal.c:1989
 msgid "Nothing currently selected."
 msgstr ""
 
-#: src/LYLocal.c:2040
+#: src/LYLocal.c:2005
 msgid "tagged item:"
 msgstr ""
 
-#: src/LYLocal.c:2041
+#: src/LYLocal.c:2006
 msgid "tagged items:"
 msgstr ""
 
-#: src/LYLocal.c:2138 src/LYLocal.c:2149
+#: src/LYLocal.c:2103 src/LYLocal.c:2114
 msgid "Illegal filename; request ignored."
 msgstr ""
 
 #. directory not writable
-#: src/LYLocal.c:2247 src/LYLocal.c:2306
+#: src/LYLocal.c:2212 src/LYLocal.c:2271
 msgid "Install in the selected directory not permitted."
 msgstr ""
 
-#: src/LYLocal.c:2302
+#: src/LYLocal.c:2267
 msgid "The selected item is not a directory!  Request ignored."
 msgstr ""
 
-#: src/LYLocal.c:2311
+#: src/LYLocal.c:2276
 msgid "Just a moment, ..."
 msgstr ""
 
-#: src/LYLocal.c:2328
+#: src/LYLocal.c:2293
 msgid "Error building install args"
 msgstr ""
 
-#: src/LYLocal.c:2343 src/LYLocal.c:2374
+#: src/LYLocal.c:2308 src/LYLocal.c:2339
 #, c-format
 msgid "Source and target are the same: %s"
 msgstr ""
 
-#: src/LYLocal.c:2350 src/LYLocal.c:2381
+#: src/LYLocal.c:2315 src/LYLocal.c:2346
 #, c-format
 msgid "Already in target directory: %s"
 msgstr ""
 
-#: src/LYLocal.c:2399
+#: src/LYLocal.c:2364
 msgid "Installation complete"
 msgstr ""
 
-#: src/LYLocal.c:2586
+#: src/LYLocal.c:2551
 msgid "Temporary URL or list would be too long."
 msgstr ""
 
@@ -4214,19 +4210,19 @@ msgstr ""
 msgid "No system mailer configured"
 msgstr ""
 
-#: src/LYMain.c:1004
+#: src/LYMain.c:1005
 msgid "No Winsock found, sorry."
 msgstr ""
 
-#: src/LYMain.c:1201
+#: src/LYMain.c:1202
 msgid "You MUST define a valid TMP or TEMP area!"
 msgstr ""
 
-#: src/LYMain.c:1254 src/LYMainLoop.c:5051
+#: src/LYMain.c:1255 src/LYMainLoop.c:5051
 msgid "No such directory"
 msgstr ""
 
-#: src/LYMain.c:1439
+#: src/LYMain.c:1440
 #, c-format
 msgid ""
 "\n"
@@ -4234,7 +4230,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/LYMain.c:1449
+#: src/LYMain.c:1450
 #, c-format
 msgid ""
 "\n"
@@ -4242,7 +4238,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/LYMain.c:1478
+#: src/LYMain.c:1479
 #, c-format
 msgid ""
 "\n"
@@ -4250,7 +4246,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/LYMain.c:1554
+#: src/LYMain.c:1555
 #, c-format
 msgid ""
 "\n"
@@ -4258,66 +4254,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/LYMain.c:1629
+#: src/LYMain.c:1630
 #, c-format
 msgid "Ignored %d characters from standard input.\n"
 msgstr ""
 
-#: src/LYMain.c:1631
+#: src/LYMain.c:1632
 #, c-format
 msgid "Use \"-stdin\" or \"-\" to tell how to handle piped input.\n"
 msgstr ""
 
-#: src/LYMain.c:1779
+#: src/LYMain.c:1780
 msgid "Warning:"
 msgstr ""
 
-#: src/LYMain.c:2344
+#: src/LYMain.c:2345
 msgid "persistent cookies state will be changed in next session only."
 msgstr ""
 
-#: src/LYMain.c:2580 src/LYMain.c:2625
+#: src/LYMain.c:2581 src/LYMain.c:2626
 #, c-format
 msgid "Lynx: ignoring unrecognized charset=%s\n"
 msgstr ""
 
-#: src/LYMain.c:3144
+#: src/LYMain.c:3145
 #, c-format
 msgid "%s Version %s (%s)"
 msgstr ""
 
-#: src/LYMain.c:3182
+#: src/LYMain.c:3183
 #, c-format
 msgid "Built on %s %s %s\n"
 msgstr ""
 
-#: src/LYMain.c:3204
+#: src/LYMain.c:3205
 msgid "Copyrights held by the Lynx Developers Group,"
 msgstr ""
 
-#: src/LYMain.c:3205
+#: src/LYMain.c:3206
 msgid "the University of Kansas, CERN, and other contributors."
 msgstr ""
 
-#: src/LYMain.c:3206
+#: src/LYMain.c:3207
 msgid "Distributed under the GNU General Public License (Version 2)."
 msgstr ""
 
-#: src/LYMain.c:3207
+#: src/LYMain.c:3208
 msgid "See http://lynx.isc.org/ and the online help for more information."
 msgstr ""
 
-#: src/LYMain.c:4026
+#: src/LYMain.c:4027
 #, c-format
 msgid "USAGE: %s [options] [file]\n"
 msgstr ""
 
-#: src/LYMain.c:4027
+#: src/LYMain.c:4028
 #, c-format
 msgid "Options are:\n"
 msgstr ""
 
-#: src/LYMain.c:4328
+#: src/LYMain.c:4329
 #, c-format
 msgid "%s: Invalid Option: %s\n"
 msgstr ""
@@ -5449,25 +5445,25 @@ msgstr ""
 msgid "Unexpected access protocol for this URL scheme."
 msgstr ""
 
-#: src/LYUtils.c:3474
+#: src/LYUtils.c:3473
 msgid "Too many tempfiles"
 msgstr ""
 
-#: src/LYUtils.c:3774
+#: src/LYUtils.c:3773
 msgid "unknown restriction"
 msgstr ""
 
-#: src/LYUtils.c:3805
+#: src/LYUtils.c:3804
 #, c-format
 msgid "No restrictions set.\n"
 msgstr ""
 
-#: src/LYUtils.c:3808
+#: src/LYUtils.c:3807
 #, c-format
 msgid "Restrictions set:\n"
 msgstr ""
 
-#: src/LYUtils.c:5186
+#: src/LYUtils.c:5185
 msgid "Cannot find HOME directory"
 msgstr ""
 
diff --git a/samples/lynx-demo.cfg b/samples/lynx-demo.cfg
index 6b695559..d07db763 100644
--- a/samples/lynx-demo.cfg
+++ b/samples/lynx-demo.cfg
@@ -24,3 +24,12 @@ COLOR:7:white:brightgreen
 PRETTYSRC:TRUE

 HTMLSRC_TAGNAME_XFORM:0

 HTMLSRC_ATTRNAME_XFORM:0

+

+# set these to empty strings to eliminate dependency on external programs

+CHMOD_PATH:

+COPY_PATH:

+MKDIR_PATH:

+MV_PATH:

+RMDIR_PATH:

+RM_PATH:

+TOUCH_PATH:

diff --git a/scripts/cfg2html.pl b/scripts/cfg2html.pl
index 3b2256a0..9738be1a 100755
--- a/scripts/cfg2html.pl
+++ b/scripts/cfg2html.pl
@@ -1,4 +1,5 @@
 #!/usr/bin/perl -w
+# $LynxId: cfg2html.pl,v 1.13 2009/11/24 09:41:47 tom Exp $
 #
 # This script uses embedded formatting directives in the lynx.cfg file to
 # guide it in extracting comments and related information to construct a
@@ -110,11 +111,12 @@ sub gen_alphatoc {
 		return;
 	};
 	print FP <<'EOF';
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rev="made" href="mailto:lynx-dev@nongnu.org">
 <title>Settings by name</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </head>
 <body>
 <h1>Alphabetical table of settings</h1>
@@ -180,11 +182,12 @@ sub gen_body {
 		return;
 	};
 	print FP <<'EOF';
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rev="made" href="mailto:lynx-dev@nongnu.org">
 <title>Description of settings in lynx configuration file</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </head>
 <body>
 EOF
@@ -265,7 +268,7 @@ EOF
 					printf FP "<hr>\n";
 					printf FP "<h2><kbd><a name=\"%s\">%s</a></kbd>\n", $h2[$j], $h2[$j];
 					if ( $h1 ne "" ) {
-						printf FP " - <a href=\"cattoc.html#%s\">%s</a>", $cats{$h1}, $h1;
+						printf FP " &ndash; <a href=\"cattoc.html#%s\">%s</a>", $cats{$h1}, $h1;
 					}
 					printf FP "</h2>\n";
 					printf FP "<h3><em>Description</em></h3>\n";
@@ -290,7 +293,7 @@ EOF
 				}
 				printf FP "<h2><kbd><a name=\"%s\">%s</a></kbd>\n", $h2[0], $h2[0];
 				if ( $h1 ne "" ) {
-					printf FP " - <a href=\"cattoc.html#%s\">%s</a>", $cats{$h1}, $h1;
+					printf FP " &ndash; <a href=\"cattoc.html#%s\">%s</a>", $cats{$h1}, $h1;
 				}
 				printf FP "</h2>\n";
 				printf FP "<h3><em>Description</em></h3>\n";
@@ -314,20 +317,6 @@ EOF
 			#hvv - something wrong was with next statement
 			$c =~ s/'([^ ])'/"<strong>$1<\/strong>"/g;
 
-			# Do a line-break each time the margin changes.  We 
-			# could get fancier, but HTML doesn't really support
-			# text-formatting, and we'll use what it does have to
-			# do wrapping.
-			if ( ! $nf ) {
-				$t = $c;
-				$t =~ s/(\s*).*/$1/;
-				$t = length $t;
-				if ( $t != $left ) {
-					$left = $t;
-					printf FP "<br>\n";
-				}
-			}
-
 			my $k = 0;
 			if ( $c =~ /^[a-zA-Z_]+:/ ) {
 				$t = $c;
@@ -424,7 +413,7 @@ sub gen_cattoc {
 	my @major;
 	my %descs;
 	my %index;
-	my ($n, $m, $c, $d, $found, $h1);
+	my ($n, $m, $c, $d, $found, $h1, $nf, $ex, $count, $once);
 	my $output = "cattoc.html";
 
 	open(FP,">$output") || do {
@@ -432,11 +421,12 @@ sub gen_cattoc {
 		return;
 	};
 	print FP <<'EOF';
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rev="made" href="mailto:lynx-dev@nongnu.org">
 <title>Settings by category</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </head>
 <body>
 <h1>Settings by category</h1>
@@ -445,10 +435,13 @@ These are the major categories of configuration settings in Lynx:
 EOF
 	$m = -1;
 	$h1 = 0;
+	$nf = 0;
 	for $n (0..$#input) {
+		my $count = $#input;
+		my $once = 1;
+		$c = $input[$n];
 		if ( $input[$n] =~ /^\.h1\s/ ) {
 			$h1 = 1;
-			$c = $input[$n];
 			$c =~ s/^.h1\s*//;
 			$m = $#major + 1;
 			$d = 0;
@@ -465,9 +458,33 @@ EOF
 				$descs{$major[$m]} = "";
 				$index{$major[$m]} = "";
 			}
+			next;
 		} elsif ( $h1 != 0 ) {
+			if ( $c =~ /^\.(nf|ex)/ ) {
+				my $s = $c;
+				$s =~ s/^\.[a-z]+\s//;
+				if ( $s =~ /^[0-9]+$/ ) {
+					$count = $s;
+					$once = $s;
+				}
+			}
 			if ( $input[$n] =~ /^$/ ) {
 				$h1 = 0;
+			} elsif ( $input[$n] =~ /^\.nf/ ) {
+				$descs{$major[$m]} .= "<pre>" . "\n";
+				$nf = $count;
+			} elsif ( $input[$n] =~ /^\.fi/ ) {
+				$descs{$major[$m]} .= "</pre>" . "\n";
+				$nf = 0;
+			} elsif ( $input[$n] =~ /^\.ex/ ) {
+				$ex = $once;
+				$descs{$major[$m]} .= 
+					"<h3><em>Example"
+					.
+					($ex > 1 ? "s" : "")
+					.
+					":</em></h3>\n"
+					. "\n";
 			} elsif ( $input[$n] =~ /^\s*#/ ) {
 				$c = $input[$n];
 				$c =~ s/^\s*#\s*//;
@@ -479,6 +496,10 @@ EOF
 			$c =~ s/^.h2\s*//;
 			$index{$major[$m]} .= $c . "\n"
 			    if (defined $opt_a || ok($c));
+			$h1 = 0;
+		}
+		if ( $nf != 0 && $nf-- == 0 ) {
+			$descs{$major[$m]} .= "</pre>\n";
 		}
 	}
 	@major = sort @major;
diff --git a/src/GridText.c b/src/GridText.c
index 19d634f7..d57d4364 100644
--- a/src/GridText.c
+++ b/src/GridText.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: GridText.c,v 1.171 2009/05/30 12:54:35 tom Exp $
+ * $LynxId: GridText.c,v 1.174 2009/11/21 17:05:33 Bela.Lubkin Exp $
  *
  *		Character grid hypertext object
  *		===============================
@@ -514,7 +514,7 @@ void *HText_pool_calloc(HText *text, unsigned size)
 
 static void HText_AddHiddenLink(HText *text, TextAnchor *textanchor);
 
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 BOOL can_justify_here;
 BOOL can_justify_here_saved;
 
@@ -578,7 +578,7 @@ void mark_justify_start_position(void *text)
 	!IS_CJK_TTY && !in_DT && \
 	can_justify_here && can_justify_this_line && !form_in_htext )
 
-#endif /* EXP_JUSTIFY_ELTS */
+#endif /* USE_JUSTIFY_ELTS */
 
 /*
  * Boring static variable used for moving cursor across
@@ -1211,7 +1211,7 @@ HText *HText_new(HTParentAnchor *anchor)
     ResetPartialLinenos(self);
 #endif
 
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     ht_justify_cleanup();
 #endif
     return self;
@@ -1779,7 +1779,7 @@ static void display_title(HText *text)
 	if (i <= 0) {		/* no room at all */
 	    title[0] = '\0';
 	} else {
-	    strcpy(title + LYstrExtent2(title, i), "...");
+	    strcpy(title + LYstrFittable(title, i), "...");
 	}
 	i = 0;
     }
@@ -2939,7 +2939,7 @@ static void split_line(HText *text, unsigned split)
 	 */
 	p = prevdata + split;
 	while (((*p == ' '
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	/* if justification is allowed for prev line, then raw
 	 * HT_NON_BREAK_SPACE are still present in data[] (they'll be
 	 * substituted at the end of this function with ' ') - VH
@@ -2987,7 +2987,7 @@ static void split_line(HText *text, unsigned split)
     p = previous->data + previous->size - 1;
     while (p >= previous->data
 	   && (*p == ' '
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     /* if justification is allowed for prev line, then raw
      * HT_NON_BREAK_SPACE are still present in data[] (they'll be
      * substituted at the end of this function with ' ') - VH
@@ -3168,7 +3168,7 @@ static void split_line(HText *text, unsigned split)
      */
     spare = 0;
     if (
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	   this_line_was_split ||
 #endif
 	   (alignment == HT_CENTER ||
@@ -3371,7 +3371,7 @@ static void split_line(HText *text, unsigned split)
 		break;
 	}
     }
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     /* now perform justification - by VH */
 
     if (this_line_was_split
@@ -3504,7 +3504,7 @@ static void split_line(HText *text, unsigned split)
     justify_start_position = 0;
     this_line_was_split = FALSE;
     have_raw_nbsps = FALSE;
-#endif /* EXP_JUSTIFY_ELTS */
+#endif /* USE_JUSTIFY_ELTS */
     return;
 }				/* split_line */
 
@@ -4321,7 +4321,7 @@ void HText_appendCharacter(HText *text, int ch)
 		) > (LYcols_cu(text) - 1)))) {
 
 	if (style->wordWrap && HTOutputFormat != WWW_SOURCE) {
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	    if (REALLY_CAN_JUSTIFY(text))
 		this_line_was_split = TRUE;
 #endif
@@ -4366,12 +4366,12 @@ void HText_appendCharacter(HText *text, int ch)
      * Insert normal characters.
      */
     if (ch == HT_NON_BREAK_SPACE
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	&& !REALLY_CAN_JUSTIFY(text)
 #endif
 	)
 	ch = ' ';
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     else
 	have_raw_nbsps = TRUE;
 #endif
@@ -11762,13 +11762,13 @@ void HText_setKcode(HText *text, const char *charset,
     /*
      * If no explicit charset string, use the implied one.  - kw
      */
-    if (!charset || *charset == '\0') {
+    if (isEmpty(charset)) {
 	charset = p_in->MIMEname;
     }
     /*
      * Check whether we have a specified charset.  -FM
      */
-    if (!charset || *charset == '\0') {
+    if (isEmpty(charset)) {
 	return;
     }
 
diff --git a/src/HTAlert.c b/src/HTAlert.c
index aba28b9e..ce237e54 100644
--- a/src/HTAlert.c
+++ b/src/HTAlert.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTAlert.c,v 1.85 2009/04/07 00:09:34 tom Exp $
+ * $LynxId: HTAlert.c,v 1.86 2009/11/21 16:32:23 tom Exp $
  *
  *	Displaying messages and getting input for Lynx Browser
  *	==========================================================
@@ -1152,13 +1152,13 @@ void LYSleepMsg(void)
 	LYSleep(MessageSecs);
 }
 
-#ifdef EXP_CMD_LOGGING
+#ifdef USE_CMD_LOGGING
 void LYSleepReplay(void)
 {
     if (okToSleep())
 	LYSleep(ReplaySecs);
 }
-#endif /* EXP_CMD_LOGGING */
+#endif /* USE_CMD_LOGGING */
 
 /*
  * LYstrerror emulates the ANSI strerror() function.
diff --git a/src/HTML.c b/src/HTML.c
index 03d45e80..bb7e2025 100644
--- a/src/HTML.c
+++ b/src/HTML.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTML.c,v 1.130 2009/08/27 21:17:55 tom Exp $
+ * $LynxId: HTML.c,v 1.132 2009/11/21 17:05:33 Bela.Lubkin Exp $
  *
  *		Structured stream to Rich hypertext converter
  *		============================================
@@ -4219,7 +4219,7 @@ static int HTML_start_element(HTStructured * me, int element_number,
 	     * Set to know we are in a new form.
 	     */
 	    me->inFORM = TRUE;
-	    EMIT_IFDEF_EXP_JUSTIFY_ELTS(form_in_htext = TRUE);
+	    EMIT_IFDEF_USE_JUSTIFY_ELTS(form_in_htext = TRUE);
 
 	    if (present && present[HTML_FORM_ACCEPT_CHARSET]) {
 		accept_cs = (value[HTML_FORM_ACCEPT_CHARSET]
@@ -4405,7 +4405,7 @@ static int HTML_start_element(HTStructured * me, int element_number,
 		 */
 		LYReduceBlanks(I.value);
 	    } else if (!strcasecomp(I.type, "button")) {
-		if (!isEmpty(I.name)) {
+		if (non_empty(I.name)) {
 		    StrAllocCopy(I.value, I.name);
 		} else {
 		    StrAllocCopy(I.value, "BUTTON");
@@ -5565,13 +5565,13 @@ static int HTML_start_element(HTStructured * me, int element_number,
 	(me->sp)--;
 	me->sp[0].style = me->new_style;	/* Stack new style */
 	me->sp[0].tag_number = ElementNumber;
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	if (wait_for_this_stacked_elt < 0 &&
 	    HTML_dtd.tags[ElementNumber].can_justify == FALSE)
 	    wait_for_this_stacked_elt = me->stack - me->sp + MAX_NESTING;
 #endif
     }
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     if (in_DT && ElementNumber == HTML_DD)
 	in_DT = FALSE;
     else if (ElementNumber == HTML_DT)
@@ -5620,7 +5620,7 @@ static int HTML_end_element(HTStructured * me, int element_number,
     BOOL BreakFlag = FALSE;
     BOOL intern_flag = FALSE;
     BOOL skip_stack_requested = FALSE;
-    EMIT_IFDEF_EXP_JUSTIFY_ELTS(BOOL reached_awaited_stacked_elt = FALSE);
+    EMIT_IFDEF_USE_JUSTIFY_ELTS(BOOL reached_awaited_stacked_elt = FALSE);
 
 #ifdef USE_PRETTYSRC
     if (psrc_view && !sgml_in_psrc_was_initialized) {
@@ -5770,7 +5770,7 @@ static int HTML_end_element(HTStructured * me, int element_number,
 	     */
 	    return HT_OK;
 	} else if (me->sp < (me->stack + MAX_NESTING - 1)) {
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	    if (wait_for_this_stacked_elt == me->stack - me->sp + MAX_NESTING)
 		reached_awaited_stacked_elt = TRUE;
 #endif
@@ -5806,7 +5806,7 @@ static int HTML_end_element(HTStructured * me, int element_number,
 	}
     }
     if (BreakFlag == TRUE) {
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	if (reached_awaited_stacked_elt)
 	    wait_for_this_stacked_elt = -1;
 #endif
@@ -6189,7 +6189,7 @@ static int HTML_end_element(HTStructured * me, int element_number,
 	me->List_Nesting_Level--;
 	CTRACE((tfp, "HTML_end_element: Reducing List Nesting Level to %d\n",
 		me->List_Nesting_Level));
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 	if (element_number == HTML_DL)
 	    in_DT = FALSE;	/*close the term that was without definition. */
 #endif
@@ -6706,7 +6706,7 @@ static int HTML_end_element(HTStructured * me, int element_number,
 		LYShowBadHTML("Bad HTML: Unmatched FORM end tag\n");
 	    }
 	}
-	EMIT_IFDEF_EXP_JUSTIFY_ELTS(form_in_htext = FALSE);
+	EMIT_IFDEF_USE_JUSTIFY_ELTS(form_in_htext = FALSE);
 
 	/*
 	 * Check if we still have a SELECT element open.  FORM may have been
@@ -7182,7 +7182,7 @@ static int HTML_end_element(HTStructured * me, int element_number,
 
     }				/* switch */
 
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     if (reached_awaited_stacked_elt)
 	wait_for_this_stacked_elt = -1;
 #endif
diff --git a/src/LYCharSets.c b/src/LYCharSets.c
index 10208de6..900478e0 100644
--- a/src/LYCharSets.c
+++ b/src/LYCharSets.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYCharSets.c,v 1.63 2009/05/25 17:57:41 tom Exp $
+ * $LynxId: LYCharSets.c,v 1.64 2009/11/21 15:52:05 tom Exp $
  */
 #include <HTUtils.h>
 #include <HTCJK.h>
@@ -28,7 +28,7 @@ const char **p_entity_values = NULL;	/* Pointer, for HTML_put_entity() */
 
 			      /* obsolete and probably not used(???)        */
 			      /* will be initialized in HTMLUseCharacterSet */
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
 charset_subset_t charset_subsets[MAXCHARSETS];
 BOOL custom_display_charset = FALSE;
 BOOL custom_assumed_doc_charset = FALSE;
@@ -41,7 +41,7 @@ const char *display_charset_choices[MAXCHARSETS + 1];
 const char *assumed_charset_choices[MAXCHARSETS + 1];
 int displayed_display_charset_idx;
 #endif
-#endif /* EXP_CHARSET_CHOICE */
+#endif /* USE_CHARSET_CHOICE */
 
 /*
  * New character sets now declared with UCInit() in UCdomap.c
@@ -1122,7 +1122,7 @@ int LYCharSetsDeclared(void)
     return UCInitialized;
 }
 
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
 void init_charset_subsets(void)
 {
     int i, n;
@@ -1154,4 +1154,4 @@ void init_charset_subsets(void)
     }
 #endif
 }
-#endif /* EXP_CHARSET_CHOICE */
+#endif /* USE_CHARSET_CHOICE */
diff --git a/src/LYCharSets.h b/src/LYCharSets.h
index 6ca20fc6..0b698be1 100644
--- a/src/LYCharSets.h
+++ b/src/LYCharSets.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYCharSets.h,v 1.31 2009/05/25 13:48:24 tom Exp $
+ * $LynxId: LYCharSets.h,v 1.32 2009/11/21 15:52:05 tom Exp $
  */
 #ifndef LYCHARSETS_H
 #define LYCHARSETS_H
@@ -70,11 +70,11 @@ extern "C" {
     extern BOOL force_old_UCLYhndl_on_reload;
     extern int forced_UCLYhdnl;
 
-#ifndef  EXP_CHARSET_CHOICE
+#ifndef  USE_CHARSET_CHOICE
 # define ALL_CHARSETS_IN_O_MENU_SCREEN 1
 #endif
 
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
     typedef struct {
 	BOOL hide_display;	/* if FALSE, show in "display-charset" menu */
 	BOOL hide_assumed;	/* if FALSE, show in "assumed-charset" menu */
@@ -117,7 +117,7 @@ extern "C" {
 #endif
 /* this will be called after lynx.cfg and .lynxrc are read */
     extern void init_charset_subsets(void);
-#endif				/* EXP_CHARSET_CHOICE */
+#endif				/* USE_CHARSET_CHOICE */
 
 #if !defined(NO_AUTODETECT_DISPLAY_CHARSET)
 #  ifdef __EMX__
diff --git a/src/LYCharUtils.c b/src/LYCharUtils.c
index aacd902e..66040e2a 100644
--- a/src/LYCharUtils.c
+++ b/src/LYCharUtils.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYCharUtils.c,v 1.103 2009/08/27 22:07:54 tom Exp $
+ * $LynxId: LYCharUtils.c,v 1.104 2009/11/21 17:05:33 Bela.Lubkin Exp $
  *
  *  Functions associated with LYCharSets.c and the Lynx version of HTML.c - FM
  *  ==========================================================================
@@ -1136,7 +1136,7 @@ char **LYUCFullyTranslateString(char **str,
     /*
      * Make sure we have a non-empty string.  - FM
      */
-    if (!str || isEmpty(*str))
+    if (isEmpty(*str))
 	return str;
 
     /*
diff --git a/src/LYCookie.c b/src/LYCookie.c
index e3ce7976..ceb9630a 100644
--- a/src/LYCookie.c
+++ b/src/LYCookie.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYCookie.c,v 1.95 2009/01/01 22:28:57 tom Exp $
+ * $LynxId: LYCookie.c,v 1.96 2009/11/24 10:48:33 tom Exp $
  *
  *			       Lynx Cookie Support		   LYCookie.c
  *			       ===================
@@ -1764,8 +1764,10 @@ void LYSetCookie(const char *SetCookie,
 			 PARSE_PATH | PARSE_PUNCTUATION)) != NULL) &&
 	(ptr = strrchr(path, '/')) != NULL) {
 	if (ptr == path) {
-	    *(ptr + 1) = '\0';	/* Leave a single '/' alone */
-	} else {
+	    ++ptr;		/* Leave a single '/' alone */
+	}
+	if (*ptr != '\0') {
+	    CTrace((tfp, "discarding \"%s\" in cookie-path\n", ptr));
 	    *ptr = '\0';
 	}
     }
diff --git a/src/LYCurses.c b/src/LYCurses.c
index 258873ee..c902769d 100644
--- a/src/LYCurses.c
+++ b/src/LYCurses.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYCurses.c,v 1.141 2009/04/07 00:00:40 tom Exp $ */
+/* $LynxId: LYCurses.c,v 1.145 2009/11/21 17:05:33 Bela.Lubkin Exp $ */
 #include <HTUtils.h>
 #include <HTAlert.h>
 
@@ -1228,7 +1228,7 @@ void start_curses(void)
 
 #ifdef USE_COLOR_STYLE
 	/* Curses forgets color settings when we call delscreen() */
-	if (!isEmpty(lynx_lss_file) && LYCanReadFile(lynx_lss_file)) {
+	if (non_empty(lynx_lss_file) && LYCanReadFile(lynx_lss_file)) {
 	    style_readFromFile(lynx_lss_file);
 	}
 	parse_userstyles();
@@ -1485,7 +1485,7 @@ void stop_curses(void)
 
 #ifdef __DJGPP__
     ScreenClear();
-#else /* some flavor of win32?  */
+#elif !defined(PDCURSES)	/* some flavor of win32?  */
     clrscr();
 #endif /* win32 */
 
@@ -1973,28 +1973,25 @@ void LYwaddnstr(WINDOW * w GCC_UNUSED,
 
 /*
  * Determine the number of cells the given string would take up on the screen,
- * limited by the maxCells parameter.  This is used for constructing aligned
- * text in the options and similar forms.
+ * limited (in the case of wide characters) by the maxCells parameter.
  *
- * FIXME: make this account for wrapping, too.
- * FIXME: make this useful for "lynx -dump", which hasn't initialized curses.
+ * If the returnCellNum parameter is TRUE, return the number of cells;
+ * otherwise, return the length (limited by the len parameter) of the prefix of
+ * the string that fits in maxCells cells.
  */
-int LYstrExtent(const char *string, int len, int maxCells)
+static
+int LYstrExtent0(const char *string,
+		 int len,
+		 int maxCells GCC_UNUSED,
+		 BOOL retCellNum GCC_UNUSED)
 {
-    int result = 0;
-    int used;
-
-    if (len < 0)
-	used = (int) strlen(string);
-    else
-	used = len;
+    int used = (len < 0 ? (int) strlen(string) : len);
+    int result = used;
 
-    result = used;
 #ifdef WIDEC_CURSES
     if (used > 0 && lynx_called_initscr) {
 	static WINDOW *fake_win;
 	static int fake_max;
-	int n;
 
 	if (fake_max < maxCells) {
 	    fake_max = (maxCells + 1) * 2;
@@ -2009,8 +2006,9 @@ int LYstrExtent(const char *string, int len, int maxCells)
 	if (fake_win != 0) {
 	    int new_x = 0;
 	    int new_y = 0;
+	    int x = 0;
+	    int n;
 
-	    result = 0;
 	    wmove(fake_win, 0, 0);
 	    for (n = 0; n < used; ++n) {
 		if (IsNormalChar(string[n])) {
@@ -2018,18 +2016,32 @@ int LYstrExtent(const char *string, int len, int maxCells)
 		    getyx(fake_win, new_y, new_x);
 		    if (new_y > 0 || new_x > maxCells)
 			break;
-		    result = new_x;
+		    x = new_x;
 		}
 	    }
+	    result = (retCellNum ? x : n);
 	}
     }
 #endif
-    if (result > maxCells)
-	result = maxCells;
     return result;
 }
 
 /*
+ * Determine the number of cells the given string would take up on the screen,
+ * limited by the maxCells parameter.  This is used for constructing aligned
+ * text in the options and similar forms.
+ *
+ * FIXME: make this account for wrapping, too.
+ * FIXME: make this useful for "lynx -dump", which hasn't initialized curses.
+ */
+int LYstrExtent(const char *string, int len, int maxCells)
+{
+    int result = LYstrExtent0(string, len, maxCells, TRUE);
+
+    return (result > maxCells ? maxCells : result);
+}
+
+/*
  * Return the number of cells in the first 'len' bytes of the string.
  *
  * This relies upon the coincidence that multicell characters use at least as
@@ -2042,6 +2054,15 @@ int LYstrExtent2(const char *string, int len)
 }
 
 /*
+ * Determine the longest prefix of a string that fits in a given number of
+ * cells and return its length.
+ */
+int LYstrFittable(const char *string, int maxCells)
+{
+    return LYstrExtent0(string, -1, maxCells, FALSE);
+}
+
+/*
  * Returns the total number of cells that the string would use.
  */
 int LYstrCells(const char *string)
diff --git a/src/LYCurses.h b/src/LYCurses.h
index 0753e7aa..646bc52b 100644
--- a/src/LYCurses.h
+++ b/src/LYCurses.h
@@ -1,4 +1,4 @@
-/* $LynxId: LYCurses.h,v 1.80 2009/04/07 00:03:47 tom Exp $ */
+/* $LynxId: LYCurses.h,v 1.81 2009/11/21 14:40:20 Bake.Timmons Exp $ */
 #ifndef LYCURSES_H
 #define LYCURSES_H
 
@@ -457,6 +457,7 @@ extern "C" {
     extern int LYscreenWidth(void);
     extern int LYstrExtent(const char *string, int len, int maxCells);
     extern int LYstrExtent2(const char *string, int len);
+    extern int LYstrFittable(const char *string, int maxCells);
     extern int LYstrCells(const char *string);
     extern void LYclear(void);
     extern void LYclrtoeol(void);
diff --git a/src/LYEdit.c b/src/LYEdit.c
index 07c8eda6..4763652f 100644
--- a/src/LYEdit.c
+++ b/src/LYEdit.c
@@ -1,10 +1,11 @@
-/* $LynxId: LYEdit.c,v 1.38 2008/12/29 01:00:53 tom Exp $ */
+/* $LynxId: LYEdit.c,v 1.40 2009/11/22 17:25:19 tom Exp $ */
 #include <HTUtils.h>
 #include <HTParse.h>
 #include <HTAlert.h>
 #include <LYCurses.h>
 #include <LYUtils.h>
 #include <LYGlobalDefs.h>
+#include <LYStrings.h>
 #include <LYEdit.h>
 #ifdef VMS
 #include <unixio.h>
@@ -21,28 +22,29 @@ BOOLEAN editor_can_position(void)
     {
 #ifdef VMS
 	"sedt",
-	"SEDT"
 #else
-	"emacs",
+	"emacs",		/* + xemacs */
 	"jed",
 	"jmacs",
-	"joe",
+	"joe",			/* + rjoe */
 	"jove",
-	"jpico",
 	"jstar",
 	"nano",
-	"pico",
-	"rjoe",
-	"vi"
+	"pico",			/* + jpico */
+	"vi"			/* + vim, xvi, vile, elvis, view... + likely false matches */
 #endif
     };
     unsigned n;
 
     for (n = 0; n < TABLESIZE(table); n++) {
-	if (strstr(editor, table[n]) != 0) {
+	if (LYstrstr(editor, table[n]) != 0) {
 	    return TRUE;
 	}
     }
+    /*
+     * This really isn't right.  LYstrstr() might be too lax,
+     * but this should at least match basename to basename...
+     */
     if (positionable_editor != NULL) {
 	while ((value = (char *) HTList_nextObject(p)) != NULL) {
 	    if (strcmp(editor, value) == 0) {
@@ -152,13 +154,17 @@ int edit_current_file(char *newfile,
     /*
      * Set up the command for the editor.  - FM
      */
-    *position = 0;
+    if (lineno >= 0) {
+	*position = 0;
 #ifdef VMS
-    lineno--;
+	lineno--;
 #endif
-    lineno += (nlinks ? links[cur].ly : 0);
-    if (lineno > 0)
-	sprintf(position, "%d", lineno);
+	lineno += (nlinks ? links[cur].ly : 0);
+	if (lineno > 0)
+	    sprintf(position, "%d", lineno);
+    } else {
+	*position = '\0';
+    }
 
     edit_temporary_file(filename, position, NULL);
     result = TRUE;
@@ -187,7 +193,7 @@ void edit_temporary_file(char *filename,
     int params = 1;
     int rv;
 
-    if (strstr(editor, "pico")) {
+    if (LYstrstr(editor, "pico")) {
 	editor_arg = " -t";	/* No prompt for filename to use */
     }
     if (editor_can_position() && *position) {
diff --git a/src/LYForms.c b/src/LYForms.c
index d6ea2fe9..4a1c5757 100644
--- a/src/LYForms.c
+++ b/src/LYForms.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYForms.c,v 1.81 2009/05/28 23:10:06 tom Exp $ */
+/* $LynxId: LYForms.c,v 1.82 2009/11/21 17:05:33 Bela.Lubkin Exp $ */
 #include <HTUtils.h>
 #include <HTCJK.h>
 #include <HTTP.h>
@@ -266,7 +266,7 @@ int change_form_link_ex(int cur,
 		break;
 	    }
 #endif
-	    if (!form->submit_action || *form->submit_action == '\0') {
+	    if (isEmpty(form->submit_action)) {
 		HTUserMsg(NO_FORM_ACTION);
 		c = DO_NOTHING;
 		break;
@@ -1012,7 +1012,7 @@ void show_formlink_statusline(const FormInfo * form,
 	    char *submit_str = NULL;
 	    char *xkey_info = NULL;
 
-	    if (!no_editor && editor && editor) {
+	    if (!no_editor && non_empty(editor)) {
 		xkey_info = key_for_func_ext(LYK_EDIT_TEXTAREA, for_what);
 #ifdef TEXTAREA_AUTOEXTEDIT
 		if (!xkey_info)
diff --git a/src/LYGlobalDefs.h b/src/LYGlobalDefs.h
index d0c5ab1f..fa92e044 100644
--- a/src/LYGlobalDefs.h
+++ b/src/LYGlobalDefs.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYGlobalDefs.h,v 1.121 2009/06/30 08:35:47 tom Exp $
+ * $LynxId: LYGlobalDefs.h,v 1.122 2009/11/21 15:24:48 tom Exp $
  *
  * global variable definitions
  */
@@ -572,7 +572,7 @@ extern "C" {
     extern int LYNoZapKey;	/* 0: off (do 'z' checking), 1: full, 2: initially */
 #endif
 
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     extern BOOLEAN ok_justify;
     extern int justify_max_void_percent;
 #endif
diff --git a/src/LYJustify.h b/src/LYJustify.h
index 209d58a8..997cd050 100644
--- a/src/LYJustify.h
+++ b/src/LYJustify.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYJustify.h,v 1.7 2009/04/07 00:24:15 tom Exp $
+ * $LynxId: LYJustify.h,v 1.8 2009/11/21 15:24:48 tom Exp $
  *
  * Justification for lynx - implemented by Vlad Harchev <hvv@hippo.ru>
  * 11 July 1999
@@ -13,7 +13,7 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
     extern BOOL can_justify_here;
     extern BOOL can_justify_here_saved;
 
@@ -58,24 +58,24 @@ extern "C" {
  */
 #define CAN_JUSTIFY_START  mark_justify_start_position(me->text);
 #define CANT_JUSTIFY_THIS_LINE can_justify_this_line = FALSE
-#define EMIT_IFDEF_EXP_JUSTIFY_ELTS(x) x
+#define EMIT_IFDEF_USE_JUSTIFY_ELTS(x) x
     /*defined in order not to wrap single line of code  into #ifdef/#endif */
 
     extern void ht_justify_cleanup(void);
     extern void mark_justify_start_position(void *text);
 
-#else				/* ! EXP_JUSTIFY_ELTS */
+#else				/* ! USE_JUSTIFY_ELTS */
 /*
  * define empty macros so that they can be used without wrapping them in
- * #ifdef EXP_JUSTIFY_ELTS/#endif
+ * #ifdef USE_JUSTIFY_ELTS/#endif
  */
 #define CAN_JUSTIFY_PUSH(x)
 #define CAN_JUSTIFY_POP
 #define CAN_JUSTIFY_SET(x)
 #define CAN_JUSTIFY_START
 #define CANT_JUSTIFY_THIS_LINE
-#define EMIT_IFDEF_EXP_JUSTIFY_ELTS(x)
-#endif				/* EXP_JUSTIFY_ELTS */
+#define EMIT_IFDEF_USE_JUSTIFY_ELTS(x)
+#endif				/* USE_JUSTIFY_ELTS */
 #define CAN_JUSTIFY_PUSH_F CAN_JUSTIFY_PUSH(FALSE)
 #ifdef __cplusplus
 }
diff --git a/src/LYKeymap.c b/src/LYKeymap.c
index f5c1af27..c0c4205a 100644
--- a/src/LYKeymap.c
+++ b/src/LYKeymap.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYKeymap.c,v 1.68 2009/01/25 18:34:57 tom Exp $ */
+/* $LynxId: LYKeymap.c,v 1.69 2009/11/21 17:05:33 Bela.Lubkin Exp $ */
 #include <HTUtils.h>
 #include <LYUtils.h>
 #include <LYGlobalDefs.h>
@@ -1204,7 +1204,7 @@ int LYStringToKeycode(char *src)
 	char *dst = 0;
 
 	key = strtol(src, &dst, 0);
-	if (!isEmpty(dst))
+	if (non_empty(dst))
 	    key = -1;
     } else if (len > 6 && !strncasecomp(src, "key-", 4)) {
 	char *dst = 0;
diff --git a/src/LYLocal.c b/src/LYLocal.c
index af1430d6..a2aa3d5b 100644
--- a/src/LYLocal.c
+++ b/src/LYLocal.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYLocal.c,v 1.95 2009/08/26 10:47:37 tom Exp $
+ * $LynxId: LYLocal.c,v 1.104 2009/11/22 16:23:43 tom Exp $
  *
  *  Routines to manipulate the local filesystem.
  *  Written by: Rick Mallett, Carleton University
@@ -103,12 +103,30 @@ struct dired_menu {
 #define DE_FILE    3
 #define DE_SYMLINK 4
     char *sfx;
+    const char *c_sfx;
     char *link;
+    const char *c_link;
     char *rest;
+    const char *c_rest;
     char *href;
+    const char *c_href;
     struct dired_menu *next;
 };
 
+#define GetDiredSuffix(p) ((p)->sfx  ? (p)->sfx  : (p)->c_sfx)
+#define GetDiredLink(p)   ((p)->link ? (p)->link : (p)->c_link)
+#define GetDiredRest(p)   ((p)->rest ? (p)->rest : (p)->c_rest)
+#define GetDiredHref(p)   ((p)->href ? (p)->href : (p)->c_href)
+
+#undef DATA
+#define DATA(cond, sfx, link, rest, href) { \
+	cond, \
+	NULL, sfx, \
+	NULL, link, \
+	NULL, rest, \
+	NULL, href, \
+	NULL }
+
 static struct dired_menu *menu_head = NULL;
 static struct dired_menu defmenu[] = {
 
@@ -119,149 +137,150 @@ static struct dired_menu defmenu[] = {
  * discarded entirely.
  */
 #ifdef SUPPORT_CHDIR
-{ 0,		      "", "Change directory",
-		      "", "LYNXDIRED://CHDIR",			NULL },
+DATA( 0,              "", "Change directory",
+                      "", "LYNXDIRED://CHDIR"),
 #endif
-{ 0,		      "", "New File",
-"(in current directory)", "LYNXDIRED://NEW_FILE%d",		NULL },
+DATA( 0,              "", "New File",
+"(in current directory)", "LYNXDIRED://NEW_FILE%d"),
 
-{ 0,		      "", "New Directory",
-"(in current directory)", "LYNXDIRED://NEW_FOLDER%d",		NULL },
+DATA( 0,              "", "New Directory",
+"(in current directory)", "LYNXDIRED://NEW_FOLDER%d"),
 
 #ifdef OK_INSTALL
-{ DE_FILE,	      "", "Install",
-"selected file to new location", "LYNXDIRED://INSTALL_SRC%p",	NULL },
+DATA( DE_FILE,        "", "Install",
+"selected file to new location", "LYNXDIRED://INSTALL_SRC%p"),
 /* The following (installing a directory) doesn't work for me, at least
    with the "install" from GNU fileutils 4.0.  I leave it in anyway, in
    case one compiles with INSTALL_PATH / INSTALL_ARGS defined to some
    other command for which it works (like a script, or maybe "cp -a"). - kw
 */
-{ DE_DIR,	      "", "Install",
-"selected directory to new location", "LYNXDIRED://INSTALL_SRC%p",	NULL },
+DATA( DE_DIR,         "", "Install",
+"selected directory to new location", "LYNXDIRED://INSTALL_SRC%p"),
 #endif /* OK_INSTALL */
 
-{ DE_FILE,	      "", "Modify File Name",
-"(of current selection)", "LYNXDIRED://MODIFY_NAME%p",		NULL },
-{ DE_DIR,	      "", "Modify Directory Name",
-"(of current selection)", "LYNXDIRED://MODIFY_NAME%p",		NULL },
+DATA( DE_FILE,        "", "Modify File Name",
+"(of current selection)", "LYNXDIRED://MODIFY_NAME%p"),
+DATA( DE_DIR,         "", "Modify Directory Name",
+"(of current selection)", "LYNXDIRED://MODIFY_NAME%p"),
 #ifdef S_IFLNK
-{ DE_SYMLINK,	      "", "Modify Name",
-"(of selected symbolic link)", "LYNXDIRED://MODIFY_NAME%p",	NULL },
+DATA( DE_SYMLINK,     "", "Modify Name",
+"(of selected symbolic link)", "LYNXDIRED://MODIFY_NAME%p"),
 #endif  /* S_IFLNK */
 
 #ifdef OK_PERMIT
-{ DE_FILE,	      "", "Modify File Permissions",
-"(of current selection)", "LYNXDIRED://PERMIT_SRC%p",		NULL },
-{ DE_DIR,	      "", "Modify Directory Permissions",
-"(of current selection)", "LYNXDIRED://PERMIT_SRC%p",		NULL },
+DATA( DE_FILE,        "", "Modify File Permissions",
+"(of current selection)", "LYNXDIRED://PERMIT_SRC%p"),
+DATA( DE_DIR,         "", "Modify Directory Permissions",
+"(of current selection)", "LYNXDIRED://PERMIT_SRC%p"),
 #endif /* OK_PERMIT */
 
-{ DE_FILE,	      "", "Change Location",
-"(of selected file)"	, "LYNXDIRED://MODIFY_LOCATION%p",	NULL },
-{ DE_DIR,	      "", "Change Location",
-"(of selected directory)", "LYNXDIRED://MODIFY_LOCATION%p",	NULL },
+DATA( DE_FILE,        "", "Change Location",
+"(of selected file)"    , "LYNXDIRED://MODIFY_LOCATION%p"),
+DATA( DE_DIR,         "", "Change Location",
+"(of selected directory)", "LYNXDIRED://MODIFY_LOCATION%p"),
 #ifdef S_IFLNK
-{ DE_SYMLINK,	      "", "Change Location",
-"(of selected symbolic link)", "LYNXDIRED://MODIFY_LOCATION%p", NULL },
+DATA( DE_SYMLINK,     "", "Change Location",
+"(of selected symbolic link)", "LYNXDIRED://MODIFY_LOCATION%p"),
 #endif /* S_IFLNK */
 
-{ DE_FILE,	      "", "Remove File",
-   "(current selection)", "LYNXDIRED://REMOVE_SINGLE%p",	NULL },
-{ DE_DIR,	      "", "Remove Directory",
-   "(current selection)", "LYNXDIRED://REMOVE_SINGLE%p",	NULL },
+DATA( DE_FILE,        "", "Remove File",
+   "(current selection)", "LYNXDIRED://REMOVE_SINGLE%p"),
+DATA( DE_DIR,         "", "Remove Directory",
+   "(current selection)", "LYNXDIRED://REMOVE_SINGLE%p"),
 #ifdef S_IFLNK
-{ DE_SYMLINK,	      "", "Remove Symbolic Link",
-   "(current selection)", "LYNXDIRED://REMOVE_SINGLE%p",	NULL },
+DATA( DE_SYMLINK,     "", "Remove Symbolic Link",
+   "(current selection)", "LYNXDIRED://REMOVE_SINGLE%p"),
 #endif /* S_IFLNK */
 
 #if defined(OK_UUDECODE) && !defined(ARCHIVE_ONLY)
-{ DE_FILE,	      "", "UUDecode",
-   "(current selection)", "LYNXDIRED://UUDECODE%p",		NULL },
+DATA( DE_FILE,        "", "UUDecode",
+   "(current selection)", "LYNXDIRED://UUDECODE%p"),
 #endif /* OK_UUDECODE && !ARCHIVE_ONLY */
 
 #if defined(OK_TAR) && !defined(ARCHIVE_ONLY)
-{ DE_FILE,	EXT_TAR_Z, "Expand",
-   "(current selection)", "LYNXDIRED://UNTAR_Z%p",		NULL },
+DATA( DE_FILE,        EXT_TAR_Z, "Expand",
+   "(current selection)", "LYNXDIRED://UNTAR_Z%p"),
 #endif /* OK_TAR && !ARCHIVE_ONLY */
 
 #if defined(OK_TAR) && defined(OK_GZIP) && !defined(ARCHIVE_ONLY)
-{ DE_FILE,     ".tar.gz", "Expand",
-   "(current selection)", "LYNXDIRED://UNTAR_GZ%p",		NULL },
+DATA( DE_FILE,        ".tar.gz", "Expand",
+   "(current selection)", "LYNXDIRED://UNTAR_GZ%p"),
 
-{ DE_FILE,	  ".tgz", "Expand",
-   "(current selection)", "LYNXDIRED://UNTAR_GZ%p",		NULL },
+DATA( DE_FILE,        ".tgz", "Expand",
+   "(current selection)", "LYNXDIRED://UNTAR_GZ%p"),
 #endif /* OK_TAR && OK_GZIP && !ARCHIVE_ONLY */
 
 #ifndef ARCHIVE_ONLY
-{ DE_FILE,	   EXT_Z, "Uncompress",
-   "(current selection)", "LYNXDIRED://DECOMPRESS%p",		NULL },
+DATA( DE_FILE,        EXT_Z, "Uncompress",
+   "(current selection)", "LYNXDIRED://DECOMPRESS%p"),
 #endif /* ARCHIVE_ONLY */
 
 #if defined(OK_GZIP) && !defined(ARCHIVE_ONLY)
-{ DE_FILE,	   ".gz", "Uncompress",
-   "(current selection)", "LYNXDIRED://UNGZIP%p",		NULL },
+DATA( DE_FILE,        ".gz", "Uncompress",
+   "(current selection)", "LYNXDIRED://UNGZIP%p"),
 #endif /* OK_GZIP && !ARCHIVE_ONLY */
 
 #if defined(OK_ZIP) && !defined(ARCHIVE_ONLY)
-{ DE_FILE,	  ".zip", "Uncompress",
-   "(current selection)", "LYNXDIRED://UNZIP%p",		NULL },
+DATA( DE_FILE,        ".zip", "Uncompress",
+   "(current selection)", "LYNXDIRED://UNZIP%p"),
 #endif /* OK_ZIP && !ARCHIVE_ONLY */
 
 #if defined(OK_TAR) && !defined(ARCHIVE_ONLY)
-{ DE_FILE,	  ".tar", "UnTar",
-   "(current selection)", "LYNXDIRED://UNTAR%p",		NULL },
+DATA( DE_FILE,        ".tar", "UnTar",
+   "(current selection)", "LYNXDIRED://UNTAR%p"),
 #endif /* OK_TAR && !ARCHIVE_ONLY */
 
 #ifdef OK_TAR
-{ DE_DIR,	      "", "Tar",
-   "(current selection)", "LYNXDIRED://TAR%p",			NULL },
+DATA( DE_DIR,         "", "Tar",
+   "(current selection)", "LYNXDIRED://TAR%p"),
 #endif /* OK_TAR */
 
 #if defined(OK_TAR) && defined(OK_GZIP)
-{ DE_DIR,	      "", "Tar and compress",
-      "(using GNU gzip)", "LYNXDIRED://TAR_GZ%p",		NULL },
+DATA( DE_DIR,         "", "Tar and compress",
+      "(using GNU gzip)", "LYNXDIRED://TAR_GZ%p"),
 #endif /* OK_TAR && OK_GZIP */
 
 #if defined(OK_TAR) && defined(USE_COMPRESS)
-{ DE_DIR,	      "", "Tar and compress",
-      "(using compress)", "LYNXDIRED://TAR_Z%p",		NULL },
+DATA( DE_DIR,         "", "Tar and compress",
+      "(using compress)", "LYNXDIRED://TAR_Z%p"),
 #endif /* OK_TAR && USE_COMPRESS */
 
 #ifdef OK_ZIP
-{ DE_DIR,	      "", "Package and compress",
-	   "(using zip)", "LYNXDIRED://ZIP%p",			NULL },
+DATA( DE_DIR,         "", "Package and compress",
+           "(using zip)", "LYNXDIRED://ZIP%p"),
 #endif /* OK_ZIP */
 
-{ DE_FILE,	      "", "Compress",
- "(using Unix compress)", "LYNXDIRED://COMPRESS%p",		NULL },
+DATA( DE_FILE,        "", "Compress",
+ "(using Unix compress)", "LYNXDIRED://COMPRESS%p"),
 
 #ifdef OK_GZIP
-{ DE_FILE,	      "", "Compress",
-	  "(using gzip)", "LYNXDIRED://GZIP%p",			NULL },
+DATA( DE_FILE,        "", "Compress",
+          "(using gzip)", "LYNXDIRED://GZIP%p"),
 #endif /* OK_GZIP */
 
 #ifdef OK_ZIP
-{ DE_FILE,	      "", "Compress",
-	   "(using zip)", "LYNXDIRED://ZIP%p",			NULL },
+DATA( DE_FILE,        "", "Compress",
+           "(using zip)", "LYNXDIRED://ZIP%p"),
 #endif /* OK_ZIP */
 
-{ DE_TAG,	      "", "Move all tagged items to another location.",
-		      "", "LYNXDIRED://MOVE_TAGGED%d",		NULL },
+DATA( DE_TAG,         "", "Move all tagged items to another location.",
+                      "", "LYNXDIRED://MOVE_TAGGED%d"),
 
 #ifdef OK_INSTALL
-{ DE_TAG,	      "", "Install tagged files into another directory.",
-		      "", "LYNXDIRED://INSTALL_SRC%00",		NULL },
+DATA( DE_TAG,         "", "Install tagged files into another directory.",
+                      "", "LYNXDIRED://INSTALL_SRC%00"),
 #endif
 
-{ DE_TAG,	      "", "Remove all tagged files and directories.",
-		      "", "LYNXDIRED://REMOVE_TAGGED",		NULL },
+DATA( DE_TAG,         "", "Remove all tagged files and directories.",
+                      "", "LYNXDIRED://REMOVE_TAGGED"),
 
-{ DE_TAG,	      "", "Untag all tagged files and directories.",
-		      "", "LYNXDIRED://CLEAR_TAGGED",		NULL },
+DATA( DE_TAG,         "", "Untag all tagged files and directories.",
+                      "", "LYNXDIRED://CLEAR_TAGGED"),
 
-{ 0,		    NULL, NULL,
-		    NULL, NULL,					NULL }
+DATA( 0,              NULL, NULL,
+                      NULL, NULL),
 };
+#undef DATA
 /* *INDENT-ON* */
 
 static BOOLEAN cannot_stat(const char *name)
@@ -278,11 +297,42 @@ static BOOLEAN cannot_stat(const char *name)
 
 static BOOLEAN ok_stat(const char *name, struct stat *sb)
 {
+    BOOLEAN rc = TRUE;
+
     CTRACE((tfp, "testing ok_stat(%s)\n", name));
     if (!OK_STAT(name, sb)) {
-	return cannot_stat(name);
+#ifdef DOSPATH
+	size_t len = strlen(name);
+
+	/*
+	 * If a path ends with '\' or ':', we can guess that it may be
+	 * a directory name.  Adding a '.' (after a '\') will produce a
+	 * pathname that stat() will accept as a directory name.
+	 */
+	if (len != 0 && (name[len - 1] == '\\' || name[len - 1] == ':')) {
+	    char *temp = malloc(len + 3);
+
+	    if (temp != 0) {
+		strcpy(temp, name);
+		if (temp[len - 1] == '\\') {
+		    strcpy(temp + len, ".");
+		} else {
+		    strcpy(temp + len, "\\.");
+		}
+		rc = OK_STAT(temp, sb);
+		free(temp);
+	    } else {
+		rc = FALSE;
+	    }
+	} else
+#endif
+	    rc = FALSE;
     }
-    return TRUE;
+
+    if (rc == FALSE)
+	rc = cannot_stat(name);
+
+    return rc;
 }
 
 #ifdef HAVE_LSTAT
@@ -335,13 +385,13 @@ static int LYExecv(const char *path,
 {
     int rc = 0;
 
-#if defined(VMS) || defined(_WINDOWS)
+#if defined(VMS)
     CTRACE((tfp, "LYExecv:  Called inappropriately! (path=%s)\n", path));
 #else
     int n;
     char *tmpbuf = 0;
 
-#ifdef __DJGPP__
+#if defined(__DJGPP__) || defined(_WINDOWS)
     stop_curses();
     HTSprintf0(&tmpbuf, "%s", path);
     for (n = 1; argv[n] != 0; n++)
@@ -425,6 +475,7 @@ static int LYExecv(const char *path,
 	FREE(tmpbuf);
     }
 #endif /* VMS || _WINDOWS */
+    CTRACE((tfp, "LYexecv ->%d\n", rc));
     return (rc);
 }
 
@@ -449,6 +500,7 @@ static int make_directory(char *path)
 #else
 	code = mkdir(path, 0777) ? -1 : 1;
 #endif
+	CTRACE((tfp, "builtin mkdir ->%d\n\t%s\n", code, path));
     }
     return (code);
 }
@@ -471,6 +523,7 @@ static int remove_file(char *path)
 	FREE(tmpbuf);
     } else {
 	code = remove(path) ? -1 : 1;
+	CTRACE((tfp, "builtin remove ->%d\n\t%s\n", code, path));
     }
     return (code);
 }
@@ -492,6 +545,7 @@ static int remove_directory(char *path)
 	FREE(tmpbuf);
     } else {
 	code = rmdir(path) ? -1 : 1;
+	CTRACE((tfp, "builtin rmdir ->%d\n\t%s\n", code, path));
     }
     return (code);
 }
@@ -514,12 +568,13 @@ static int touch_file(char *path)
     } else {
 	FILE *fp;
 
-	if ((fp = fopen(path, "w")) != 0) {
+	if ((fp = fopen(path, BIN_W)) != 0) {
 	    fclose(fp);
 	    code = 1;
 	} else {
 	    code = -1;
 	}
+	CTRACE((tfp, "builtin touch ->%d\n\t%s\n", code, path));
     }
     return (code);
 }
@@ -551,9 +606,15 @@ static int move_file(char *source, char *target)
 	    CTRACE((tfp, "move_file source=%s, target=%s\n", source, target));
 	    target = actual;
 	}
-	if ((code = rename(source, target)) != 0)
-	    if ((code = LYCopyFile(source, target)) >= 0)
+	code = rename(source, target);
+	CTRACE((tfp, "builtin move ->%d\n\tsource=%s\n\ttarget=%s\n",
+		code, source, target));
+	if (code != 0) {	/* it failed */
+	    if ((code = LYCopyFile(source, target)) >= 0) {
 		code = remove(source);
+		CTRACE((tfp, "...remove source after copying ->%d\n", code));
+	    }
+	}
 	if (code == 0)
 	    code = 1;
 	if (actual != target) {
@@ -732,11 +793,11 @@ static int modify_tagged(char *testpath)
 	 * If path is relative, prefix it with current location.
 	 */
 	if (!LYIsPathSep(given_target[0])) {
-	    StrAllocCopy(dst_path, testpath);
+	    dst_path = HTLocalName(testpath);
 	    LYAddPathSep(&dst_path);
 	    StrAllocCat(dst_path, given_target);
 	} else {
-	    StrAllocCopy(dst_path, given_target);
+	    dst_path = HTLocalName(given_target);
 	}
 
 	if (!ok_stat(dst_path, &dst_info)) {
@@ -866,12 +927,7 @@ static int modify_location(char *testpath)
      * Change the location of the file or directory.
      */
     if (S_ISDIR(dir_info.st_mode)) {
-	if (HTGetProgramPath(ppMV) != NULL) {
-	    cp = gettext("Enter new location for directory: ");
-	} else {
-	    HTAlert(COULD_NOT_ACCESS_DIR);
-	    return 0;
-	}
+	cp = gettext("Enter new location for directory: ");
     } else if (S_ISREG(dir_info.st_mode)) {
 	cp = gettext("Enter new location for file: ");
     } else {
@@ -1239,9 +1295,10 @@ static int permit_location(char *destpath,
 			   char *srcpath,
 			   char **newpath)
 {
+    int code = 0;
+
 #ifndef UNIX
     HTAlert(gettext("Sorry, don't know how to permit non-UNIX files yet."));
-    return (0);
 #else
     static char tempfile[LY_MAXPATH] = "\0";
     char *cp;
@@ -1264,14 +1321,14 @@ static int permit_location(char *destpath,
 	 */
 	if (!ok_lstat(srcpath, &dir_info)
 	    || !ok_file_or_dir(&dir_info))
-	    return 0;
+	    return code;
 
 	user_filename = LYPathLeaf(srcpath);
 
 	LYRemoveTemp(tempfile);
 	if ((fp0 = LYOpenTemp(tempfile, HTML_SUFFIX, "w")) == NULL) {
 	    HTAlert(gettext("Unable to open permit options file"));
-	    return (0);
+	    return (code);
 	}
 
 	/*
@@ -1358,7 +1415,7 @@ static int permit_location(char *destpath,
 	LYCloseTempFP(fp0);
 
 	LYforce_no_cache = TRUE;
-	return (PERMIT_FORM_RESULT);	/* Special flag for LYMainLoop */
+	code = PERMIT_FORM_RESULT;	/* Special flag for LYMainLoop */
 
     } else {			/* The form being activated. */
 	mode_t new_mode = 0;
@@ -1375,24 +1432,24 @@ static int permit_location(char *destpath,
 	    CTRACE((tfp, "permit_location: called for <%s>.\n",
 		    (destpath ?
 		     destpath : "NULL URL pointer")));
-	    return 0;
+	    return code;
 	}
 	cp = destpath;
 	while (*cp != '\0' && *cp != '?') {	/* Find filename */
 	    cp++;
 	}
 	if (*cp == '\0') {
-	    return (0);		/* Nothing to permit. */
+	    return (code);	/* Nothing to permit. */
 	}
 	*cp++ = '\0';		/* Null terminate file name and
 				   start working on the masks. */
 
 	/* Will now operate only on filename part. */
 	if ((destpath = HTURLPath_toFile(destpath, TRUE, FALSE)) == 0)
-	    return (0);
+	    return (code);
 	if (strlen(destpath) >= LY_MAXPATH) {
 	    FREE(destpath);
-	    return (0);
+	    return (code);
 	}
 	strcpy(tmpdst, destpath);
 	FREE(destpath);
@@ -1409,7 +1466,7 @@ static int permit_location(char *destpath,
 		fprintf(stderr, "%s\n", INVALID_PERMIT_URL);
 	    CTRACE((tfp, "permit_location: called for file '%s'.\n",
 		    destpath));
-	    return 0;
+	    return code;
 	}
 
 	/*
@@ -1418,7 +1475,7 @@ static int permit_location(char *destpath,
 	destpath = strip_trailing_slash(destpath);
 	if (!ok_stat(destpath, &dir_info)
 	    || !ok_file_or_dir(&dir_info)) {
-	    return 0;
+	    return code;
 	}
 
 	/*
@@ -1447,11 +1504,11 @@ static int permit_location(char *destpath,
 			new_mode |= mask;
 		} else {
 		    HTAlert(gettext("Invalid mode format."));
-		    return 0;
+		    return code;
 		}
 	    } else {
 		HTAlert(gettext("Invalid syntax format."));
-		return 0;
+		return code;
 	    }
 
 	    cp = cr;
@@ -1460,6 +1517,7 @@ static int permit_location(char *destpath,
 	/*
 	 * Call chmod().
 	 */
+	code = 1;
 	if ((program = HTGetProgramPath(ppCHMOD)) != NULL) {
 	    char *args[5];
 	    char amode[10];
@@ -1472,18 +1530,21 @@ static int permit_location(char *destpath,
 	    args[2] = destpath;
 	    args[3] = (char *) 0;
 	    if (LYExecv(program, args, tmpbuf) <= 0) {
-		FREE(tmpbuf);
-		return (-1);
+		code = -1;
 	    }
 	    FREE(tmpbuf);
 	} else {
-	    if (chmod(destpath, new_mode) < 0)
-		return (-1);
+	    if (chmod(destpath, new_mode) < 0) {
+		code = -1;
+	    }
+	    CTRACE((tfp, "builtin chmod %.4o ->%d\n\t%s\n",
+		    new_mode, code, destpath));
 	}
-	LYforce_no_cache = TRUE;	/* Force update of dired listing. */
-	return 1;
+	if (code == 1)
+	    LYforce_no_cache = TRUE;	/* Force update of dired listing. */
     }
 #endif /* !UNIX */
+    return code;
 }
 #endif /* OK_PERMIT */
 
@@ -1833,7 +1894,7 @@ int local_dired(DocInfo *doc)
 	handle_LYK_CHDIR();
 	do_pop_doc = FALSE;
 #endif
-	arg = "blah";		/* do something to avoid cc's complaints */
+	arg = 0;		/* do something to avoid cc's complaints */
     } else if ((arg = match_op("NEW_FILE", line)) != 0) {
 	if (create_file(arg) > 0)
 	    LYforce_no_cache = TRUE;
@@ -1937,6 +1998,7 @@ int local_dired(DocInfo *doc)
 int dired_options(DocInfo *doc, char **newfile)
 {
     static char tempfile[LY_MAXPATH];
+    const char *my_suffix;
     char *path;
     char *dir;
     lynx_list_item_type *nxt;
@@ -2028,7 +2090,7 @@ int dired_options(DocInfo *doc, char **newfile)
      * If menu_head is NULL then use defaults and link them together now.
      */
     if (menu_head == NULL) {
-	for (mp = defmenu; mp->href != NULL; mp++)
+	for (mp = defmenu; GetDiredHref(mp) != NULL; mp++)
 	    mp->next = (mp + 1);
 	(--mp)->next = NULL;
 	menu_head = defmenu;
@@ -2050,18 +2112,22 @@ int dired_options(DocInfo *doc, char **newfile)
 	    (!*path || !S_ISLNK(dir_info.st_mode)))
 	    continue;
 #endif
-	if (*mp->sfx &&
-	    (strlen(path) < strlen(mp->sfx) ||
-	     strcmp(mp->sfx, &path[(strlen(path) - strlen(mp->sfx))]) != 0))
+	my_suffix = GetDiredSuffix(mp);
+	if (non_empty(my_suffix) &&
+	    (strlen(path) < strlen(my_suffix) ||
+	     strcmp(my_suffix, &path[(strlen(path) - strlen(my_suffix))]) != 0))
 	    continue;
 	dir_url = HTEscape(dir, URL_PATH);
 	path_url = HTEscape(path, URL_PATH);
 	fprintf(fp0, "<a href=\"%s",
-		render_item(mp->href, path_url, dir_url, buf, sizeof(buf), YES));
+		render_item(GetDiredHref(mp),
+			    path_url, dir_url, buf, sizeof(buf), YES));
 	fprintf(fp0, "\">%s</a> ",
-		render_item(mp->link, path, dir, buf, sizeof(buf), NO));
+		render_item(GetDiredLink(mp),
+			    path, dir, buf, sizeof(buf), NO));
 	fprintf(fp0, "%s<br>\n",
-		render_item(mp->rest, path, dir, buf, sizeof(buf), NO));
+		render_item(GetDiredRest(mp),
+			    path, dir, buf, sizeof(buf), NO));
 	FREE(dir_url);
 	FREE(path_url);
     }
diff --git a/src/LYMail.c b/src/LYMail.c
index 1aea8ea0..fb14a338 100644
--- a/src/LYMail.c
+++ b/src/LYMail.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYMail.c,v 1.71 2009/01/03 00:39:50 tom Exp $
+ * $LynxId: LYMail.c,v 1.72 2009/11/21 17:05:33 Bela.Lubkin Exp $
  */
 #include <HTUtils.h>
 #include <HTParse.h>
@@ -364,10 +364,10 @@ static char *blat_cmd(char *mail_cmd,
     fprintf(fp, "-t\n%s\n", address);
     if (subject)
 	fprintf(fp, "-s\n%s\n", subject);
-    if (!isEmpty(mail_addr)) {
+    if (non_empty(mail_addr)) {
 	fprintf(fp, "-f\n%s\n", mail_addr);
     }
-    if (!isEmpty(ccaddr)) {
+    if (non_empty(ccaddr)) {
 	fprintf(fp, "-c\n%s\n", ccaddr);
     }
     LYCloseOutput(fp);
@@ -647,7 +647,7 @@ void mailform(const char *mailto_address,
      * Allow user to edit the default Subject - FM
      */
     if (subject[0] == '\0') {
-	if (!isEmpty(mailto_subject)) {
+	if (non_empty(mailto_subject)) {
 	    LYstrncpy(subject, mailto_subject, MAX_SUBJECT);
 	} else {
 	    sprintf(subject, "mailto:%.63s", address);
@@ -690,17 +690,17 @@ void mailform(const char *mailto_address,
 	goto cleanup;
     }
 
-    if (!isEmpty(mailto_type)) {
+    if (non_empty(mailto_type)) {
 	fprintf(fd, "Mime-Version: 1.0\n");
 	fprintf(fd, "Content-Type: %s\n", mailto_type);
     }
     fprintf(fd, "To: %s\n", address);
-    if (!isEmpty(personal_mail_address))
+    if (non_empty(personal_mail_address))
 	fprintf(fd, "From: %s\n", personal_mail_address);
-    if (!isEmpty(ccaddr))
+    if (non_empty(ccaddr))
 	fprintf(fd, "Cc: %s\n", ccaddr);
     fprintf(fd, "Subject: %s\n\n", subject);
-    if (!isEmpty(keywords))
+    if (non_empty(keywords))
 	fprintf(fd, "Keywords: %s\n", keywords);
     _statusline(SENDING_FORM_CONTENT);
 #else /* e.g., VMS, DOS */
@@ -717,17 +717,17 @@ void mailform(const char *mailto_address,
 	    LYCloseTempFP(fd);
 	    goto cleanup;
 	}
-	if (!isEmpty(mailto_type)) {
+	if (non_empty(mailto_type)) {
 	    fprintf(hfd, "Mime-Version: 1.0\n");
 	    fprintf(hfd, "Content-Type: %s\n", mailto_type);
-	    if (!isEmpty(personal_mail_address))
+	    if (non_empty(personal_mail_address))
 		fprintf(hfd, "From: %s\n", personal_mail_address);
 	}
 	/*
 	 * For PMDF, put any keywords and the subject in the header file and
 	 * close it.  - FM
 	 */
-	if (!isEmpty(keywords)) {
+	if (non_empty(keywords)) {
 	    fprintf(hfd, "Keywords: %s\n", keywords);
 	}
 	fprintf(hfd, "Subject: %s\n\n", subject);
@@ -749,12 +749,12 @@ void mailform(const char *mailto_address,
     } else
 #endif
     {
-	if (!isEmpty(mailto_type)) {
+	if (non_empty(mailto_type)) {
 	    fprintf(fd, "Mime-Version: 1.0\n");
 	    fprintf(fd, "Content-Type: %s\n", mailto_type);
 	}
 	fprintf(fd, "To: %s\n", address);
-	if (!isEmpty(personal_mail_address))
+	if (non_empty(personal_mail_address))
 	    fprintf(fd, "From: %s\n", personal_mail_address);
 	fprintf(fd, "Subject: %.70s\n\n", subject);
     }
@@ -829,7 +829,7 @@ void mailform(const char *mailto_address,
     StrAllocCopy(command, cmd);
 
     vms_append_addrs(&command, address, "");
-    if (!isEmpty(ccaddr)) {
+    if (non_empty(ccaddr)) {
 	vms_append_addrs(&command, ccaddr, "/CC");
     }
 
@@ -969,7 +969,7 @@ void mailmsg(int cur,
 
     fprintf(fd, "To: %s\n", address);
     fprintf(fd, "Subject: Lynx Error in %s\n", filename);
-    if (!isEmpty(personal_mail_address)) {
+    if (non_empty(personal_mail_address)) {
 	fprintf(fd, "Cc: %s\n", personal_mail_address);
     }
     fprintf(fd, "X-URL: %s\n", filename);
@@ -992,7 +992,7 @@ void mailmsg(int cur,
 	    return;
 	}
 
-	if (!isEmpty(personal_mail_address)) {
+	if (non_empty(personal_mail_address)) {
 	    fprintf(fd, "Cc: %s\n", personal_mail_address);
 	}
 	fprintf(fd, "X-URL: %s\n", filename);
@@ -1230,7 +1230,7 @@ void reply_by_mail(char *mail_address,
     /*
      * Set the default subject.  - FM
      */
-    if ((default_subject[0] == '\0') && !isEmpty(title)) {
+    if ((default_subject[0] == '\0') && non_empty(title)) {
 	strncpy(default_subject, title, MAX_SUBJECT);
 	default_subject[MAX_SUBJECT] = '\0';
     }
@@ -1289,14 +1289,14 @@ void reply_by_mail(char *mail_address,
     /*
      * Put the X-URL and X-Mailer lines in the header.
      */
-    if (!isEmpty(filename)) {
+    if (non_empty(filename)) {
 	HTSprintf(&header, "X-URL: %s\n", filename);
     } else {
 	HTSprintf(&header, "X-URL: mailto:%s\n", to_address);
     }
     HTSprintf(&header, "X-Mailer: %s, Version %s\n", LYNX_NAME, LYNX_VERSION);
 
-    if (!isEmpty(refid)) {
+    if (non_empty(refid)) {
 	HTSprintf(&header, "In-Reply-To: <%s>\n", refid);
     }
 #endif /* VMS */
@@ -1396,7 +1396,7 @@ void reply_by_mail(char *mail_address,
     label = "Subject";
     if (*default_subject) {
 	StrAllocCopy(the_subject, default_subject);
-    } else if (!isEmpty(filename)) {
+    } else if (non_empty(filename)) {
 	HTSprintf(&the_subject, "%s", filename);
     } else {
 	HTSprintf(&the_subject, "mailto:%s", to_address);
@@ -1429,14 +1429,14 @@ void reply_by_mail(char *mail_address,
     /*
      * Add the Cc:  header.  - FM
      */
-    if (!isEmpty(ccaddr)) {
+    if (non_empty(ccaddr)) {
 	HTSprintf(&header, "Cc: %s\n", ccaddr);
     }
 
     /*
      * Add the Keywords:  header.  - FM
      */
-    if (!isEmpty(keywords)) {
+    if (non_empty(keywords)) {
 	HTSprintf(&header, "Keywords: %s\n", keywords);
     }
 
@@ -1447,7 +1447,7 @@ void reply_by_mail(char *mail_address,
     CTRACE((tfp, "**header==\n%s", header));
 #endif /* !VMS */
 
-    if (!no_editor && !isEmpty(editor)) {
+    if (!no_editor && non_empty(editor)) {
 
 	if (body) {
 	    cp1 = body;
@@ -1602,7 +1602,7 @@ void reply_by_mail(char *mail_address,
 	 * For PMDF, put any keywords and the subject in the header file and
 	 * close it.  - FM
 	 */
-	if (!isEmpty(keywords)) {
+	if (non_empty(keywords)) {
 	    fprintf(hfd, "Keywords: %s\n", keywords);
 	}
 	fprintf(hfd, "Subject: %s\n\n", the_subject);
@@ -1630,7 +1630,7 @@ void reply_by_mail(char *mail_address,
     }
 
     vms_append_addrs(&command, to_address, "");
-    if (!isEmpty(ccaddr)) {
+    if (non_empty(ccaddr)) {
 	vms_append_addrs(&command, ccaddr, "/CC");
     }
 
diff --git a/src/LYMain.c b/src/LYMain.c
index bc456a65..1f54575d 100644
--- a/src/LYMain.c
+++ b/src/LYMain.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYMain.c,v 1.206 2009/08/25 23:07:22 tom Exp $
+ * $LynxId: LYMain.c,v 1.210 2009/11/21 17:05:33 Bela.Lubkin Exp $
  */
 #include <HTUtils.h>
 #include <HTTP.h>
@@ -562,7 +562,7 @@ int ssl_noprompt = FORCE_PROMPT_DFT;
 int connect_timeout = 18000; /*=180000*0.1 - used in HTDoConnect.*/
 int reading_timeout = 18000; /*=180000*0.1 - used in HTDoConnect.*/
 
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
 BOOLEAN ok_justify = FALSE;
 int justify_max_void_percent = 35;
 #endif
@@ -989,7 +989,7 @@ int main(int argc,
     ftp_lasthost = typecalloc(char);
 #endif
 
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
     memset((char *) charset_subsets, 0, sizeof(charset_subset_t) * MAXCHARSETS);
 #endif
 
@@ -1378,7 +1378,7 @@ int main(int argc,
 	LYRestricted = TRUE;
 	LYUseTraceLog = FALSE;
     }
-#ifdef EXP_CMD_LOGGING
+#ifdef USE_CMD_LOGGING
     /*
      * Open command-script, if specified
      */
@@ -1551,7 +1551,7 @@ int main(int argc,
     /*
      * If the lynx-style file is not available, inform the user and exit.
      */
-    if (!isEmpty(lynx_lss_file) && !LYCanReadFile(lynx_lss_file)) {
+    if (non_empty(lynx_lss_file) && !LYCanReadFile(lynx_lss_file)) {
 	fprintf(stderr, gettext("\nLynx file \"%s\" is not available.\n\n"),
 		lynx_lss_file);
 	exit_immediately(EXIT_FAILURE);
@@ -2067,13 +2067,13 @@ int main(int argc,
      * Make sure our bookmark default strings are all allocated and
      * synchronized.  - FM
      */
-    if (!bookmark_page || *bookmark_page == '\0') {
+    if (isEmpty(bookmark_page)) {
 	temp = NULL;
 	HTSprintf0(&temp, "lynx_bookmarks%s", HTML_SUFFIX);
 	set_default_bookmark_page(temp);
 	FREE(temp);
     }
-    if (!BookmarkPage || *BookmarkPage == '\0') {
+    if (isEmpty(BookmarkPage)) {
 	set_default_bookmark_page(bookmark_page);
     }
 #if defined(SYSLOG_REQUESTED_URLS)
@@ -2298,7 +2298,7 @@ void reload_read_cfg(void)
 	}
 #endif
 
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
 	custom_assumed_doc_charset = FALSE;
 	custom_display_charset = FALSE;
 	memset((char *) charset_subsets, 0, sizeof(charset_subset_t) * MAXCHARSETS);
@@ -2326,7 +2326,7 @@ void reload_read_cfg(void)
 	LYRemoveTemp(tempfile);
 	FREE(tempfile);		/* done with it - kw */
 
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
 	init_charset_subsets();
 #endif
 
@@ -3338,7 +3338,7 @@ outputs for -source dumps"
       "child_relaxed",	4|FUNCTION_ARG,		child_relaxed_fun,
       "exit on left-arrow in startfile (allows save to disk)"
    ),
-#ifdef EXP_CMD_LOGGING
+#ifdef USE_CMD_LOGGING
    PARSE_STR(
       "cmd_log",	2|NEED_LYSTRING_ARG,	lynx_cmd_logfile,
       "=FILENAME\nlog keystroke commands to the given file"
@@ -3524,7 +3524,7 @@ soon as they are seen)"
       "ismap",		4|TOGGLE_ARG,		LYNoISMAPifUSEMAP,
       "toggles inclusion of ISMAP links when client-side\nMAPs are present"
    ),
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
    PARSE_SET(
       "justify",	4|SET_ARG,		ok_justify,
       "do justification of text"
diff --git a/src/LYMainLoop.c b/src/LYMainLoop.c
index b8a0fa98..db7862e9 100644
--- a/src/LYMainLoop.c
+++ b/src/LYMainLoop.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYMainLoop.c,v 1.160 2009/02/01 12:51:11 tom Exp $
+ * $LynxId: LYMainLoop.c,v 1.162 2009/11/22 17:27:48 tom Exp $
  */
 #include <HTUtils.h>
 #include <HTAccess.h>
@@ -2460,7 +2460,7 @@ static void handle_LYK_EDIT(int *old_c,
 		    if (S_ISREG(dir_info.st_mode)) {
 			StrAllocCopy(tp, links[curdoc.link].lname);
 			HTUnEscapeSome(tp, "/");
-			if (edit_current_file(tp, curdoc.link, LYGetNewline())) {
+			if (edit_current_file(tp, curdoc.link, -1)) {
 			    DIRED_UNCACHE_1;
 			    move_address(&newdoc, &curdoc);
 #ifdef NO_SEEK_OLD_POSITION
@@ -2539,7 +2539,7 @@ static void handle_LYK_EDIT_TEXTAREA(BOOLEAN *refresh_screen,
 	    *old_c = real_c;
 	    HTUserMsg(ANYEDIT_DISABLED);
 	}
-    } else if (!editor || *editor == '\0') {
+    } else if (isEmpty(editor)) {
 	if (*old_c != real_c) {
 	    *old_c = real_c;
 	    HTUserMsg(NO_EDITOR);
@@ -6123,7 +6123,7 @@ int mainloop(void)
 	     */
 	    temp = HTParse(curdoc.address, "",
 			   PARSE_ACCESS + PARSE_HOST + PARSE_PUNCTUATION);
-	    if (!temp || *temp == '\0') {
+	    if (isEmpty(temp)) {
 		StrAllocCopy(startrealm, NO_NOTHING);
 	    } else {
 		StrAllocCopy(startrealm, temp);
@@ -6183,7 +6183,7 @@ int mainloop(void)
 		} else {
 		    temp = HTParse(curdoc.address, "",
 				   PARSE_ACCESS + PARSE_HOST + PARSE_PUNCTUATION);
-		    if (!temp || *temp == '\0') {
+		    if (isEmpty(temp)) {
 			StrAllocCopy(traversal_host, NO_NOTHING);
 		    } else {
 			StrAllocCopy(traversal_host, temp);
diff --git a/src/LYOptions.c b/src/LYOptions.c
index 24cac109..9ea2cd2a 100644
--- a/src/LYOptions.c
+++ b/src/LYOptions.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYOptions.c,v 1.133 2009/06/07 18:24:50 tom Exp $ */
+/* $LynxId: LYOptions.c,v 1.134 2009/11/21 15:52:05 tom Exp $ */
 #include <HTUtils.h>
 #include <HTFTP.h>
 #include <HTTP.h>		/* 'reloading' flag */
@@ -3660,7 +3660,7 @@ static int gen_options(char **newfile)
 	if (len > cset_len)
 	    cset_len = len;
 	sprintf(temp, "%d", i);
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
 	if (!charset_subsets[i].hide_display)
 #endif
 	    PutOption(fp0, i == current_char_set, temp, LYchar_set_names[i]);
@@ -3685,7 +3685,7 @@ static int gen_options(char **newfile)
 	PutLabel(fp0, gettext("Assumed document character set"), assume_char_set_string);
 	BeginSelect(fp0, assume_char_set_string);
 	for (i = 0; i < LYNumCharsets; i++) {
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
 	    if (!charset_subsets[i].hide_assumed)
 #endif
 		PutOption(fp0, i == curval,
diff --git a/src/LYReadCFG.c b/src/LYReadCFG.c
index e8b20dd2..08478a87 100644
--- a/src/LYReadCFG.c
+++ b/src/LYReadCFG.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYReadCFG.c,v 1.139 2009/06/07 16:57:29 tom Exp $
+ * $LynxId: LYReadCFG.c,v 1.142 2009/11/21 16:32:23 tom Exp $
  */
 #ifndef NO_RULES
 #include <HTRules.h>
@@ -1038,7 +1038,7 @@ static int nonrest_sigwinch_fun(char *value)
     return 0;
 }
 
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
 static void matched_charset_choice(BOOL display_charset,
 				   int i)
 {
@@ -1119,7 +1119,7 @@ static int parse_assumed_doc_charset_choice(char *p)
     return parse_charset_choice(p, 0);
 }
 
-#endif /* EXP_CHARSET_CHOICE */
+#endif /* USE_CHARSET_CHOICE */
 
 #ifdef USE_PRETTYSRC
 static void html_src_bad_syntax(char *value,
@@ -1300,7 +1300,7 @@ static Config_Type Config_Table [] =
 #ifdef EXP_ASSUMED_COLOR
      PARSE_FUN(RC_ASSUMED_COLOR,        assumed_color_fun),
 #endif
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
      PARSE_FUN(RC_ASSUMED_DOC_CHARSET_CHOICE, parse_assumed_doc_charset_choice),
 #endif
 #ifdef DIRED_SUPPORT
@@ -1369,7 +1369,7 @@ static Config_Type Config_Table [] =
 #ifdef DIRED_SUPPORT
      PARSE_FUN(RC_DIRED_MENU,           dired_menu_fun),
 #endif
-#ifdef EXP_CHARSET_CHOICE
+#ifdef USE_CHARSET_CHOICE
      PARSE_FUN(RC_DISPLAY_CHARSET_CHOICE, parse_display_charset_choice),
 #endif
      PARSE_ADD(RC_DOWNLOADER,           downloaders),
@@ -1421,7 +1421,7 @@ static Config_Type Config_Table [] =
      PARSE_STR(RC_JUMP_PROMPT,          jumpprompt),
      PARSE_SET(RC_JUMPBUFFER,           jump_buffer),
      PARSE_FUN(RC_JUMPFILE,             jumpfile_fun),
-#ifdef EXP_JUSTIFY_ELTS
+#ifdef USE_JUSTIFY_ELTS
      PARSE_SET(RC_JUSTIFY,              ok_justify),
      PARSE_INT(RC_JUSTIFY_MAX_VOID_PERCENT, justify_max_void_percent),
 #endif
@@ -1524,7 +1524,7 @@ static Config_Type Config_Table [] =
      PARSE_SET(RC_QUIT_DEFAULT_YES,     LYQuitDefaultYes),
      PARSE_INT(RC_READ_TIMEOUT,         reading_timeout),
      PARSE_FUN(RC_REFERER_WITH_QUERY,   referer_with_query_fun),
-#ifdef EXP_CMD_LOGGING
+#ifdef USE_CMD_LOGGING
      PARSE_TIM(RC_REPLAYSECS,           ReplaySecs),
 #endif
      PARSE_SET(RC_REUSE_TEMPFILES,      LYReuseTempfiles),
diff --git a/src/LYStrings.c b/src/LYStrings.c
index 498975a5..e7d58b7e 100644
--- a/src/LYStrings.c
+++ b/src/LYStrings.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYStrings.c,v 1.166 2009/06/07 19:32:16 tom Exp $ */
+/* $LynxId: LYStrings.c,v 1.168 2009/11/21 17:06:11 Bela.Lubkin Exp $ */
 #include <HTUtils.h>
 #include <HTCJK.h>
 #include <UCAux.h>
@@ -35,7 +35,7 @@
 #include <LYMainLoop.h>
 #endif
 
-#ifdef EXP_CMD_LOGGING
+#ifdef USE_CMD_LOGGING
 #include <LYReadCFG.h>
 #endif
 
@@ -642,7 +642,7 @@ const char *LYmbcs_skip_glyphs(const char *data,
     if (n_glyphs < 0)
 	n_glyphs = 0;
 
-    if (!isEmpty(data)) {
+    if (non_empty(data)) {
 	if (!utf_flag) {
 	    while (n_glyphs-- > 0) {
 		if (!*++data)
@@ -5302,7 +5302,7 @@ int LYscanFloat2(const char **source, float *result)
 #ifdef _WIN32_WINNT
 #define WIN32_FIX (float)
 #else
-#define WIN32_FIX /* nothing */
+#define WIN32_FIX		/* nothing */
 #endif
 	    *result = WIN32_FIX strtol(src, &temp, 10);
 	    src = temp;
@@ -5994,7 +5994,7 @@ char *LYSafeGets(char **src,
     return result;
 }
 
-#ifdef EXP_CMD_LOGGING
+#ifdef USE_CMD_LOGGING
 static FILE *cmd_logfile;
 static FILE *cmd_script;
 
@@ -6111,4 +6111,4 @@ void LYCloseCmdLogfile(void)
     FREE(lynx_cmd_logfile);
     FREE(lynx_cmd_script);
 }
-#endif /* EXP_CMD_LOGGING */
+#endif /* USE_CMD_LOGGING */
diff --git a/src/LYStrings.h b/src/LYStrings.h
index 207a7be7..4f2ab677 100644
--- a/src/LYStrings.h
+++ b/src/LYStrings.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYStrings.h,v 1.72 2009/01/25 19:49:28 tom Exp $
+ * $LynxId: LYStrings.h,v 1.74 2009/11/21 17:05:33 Bela.Lubkin Exp $
  */
 #ifndef LYSTRINGS_H
 #define LYSTRINGS_H
@@ -81,8 +81,6 @@ extern "C" {
 						  int *nstartp,
 						  int *nendp);
 
-#define non_empty(s) !isEmpty(s)
-
 #define LYno_attr_mb_strstr(chptr, tarptr, utf_flag, count_gcells, nstartp, nendp) \
 	(case_sensitive \
 	    ? LYno_attr_mbcs_strstr(chptr, tarptr, utf_flag, count_gcells, nstartp, nendp) \
@@ -110,7 +108,7 @@ extern "C" {
 
     extern char *LYSafeGets(char **src, FILE *fp);
 
-#ifdef EXP_CMD_LOGGING
+#ifdef USE_CMD_LOGGING
     extern BOOL LYHaveCmdScript(void);
     extern int LYReadCmdKey(int mode);
     extern void LYCloseCmdLogfile(void);
diff --git a/src/LYUtils.c b/src/LYUtils.c
index 1781ef22..e4439c73 100644
--- a/src/LYUtils.c
+++ b/src/LYUtils.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYUtils.c,v 1.188 2009/08/25 22:36:48 tom Exp $
+ * $LynxId: LYUtils.c,v 1.193 2009/11/22 22:30:06 tom Exp $
  */
 #include <HTUtils.h>
 #include <HTTCP.h>
@@ -160,9 +160,9 @@ extern int BSDselect(int nfds, fd_set * readfds, fd_set * writefds,
  * 'O'ption page, for which Lynx will store a temporary filename even when
  * it no longer applies, since it will reuse that filename at a later time.
  */
-#ifdef EXP_RAND_TEMPNAME
+#ifdef USE_RAND_TEMPNAME
 #if defined(LYNX_RAND_MAX)
-#define USE_RAND_TEMPNAME 1
+#define HAVE_RAND_TEMPNAME 1
 #define MAX_TEMPNAME 10000
 #ifndef BITS_PER_CHAR
 #define BITS_PER_CHAR 8
@@ -281,7 +281,7 @@ char *LYGetEnv(const char *name)
  * Turkish locales tolower("I") is not "i". That's fatal for case
  * sensitive operations with charset names, HTML tags etc.
  */
-#ifdef EXP_ASCII_CTYPES
+#ifdef USE_ASCII_CTYPES
 int ascii_tolower(int i)
 {
     if (91 > i && i > 64)
@@ -305,7 +305,7 @@ int ascii_isupper(int i)
     else
 	return 0;
 }
-#endif /* EXP_ASCII_CTYPES */
+#endif /* USE_ASCII_CTYPES */
 
 /*
  * Check for UTF-8 data, returning the length past the first character.
@@ -2803,7 +2803,7 @@ BOOLEAN LYCanReadFile(const char *filename)
 {
     FILE *fp;
 
-    if (!isEmpty(filename)) {
+    if (non_empty(filename)) {
 	if ((fp = fopen(filename, "r")) != 0) {
 	    return LYCloseInput(fp);
 	}
@@ -3421,7 +3421,7 @@ static int fmt_tempname(char *result,
 {
     int code;
 
-#ifdef USE_RAND_TEMPNAME
+#ifdef HAVE_RAND_TEMPNAME
 #define SIZE_TEMPNAME ((MAX_TEMPNAME / BITS_PER_CHAR) + 1)
     static BOOL first = TRUE;
     static int names_used = 0;
@@ -3438,7 +3438,7 @@ static int fmt_tempname(char *result,
     /*
      * Prefer a random value rather than a counter.
      */
-#ifdef USE_RAND_TEMPNAME
+#ifdef HAVE_RAND_TEMPNAME
     if (first) {
 	lynx_srand((unsigned) ((long) time((time_t *) 0) + (long) result));
 	first = FALSE;
@@ -4014,7 +4014,7 @@ void LYConvertToURL(char **AllocatedString,
     struct stat st;
 #endif /* !VMS */
 
-    if (!old_string || *old_string == '\0')
+    if (isEmpty(old_string))
 	return;
 
 #if defined(USE_DOS_DRIVES)
@@ -5039,13 +5039,13 @@ void Define_VMSLogical(char *LogicalName,
     $DESCRIPTOR(lvalue, "");
     $DESCRIPTOR(ltable, "LNM$PROCESS");
 
-    if (!LogicalName || *LogicalName == '\0')
+    if (isEmpty(LogicalName))
 	return;
 
     lname.dsc$w_length = strlen(LogicalName);
     lname.dsc$a_pointer = LogicalName;
 
-    if (!LogicalValue || *LogicalValue == '\0') {
+    if (isEmpty(LogicalValue)) {
 	lib$delete_logical(&lname, &ltable);
 	return;
     }
@@ -5239,7 +5239,7 @@ BOOLEAN LYPathOffHomeOK(char *fbuffer,
     /*
      * Make sure we have an fbuffer and a string in it.  - FM
      */
-    if (!fbuffer || fbuffer_size < 2 || fbuffer[0] == '\0') {
+    if (fbuffer_size < 2 || isEmpty(fbuffer)) {
 	return (FALSE);
     }
     StrAllocCopy(file, fbuffer);
@@ -7002,6 +7002,8 @@ int LYCopyFile(char *src,
 	    }
 	    LYCloseInput(fin);
 	}
+	CTRACE((tfp, "builtin copy ->%d\n\tsource=%s\n\ttarget=%s\n",
+		code, src, dst));
     }
 
     if (code) {
diff --git a/src/LYUtils.h b/src/LYUtils.h
index 7e7adabd..0486a31e 100644
--- a/src/LYUtils.h
+++ b/src/LYUtils.h
@@ -1,4 +1,4 @@
-/* $LynxId: LYUtils.h,v 1.80 2009/02/01 23:28:26 tom Exp $ */
+/* $LynxId: LYUtils.h,v 1.82 2009/11/21 15:46:24 tom Exp $ */
 #ifndef LYUTILS_H
 #define LYUTILS_H
 
@@ -206,7 +206,7 @@ extern "C" {
 #define IsOurFile(name) TRUE
 #endif
 
-#ifdef EXP_ASCII_CTYPES
+#ifdef USE_ASCII_CTYPES
     extern int ascii_tolower(int i);
     extern int ascii_toupper(int i);
     extern int ascii_isupper(int i);
@@ -269,7 +269,7 @@ extern "C" {
 #endif
 
 #if defined(WIN_EX)		/* 1997/10/16 (Thu) 20:13:28 */
-    extern char *HTDOS_short_name(char *path);
+    extern char *HTDOS_short_name(const char *path);
     extern char *w32_strerror(DWORD ercode);
 #endif
 
diff --git a/src/chrtrans/makeuctb.c b/src/chrtrans/makeuctb.c
index e36b8902..3afe5e38 100644
--- a/src/chrtrans/makeuctb.c
+++ b/src/chrtrans/makeuctb.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: makeuctb.c,v 1.39 2009/01/01 17:01:15 tom Exp $
+ * $LynxId: makeuctb.c,v 1.40 2009/11/21 15:46:24 tom Exp $
  *
  *  makeuctb.c, derived from conmakehash.c   - kw
  *
@@ -87,7 +87,7 @@ static void usage(void)
     done(EX_USAGE);
 }
 
-#ifdef EXP_ASCII_CTYPES
+#ifdef USE_ASCII_CTYPES
 int ascii_tolower(int i)
 {
     if (91 > i && i > 64)
diff --git a/userdefs.h b/userdefs.h
index 2df8335b..c082af81 100644
--- a/userdefs.h
+++ b/userdefs.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: userdefs.h,v 1.251 2009/09/06 11:08:26 tom Exp $
+ * $LynxId: userdefs.h,v 1.253 2009/11/21 16:35:19 tom Exp $
  *
  * Lynx - Hypertext navigation system
  *
@@ -360,13 +360,13 @@
  * Comment this line out to disable code that implements command logging
  * and scripting.
  */
-#define EXP_CMD_LOGGING 1
+#define USE_CMD_LOGGING 1
 
 /********************************
  * Comment this line out to disable code that randomizes the names given to
  * temporary files.
  */
-#define EXP_RAND_TEMPNAME 1
+#define USE_RAND_TEMPNAME 1
 
 /********************************
  * Comment this line out to let the user enter his/her email address