about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--CHANGES9
-rw-r--r--WWW/Library/Implementation/HTTP.c17
-rw-r--r--WWW/Library/Implementation/HTTP.h10
-rw-r--r--docs/README.cookies60
-rw-r--r--docs/README.options81
-rw-r--r--docs/README.sslcerts54
-rw-r--r--lynx.cfg14
-rw-r--r--src/HTAlert.c4
-rw-r--r--src/LYCurses.c4
-rw-r--r--src/LYCurses.h4
-rw-r--r--src/LYGlobalDefs.h3
-rw-r--r--src/LYJustify.h6
-rw-r--r--src/LYMain.c16
-rw-r--r--src/LYOptions.c52
-rw-r--r--src/LYReadCFG.c3
-rw-r--r--src/LYrcFile.c3
-rw-r--r--src/LYrcFile.h3
17 files changed, 264 insertions, 79 deletions
diff --git a/CHANGES b/CHANGES
index 0c926cd2..4bb6da6d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,8 +1,15 @@
--- $LynxId: CHANGES,v 1.382 2009/03/18 00:35:40 tom Exp $
+-- $LynxId: CHANGES,v 1.385 2009/04/07 22:43:52 tom Exp $
 ===============================================================================
 Changes since Lynx 2.8 release
 ===============================================================================
 
+2009-04-07 (2.8.7pre.2)
+* add TNS SNI support for the OpenSSL configuration -Phil Pennock
+* add docs/README.cookies and docs/README.options -Stefan Caunter
+* update docs/README.sslcerts -Stefan Caunter
+* add NO_PAUSE setting to lynx.cfg, .lynxrc and Options menu (request by
+  Stefan Caunter) -TD
+
 2009-03-17 (2.8.7pre.1)
 2009-03-17 (2.8.7dev.14)
 * modify command-passing for Win32/DOS to use double-quotes -TD
diff --git a/WWW/Library/Implementation/HTTP.c b/WWW/Library/Implementation/HTTP.c
index 3d87d441..7d8e8601 100644
--- a/WWW/Library/Implementation/HTTP.c
+++ b/WWW/Library/Implementation/HTTP.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTTP.c,v 1.106 2009/03/10 15:31:22 tom Exp $
+ * $LynxId: HTTP.c,v 1.107 2009/04/07 22:45:42 tom Exp $
  *
  * HyperText Tranfer Protocol	- Client implementation		HTTP.c
  * ==========================
@@ -59,7 +59,7 @@ struct _HTStream {
     HTStreamClass *isa;
 };
 
-BOOL reloading = FALSE;		/* Reloading => send no-cache pragma to proxy */
+BOOLEAN reloading = FALSE;	/* Reloading => send no-cache pragma to proxy */
 char *redirecting_url = NULL;	/* Location: value. */
 BOOL permanent_redirection = FALSE;	/* Got 301 status? */
 BOOL redirect_post_content = FALSE;	/* Don't convert to GET? */
@@ -661,10 +661,18 @@ static int HTLoadHTTP(const char *arg,
     if (did_connect || !strncmp(url, "https", 5)) {
 	SSL_handle = handle = HTGetSSLHandle();
 	SSL_set_fd(handle, s);
+	/* get host we're connecting to */
+	ssl_host = HTParse(url, "", PARSE_HOST);
+	ssl_host = StripIpv6Brackets(ssl_host);
 #if SSLEAY_VERSION_NUMBER >= 0x0900
 #ifndef USE_NSS_COMPAT_INCL
-	if (!try_tls)
+	if (!try_tls) {
 	    handle->options |= SSL_OP_NO_TLSv1;
+#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
+	} else {
+	    SSL_set_tlsext_host_name(handle, ssl_host);
+#endif
+	}
 #endif
 #endif /* SSLEAY_VERSION_NUMBER >= 0x0900 */
 	HTSSLInitPRNG();
@@ -777,9 +785,6 @@ static int HTLoadHTTP(const char *arg,
 	/* initialise status information */
 	status_sslcertcheck = 0;	/* 0 = no CN found in DN */
 	ssl_dn_start = ssl_dn;
-	/* get host we're connecting to */
-	ssl_host = HTParse(url, "", PARSE_HOST);
-	ssl_host = StripIpv6Brackets(ssl_host);
 
 	/* validate all CNs found in DN */
 	CTRACE((tfp, "Validating CNs in '%s'\n", ssl_dn_start));
diff --git a/WWW/Library/Implementation/HTTP.h b/WWW/Library/Implementation/HTTP.h
index 1d570322..f10c2fce 100644
--- a/WWW/Library/Implementation/HTTP.h
+++ b/WWW/Library/Implementation/HTTP.h
@@ -1,6 +1,8 @@
-/*                     /Net/dxcern/userd/timbl/hypertext/WWW/Library/Implementation/HTTP.html
-                                HYPERTEXT TRANFER PROTOCOL
-
+/*
+ * $LynxId: HTTP.h,v 1.10 2009/04/07 22:44:50 tom Exp $
+ *
+ * /Net/dxcern/userd/timbl/hypertext/WWW/Library/Implementation/HTTP.html
+ *                                HYPERTEXT TRANFER PROTOCOL
  */
 #ifndef HTTP_H
 #define HTTP_H
@@ -24,7 +26,7 @@ extern "C" {
 #define URL_MAIL_METHOD 3
 
     extern int ws_read_per_sec;
-    extern BOOL reloading;
+    extern BOOLEAN reloading;
     extern char *redirecting_url;
     extern BOOL permanent_redirection;
     extern BOOL redirect_post_content;
diff --git a/docs/README.cookies b/docs/README.cookies
new file mode 100644
index 00000000..af044f92
--- /dev/null
+++ b/docs/README.cookies
@@ -0,0 +1,60 @@
+README.cookies
+
+Cookie handling when using the lynx browser:
+
+General Usage on a unix system:
+
+Cookie handling may be set so that you read them in on session start up from a 
+saved file, and to restore all cookies to that file on session close.
+
+Warning and Disclaimer:
+
+The lynx browser provides great opportunity to examine and make decisions about 
+cookies by default, but some users just want the speed benefits of the lynx 
+browser without the prompting for a decision to accept or reject the cookie. 
+Should you think that this is your situation, please read this:
+
+There are a number of privacy issues with accepting all cookies blindly, not 
+the least of which is that you are storing evidence of your browsing activity 
+into a regular disk file. 
+
+You have been warned. There are many resources available that will provide you 
+with more information about making informed choices about this subject. 
+
+With that in mind, here is how to accept all cookies transparently and rapidly:
+
+The following .lynxrc or lynx.cfg settings provide the user with the ability 
+to by default accept all cookies transparently. 
+
+SET_COOKIES:TRUE
+ACCEPT_ALL_COOKIES:TRUE
+PERSISTENT_COOKIES:TRUE
+COOKIE_FILE:/path/to/directory/.lynx_cookies
+COOKIE_SAVE_FILE:/path/to/directory/.lynx_cookies
+COOKIE_LOOSE_INVALID_DOMAINS:sports.espn.go.com,espn.go.com,.go.com,
+FORCE_SSL_COOKIES_SECURE:FALSE
+
+You must have a "cookie save file" that you own and for which you have 
+read/write permission; cookies are flushed out to that disk location when you 
+exit lynx, and are read in for use at the start of a lynx session from there. 
+Cookies do not persist unless this happens. 
+
+If you wish to see for yourself that this actually happens, please use the 
+-trace command line option and then read the resulting file "Lynx.trace".
+It will show the cookies being read in at the start of a session, and being
+written out at the conclusion of a session.
+
+FORCE_SSL_COOKIES_SECURE is for ebay and the like, or they won't remember you;
+(their login is secure but everything else isn't, like a lot of big sites). 
+If lynx attempts to transmit the ebay cookie securely, it's not taken.
+This doesn't affect cookie acceptance but it's a functionality issue for users.
+
+The COOKIE_LOOSE_INVALID_DOMAINS is for botched cookies from sites you read a 
+lot. This causes a great deal of prompting and if you are a frequent site user
+you may want to convenience yourself with a set of loose invalid domains.
+
+
+Stef Caunter 
+http://caunter.ca/contact.html
+http://caunter.ca/README.cookies
+
diff --git a/docs/README.options b/docs/README.options
new file mode 100644
index 00000000..b388d4c3
--- /dev/null
+++ b/docs/README.options
@@ -0,0 +1,81 @@
+README.options
+
+Using the lynx browser [O]ptions configuration tool. 
+
+General Usage on a unix system:
+
+Press "O" at any time in your lynx session to access this utility page. 
+This is one of several custom "system" URLs that cause lynx to self-configure.
+
+Please note:
+Ensure and confirm that your [O]ptions session is flushed to disk, by selecting:
+
+Save options to disk: [_] before selecting "Accept Changes".
+
+This freshens your .lynxrc file, which is your default "personal" configuration
+for the lynx browser.  Otherwise you will only affect settings for your 
+individual session; they aren't remembered next time you use lynx, (since you
+actually did not tell lynx to remember them).
+
+This disk write to .lynxrc is not default behaviour for [O]ptions
+configurations. The lynx browser tends to tread lightly at first. Note that 
+you must first have permission on your system to create, write to and read
+from a .lynxrc file in your home directory.
+
+Using some of the menu items:
+
+User mode controls the amount of "on screen" help at the bottom of the screen.
+You get the familiar view of the link target you are on when you use ADVANCED
+user mode, and this also gives you the most top to bottom screen area. 
+ADVANCED user mode also allows for sub bookmark functionality (see below). 
+
+The (for now) command line only option --nomargins provides the largest 
+readable left to right screen coverage.
+
+Editor is for jumping to vi or whatever you prefer during local file edits
+and for textarea editing with ^Xe if you are filling out a form while browsing.
+
+Please see README.cookies for a brief cookie handling discussion.
+
+Multi-bookmarks allows several files to be your bookmarks; it will introduce
+a browse list of them if they are defined as below.
+
+Once the Multi-bookmarks setup on Options is done and has been written out to
+your .lynxrc (remember to Accept Changes and to Save Changes to disk),
+in .lynxrc you will see a list of 25 possible "other" bookmark files 
+(26 letters minus "A") - you need to then associate some of them with 
+(meaningful) filenames to get the Multi-bookmark menu.
+
+Note that the files must be relative to your home directory. 
+
+The best way to create and manage them is by using the MultiBookmarkMenu (MBM) 
+configuration tool selectable from the [O]ptions menu. 
+
+The MBM allows you to describe the sub bookmark, and name a file relative 
+to your home directory that will contain the html for the saved links.
+You populate one of the lettered sub bookmarks, describe it, and provide a 
+filename. ">" saves the edits, and ^G cancels edits.
+
+The sub bookmarks will be accessible by pressing the associated key from a
+menu when invoking the bookmark choice (lynx -book, or 'V' in a session), or 
+when saving new bookmarks. You can directly access your sub bookmarks by letter
+key alone by defining sub_bookmarks=ADVANCED in .lynxrc or lynx.cfg, if you 
+have ADVANCED general user mode selected as well.
+The Multi-bookmark submenu can still be seen in ADVANCED by pressing "=", and
+is always seen in STANDARD mode.
+
+They are seen in your .lynxrc like so:
+
+multi_bookmarkB=cars,Cars
+multi_bookmarkC=news,News
+multi_bookmarkD=sports,Sports
+
+Filename precedes description in .lynxrc, whereas in the MBM configuration
+utility, the description is the left column, and the filename is in the right
+column displayed.
+
+
+Stef Caunter 
+http://caunter.ca/contact.html
+http://caunter.ca/README.options
+
diff --git a/docs/README.sslcerts b/docs/README.sslcerts
index 4ad82a90..39c3dcda 100644
--- a/docs/README.sslcerts
+++ b/docs/README.sslcerts
@@ -1,11 +1,11 @@
-	Lynx SSL support for certificates - README.sslcerts file
+        Lynx SSL support for certificates - README.sslcerts file
 
 BACKGROUND:
 
 The original README.ssl document for lynx stated:
 
-	Note that the server... may not have a valid certificate. Lynx will not
-	complain, as it does not yet support certificates...
+        Note that the server... may not have a valid certificate. Lynx will not
+        complain, as it does not yet support certificates...
 
 Such lack of support is no longer the case.  Lynx now features excellent
 certificate management through the openssl project.  There is almost no
@@ -29,7 +29,7 @@ self-signed certificate from a known server source and have it be trusted by
 client programs.
 
 Briefly, the procedure will involve confirming the default system location for
-certificates, possibly setting values for SSL_CERT_DIR and SSL_CERT_FILE in
+certificates, setting values for SSL_CERT_DIR and SSL_CERT_FILE in
 the environment, and converting and hashing the certificates using openssl
 utilities to enable recognition.
 
@@ -51,8 +51,8 @@ The ability to turn off reporting of this error to the user was added to
 lynx2.8.5dev16 as the FORCE_SSL_PROMPT setting in lynx.cfg as noted in the
 CHANGELOG:
 
-	This lets the user decide whether to ignore prompting for questionable
-	aspects of an SSL connection.
+        This lets the user decide whether to ignore prompting for questionable
+        aspects of an SSL connection.
 
 While this is a convenient setting to employ when using lynx to script
 https -dumps, it by definition ignores the issue of certificate validity
@@ -114,13 +114,24 @@ Note also that there is no CA cert bundle distributed with OpenSSL. The
 OpenSSL team specifically decided NOT to do that. Getting a set of trusted
 certificates is left up to the installer.
 
-It is a fairly trivial procedure to pull the bundle of trusted root certs out
-of a recent version of Internet Explorer. The MirOS BSD project also provides
-them. The procedure to convert and install them is detailed later in this
-document, and if you simply need to have commercially provided certificates
-trusted by lynx, you can skip down a few lines to the INSTALLING OR UPDATING
+It is no longer a fairly trivial procedure to pull the bundle of trusted root certs out
+of a recent version of Internet Explorer. Multiple certificates are no longer 
+exportable as a DER formatted file; extraction of a single certificate is the only
+export for DER, and DER is what converts to PEM.
+
+Users with access to Apple OS X can export all certificates from Keychain Access System Roots as
+a .pem file. Place this in SSL_CERT_DIR and hash it and you're done.
+
+The MirOS BSD project also provides them. The procedure to convert and install them 
+is detailed later in this document, and if you simply need to have commercially provided 
+certificates trusted by lynx, you can skip down a few lines to the INSTALLING OR UPDATING
 THE CA BUNDLE section.
 
+Extracted Mozilla cert bundles are available for download from the curl project,
+http://curl.haxx.se/docs/caextract.html along with a script to extract from Mozilla
+source.
+
+
 INSTALLING A SELF-SIGNED CERTIFICATE:
 
 When you would like to trust a self-signed (non-commercial) certificate you will
@@ -153,7 +164,7 @@ INSTALLING OR UPDATING THE CA BUNDLE:
 Now would be a good time to check to see if you have the bundle of CA certs
 /usr/local/ssl/cert.pem, or to update them.
 
-CA bundles are available in various places, such as the MirBSD distribution,
+CA bundles are available in various places, such as the MirOS BSD distribution,
 for those who want to take that route, or you can extract the current bundle
 from a current version of Internet Explorer (export them all from IE and
 transfer it onto your system).
@@ -166,9 +177,10 @@ It includes the cacert.org certificate. Download the latest revision; read the
 file to see how to get the certs out.
 
 No hashing is necessary with this set of certs; it is already done; ignore
-the c_rehash usage below for this bundle.
+the c_rehash usage below for this bundle. Simply run `sh ssl.certs.shar` 
+in SSL_CERT_DIR.
 
-From IE certs extract as a PKCS7 file and need to be converted with something
+From IE 5.x certs extract as a PKCS7 file and need to be converted with something
 like:
 
 openssl pkcs7 -inform DER -in bundle.crt -outform PEM -out cert.pem \
@@ -208,10 +220,10 @@ All pem encoded certs in /usr/local/ssl/certs will now be recognized.
 
 SETTING AND EXPORTING ENVIRONMENT VARIABLES:
 
-If lynx is still not recognizing certs, environment variables may need
+If lynx is still not recognizing certs, environment variables need
 to be set; if on a sh type shell, the variables also need to be exported.
 
-The environment variables SSL_CERT_DIR and SSL_CERT_FILE only need to be set
+The environment variables SSL_CERT_DIR and SSL_CERT_FILE need to be set
 if a non-default location is used for certificates, or if certs just can't be
 found by lynx. They may be set as follows in /etc/profile, or a shell
 initialization .profile or .*shrc, if we run a non csh type shell, according
@@ -226,14 +238,15 @@ On csh type shells, you can use:
 setenv SSL_CERT_DIR "/usr/local/ssl/certs"
 setenv SSL_CERT_FILE "/usr/local/ssl/cert.pem"
 
-On many systems setting and exporting them makes all the difference. Apparently
-this is not an issue on other systems, but this might help someone
-somewhere.
-
 Note that the environment variable SSL_CERT_FILE applies to the cert-bundle
 if used outside of the default location (/usr/local/ssl/cert.pem) compiled
 into OpenSSL. There are issues with SSL_CERT_FILE in 0.9.6x versions of openssl.
 
+The configuration file lynx.cfg allows a system SSL_CERT_FILE variable to be set
+which can simplify matters. 
+
+SSL_CERT_FILE:/etc/ssl/certs/ca-certificates.crt
+
 Make sure you have FORCE_SSL_PROMPT set to PROMPT in lynx.cfg like so:
 
 FORCE_SSL_PROMPT:PROMPT
@@ -246,6 +259,7 @@ SSL error:self signed certificate-Continue? (y)
 A quick check confirms that these procedures have the same effect with ssl
 errors in the pine program.
 
+2003 updated 2009
 Stefan Caunter <stefan.caunter@mohawkcollege.ca>
 Mohawk College Department of Computer Science
 Hamilton Ontario Canada
diff --git a/lynx.cfg b/lynx.cfg
index f69a33d4..d2fd94a2 100644
--- a/lynx.cfg
+++ b/lynx.cfg
@@ -1,4 +1,4 @@
-# $LynxId: lynx.cfg,v 1.172 2009/03/18 00:33:22 tom Exp $
+# $LynxId: lynx.cfg,v 1.173 2009/04/07 00:18:25 tom Exp $
 # lynx.cfg file.
 # The default placement for this file is /usr/local/lib/lynx.cfg (Unix)
 #                                     or Lynx_Dir:lynx.cfg (VMS)
@@ -730,6 +730,7 @@ DEFAULT_INDEX_FILE:http://lynx.isc.org/
 .h2 INFOSECS
 .h2 MESSAGESECS
 .h2 ALERTSECS
+.h2 NO_PAUSE
 # The following definitions set the number of seconds for
 # pauses following statusline messages that would otherwise be
 # replaced immediately, and are more important than the unpaused
@@ -746,9 +747,13 @@ DEFAULT_INDEX_FILE:http://lynx.isc.org/
 # SVr4-curses implementations support time delays in milliseconds,
 # hence the value may be given shorter, e.g., 0.5
 #
+# Use the NO_PAUSE option (like the command-line -nopause) to override
+# all of the delay times.
+#
 #INFOSECS:1
 #MESSAGESECS:2
 #ALERTSECS:3
+#NO_PAUSE:FALSE
 
 .h2 DEBUGSECS
 # Set DEBUGSECS to a nonzero value to slow down progress messages
@@ -1400,9 +1405,9 @@ DEFAULT_INDEX_FILE:http://lynx.isc.org/
 # enough for reasonable usage; if they are very high, some sites may present
 # undue performance waste.
 #
-#max_cookies_domain:50
-#max_cookies_global:500
-#max_cookies_buffer:4096
+#MAX_COOKIES_DOMAIN:50
+#MAX_COOKIES_GLOBAL:500
+#MAX_COOKIES_BUFFER:4096
 
 .h2 PERSISTENT_COOKIES
 # PERSISTENT_COOKIES indicates that cookies should be read at startup from
@@ -3440,6 +3445,7 @@ COLOR:6:brightred:black
 #ENABLE_LYNXRC:make_links_for_all_images:OFF
 #ENABLE_LYNXRC:make_pseudo_alts_for_inlines:OFF
 #ENABLE_LYNXRC:multi_bookmark:ON
+#ENABLE_LYNXRC:no_pause:OFF
 #ENABLE_LYNXRC:personal_mail_address:ON
 #ENABLE_LYNXRC:preferred_charset:ON
 #ENABLE_LYNXRC:preferred_encoding:OFF
diff --git a/src/HTAlert.c b/src/HTAlert.c
index ee83f3af..aba28b9e 100644
--- a/src/HTAlert.c
+++ b/src/HTAlert.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTAlert.c,v 1.84 2009/03/10 15:22:07 tom Exp $
+ * $LynxId: HTAlert.c,v 1.85 2009/04/07 00:09:34 tom Exp $
  *
  *	Displaying messages and getting input for Lynx Browser
  *	==========================================================
@@ -1123,7 +1123,7 @@ int HTConfirmPostRedirect(const char *Redirecting_url, int server_status)
     return (result);
 }
 
-#define okToSleep() (!crawl && !traversal && LYCursesON)
+#define okToSleep() (!crawl && !traversal && LYCursesON && !no_pause)
 
 /*
  * Sleep for the given message class's time.
diff --git a/src/LYCurses.c b/src/LYCurses.c
index e272269e..258873ee 100644
--- a/src/LYCurses.c
+++ b/src/LYCurses.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYCurses.c,v 1.140 2009/03/10 15:33:34 tom Exp $ */
+/* $LynxId: LYCurses.c,v 1.141 2009/04/07 00:00:40 tom Exp $ */
 #include <HTUtils.h>
 #include <HTAlert.h>
 
@@ -69,7 +69,7 @@ WINDOW *LYwin = 0;
 int LYshiftWin = 0;
 int LYwideLines = FALSE;
 int LYtableCols = 0;		/* in 1/12 of screen width */
-BOOL LYuseCursesPads = TRUE;	/* use pads for left/right shifting */
+BOOLEAN LYuseCursesPads = TRUE;	/* use pads for left/right shifting */
 #endif
 
 /*
diff --git a/src/LYCurses.h b/src/LYCurses.h
index 18a611fa..0753e7aa 100644
--- a/src/LYCurses.h
+++ b/src/LYCurses.h
@@ -1,4 +1,4 @@
-/* $LynxId: LYCurses.h,v 1.79 2009/01/03 16:55:08 tom Exp $ */
+/* $LynxId: LYCurses.h,v 1.80 2009/04/07 00:03:47 tom Exp $ */
 #ifndef LYCURSES_H
 #define LYCURSES_H
 
@@ -443,7 +443,7 @@ extern "C" {
     extern int LYshiftWin;
     extern int LYwideLines;
     extern int LYtableCols;
-    extern BOOL LYuseCursesPads;
+    extern BOOLEAN LYuseCursesPads;
 
 #else
 #define LYwin stdscr
diff --git a/src/LYGlobalDefs.h b/src/LYGlobalDefs.h
index b8d7fea3..1b5247d2 100644
--- a/src/LYGlobalDefs.h
+++ b/src/LYGlobalDefs.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYGlobalDefs.h,v 1.117 2009/03/11 00:29:55 tom Exp $
+ * $LynxId: LYGlobalDefs.h,v 1.118 2009/04/07 00:11:01 tom Exp $
  *
  * global variable definitions
  */
@@ -383,6 +383,7 @@ extern "C" {
     extern BOOLEAN use_underscore;
     extern BOOLEAN no_list;
     extern BOOLEAN no_margins;
+    extern BOOLEAN no_pause;
     extern BOOLEAN no_title;
     extern BOOLEAN historical_comments;
     extern BOOLEAN minimal_comments;
diff --git a/src/LYJustify.h b/src/LYJustify.h
index 43e22bd0..209d58a8 100644
--- a/src/LYJustify.h
+++ b/src/LYJustify.h
@@ -1,4 +1,7 @@
-/* Justification for lynx - implemented by Vlad Harchev <hvv@hippo.ru>
+/*
+ * $LynxId: LYJustify.h,v 1.7 2009/04/07 00:24:15 tom Exp $
+ *
+ * Justification for lynx - implemented by Vlad Harchev <hvv@hippo.ru>
  * 11 July 1999
  */
 
@@ -11,7 +14,6 @@
 extern "C" {
 #endif
 #ifdef EXP_JUSTIFY_ELTS
-    extern BOOL ok_justify;
     extern BOOL can_justify_here;
     extern BOOL can_justify_here_saved;
 
diff --git a/src/LYMain.c b/src/LYMain.c
index 83c879a4..40f1833c 100644
--- a/src/LYMain.c
+++ b/src/LYMain.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYMain.c,v 1.198 2009/03/11 00:29:55 tom Exp $
+ * $LynxId: LYMain.c,v 1.199 2009/04/07 00:10:20 tom Exp $
  */
 #include <HTUtils.h>
 #include <HTTP.h>
@@ -388,6 +388,7 @@ BOOLEAN more_text = FALSE;	/* is there more text to display? */
 BOOLEAN more_links = FALSE;	/* Links beyond a displayed page with no links? */
 BOOLEAN no_list = FALSE;
 BOOLEAN no_margins = FALSE;
+BOOLEAN no_pause = FALSE;
 BOOLEAN no_title = FALSE;
 BOOLEAN no_url_redirection = FALSE;	/* Don't follow URL redirections */
 BOOLEAN pseudo_inline_alts = MAKE_PSEUDO_ALTS_FOR_INLINES;
@@ -2360,19 +2361,10 @@ void reload_read_cfg(void)
 }
 #endif /* !NO_CONFIG_INFO */
 
-static void disable_pausing(void)
-{
-    AlertSecs = 0;
-    DebugSecs = 0;
-    InfoSecs = 0;
-    MessageSecs = 0;
-    ReplaySecs = 0;
-}
-
 static void force_dump_mode(void)
 {
     dump_output_immediately = TRUE;
-    disable_pausing();
+    no_pause = TRUE;
     LYcols = DFT_COLS;
 }
 
@@ -2823,7 +2815,7 @@ static int nocolor_fun(char *next_arg GCC_UNUSED)
 /* -nopause */
 static int nopause_fun(char *next_arg GCC_UNUSED)
 {
-    disable_pausing();
+    no_pause = TRUE;
     return 0;
 }
 
diff --git a/src/LYOptions.c b/src/LYOptions.c
index 5f1e386c..96402e87 100644
--- a/src/LYOptions.c
+++ b/src/LYOptions.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYOptions.c,v 1.128 2009/01/19 23:32:01 tom Exp $ */
+/* $LynxId: LYOptions.c,v 1.129 2009/04/07 00:35:49 tom Exp $ */
 #include <HTUtils.h>
 #include <HTFTP.h>
 #include <HTTP.h>		/* 'reloading' flag */
@@ -396,7 +396,7 @@ void LYoptions(void)
     }
 
     old_use_assume_charset =
-	use_assume_charset = (BOOL) (user_mode == ADVANCED_MODE);
+	use_assume_charset = (BOOLEAN) (user_mode == ADVANCED_MODE);
 
   draw_options:
 
@@ -973,7 +973,7 @@ void LYoptions(void)
 				     LYCharSet_UC[UCLYhndl_for_unspec].MIMEname);
 		    }
 		    if (HTCJK != JAPANESE)
-			LYRawMode = (BOOL) (UCLYhndl_for_unspec == current_char_set);
+			LYRawMode = (BOOLEAN) (UCLYhndl_for_unspec == current_char_set);
 		    HTMLSetUseDefaultRawMode(current_char_set, LYRawMode);
 		    HTMLSetCharacterHandling(current_char_set);
 		    CurrentAssumeCharSet = UCLYhndl_for_unspec;
@@ -1248,7 +1248,7 @@ void LYoptions(void)
 					       choices, 4, FALSE, FALSE);
 		    }
 #if defined(COLOR_CURSES)
-		    again = (BOOL) (chosen == SHOW_COLOR_ON && !has_colors());
+		    again = (BOOLEAN) (chosen == SHOW_COLOR_ON && !has_colors());
 		    if (again) {
 			char *terminal = LYGetEnv("TERM");
 
@@ -1401,13 +1401,13 @@ void LYoptions(void)
 		user_mode = LYChooseEnum(user_mode,
 					 L_User_Mode, -1,
 					 userMode_choices);
-		use_assume_charset = (BOOL) (user_mode >= 2);
+		use_assume_charset = (BOOLEAN) (user_mode >= 2);
 	    } else {
 		user_mode = LYChoosePopup(user_mode,
 					  L_User_Mode, -1,
 					  userMode_choices,
 					  3, FALSE, FALSE);
-		use_assume_charset = (BOOL) (user_mode >= 2);
+		use_assume_charset = (BOOLEAN) (user_mode >= 2);
 #if defined(VMS) || defined(USE_SLANG)
 		if (use_assume_charset == old_use_assume_charset) {
 		    LYmove(L_User_Mode, COL_OPTION_VALUES);
@@ -2326,6 +2326,7 @@ static const char *locale_charset_string = RC_LOCALE_CHARSET;
  * File Management Options
  */
 static const char *show_dotfiles_string = RC_SHOW_DOTFILES;
+static const char *no_pause_string = RC_NO_PAUSE;
 
 #ifdef DIRED_SUPPORT
 static const char *dired_list_string = RC_DIR_LIST_STYLE;
@@ -2750,7 +2751,7 @@ int postoptions(DocInfo *newdoc)
 	/* Emacs keys: ON/OFF */
 	if (!strcmp(data[i].tag, emacs_keys_string)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    if ((emacs_keys = (BOOL) code) != FALSE) {
+	    if ((emacs_keys = (BOOLEAN) code) != FALSE) {
 		set_emacs_keys();
 	    } else {
 		reset_emacs_keys();
@@ -2826,7 +2827,7 @@ int postoptions(DocInfo *newdoc)
 	/* Search Type: SELECT */
 	if (!strcmp(data[i].tag, search_type_string)
 	    && GetOptValues(search_type_values, data[i].value, &code)) {
-	    case_sensitive = (BOOL) code;
+	    case_sensitive = (BOOLEAN) code;
 	}
 
 	/* HTML error tolerance: SELECT */
@@ -2842,7 +2843,7 @@ int postoptions(DocInfo *newdoc)
 	/* Select Popups: ON/OFF */
 	if (!strcmp(data[i].tag, select_popups_string)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    LYSelectPopups = (BOOL) code;
+	    LYSelectPopups = (BOOLEAN) code;
 	}
 #if defined(USE_SLANG) || defined(COLOR_CURSES)
 	/* Show Color: SELECT */
@@ -2864,19 +2865,19 @@ int postoptions(DocInfo *newdoc)
 	/* Show Cursor: ON/OFF */
 	if (!strcmp(data[i].tag, show_cursor_string)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    LYShowCursor = (BOOL) code;
+	    LYShowCursor = (BOOLEAN) code;
 	}
 
 	/* Underline links: ON/OFF */
 	if (!strcmp(data[i].tag, underline_links_string)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    LYUnderlineLinks = (BOOL) code;
+	    LYUnderlineLinks = (BOOLEAN) code;
 	}
 #ifdef USE_SCROLLBAR
 	/* Show Scrollbar: ON/OFF */
 	if (!strcmp(data[i].tag, show_scrollbar_string)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    LYShowScrollbar = (BOOL) code;
+	    LYShowScrollbar = (BOOLEAN) code;
 	    need_reload = TRUE;
 	}
 #endif
@@ -2924,7 +2925,7 @@ int postoptions(DocInfo *newdoc)
 	if (!strcmp(data[i].tag, verbose_images_string)
 	    && GetOptValues(verbose_images_type_values, data[i].value, &code)) {
 	    if (verbose_img != code) {
-		verbose_img = (BOOL) code;
+		verbose_img = (BOOLEAN) code;
 		need_reload = TRUE;
 	    }
 	}
@@ -2932,7 +2933,7 @@ int postoptions(DocInfo *newdoc)
 	/* VI Keys: ON/OFF */
 	if (!strcmp(data[i].tag, vi_keys_string)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    if ((vi_keys = (BOOL) code) != FALSE) {
+	    if ((vi_keys = (BOOLEAN) code) != FALSE) {
 		set_vi_keys();
 	    } else {
 		reset_vi_keys();
@@ -2955,7 +2956,7 @@ int postoptions(DocInfo *newdoc)
 	/* Auto Session: ON/OFF */
 	if (!strcmp(data[i].tag, auto_session_string)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    LYAutoSession = (BOOL) code;
+	    LYAutoSession = (BOOLEAN) code;
 	}
 
 	/* Default Session filename: INPUT */
@@ -2987,7 +2988,7 @@ int postoptions(DocInfo *newdoc)
 	/* Use locale-based character set: ON/OFF */
 	if (!strcmp(data[i].tag, locale_charset_string)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    LYLocaleCharset = (BOOL) code;
+	    LYLocaleCharset = (BOOLEAN) code;
 	}
 #endif
 
@@ -3006,14 +3007,14 @@ int postoptions(DocInfo *newdoc)
 	/* Raw Mode: ON/OFF */
 	if (!strcmp(data[i].tag, raw_mode_string)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    LYRawMode = (BOOL) code;
+	    LYRawMode = (BOOLEAN) code;
 	}
 #ifndef DISABLE_FTP
 	/*
 	 * passive ftp: ON/OFF
 	 */
 	if (!strcmp(data[i].tag, passive_ftp_string)) {
-	    ftp_passive = (BOOL) code;
+	    ftp_passive = (BOOLEAN) code;
 	}
 
 	/*
@@ -3040,7 +3041,13 @@ int postoptions(DocInfo *newdoc)
 	/* Show dot files: ON/OFF */
 	if (!strcmp(data[i].tag, show_dotfiles_string) && (!no_dotfiles)
 	    && GetOptValues(bool_values, data[i].value, &code)) {
-	    show_dotfiles = (BOOL) code;
+	    show_dotfiles = (BOOLEAN) code;
+	}
+
+	/* Pause when showing messages: ON/OFF */
+	if (!strcmp(data[i].tag, no_pause_string)
+	    && GetOptValues(bool_values, data[i].value, &code)) {
+	    no_pause = (BOOLEAN) !code;
 	}
 #ifdef USE_READPROGRESS
 	/* Show Transfer Rate: enumerated value */
@@ -3126,7 +3133,7 @@ int postoptions(DocInfo *newdoc)
 #endif
 	}
 	if (assume_char_set_changed && HTCJK != JAPANESE) {
-	    LYRawMode = (BOOL) (UCLYhndl_for_unspec == current_char_set);
+	    LYRawMode = (BOOLEAN) (UCLYhndl_for_unspec == current_char_set);
 	}
 	if (raw_mode_old != LYRawMode || assume_char_set_changed) {
 	    /*
@@ -3870,6 +3877,11 @@ static int gen_options(char **newfile)
     EndSelect(fp0);
 #endif /* ENABLE_OPTS_CHANGE_EXEC */
 
+    PutLabel(fp0, gettext("Pause when showing message"), no_pause_string);
+    BeginSelect(fp0, no_pause_string);
+    PutOptValues(fp0, !no_pause, bool_values);
+    EndSelect(fp0);
+
 #ifdef USE_READPROGRESS
     /* Show transfer rate: SELECT */
     PutLabel(fp0, gettext("Show transfer rate"), show_rate_string);
diff --git a/src/LYReadCFG.c b/src/LYReadCFG.c
index 67b66e52..0e7e43e2 100644
--- a/src/LYReadCFG.c
+++ b/src/LYReadCFG.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYReadCFG.c,v 1.137 2009/01/29 01:02:26 tom Exp $
+ * $LynxId: LYReadCFG.c,v 1.138 2009/04/07 00:13:11 tom Exp $
  */
 #ifndef NO_RULES
 #include <HTRules.h>
@@ -1484,6 +1484,7 @@ static Config_Type Config_Table [] =
      PARSE_SET(RC_NO_FROM_HEADER,       LYNoFromHeader),
      PARSE_SET(RC_NO_ISMAP_IF_USEMAP,   LYNoISMAPifUSEMAP),
      PARSE_SET(RC_NO_MARGINS,           no_margins),
+     PARSE_SET(RC_NO_PAUSE,             no_pause),
      PARSE_Env(RC_NO_PROXY,             0),
      PARSE_SET(RC_NO_REFERER_HEADER,    LYNoRefererHeader),
      PARSE_SET(RC_NO_TABLE_CENTER,      no_table_center),
diff --git a/src/LYrcFile.c b/src/LYrcFile.c
index 789d8305..7954c336 100644
--- a/src/LYrcFile.c
+++ b/src/LYrcFile.c
@@ -1,4 +1,4 @@
-/* $LynxId: LYrcFile.c,v 1.75 2009/01/01 23:10:59 tom Exp $ */
+/* $LynxId: LYrcFile.c,v 1.76 2009/04/07 00:20:14 tom Exp $ */
 #include <HTUtils.h>
 #include <HTFTP.h>
 #include <LYUtils.h>
@@ -603,6 +603,7 @@ in the Visited Links Page.\n\
     MAYBE_SET(RC_AUTO_SESSION,		LYAutoSession,	MSG_ENABLE_LYNXRC),
     MAYBE_STR(RC_SESSION_FILE,		LYSessionFile,	MSG_ENABLE_LYNXRC),
 #endif
+    MAYBE_SET(RC_NO_PAUSE,		no_pause,	MSG_ENABLE_LYNXRC),
 
     PARSE_NIL
 };
diff --git a/src/LYrcFile.h b/src/LYrcFile.h
index 5ad055c5..07506bba 100644
--- a/src/LYrcFile.h
+++ b/src/LYrcFile.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: LYrcFile.h,v 1.29 2008/12/26 18:34:05 tom Exp $
+ * $LynxId: LYrcFile.h,v 1.30 2009/04/06 23:07:40 tom Exp $
  */
 #ifndef LYRCFILE_H
 #define LYRCFILE_H
@@ -156,6 +156,7 @@
 #define RC_NO_FROM_HEADER               "no_from_header"
 #define RC_NO_ISMAP_IF_USEMAP           "no_ismap_if_usemap"
 #define RC_NO_MARGINS                   "no_margins"
+#define RC_NO_PAUSE                     "no_pause"
 #define RC_NO_PROXY                     "no_proxy"
 #define RC_NO_REFERER_HEADER            "no_referer_header"
 #define RC_NO_TABLE_CENTER              "no_table_center"