�ɲɾ�����ӯ�����һ��ˣ��������С���˴��ͣ�������P���ҹ��ñ˽��ά�Բ��������˸߸ԣ�������ơ��ҹ��ñ�����ά�Բ���ˡ���˳^�ӣ������ӡ� ���ͯj�ӣ��ƺ���ӣ� ? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!PK0]K INSTALLATIONnu[ Lynx Installation Guide This file describes how to compile and install Lynx. A description of Lynx can be found in the README file. Lynx has been ported to UN*X, VMS, Win32 and 386DOS. The procedures for compiling these ports are quite divergent and are detailed respectively in Sections II, III, IV and V. General installation, problem solving and environment variables are covered in Sections VI and VII. There is also a PROBLEMS file in the same directory as INSTALLATION which contains advice for special problems people have encountered, especially for particular machines and operating systems. If you still have difficulties, send an e-mail message to the Lynx-Dev mailing list (see the README file). Try to include information about your system, the name and version of your compiler, which curses library you are using and the compile-time errors. Be sure to say what version and image-number of Lynx you are trying to build (alternately the top date of the CHANGES file). If you don't understand what one of the defines means, try the README.defines and *.announce files in the docs subdirectory. The docs/CHANGES* files record the entire development history of Lynx and are an invaluable resource for understanding how Lynx should perform. First, you must configure Lynx for your system regardless of the port you use. Follow the instructions given immediately below to configure for your system, and then go to the respective section concerning the port you wish to compile. ------------------------------------------------------------------------------- I. General configuration instructions (all ports). Step 1. Compile-time Variables. There are a few variables that MUST be defined if Lynx is to build and there are others you may want to change. Lynx MUST be able to find lynx.cfg at start-up: using configure (e.g. with UNIX or Cygwin), its location is best set with --sysconfdir ; you can check in lynx_cfg.h after configure has run, if you wish. otherwise, you can use LYNX_CFG_FILE in userdefs.h , environment variable LYNX_CFG or the -cfg command-line option. If you are using configure, you need not make any changes in userdefs.h . There are a few variables you can't define with configure --options but can define in userdefs.h , e.g. numbering fields as well as links. Many variables which can be defined with configure or userdefs.h can also be defined in lynx.cfg or via the Options Menu. Lynx implements Native Language Support. Read "ABOUT-NLS", if you want to build an international version of Lynx or tailor status-line prompts, messages and warnings to the requirements of your site. Step 2. Run-time Variables. Read lynx.cfg thoroughly, as many Lynx features and how to use them are explained there, in some cases ONLY there. Set up local printers, downloaders, assumed character set, key mapping and colors in lynx.cfg . Also see the sample mime.types, mailcap and jumps files in the samples subdirectory. Step 3. Alternative Character Sets. You may skip this, if you are not interested in special characters and all local files or WWW pages you will view will use the ISO-8859-1 "ISO Latin 1" Western European character set. If you will be running Lynx in an environment with different incompatible character sets, configure CHARACTER_SET (the Display character set) and ASSUME_LOCAL_CHARSET to work correctly before creating bookmark files and other such items: read lynx.cfg for detailed instructions. Additional character sets and their properties may be defined with tables in the src/chrtrans directory: see the README.* files therein. Step 4. News. Set NNTPSERVER in lynx.cfg to your site's NNTP server or set the environment variable externally. For posting to be enabled, NEWS_POSTING must be TRUE in userdefs.h or lynx.cfg. Also define LYNX_SIG_FILE in userdefs.h or lynx.cfg , so that it points to users' signature files for appending to messages. Step 5. Anonymous Accounts *** VERY IMPORTANT!!!!! *** If you are building Lynx for personal use only, you can skip this. If you are setting up anonymous accounts to use Lynx captively, i.e. making Web access publicly available to users who should not be allowed any other type of access to your system, you are STRONGLY advised to use the -anonymous command-line option: if you do not use this option, users may be able to gain access to all readable files on your machine! Many implementations of telnetd allow passing of environment variables, which might be used to modify the environment in anonymous accounts, allowing mischief or damage by malicious users, so make sure the wrapper uses the -cfg and -homepage switches to specify lynx.cfg and start-file, rather than relying on variables LYNX_CFG, LYNX_CFG_FILE and WWW_HOME. ------------------------------------------------------------------------------- II. Compile instructions -- UNIX 1a. Auto-configure. The auto-configure script uses autoconf2.13 to generate a Bourne shell script, configure, which creates "makefile" and "lynx_cfg.h". If you are on a UNIX platform, the easiest way to build Lynx is to type: ./configure and make NOTE: Configure has a number of useful options. Please see below. NOTE: The 'configure' script generates auxiliary files "config.status" "config.cache" and "config.log". Normally you will not notice these; they are created automatically and removed by a "make distclean". + If you wish to rebuild Lynx with a new host, or change ANY of the parameters which are stored in config.cache, you MUST first remove the config.cache file before running configure; its options do NOT override the settings in that file. + The config.status file is a script which creates (or regenerates) the files created by the configure script. Please report problems in the configure/make process by including a copy of config.status, config.cache and config.log, as well as the pertinent compiler diagnostics. See the note in aclocal.m4 for special instructions if you must modify the configure script. NOTE: Lynx is a curses-based application, so you must have a curses library available to link to. Native curses (on the system when it was installed) are often broken, so you may get superior performance if you have either "ncurses" ("ftp://ftp.invisible-island.net/ncurses") or "slang" ("ftp://space.mit.edu/pub/davis/slang"). If you install these libraries in your home directory or a non-default location, you may need to set the CPPFLAGS (full path to include files) and LIBS (full path to library files) environment variables BEFORE running configure. See "1d. Environment". Use the "--with-screen=ncurses" or "--with-screen=slang" option. Note that while lynx will build with a variety of versions of curses and ncurses, some will be less satisfactory. Versions of ncurses before 1.9.9g will not render color properly. Some other versions of curses do not display color at all. Likewise, lynx may not build with old versions of slang, e.g., before 0.99-38, because slang's interfaces change periodically. Note compiler/system specific problems below. See also: https://invisible-island.net/ncurses/ncurses.faq.html 1b. Platforms. Configure should work properly on any Unix-style system. It has been tested on the following platforms. AIX 3.2.5 (cc w/ curses) BeOS 4.5 (gcc w/ ncurses) CLIX (cc w/ curses & ncurses) DGUX Digital Unix 3.2C and 4.0 (gcc & cc w/ curses, ncurses & slang) FreeBSD 2.1.5, 3.1 (gcc 2.6.3 w/ curses & ncurses) HP-UX (K&R and ANSI cc, gcc w/ curses, ncurses & slang) IRIX 5.2 and 6.2 (cc & gcc w/ curses, ncurses & slang) Linux 2.0.0 (gcc 2.7.2 w/ curses, ncurses & slang) MkLinux 2.1.5 (gcc 2.7.2.1) NetBSD NEXTSTEP 3.3 (gcc 2.7.2.3 w/ curses) OS/2 EMX 0.9c (ncurses) SCO OpenServer (cc w/ curses) Solaris 2.5, 2.6 & 2.7 (cc & gcc w/ curses, ncurses & slang) SunOS 4.1 (cc w/ curses, gcc w/ ncurses & slang) OS390 and BS2000. NOTE: SunOS and HP-UX come with a bundled K&R compiler, which is only useful for compiling with the bundled curses. Both ncurses and slang require a compiler that recognizes prototypes. 1c. Options To get a list of the configure script's options, type "./configure --help". Below is an alphabetical listing of the Lynx-specific options. The actual order shown by the -help option is different. See "docs/README.defines" for information on defines for which there are no option switches. --datadir Defines the location where you want the documentation files installed. The configure script constructs makefile actions to install lynx.cfg modified to reflect this in the HELPFILE setting. (For platforms which do not support a configure script, such as MS-DOS, Win32 and VMS, you must edit lynx.cfg). --disable-addrlist-page (prevent defining USE_ADDRLIST_PAGE) Turn off code that displays an alternative list-page, bound to 'A' rather than 'l', which always lists URLs rather than titles. --disable-alt-bindings (prevent defining USE_ALT_BINDINGS) Compiles-in an alternative set of line-edit bindings, in addition to the default bindings. --disable-bibp-urls (define DISABLE_BIBP) Disable (do not compile code) support for bibp: URLs. --disable-color-style (define USE_COLOR_STYLE) Use this option to disable optional color style. This is implemented for modern curses implementations, e.g., those that support color. Before lynx 2.8.6dev.18, this option was disabled by default. You can achieve a similar color effect to match the non-color-style (but still allowing users to use color-style) by using the --without-lss-file option. --disable-config-info (define NO_CONFIG_INFO) Use this option to disable extended browsable configuration information (a screen that shows the result of the configuration script, as well as extended lynx.cfg viewing with a pointer to the lynx.cfg file and additional functionality). --disable-dired (prevent defining DIRED_SUPPORT) Use this option to disable the optional directory-editor. Lynx supports directory editing (DirEd) for local directories. This allows users to do things like view, copy and remove files using a tabular display of the directory and single-keystroke commands instead of using the command line. From inside Lynx, the keystroke sequence "g." switches Lynx to DirEd mode on the current directory. If you're building a Lynx that is to be used as a kind of restricted shell for users who do not have access to the command line and should not have access to equivalent capabilities, you probably want to disable DirEd with this option. You can also disable some DirEd functions while allowing others. If you have disabled DirEd completely, you can ignore all the more specific DirEd options. All DirEd menu functions that were enabled on compilation can be disabled or modified at run time via DIRED_MENU symbols in lynx.cfg. --disable-dired-dearchive (define ARCHIVE_ONLY) Use this option to prevent DirEd from extracting files from an archive file. --disable-dired-gzip (prevent defining OK_GZIP) Use this option to prevent DirEd from using gzip and gunzip. --disable-dired-override (prevent defining OK_OVERRIDE) Normally, in DirEd directory viewing mode some key mappings are overridden. Use this option to disable DirEd keymap overriding. --disable-dired-permit (prevent defining OK_PERMIT) Use this option to prevent DirEd from changing the permissions on directories or files (i.e., from doing what the Unix chmod command or the DOS attrib command does). --disable-dired-tar (prevent defining OK_TAR) Use this option to prevent DirEd from using the tar program. --disable-dired-uudecode (prevent defining OK_UUDECODE) Use this option to prevent DirEd from using uudecode. --disable-dired-xpermit (define NO_CHANGE_EXECUTE_PERMS) Use this option if you do not disable out the dired-permit option, but want to restrict changes of the eXecute permission to directories (i.e., not allow it to be changed for files). If you don't do this, you can still block changes of the eXecute permission for files but not directories via the "change_exec_perms" command line restriction. --disable-dired-zip (prevent defining OK_ZIP) Use this option to prevent DirEd from using zip and unzip. --disable-echo Use this option to suppress the "compiling" commands during a build. Doing this makes it easier to find and read warning messages. --disable-extended-dtd (define NO_EXTENDED_HTMLDTD) disable extended HTML DTD logic. This should revert to old-style (2.7.1/2.7.2) behavior, but is not well-tested. --disable-file-upload (define USE_FILE_UPLOAD) Compile-in support for form-based file-upload. --disable-finger (define DISABLE_FINGER) Do not compile-in code used to connect to "finger" URLs. --disable-forms-options (define NO_OPTION_FORMS) Disable the Form-based Options Menu (see --disable-menu-options). The default is to compile key-based & form-based Options Menu code, allowing users the final choice via FORMS_OPTIONS in lynx.cfg or the -forms_options command-line switch. --disable-ftp (define DISABLE_FTP) Do not compile-in code used to connect to FTP servers. --disable-full-paths Use this option to control whether full pathnames are compiled in for various utilities invoked by lynx as external commands. By default, full pathnames are compiled in for the the locations where configure finds these commands at configure time. Affected commands are chmod, compress, cp, gzip, install, mkdir, mv, rm, tar, touch, gunzip, unzip, bzip2, uudecode, zcat, zip, telnet, tn3270, rlogin. (Not all of them are used on all systems or in all configurations.) This option makes Lynx simpler to install, but potentially less secure, since the commands are then set in the user's $PATH. All of these commands may also be overridden individually by setting environment variables before configuring. For example, you can disable the telnet command by doing this: setenv TELNET /bin/false --disable-gopher (define DISABLE_GOPHER) Do not compile-in code used to connect to GOPHER servers. --disable-idna By default, the configure script searches for the GNU idn library, which lets lynx translated URLs which are in UTF-8 to ASCII. The latter is needed for most network accesses. Use this option to suppress the feature, e.g., to reduce size. --disable-included-msgs Do not use included messages, for i18n support. If NLS support is requested, the configure script will otherwise use the messages in the ./po subdirectory. --disable-justify-elts (define USE_JUSTIFY_ELTS) Do not use element-justification logic. --disable-largefile (prevent defining LONG_LIST) Use this option to disable the compiler and linker options that provide largefile interfaces. --disable-locale-charset (define USE_LOCALE_CHARSET) Use nl_langinfo(CODESET) to determine initial value for display charset, overrides character_set value in .lynxrc file. --disable-long-list (prevent defining LONG_LIST) Use this option to disable long "ls -l" directory listings (when enabled, the actual directory style is configurable from lynx.cfg). --disable-menu-options (define NO_OPTION_MENU) Disable the Key-based Options Menu. See --disable-forms-options (above) for further details. --disable-news (define DISABLE_NEWS) Do not compile-in code used to connect to NNTP (netnews) servers. --disable-parent-dir-refs (define NO_PARENT_DIR_REFERENCE) Use this option to disable "Up-to" parent-links in directory listings. --disable-partial (prevent defining DISP_PARTIAL) Turn off code that lets Lynx display parts of a long page while loading it. --disable-persistent-cookies (prevent defining USE_PERSISTENT_COOKIES) 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) 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) 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-rpath-hack The rpath-hack makes it simpler to build programs, particularly with the *BSD ports which may have essential libraries in unusual places. But it can interfere with building an executable for the base system. Use this option in that case. --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) Turn off support for caching HTML pages locally, in files or in memory. Configurable from lynx.cfg --disable-trace (define NO_LYNX_TRACE) Turn off code that lets you trace internal details of Lynx's operation. We recommend that you leave this enabled, since we need this information to diagnose problems with either Lynx or the sites to which you connect. --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. --enable-cgi-links (define LYNXCGI_LINKS) Allows lynx to access a cgi script directly without the need for a http daemon. --enable-change-exec (define ENABLE_OPTS_CHANGE_EXEC) Allow users to change the execution status within the options screen. See EXEC_LINKS and EXEC_SCRIPTS. --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. --enable-cjk (define CJK_EX) Add experimental logic for supporting CJK documents. (This is not necessary for CJK support and may go away in a future release.) --enable-debug (The symbol DEBUG is always defined.) Use this option to compile-in support for debugging. Note that this flag is ignored if the CFLAGS environment variable is set, in that case "-g" (or whatever) has to be included in the CFLAGS value to get debugging. Autoconf normally adds -g and -O options to CFLAGS if CFLAGS was not set, and if the compiler supports those options. --enable-default-colors (define USE_DEFAULT_COLORS) Enable use of default-color background (ncurses/slang). Either configuration supports the use of 'default' for colors even without this option. That is, 'default' is interpreted as white (foreground) or black (background) according to the context. When the default colors configuration is built, the actual values for foreground and background colors are determined by the terminal. --enable-exec-links (define EXEC_LINKS) Allows lynx to execute programs by accessing a link. --enable-exec-scripts (define EXEC_SCRIPTS) Allows lynx to execute programs inferred from a link. --enable-externs (define USE_EXTERNALS) Use this option to enable external application support. (See lynx.cfg.) --enable-find-leaks (define LY_FIND_LEAKS) Use this option to compile-in logic for testing memory leaks. --enable-font-switch (define EXP_CHARTRANS_AUTOSWITCH) Allow Lynx to automatically change the Linux console state (switch fonts) according to the current Display Character Set. (Linux console only. *Use with discretion.* See docs/README.chartrans.) --enable-gnutls-compat (define USE_GNUTLS_FUNCS) When --with-gnutls is used, tell whether to use GNUTLS's OpenSSL compatibility library or use GNUTLS's low-level API directly. --enable-gzip-help Install the lynx help files in gzip'd format [*.gz] to save space. --enable-htmlized-cfg generate an HTMLized copy of lynx.cfg which will be installed with the other help files. --enable-internal-links (define TRACK_INTERNAL_LINKS) With `internal links' (links within a document to a location within the same document) enabled, Lynx will distinguish between, for example, `' and `' within a document whose URL is `foo'. It may handle such links differently, although practical differences would appear only if the document containing them resulted from a POST request or had a no-cache flag set. This feature attempts to interpret URL-references as suggested by RFC 2396, and to prevent mistaken resubmissions of form content with the POST method. An alternate opinion asserts that the feature could actually result in inappropriate resubmission of form content. --enable-ipv6 (define ENABLE_IPV6) use IPV6 (with IPV4) logic. --enable-japanese-utf8 (define EXP_JAPANESEUTF8_SUPPORT) use experimental Japanese UTF-8 logic. --enable-kbd-layout (define EXP_KEYBOARD_LAYOUT) Disabled by default, this option allows you to use translation tables on the input keystrokes. Current tables include ROT13'd keyboard layout JCUKEN Cyrillic, for AT 101-key kbd YAWERTY Cyrillic, for DEC LK201 kbd --enable-local-docs On install, modify link from help-page to point to the local doc-directory, e.g., with README files. Normally this points to the current release directory. --enable-nested-tables (define EXP_NESTED_TABLES) Extends TRST to format nested tables, as well as be smarter about
and

tags in table cells. --enable-nls (several definitions) use Native Language Support (i.e., gettext). This relies upon external programs (msgfmt and xgettext) to format the message catalogs: + Unless you set the environment variables MSGFMT and XGETTEXT to the full pathnames of these utilities, the configure script will search for the GNU versions of these utilities. It will also search for the GNU version of the corresponding gettext() runtime function. On some platforms (such as Solaris), this search gives misleading results. + If you set those environment variables to full pathnames, the configure script will warn if they are not the GNU versions of the utilities. --enable-nsl-fork (define NSL_FORK) Disabled by default, this allows interruption of NSL requests, so that `z' will stop the `look-up' phase of a connection. --enable-syslog (define SYSLOG_REQUESTED_URLS) Use this option to log NSL requests via syslog(). --enable-underlines (define UNDERLINE_LINKS) Use this option to underline links rather than using boldface. --enable-vertrace (define LY_TRACELINE) Turn on code that prefixes trace output lines with source filename and line number. --enable-warnings Use this option to turn on GCC compiler warnings. --enable-wais Use this option to turn on configure check for freeWAIS library. --enable-widec Use this option to allow the configure script to look for wide-curses features. If you do not specify the option, the configure script will look for these features if --with-screen=ncursesw is given. For this release of Lynx, we recommend the ncursew library built from ncurses 5.5. --sysconfdir (affect LYNX_CFG_FILE) Defines the location where you want the lynx.cfg file installed. The configure script defines the symbol LYNX_CFG_FILE to correspond with the $sysconfdir environment variable. (For platforms which do not support a configure script, such as MS-DOS, Win32 and VMS, you must edit userdefs.h if you wish to specify the location of lynx.cfg). --with-Xaw3d This option allows you to specify the X libraries used if you are configuring lynx to use PDCurses on a Unix platform. --with-XawPlus This option allows you to specify the X libraries used if you are configuring lynx to use PDCurses on a Unix platform. --with-build-cc=XXX If cross-compiling, specify a host C compiler, which is needed to compile a utility which generates tables for lynx. If you do not give this option, the configure script checks if the $BUILD_CC variable is set, and otherwise defaults to gcc or cc. --with-build-cpp=XXX This is unused by lynx. --with-build-cflags=XXX If cross-compiling, specify the host C compiler-flags. You might need to do this if the target compiler has unusual flags which confuse the host compiler. --with-build-cppflags=XXX If cross-compiling, specify the host C preprocessor-flags. You might need to do this if the target compiler has unusual flags which confuse the host compiler. --with-build-ldflags=XXX If cross-compiling, specify the host linker-flags. You might need to do this if the target linker has unusual flags which confuse the host compiler. --with-build-libs=XXX If cross-compiling, the host libraries. You might need to do this if the target environment requires unusual libraries. --with-bzlib[=XXX] (define USE_BZLIB) Use libbz2 for decompression of some bzip2 files. The optional value XXX specifies the directory in which the library can be found, and may be either the path of the "lib" directory, or one level above. In either case, the corresponding header files are assumed to be in the parallel "include" directory. --with-charsets=list (define ALL_CHARSETS) Limit the number of charsets that are compiled-in to the specified list of comma-separated MIME names. --with-cfg-file (define LYNX_CFG_FILE) Specify the default configuration file's name. Use --without-cfg-file to force the user to specify the configuration file on the command line. The filename can be overridden by using the LYNX_CFG environment variable. --with-cfg-path (define LYNX_CFG_PATH) Specify the default configuration file(s) directory search-list. Use --without-cfg-path to limit this to the location of the lynx.cfg file. The search-list can be overridden using the LYNX_CFG_PATH environment variable. --with-curses-dir Specify directory under which curses/ncurses is installed. This assumes a standard install, e.g., with an include and lib subdirectory. --with-dbmalloc use Conor Cahill's dbmalloc library --with-destdir=XXX set DESTDIR variable in makefiles. This is prefixed to all directories in the actual install, but is not really part of the compiled-in or configured directory names. It is convenient for packaging the installed files. If you do not provide the option, the configure script uses your $DESTDIR environment variable. --with-dmalloc use Gray Watson's dmalloc library --with-gnutls[=XXX] (define USE_SSL, USE_GNUTLS_INCL) Use this option to configure with the GNU TLS library. See docs/README.ssl for additional information. The optional value XXX specifies the directory in which the library can be found, and may be either the path of the "lib" directory, or one level above. In either case, the corresponding header files are assumed to be in the parallel "include" directory. The default is /usr/local/gnutls. See the "--enable-gnutls-compat" option. --with-included-gettext not supported in this package. The configure script uses macros which are bundled together with more useful features. See the "--enable-nls" option. --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib --with-lss-file{=path} (define LYNX_LSS_FILE) Specify the default style-sheet file's name. Use --without-lss-file to make the default behavior match the non-color-style (if no --lss option is given, and no COLOR_STYLE setting is in lynx.cfg). --with-mime-libdir=list (define MIME_LIBDIR) Use this option to specify the system directory containing the mime.types and mailcap files. --with-neXtaw This option allows you to specify the X libraries used if you are configuring lynx to use PDCurses on a Unix platform. --with-nls-datadir=DIR Use this option to override the configure script's NLS data directory, under which the locale (i.e., language) files are installed. The default value is derived at configure time, and depends on whether GNU or native gettext is used. --with-nss-compat[=XXX] (define USE_NSS_COMPAT_INCL) Use this option to configure with the NSS library's OpenSSL-compatible interface. See docs/README.ssl for additional information. The optional value XXX specifies the directory in which the library can be found, and may be either the path of the "lib" directory, or one level above. In either case, the corresponding header files are assumed to be in the parallel "include" directory. --with-pkg-config[=XXX] Use pkg-config, if available, to tell how to build with certain libraries, e.g., openssl and gnutls. If pkg-config is not used, or if those libraries are not known to pkg-config, then the configure script will search for the libraries as described in the --with-ssl and --with-gnutls options. The optional value XXX specifies the pathname for pkg-config, e.g., "/usr/local/bin/pkg-config". Note: The pkg-config program is used only if no explicit directory parameter is provided for the --with-ssl or --with-gnutls options. --with-screen=XXX Use this option to select the screen type. The option value, XXX must be one of curses (the default), ncurses, ncursesw, pdcurses or slang. Specifying a screen type causes the configure script to look in standard locations for the associated header and library files, unless you have preset the $CFLAGS and $LIBS variables. --with-screen=ncursesw (define NCURSES, WIDEC_CURSES) --with-screen=ncurses (define NCURSES) --with-screen=pdcurses (define PDCURSES) --with-screen=slang (define USE_SLANG) Note that some systems may have a default curses library which does not support color, while on others, ncurses is installed as the curses library. The variant ncursesw is the wide-character version of ncurses. See also the --enable-widec option. For the ncurses/ncursesw options, the script also accepts variants such as "ncursesw6", which helps it to find a specific ncurses config script. The pdcurses selection supported by the configure script is a UNIX-only library which uses X11. If you are configuring with DJGPP, the likely choice is "curses", since that is how PDCurses is normally installed. --with-socks[=XXX] (define SOCKS) Use this option to configure with the socks library. The optional value XXX specifies the directory in which the library can be found, and may be either the path of the "lib" directory, or one level above. In either case, the corresponding header files are assumed to be in the parallel "include" directory. --with-socks5[=XXX] (define USE_SOCKS5, SOCKS) Use this option to configure with the socks5 library. The optional value XXX specifies the directory in which the library can be found, and may be either the path of the "lib" directory, or one level above. In either case, the corresponding header files are assumed to be in the parallel "include" directory. If you make a SOCKSified lynx, you may have trouble accessing FTP servers. Also, instead of SOCKSifying lynx for use behind a firewall, you are better off if you make it normally, and set it up to use a proxy server. You can SOCKSify the proxy server, and it will handle all clients, not just Lynx. If you do SOCKSify lynx, you can turn off SOCKS proxy usage via a -nosocks command line switch. --with-ssl[=XXX] (define USE_SSL) Use this option to configure with the OpenSSL library, or SSLeay. See docs/README.ssl for additional information. The optional value XXX specifies the directory in which the library can be found, and may be either the path of the "lib" directory, or one level above. In either case, the corresponding header files are assumed to be in the parallel "include" directory. --with-system-type=XXX For testing, override the derived host system-type which is used to decide things such as special compiler options. This is normally chosen automatically based on the type of system which you are building on. We use it for testing the configure script. --with-textdomain[=XXX] (define NLS_TEXTDOMAIN) Set the NLS textdomain to the given value. This is normally "lynx". --with-zlib[=XXX] (define USE_ZLIB) Use zlib for decompression of some gzip files. The optional value XXX specifies the directory in which the library can be found, and may be either the path of the "lib" directory, or one level above. In either case, the corresponding header files are assumed to be in the parallel "include" directory. 1d. Environment variables The configure script looks for programs and libraries in known/standard locations. You can override the behavior of the script by presetting environment variables. If they are set, the script will try to use these values rather than computing new ones. Useful variables include: CC - the C compiler. If you do not override this, configure will try to use gcc. For instance, setting CC=cc and exporting this value will cause configure to use cc instead. CFLAGS - the C compiler options. These also include C preprocessor options (such as -I), since the $CFLAGS and $CPPFLAGS variables are maintained separately. CPPFLAGS - the C preprocessor options. For some configuration tests, you may need to set both $CFLAGS and $CPPFLAGS if you are compiling against header files in nonstandard locations. LDFLAGS - linker/loader options. LIBS - the libraries to be linked, with -L and -l options. If you are linking against libraries in nonstandard locations unrelated to the install prefix (that you can specify in the configure script) you may have to specify these via the $LIBS variable. Lynx has compiled-in the pathnames of various programs which it executes. Normally the full pathnames are given, rather than the program name alone. These may be preset in the environment by the capitalized version, e.g., INSTALL for "install". The corresponding internal definitions are suffixed "_PATH", e.g., "INSTALL_PATH". -- 1997/7/27 - T. Dickey 1e. Examples If you are compiling Lynx for your personal use and are restricted to your home directory, a simple method for building would be to choose some directory, say ".lynx", and then type: ./configure --prefix=~/.lynx --exec-prefix=~/.lynx and make install Now you only need to add "~/.lynx/bin" to your PATH and edit "~/.lynx/lib/ lynx.cfg" as described above. I personally use the following csh shell script to set environment variables and configure options rather than type them each time. #!/bin/csh -f setenv CPPFLAGS "-I$HOME/slang -I$HOME/.usr/include" setenv LIBS "-L$HOME/.slang/lib -L$HOME/.usr/lib" ./configure --exec-prefix=$HOME --bindir=$HOME/.lynx \ --mandir=$HOME/.usr/man --sysconfdir=$HOME/.usr/lib \ --with-screen=slang --with-zlib CPPFLAGS in this example defines the full path to the slang and zlib header files, which are not kept in standard directories. Likewise, LIBS defines the nonstandard locations of libslang.a and libz.a. Setting the option --bindir tells the configure script where I want to install the lynx binary; setting --mandir tells it where to put the lynx.1 man page, and setting --sysconfdir tells it (while at the same time defining LYNX_CFG_FILE) where to put the configuration file "lynx.cfg", when I type "make install". The --with-screen=slang and --with-zlib options are explained above. 2. Wais support (optional) To add direct WAIS support, get the freeWAIS distribution from "ftp://ftp.cnidr.org/pub/NIDR.tools/freewais", and compile it. The compile process will create the libraries you will need, wais.a and client.a. Edit the Makefile in the top level directory and add the library locations under the DIRECT WAIS ACCESS heading. Edit the Makefile for the WWW Library in "WWW/Library/Implementation/makefile" to point to the include directory for the freewais distribution. Precompiled libraries are available for many platforms if you don't wish to compile one yourself. ------------------------------------------------------------------------------- III. Compile instructions -- VMS Step 1. Downloading binary files. Lynx must handle all IO as streams, and on VMS, output files are always created with Stream_LF format via the C RTL's fopen(). The file headers indicate Implied Carriage Control, even when the transfer was in binary mode, which can confuse downloading software and cause corruption of the file contents. To deal with this, you should define the symbol USE_FIXED_RECORDS as TRUE in userdefs.h and/or lynx.cfg. This will instruct Lynx to correct the header information to indicate FIXED 512 records, with No Implied Carriage Control. If Lynx fails to do the conversion (because the file wasn't mapped to a binary MIME type) you can execute FIXED512.COM externally to correct the header information. The command file uses Joe Meadow's FILE utility, or the SET FILE/ATTRIBUTES command on current versions of VMS, to modify the headers. See the comments in FIXED512.COM, userdefs.h and lynx.cfg for more information. Step 2. Passive FTP If your system requires the PASV FTP code instead of the standard PORT FTP code (e.g., to deal with a firewall) then set the FTP_PASSIVE option in lynx.cfg Step 3a. Lynx uses the VMS port of gzip for uncompressing streams which have Content-Encoding headers indicated compression with gzip or the Unix compress. If you do not have gzip installed on your system you can get it from "ftp://ftp.wku.edu/" in the fileserv directory. The command Lynx uses to uncompress on VMS is "gzip -d". If you are using the SOCKETSHR library, read SOCKETSHR.announce and make sure you have defined SOCKETSHR and SOCKETSHR_LIBRARY as explained therein. A "build.com" and "build-slang.com" script for building Lynx with curses or slang is in the top level directory. All you have to do is type "@build" or "@build-slang" and answer its prompt for your system's TCP-IP software. Current choices are: MULTINET (default) UCX WIN_TCP CMU_TCP SOCKETSHR_TCP TCPWARE It will autosense whether you have VAXC, DECC or GNUC on VAX or AXP and build appropriately. If a WWWLib already exists for that TCP-IP software, it will prompt you for whether you want to rebuild it. If you want to build a WWWLib separately, you can type "@libmake.com" with your default directory set to [.WWW.Library.vms] instead doing it via "build.com" in the top directory. You may need to modify "build-slang.com", as described in its header, so that it can find slang.olb on your system. If you have both DECC and VAXC, it will use DECC to benefit from the newer and more efficient memory management functions. Step 3b. (optional compilation method) If you have and want to use MMS, read the header of descrip.mms in the top directory and be sure you include the appropriate macro definitions when you invoke it: $ MMS /Macro = (MULTINET=1) for VAXC - MultiNet $ MMS /Macro = (WIN_TCP=1) for VAXC - Wollongong TCP/IP $ MMS /Macro = (UCX=1) for VAXC - UCX $ MMS /Macro = (CMU_TCP=1) for VAXC - OpenCMU TCP/IP $ MMS /Macro = (SOCKETSHR_TCP=1) for VAXC - SOCKETSHR/NETLIB $ MMS /Macro = (TCPWARE=1) for VAXC - TCPWare TCP/IP $ MMS /Macro = (MULTINET=1, DEC_C=1) for DECC - MultiNet $ MMS /Macro = (WIN_TCP=1, DEC_C=1) for DECC - Wollongong TCP/IP $ MMS /Macro = (UCX=1, DEC_C=1) for DECC - UCX $ MMS /Macro = (CMU_TCP=1, DEC_C=1) for DECC - OpenCMU TCP/IP $ MMS /Macro = (SOCKETSHR_TCP=1,DEC_C=1) for DECC - SOCKETSHR/NETLIB $ MMS /Macro = (TCPWARE=1, DEC_C=1) for DECC - TCPWare TCP/IP $ MMS /Macro = (MULTINET=1, GNU_C=1) for GNUC - MultiNet $ MMS /Macro = (WIN_TCP=1, GNU_C=1) for GNUC - Wollongong TCP/IP $ MMS /Macro = (UCX=1, GNU_C=1) for GNUC - UCX $ MMS /Macro = (CMU_TCP=1, GNU_C=1) for GNUC - OpenCMU TCP/IP $ MMS /Macro = (SOCKETSHR_TCP=1,GNU_C=1) for GNUC - SOCKETSHR/NETLIB $ MMS /Macro = (TCPWARE=1, GNU_C=1) for GNUC - TCPWare TCP/IP If you just type "MMS" it will default to the MULTINET and VAXC configuration. MMS will build the WWW library and Lynx sources, and link the executable. However, not all of the header dependencies are specified. If you are not a developer, and need a clean build, you should use build.com instead of the MMS utility. If you want SOCKS support on VMS, you must add SOCKS as a compilation definition, and the SOCKS library to the link command. However, instead of SOCKSifying Lynx for use behind a firewall, you are better off if you build Lynx normally, and set up Lynx to use a proxy server (see below). You instead can SOCKSify the proxy server, and it will handle all clients, not just Lynx. ------------------------------------------------------------------------------- IV. Compile instructions -- Win32 (Windows95/98/NT) Borland C: --------- Simplified: ---------- Sources: Download the current sources (choose a zip-file) from https://lynx.invisible-island.net/ and unzip them into a directory where you will build Lynx. Compiler: Download the Borland C/C++ 5.51 compiler from http://forms.embarcadero.com/forms/BCC32CompilerDownload This is a file named "freecompilertools.exe". Run that to install the compiler, e.g., in c:\app\bcc55 Do not install into a directory with spaces in its name, such as c:\program files Libraries: Download these "setup" files from http://gnuwin32.sourceforge.net libiconv-1.9.2-1.exe (libiconv) libintl-0.14.4.exe (libintl) openssl-0.9.8h-1-setup.exe (openssl) pdcurses-2.6.exe (pdcurses) zlib-1.2.3.exe (zlib) Install all of the packages in the same directory, "c:\app\GnuWin32". A fix is needed in GnuWin32 include/zconf.h: change line reading #if 1 /* HAVE_UNISTD_H -- this line is updated by ./configure */ to #ifdef HAVE_UNISTD_H Prepare import-libraries using Borland's implib program. The ".lib" files that it uses are a different format than the import libraries distributed with GnuWin2. From Lynx's source directory run bcblibs Environment: At this point, the bin-directory for the compiler and for the GnuWin32 libraries should be in your path. Building: From Lynx's source directory cd src\chrtrans makew32 clean makew32 cd ..\.. makew32 clean makew32 ------------------------------------------------------------------------------- Detailed: -------- The original Win32 port was built with Borland C++ 4.52, but later versions reportedly can be used. Before compiling the Lynx sources, you need a curses library, and it is recommended that you have the zlib library. Get pdcurses2.3 from "http://pdcurses.sourceforge.net/". I have modified it so that mouse support is no longer broken for Lynx (see "http://www.fdisk.com/doslynx/"). You will want to get zlib from "http://www.zlib.net/ ". Compile these libraries, and put them in a convenient place (pdcurses inside the Lynx directory). Unpack the latest Lynx source distribution, and make an obj directory under the source root to contain the compile output. Copy in your IDE file. A sample IDE file and helper libraries are available at "http://www.fdisk.com/doslynx/wlynx/source/". First build the .h files in src\chrtrans using "makew32.bat". Double check for new .tbl files; hand edit in any new ones, and then do "makew32". Jump into Borland C++, load the project (IDE file) and compile Lynx. Alternately, after compiling the chartrans tables, you can come back to the top directory and compile manually, i.e., do "make -f makefile.bcb". I also have a binary available at "http://www.fdisk.com/doslynx/". This binary was compiled with pdcurses 2.3, hacked so win32 mouse support works, and with zlib, so Lynx can do gzip routines internally. More hints and information can be found in "http://www.fdisk.com/doslynx/lynxport.htm". -- 1997/10/12 - W. Buttles -- 2010/11/27 - URL's updated by Doug Kaufman ------------------------------------------------------------------------------- Cygwin: It is possible to compile under the cygwin system, which will allow you to use the configure script described above for Unix. Type, for example, "./configure --with-screen=ncurses --with-libz" in a Dos window running the cygwin bash$ shell. You also have the choice of using either pdcurses or slang. You will need a launch program such as sh.exe to call helper applications. Paths may need to be in cygwin style, rather than Windows style (e.g., TMPDIR=/cygdrive/d/cygwin/tmp, rather than TMPDIR=d:\cygwin\tmp). Visual C++: You must have compiled zlib and PDCurses with the -MT (threaded code) option. This is not the default with zlib (see Makefile.msc). Copy into lib the following zconf.h zlib.h zlib.lib from the zlib build-tree, and curses.h pdcurses.lib from the PDCurses build-tree. Then make-msc to build lynx. ------------------------------------------------------------------------------- V. Compile instructions -- 386 DOS Compiling for DOS with DJGPP has traditionally been a multistep procedure. Now, if you have a full installation of DJGPP you can also install using the configure script, just as in the UNIX section. This needs to be done under a BASH shell. Use a shell script to run configure as in the example at the end of this section. Otherwise you can follow the below instructions. The multistep procedure for DOS may not be supported in the future and use of the configure script is recommended. The information about required libraries and unpacking applies to both methods of compiling. First install the C compiler and its libraries (see readme.1st from DJGPP distribution). Originally, lynx makefiles come with the initial -O2 optimization level. If you experience compilation process too slow due to paging to the disk (DPMI server provide virtual memory, when in lack of RAM), you may change optimization to -O1 or turn the optimization off entirely. If using optimization level -O2 or -O3 with older versions of DJGPP and GCC, you may need to "stubedit" your "cc1.exe" file to enlarge compiler stack size. For instance, if using DJGPP 2.02 and GCC 2.8.1, to compile with -O3 optimization, the stub needs to be edited to give a larger stack. To do this go into djgpp\lib\gcc-lib\djgpp\2.81 and either type the command: "stubedit cc1.exe bufsize=63k minstack=2M", or edit interactively with: "stubedit cc1.exe". Current versions of DJGPP and GCC generally work with the standard stack. Unpack the source code using a DOS program like UNZIP386. If you are using PKUNZIP to unpack the .zip archive, you must use the -d command line switch to restore the directory structure contained in the archive, i.e., do "pkunzip -d lynx-cur.zip". No switch is required if you use unzip386 or unzip. If you are trying to compile the 386DOS port under a WinNT DOS shell, be sure to unpack the source with a DOS program so that all directories will be adjusted to the DOS 8.3 file format necessary for compiling with DJGPP. Do NOT use Winzip, because that will create long filenames that will not be recognized by DJGPP tools. If you wish to compile with "USE_ZLIB" (recommended), you must have the zlib library. Get the source from http://www.zlib.net and compile it. Put libz.a in the lib subdirectory of DJGPP, and put zlib.h and zconf.h in the include subdirectory. In addition to the files in the Lynx distribution, you will need a curses package and a TCP package. You can use PDCurses (available at "http://pdcurses.sourceforge.net/") and the DJGPP port of WATTCP. The updated version of WATTCP is known as WATT-32, and is available at "http://home.broadpark.no/~gvanem/". You can also use slang (available at "http://www.jedsoft.org/slang/") as your screen library. You must compile these before you go any further. If you wish to use PDCurses 2.6, you need to first apply the following patch: --- dos/gccdos.mak.ori 2002-01-11 20:11:18.000000000 -0800 +++ dos/gccdos.mak 2003-12-13 21:29:28.000000000 -0800 @@ -40,11 +40,11 @@ CFLAGS = -c -g -Wall -DPDCDEBUG LDFLAGS = -g else - CFLAGS = -c -O -Wall + CFLAGS = -c -O2 -Wall LDFLAGS = endif -CPPFLAGS = -I$(PDCURSES_HOME) -I$(CCINCDIR) -D_NAIVE_DOS_REGS +CPPFLAGS = -I$(PDCURSES_HOME) -I$(CCINCDIR) -D_NAIVE_DOS_REGS -DHAVE_STRING_H CCFLAGS = $(CFLAGS) $(CPPFLAGS) @@ -64,10 +64,10 @@ all: $(PDCLIBS) $(DEMOS) clean: -del *.o - -del curses.lib - -del panel.lib + -del pdcurses.a + -del panel.a demos: $(DEMOS) @@ -287,33 +287,27 @@ #------------------------------------------------------------------------ firework.exe: firework.o $(LIBCURSES) - $(LINK) $(LDFLAGS) -o firework firework.o $(LIBCURSES) - $(COFF2EXE) firework + $(LINK) $(LDFLAGS) -o firework.exe firework.o $(LIBCURSES) strip $@ newdemo.exe: newdemo.o $(LIBCURSES) - $(LINK) $(LDFLAGS) -o newdemo newdemo.o $(LIBCURSES) - $(COFF2EXE) newdemo + $(LINK) $(LDFLAGS) -o newdemo.exe newdemo.o $(LIBCURSES) strip $@ ptest.exe: ptest.o $(LIBCURSES) $(LIBPANEL) - $(LINK) $(LDFLAGS) -o ptest ptest.o $(LIBCURSES) $(LIBPANEL) - $(COFF2EXE) ptest + $(LINK) $(LDFLAGS) -o ptest.exe ptest.o $(LIBCURSES) $(LIBPANEL) strip $@ testcurs.exe: testcurs.o $(LIBCURSES) - $(LINK) $(LDFLAGS) -o testcurs testcurs.o $(LIBCURSES) - $(COFF2EXE) testcurs + $(LINK) $(LDFLAGS) -o testcurs.exe testcurs.o $(LIBCURSES) strip $@ tuidemo.exe: tuidemo.o tui.o $(LIBCURSES) - $(LINK) $(LDFLAGS) -o tuidemo tuidemo.o tui.o $(LIBCURSES) - $(COFF2EXE) tuidemo + $(LINK) $(LDFLAGS) -o tuidemo.exe tuidemo.o tui.o $(LIBCURSES) strip $@ xmas.exe: xmas.o $(LIBCURSES) - $(LINK) $(LDFLAGS) -o xmas xmas.o $(LIBCURSES) - $(COFF2EXE) xmas + $(LINK) $(LDFLAGS) -o xmas.exe xmas.o $(LIBCURSES) strip $@ --- dos/pdckbd.c.ori 2002-09-01 00:13:30.000000000 -0800 +++ dos/pdckbd.c 2004-01-19 20:30:02.000000000 -0800 @@ -362,7 +362,7 @@ return ((int) (0xb8 << 8)); if (ascii == 0xe0 && scan == 0x53 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Del */ return ((int) (0xb9 << 8)); - if (ascii == 0x00 || ascii == 0xe0) + if (ascii == 0x00 || (ascii == 0xe0 && scan != 0x00)) return ((int) (scan << 8)); return ((int) (ascii)); } @@ -522,7 +522,7 @@ _watch_breaks(); #else # ifdef GO32 - (void*)signal(SIGINT,(setting ? SIG_DFL : SIG_IGN)); +/* (void*)signal(SIGINT,(setting ? SIG_DFL : SIG_IGN)); */ /* __djgpp_set_ctrl_c(setting);*/ setcbrk(setting); # else --- pdcurses/kernel.c.ori 2002-11-27 03:24:32.000000000 -0800 +++ pdcurses/kernel.c 2003-12-13 21:22:38.000000000 -0800 @@ -27,6 +27,10 @@ #include #endif +#ifdef HAVE_STRING_H +#include +#endif + #ifdef UNIX #include #include --- pdcurses/pdcutil.c.ori 2001-01-10 00:27:22.000000000 -0800 +++ pdcurses/pdcutil.c 2003-12-13 21:24:58.000000000 -0800 @@ -49,7 +49,7 @@ # include #endif -#ifdef STDC_HEADERS +#if defined(STDC_HEADERS) || defined(HAVE_STRING_H) # include #endif --- pdcurses/pdcwin.c.ori 2002-05-25 17:13:32.000000000 -0800 +++ pdcurses/pdcwin.c 2003-12-13 21:26:02.000000000 -0800 @@ -27,6 +27,10 @@ # include #endif +#ifdef HAVE_STRING_H +#include +#endif + #ifndef HAVE_MEMMOVE # define memmove PDC_memmove #endif If you wish to compile with SSL enabled, you need to get and compile OpenSSL. The DJGPP port has been successfully compiled with the development version of OpenSSL. DJGPP can compile OpenSSL from the standard source distribution (http://www.openssl.org/). See the file "INSTALL.DJGPP" in the OpenSSL distribution. If you have trouble applying the patches, try using the "patch" program, ("http://www.delorie.com/pub/djgpp/current/v2gnu/pat261b.zip"). To read the Unix man style documentation, use, for example, "less" ("http://www.delorie.com/pub/djgpp/current/v2gnu/lss374b.zip"). Compile or place your compiled PDCurses library in /djgpp/pdcur26, and compile or place your compiled WATT-32 library in /djgpp/watt32. If using the SLANG library, put libslang.a in your DJGPP/lib directory and put slang.h in your DJGPP/include directory, or in the appropriate directories specified by LIBRARY_PATH and INCLUDE_PATH in your DJGPP.ENV file. Move to the "lynx2-*/WWW/Library/djgpp" directory. If compiling with PDCurses, do "make". If using SLANG, do "make -f makefile.sla". This should compile libwww.a. Next move to the "lynx2-*/src/chrtrans" directory and do "make -f makefile.dos" to compile the character tables. Then move to the "lynx2-*/src" directory. There are three choices for compiling at this point. You can do "make -f makefile.dos" to compile with PDCurses, "make -f makefile.wsl" to compile with SLANG, or "make -f makefile.dsl" to compile with SLANG and the DJGPP keyhandler. At the time of this writing, it is not clear what the advantages and disadvantages of each version are. The PDCurses version has the most experience and allows remapping of ALT and Function keys. The SLANG version seems to have better screen handling. It allows mapping of function keys, but not ALT keys. The SLANG with DJGPP keyhandler allows mapping of ALT and Function keys, but has the risk of incompatibilities from mixing different programs. If you wish to compile with support for internationalization of messages, you first need to install the DOS ports of the GNU gettext and libiconv packages, available from any DJGPP mirror site. Then uncomment the lines for INTLFLAGS in src/makefile.dsl and in WWW/Library/djgpp/makefile.sla, and remove the "#" from the LIBS line in src/makefile.dsl. Make similar changes if using one of the other DOS makefiles. See the gettext documentation for information on creating and using message files for different languages. If all goes well, you will have a lynx.exe file. If you have trouble, check to be sure djgpp.env is the way it came in the original package. To test Lynx_386 you must have a packet driver installed. The simplest method is to use a null packet driver that just allows Lynx to start up, but doesn't do anything else. One such executable driver has been posted, uuencoded, to the lynx-dev mailing list in January 1998, but is corrupted in the mailing list archive. You can get this at "http://www.ncf.ca/ncf/pda/computer/dos/net/nullpkt.zip". Start the dummy packet driver with "nullpkt 0x60", and take it out of memory with "nullpkt -u". You can also use slip8250.com. See the CRYNWR package "ftp://ftp.simtel.net/pub/simtelnet/msdos/pktdrvr/pktd11.zip". Usage is "slip8250 0x60", but you may have to invoke it as, for example, "slip8250 0x60 6 3 0x2F8" so that it uses COM2 and IRQ 3, in order to avoid an IRQ conflict with a mouse or some other device. Another packet driver is slipper.exe, which is available from many sites, including "http://www.cavazza.it/file/bbs/intsoft/slippr15.zip". To remove it from memory use termin.com (usage "termin 0x60"), available in the CRYNWR package. To connect over a dialup PPP connection you need dosppp or klos' pppshare. (Find at: "http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/net/dosppp/dosppp06.zip" "http://www.ncf.carleton.ca/ncf/pda/computer/dos/net/dosppp06.zip" "http://www.cavazza.it/file/bbs/intsoft/dosppp06.zip" "http://www.cavazza.it/file/bbs/intsoft/pppshare.exe") File access looks like this: file:///c:/ file:///c:/dos file:///c:/dos/command.com file://localhost/c:/ file://localhost/c:/dos file://localhost/c:/dos/command.com See "http://www.fdisk.com/doslynx/lynxport.htm" for more hints and some precompiled libraries. One problem you can encounter is editing userdefs.h and lynx.cfg, which have unix-style end of lines. You would be well advised to use an editor that can handle end of lines terminated with a single LF character. You can also unpack the source code using unzip386 or unzip with the -a or -aa switch to convert unix LF to dos CRLF. That will make texts more readable under DOS. If you compile lynx regularly, you may automate the procedure by creating a batch file such as the following. cd djgpp\watt32\src configur djgpp make -f djgpp.mak cd ..\..\..\www\library\djgpp make cd ..\..\..\src\chrtrans make -f makefile.dos cd ..\..\src make -f makefile.dos strip lynx.exe cd .. This batch file expects the DJGPP port of WATT-32 to be installed in the lynx2-* directory. Place a copy of this batch file, named "djgpp.bat", in the lynx2-* directory, move to that directory and type "djgpp". A more complete batch file with error checking and annotation can be found at: "http://lists.nongnu.org/archive/html/lynx-dev/1997-11/msg00250.html". If you use the configure method, remember that if you configure with the option "--enable-nls", you also need to set LIBS="-liconv". A sample shell script to run configure using PDCurses follows. If you compile to use SLANG, note that the DJGPP keyhandler will be used instead of the SLANG keyhandler unless you define "NO_DJ_KEYHANDLER". #!/bin/sh CFLAGS="-O2 -I/djgpp/pdcur26 -I/djgpp/watt32/inc" \ LIBS="-L/djgpp/pdcur26/lib -L/djgpp/watt32/lib -liconv" \ ./configure --prefix=d:/djgpp/lynx-rel/lynx-cnf \ --with-screen=curses \ --disable-full-paths \ --enable-addrlist-page \ --enable-change-exec \ --enable-cgi-links \ --enable-charset-choice \ --enable-color-style \ --enable-exec-links \ --enable-externs \ --enable-file-upload \ --enable-nested-tables \ --enable-nls \ --sysconfdir=d:/djgpp/lynx-rel/lynx-cnf \ --with-bzlib \ --with-zlib \ --with-ssl -- 1997/9/29 - D. Kaufman -- 1997/10/3 - B. Schiavo -- Last update - 2010/11/27 ------------------------------------------------------------------------------- VI. General installation instructions Once you have compiled Lynx, test it out first on a local file. Be sure Lynx can find lynx.cfg. A _sample_ test command line would be: 'lynx -cfg=/usr/local/lib/lynx.cfg .'. Once you are satisfied that Lynx works, go ahead and install it. For Unix, type "make install". For VMS, you need to have the executable in a public place, make it accessible, define it as a foreign command, and copy lynx.cfg to "Lynx_Dir". Look at lynx.com in the samples directory as a model for installing Lynx. To include lynx.hlp in the system HELP library, use the command: "$ library/replace sys$help:helplib.hlb lynx.hlp". Local copies of the Lynx online help should be made accessible in response to the Lynx 'h'elp command by defining HELPFILE in userdefs.h and/or lynx.cfg to an appropriate file://localhost/path URL. On Unix, all you need to do is type "make install-help." If you are installing manually, copy the files "COPYHEADER" and "COPYING" into the lynx_help directory BEFORE moving the lynx_help tree to its final location. These files are referenced hypertextually from help documents. If you have old, pre-existing bookmark files from earlier versions of Lynx, those files may have to be updated. Conversion may just consist of adding one META line near the top, or may require creating new book- mark files and editing in bookmarks from outdated files. IMPORTANT! Be sure you have read the warnings about setting up an anonymous account with Lynx if you plan to give public access to Lynx. After applying patches or editing files to correct for an unsuccessful build, be certain to do a "make clean" (or "make distclean" for those using auto-configure) before attempting to compile again. ------------------------------------------------------------------------------- VII. Setting environment variables before running Lynx (optional) 1. All ports The Lynx Users Guide describes all of the environment variables used by Lynx. This should be checked later along with reading lynx.cfg after you have installed Lynx. 2. Win32 (95/98/NT) and 386 DOS These ports cannot start before setting certain environment variables. Here are some environment variables that should be set, usually in a batch file that runs the lynx executable. Make sure that you have enough room left in your environment. You may need to change your "SHELL=" setting in config.sys. In addition, lynx looks for a "SHELL" environment variable when shelling to DOS. If you wish to preserve the environment space when shelling, put a line like this in your AUTOEXEC.BAT file also "SET SHELL=C:\COMMAND.COM /E:4096". It should match CONFIG.SYS. HOME Where to keep the bookmark file and personal config files. TEMP or TMP Bookmarks are kept here with no HOME. Temp files here. USER Set to your login name (optional) LYNX_CFG Set to the full path and filename for lynx.cfg LYNX_LSS Set to the full path and filename for lynx.lss LYNX_SAVE_SPACE The (modifiable) location for downloaded file storage. SSL_CERT_FILE Set to the full path and filename for your file of trusted certificates 386 version only: WATTCP.CFG Set to the full path for the WATTCP.CFG directory RL_CLCOPY_CMD Command to copy a URL to a "clipboard" file RL_PASTE_CMD Command to go to a URL in your "clipboard" file Define these in your batch file for running Lynx. For example, if your application line is "D:\win32\lynx.bat", lynx.bat for Win32 may look like: @ECHO OFF set home=d:\win32 set temp=d:\tmp set lynx_cfg=d:\win32\lynx.cfg set lynx_save_space=d:\download d:\win32\lynx.exe %1 %2 %3 %4 %5 For lynx_386, a typical batch file might look like: @echo off set HOME=f:/lynx2-8 set USER=your_login_name set LYNX_CFG=%HOME%/lynx.cfg set WATTCP.CFG=%HOME% f:\lynx2-8\lynx %1 %2 %3 %4 %5 %6 %7 %8 %9 You need to make sure that the WATTCP.CFG file has the correct information for IP number, Gateway, Netmask, and Domain Name Server. This can also be automated in the batch file. Adapted from "readme.txt" by Wayne Buttles and "readme.dos" by Doug Kaufman. VIII. Acknowledgment Thanks to the many volunteers who offered suggestions for making this installation manual as accurate and complete as possible. -- 1999/04/24 - H. Nelson -- vile:txtmode -- $LynxId: INSTALLATION,v 1.130 2018/07/08 15:22:44 tom Exp $ PK0]#]READMEnu[ Lynx README file Lynx Version 2.8.8 is the latest release (February 2014). See the CHANGES file for a complete record of all changes and bug fixes. New releases are announced on the lynx-dev mailing list (see below). FOR REAL NOVICES To use this package, you need a compiler & a bit of experience at very simple programming. If you just want something which will work `out-of-the-box', you can get pre-compiled versions of Lynx by following the links from ; For DOS or Windows, go to . WHAT IS LYNX? Lynx is a fully-featured World Wide Web (WWW) client for users running cursor-addressable, character-cell display devices such as vt100 terminals, vt100 emulators running on Windows 95/NT or Macintoshes, or any other character-cell display. It will display Hypertext Markup Language (HTML) documents containing links to files on the local system, as well as files on remote systems running http, gopher, ftp, wais, nntp, finger, or cso/ph/qi servers, and services accessible via logins to telnet, tn3270 or rlogin accounts. Current versions of Lynx run on Unix, VMS, Windows95 through Windows 8, 386DOS and OS/2 EMX. Lynx can be used to access information on the WWW, or to establish information systems intended primarily for local access. Lynx has been used to build several Campus Wide Information Systems (CWIS). Lynx can also be used to build systems isolated within a single LAN. HOW TO GET LYNX For the latest release of Lynx go to: ; ; The latest development version is at: . The Lynx homepage is . The on-line help page (enter `h') has links to many useful things. LICENSE Lynx is distributed under the GNU General Public License, version 2 (GPLv2) without restrictions on usage or redistribution. The Lynx copyright statement, "COPYHEADER", and GNU GPL, "COPYING", are included in the top-level directory of the distribution. Lynx is supported by the Lynx user community, an entirely volunteer (and unofficial) organization. Certain portions of the Lynx source distribution were originally created by CERN and have been modified during the development of Lynx. See WWW/FreeofCharge.html for copyright info regarding CERN products used in Lynx. Note that Lynx is not self-contained; typically it is built with a variety of add-on libraries, including those for compression, IPv6, SOCKS and SSL support. YEAR 2000 COMPLIANCE We believe Lynx works properly for the Year 2000 issues, since it does not store dates in 2-digit form. Since it must communicate with a wide range of web servers, it interprets dates in a variety of formats. In particular, if Lynx receives a date with a 2-digit year, it assumes that values less than 70 are in the range 2000-2069. INSTALLING LYNX To install Lynx, follow the steps in the INSTALLATION file, which is located in the top directory of the source distribution. DOCUMENTATION A users guide is included in this distribution along with a man page for Unix systems and a help file for VMS systems. All documentation is contained in the top directory and the docs, samples and lynx_help subdirectories. While running Lynx, type 'h', 'H', or '?' to invoke the help menu system. From the help menu you may access several useful documents pertaining to Lynx and the World Wide Web. The most important of these is the Lynx Users Guide. By default, Lynx will use the Lynx Enhanced Pages, which includes http links for help and FAQs concerning Lynx. It is recommended that you install your own help menu system at your site in order to lessen the load on http servers. This also will allow you to customize the help menu system for your site and greatly speed up access for those using Lynx over a slow connection. INSTALLING THE DOCUMENTATION For Unix and related systems which support the autoconf configure script, the help menu system is installed by the "make install-help" command. For other systems (such as VMS), copy COPYHEADER and COPYING into the lynx_help/ subdirectory. Then copy the lynx_help subdirectory to a public place on your system, or into your $HOME directory if you are a single user. Finally, edit the lynx.cfg file so that the HELPFILE line is defined as follows: HELPFILE:file://localhost/[public_path]/lynx_help/lynx_help_main.html where [public_path] is the absolute path to the lynx_help directory. Customizing the help menu system is just a matter of editing a set of HTML files. Additional information about installing and customizing the help file set is available at . INSTALLING LYNX To install Lynx, follow the steps in the INSTALLATION file, which is located in the top directory of the source distribution. Win32 users who need pre-compiled distributions should visit the site . PROBLEMS If you experience problems configuring, compiling or installing Lynx, please read Section VI. "General installation instructions" in the INSTALLATION file. Instructions are given there for reporting your problem to the "lynx-dev" mailing list, which is frequented by experienced Lynx users. LYNX-DEV MAILING LIST To subscribe to lynx-dev, send email to with "subscribe" for a subject line. If you wish to unsubscribe from lynx-dev, send email to with "unsubscribe" for a subject line. Any messages you wish to post should be sent to . PLEASE use the lynx-dev list, NOT private email to the developers, for questions or discussion about Lynx, or contributions of patches. Patches should use the unified diff format (diff -u). You need not be subscribed to the lynx-dev list in order to post. If you post without subscribing, though, you should read replies to your questions or comments in the archive since more often than not nobody will send a carbon copy to you. View the archives at: "lynx-dev Mailing list archives" ------------------------------------------------------------------------------ -- vile:txtmode fc=72 noti -- $LynxId: README,v 1.34 2018/07/08 15:22:44 tom Exp $ ------------------------------------------------------------------------------ PK0] docs/README.metricsnu[-- $LynxId: README.metrics,v 1.17 2018/07/08 16:43:30 tom Exp $ This is a short summary of code metrics showing how lynx has grown from release to release. It also shows how the original codebase has been almost completely replaced by contributors after the release of lynx 2.4.2 in 1996. The numbers shown are for lines of text, to keep the presentation simple. Release Current Original ------------------------------------------------------------------------------- Text C-code Text C-code % Text % Code ------------------------------------------------------------------------------- 2.4.2 77210 63463 77210 63463 100 100 2.6 112970 92869 58859 49665 52 53 2.7.1 125723 103489 54121 45111 43 43 2.7.2 162228 123130 48979 40655 30 33 2.8.1 191738 133778 37286 33582 19 25 2.8.2 227160 147485 32227 29004 14 19 2.8.3 248646 166833 29035 26346 11 15 2.8.4 310436 168108 28364 25751 9 15 2.8.5 362834 167358 26900 24355 7 14 2.8.6 395894 170006 25866 23880 6.5 14.0 15573 13587 3.9 8.0 2.8.7 441453 180674 25064 23101 5.7 12.8 15436 13473 3.5 7.5 2.8.8 465971 185375 24513 22293 5.3 12.0 15094 12874 3.2 6.9 2.8.9 478344 186103 24314 22116 5.1 11.9 14931 12733 3.1 6.8 Beginning with 2.8.6, the percentage of the remaining original codebase is shown on two lines (i.e., comparing against 2.4.2 indented to use the current coding style, or using only the original source). Comparisons using the original source give lower estimates of untouched code, though either must be viewed taking into account insignificant similarities (such as blank lines). Starting in 2.8.6dev.3, all C source code has been routinely indented using the lnx-indent script from https://invisible-island.net/cindent/ Current lynx releases contain a large amount of text other than C code. That includes plain text, html, message libraries, custom and generated scripts. ------------------------------------------------------------------------------- Here is a count of contributions (from CHANGES and docs/CHANGES2.8) since the start of the 2.8 series: 0.5 AJL 3 Al Gilman 1 Al Walker 1 Alexei Anatski 2 Alexey Dobriyan 2 Andreas Metzler 2 Andrew Belov 3.5 Andrey A Chernov 1 Arkadiusz Miskiewicz 1 Arnaud Giersch 2 Atsuhito Kohda 2 Axel Beckert 1 Bake Timmons 25.5 Bela Lubkin 1 Bill Nottingham 3.5 Bill Schiavo 2 Binh Do 1 Brett Lymn 46.3 Brian J Pardy 1 Carlton Anderson 1 Charles Karney 1 Chris Adams 1 Christian Hudon 1 Christian Jensen 3 Christian Weisgerber 1 Christoph J Gartmann 1 Chuck Houpt 1 Crouton 1 Dan Jacobson 1 Daniel Dickman 1 David Combs 1 David Henderson 0.5 David Woolley 1 Dick Wesseling 1 Diego Elio Petteno 129.7 Doug Kaufman 1 Duncan Simpson 2.5 Eduardo Chappa 1 Elliot Thomas 2 Emanuele Giaquinta 1 Eric Brun 70 External 1 Fabian Fingerle 280.5 Foteos Macrides 2 Frank Heckenbach 4.3 Frederic L W Meunier 1 Frederick P Herrmann 1 Georg Drenkhahn 1 George Lindholm 27 Gisle Vanem 1 Glenn Nielsen 1 Hans Wurst 28.5 Hataguchi Takeshi 1 Heikki Kantola 0.5 Helen Sommer 23 Henry Nelson 1 Hiram Lester Jr 8.5 Hiroyuki Senshu 3 Hynek Med 0.3 Igor B Poretsky 84.8 Ilya Zakharevich 6.5 Ismael Cordeiro 2 J Kevin Ternes 1 Jacob Poon 27.5 James E Spath 1 Jamie Strandboge 1 Jan Hlavacek 2.5 Jason F McBrayer 1 Jean-Yves Levesque 1 Jeffrey C Honig 1 Jens Schmalzing 1 Jens Seidel 1 Jerome Lauret 2 Joey Schulze 0.3 Johannes Hromadka 35 John Bley 6 John E Davis 1 John Hawkinson 1 John Nowlin 2 Jonathan Sergent 1 Josef Sontgen 2 Julian Coleman 2 Kamil Dudka 3 Karl Eichwalder 1 Karl-Andre Skevik 4 Kihara Hideto 29.3 Kim DeVaughn 706.3 Klaus Weide 1 Lalo Martins 1 Larry Hynes 1 Larry Virden 15.8 Larry W Virden 11 Laura Eaves 342.3 Leonid Pauzner 1 Liam Davis 1 Marc Huber 0.3 Marek Kubita 1 Martijn Dekker 2 Masashi Fujita 1 Masayasu Ishikawa 1 Masayuki Hatta 1 Matt Kraal 1 Michael Sobolev 6.5 Michael Warner 1 Michel Such 1 Mike Castle 2 Munechika Sumikawa 1 Nigel Horne 0.5 Nikos Chantziaras 1 OpenBSD CVS 1 Owen Leibman 1 Pat Walsh 13.5 Paul B Mahol 1 Paul D Smith 52.5 Paul Gilmartin 1 Peter Backes 1 Peter Canning 1 Phil Pennock 27.3 Philip Webb 14 Philippe De Muyter 1 Quentin Minster 5.5 Rado Smiljanic 2 Ralph Babel 1 Randall 1 Reiner Hermann 1 Risto Widenius 1 Rob Cameron 1 Ruda Moura 1 Ryan Nielsen 2 Scott Bigham 1 Sergej Kvachonok 6 Sergey Svishchev 1 Serhii Hlodin 2 Simon Kainz 15 Sinan Kaan Yerli 7.8 Stefan Caunter 1 Stepan Kasal 1 Tadayoshi Okuma 1 Takao Fujiwara 1 Taketo Kabe 1 Thomas Braun 2188.3 Thomas E Dickey 1.5 Thomas Klausner 1 Thomas Petazzoni 1 Thomas Viehmann 21 Thorsten Glaser 1 Tim Chase 4 Tim Larson 1 Timur Birsh 2 Tomas Vanhala 1.5 Ulf Harnhammar 6.5 Victor Schneider 2 Ville Herva 86 Vlad Harchev 37.5 Wayne Buttles 1 Wesley Morgan 1 Zdenek Prikryl 1.5 nsh@horae.dti.ne.jp 4563 Total ------------------------------------------------------------------------------- Older attributions are problematic for several reasons: + some contributors were not credited, + some changes were not recorded, + the level of importance of changes in the older logs differs noticeably from the newer logs. There is neither a source repository nor a mailing-list archive to consult to resolve these issues. However, some information can be gleaned from the existing change-logs to show the principal contributors for each release (i.e., not listing those with less than 1%): ** credits from CHANGES docs/CHANGES2.8 (4492.6 changes) 1.0 Brian J Pardy 2.9 Doug Kaufman 6.2 Foteos Macrides 1.9 Ilya Zakharevich 15.7 Klaus Weide 7.6 Leonid Pauzner 1.2 Paul Gilmartin 48.7 Thomas E Dickey 1.9 Vlad Harchev ** credits from CHANGES docs/CHANGES* (5959.6 changes) 2.2 Doug Kaufman 23.0 Foteos Macrides 1.4 Ilya Zakharevich 12.1 Klaus Weide 5.7 Leonid Pauzner 36.7 Thomas E Dickey 1.4 Vlad Harchev 3.5 unknown ** credits from CHANGES (3572.6 changes) 1.3 Brian J Pardy 3.3 Doug Kaufman 2.4 Ilya Zakharevich 12.3 Klaus Weide 8.8 Leonid Pauzner 1.5 Paul Gilmartin 54.2 Thomas E Dickey 2.4 Vlad Harchev ** credits from docs/CHANGES2.8 (920 changes) 1.2 Doug Kaufman 30.5 Foteos Macrides 29.0 Klaus Weide 3.2 Leonid Pauzner 1.4 Philippe De Muyter 27.4 Thomas E Dickey 2.6 Wayne Buttles ** credits from docs/CHANGES2.7 (233 changes) 77.3 Foteos Macrides 3.4 Hiram Lester Jr 5.2 Klaus Weide 1.3 LWV 3.4 unknown ** credits from docs/CHANGES2.6 (240 changes) 83.8 Foteos Macrides 1.2 Klaus Weide 2.1 LWV 5.8 unknown ** credits from docs/CHANGES2.5 (554 changes) 1.3 DT 1.4 David Woolley 82.3 Foteos Macrides 4.7 unknown ** credits from docs/CHANGES2.4 (328 changes) 75.9 Foteos Macrides 3.0 GL 16.2 unknown ** credits from docs/CHANGES2.3 (112 changes) 1.8 David Trueman 1.8 Foteos Macrides 94.6 unknown PK0]>  docs/VMSWAIS.announcenu[ 03-Jun-1994 I have added DIRECT_WAIS support for VMS to Lynx. It uses highly modified freeWAIS modules, collected into HTVMS_WaisUI.c, HTVMS_WaisUI.h, HTVMS_WaisProt.c, and HTVMS_WaisProt.h, interfaced to HTWAIS.c and HTWSRC.c of the WWWLib. The socket reads and writes use the code for VMS in the Lynx version of the WWWLib, and thus are non-blocking (interruptable via the 'z' command), and "already" ported to all the VMS TCPIP packages supported by Lynx. All messaging associated with WAIS searches and document fetches go to the Lynx statusline as Progress() or Alarm() reports. I also prettied up the HTWAIS.c and HTWSRC.c screen displays for both VMS and Unix. I've been trying to build in recursive FORM-based interfaces, instead of the present iSINDEX-based interfaces, but haven't succeeded ;(. The DIRECT_WAIS support is automatic for VMS (i.e., is implemented via the BUILD.COM and LIBMAKE.COM procedures, without need to specify anything but your TCPIP package, as in the previous, standard VMS builds). Simply enter @BUILD or enter @BUILD and then the number of your TCPIP package in response to the prompt, and you'll have DIRECT_WAIS support along with every other wonderful thing in Lynx 8-). Fote ========================================================================= Foteos Macrides Worcester Foundation for Experimental Biology MACRIDES@SCI.WFEB.EDU 222 Maple Avenue, Shrewsbury, MA 01545 ========================================================================= PK0]|docs/CHANGES2.4nu[--- Rename of Lynx2-3-FM and release as Lynx2-4 (08-June-1995) --- ============================================================================== 06-08-95 * All of the changes from lynx2-3-FM are now located at ftp2.cc.ukans.edu. We will call this version lynx2-4 and all new changes will be added here. - JP 06-05-95 * Added isc support based on post to lynx-dev from Ami Fischman (a540ami@pic.ucla.edu). - FM 06-04-95 * Initialize t1->name before the StrAllocCopy() in LYMainLoop.c for DIRED_SUPPORT tagging. - Rick Mallett (rmallett@ccs.carleton.ca) * Don't bother creating a /tmp copy of local files for downloading under the DIRED_SUPPORT, and don't include "Save to disk" in the download menu for such files. - RM * Deal with any newlines or tabs in statusline messages, along lines in patch from Peter Marquardt. - FM * Various fixes to ensure terminations of strings, along lines suggested by PM. - FM * Made HTAlert messages more readable in trace mode. * Replaced info.cern.ch with www.w3.org in userdefs.h and lynx.cfg. - GL * Allow definition of the global configuration file (lynx.cfg) path and name via a "LYNX_CFG" VMS logical or Unix environment variable. Will override the "LYNX_CFG_FILE" definition in userdefs.h. The -cfg command line switch will override those. SYS$LOGIN (VMS) or '~' (Unix) can be used in the path to treat the global configuration file as a personal configuration file ($HOME will be substituted for '~'). Meets objective in patch posted by Danny Meyer (mayer@ljsrv2.enet.dec.com) but does not seek lynx.cfg in the user's HOME directory without an explicit directive to do so. Issue a screen message and then exit if the configuration file is not readeable (rather than continuing as if one had been found and read). - FM * Added protections from NAMEless INPUT or TEXTAREA tags. - FM 05-29-95 * Changed close(*s) typo in HTTCP.c to NETCLOSE(*s). Caused tight loops if on error *s became stdin. - Peter_Marquardt (wwwutz@cha01.tfh-berlin.de) 05-20-95 * Mods of proxying/gatewaying code, replace obsolete info.cern.ch default URL addresses with www.w3.org, and add option to use the new www.w3.org wais search gateway in cover page for wais searches. - FM 05-10-95 * If a startfile specified on the command line maps to a MIME type which invokes an alternate display device, allow -homepage, if also specified, to be substituted for startfile on quiting from the display device, rather than forcing an exit due to the original startfile having been neither text/html nor text/plain. Based on a patch from GL, with protections against possible infinite getfile() loops added. - FM * Include -t switch when pico is the editor for reply_by_mail() in LYMail.c. - GL 05-04-95 * Oops. Had zipped the wrong LYReadCFG.c in yesterday's mods. - FM 05-03-95 * Do not override any external proxy and no_proxy variables with those in lynx.cfg. Bug fixes in code for setting proxy variables on Unix, based on patches from Roman Czyborra (czyborra@cs.tu-berlin.de). - FM * Fixes for tagging when Lynx jumps to another screen and then comes back, and deal with possibility of screen outputs from compress/decompress utilities. - GL * Added support for Sequent's DYNIX/ptx operating system, and bug fixes in HTTCP.c's BSDselect(). - Rodney Barnett (RBarnett@us.teltech.com) * Increased limits in select() loops to 5000 tries. - FM * Specify /nomember for compilations with DECC. It's not the default on AXP and the code assumes byte alignment. - FM 04-19-95 * Added Alan Hirsh's script (LynxDir:VMSPrint.com) for dealing with busy VMS print queues such that Lynx might otherwise delete the temporary file before it has been queued for printing. - FM * Added lots of type casting to the mathematical operations in GridText.c to minimize possible sizing/alignment problems for DECC/AXP (and any Unix flavors that use the Alpha chip). - FM 04-17-95 * Use test=test -z "$LYNX_VERSION" like test=test -n "$LYNX_VERSION" in mailcap files simply as flags for non-LYNX versus LYNX environment, without actually bothering to execute a test. - FM * Issue "** Bad HTML!!! Use -trace to diagnose. **" statusline messages when bad HTML is encountered, and suppress those statusline messages in favor of the TRACE messages when -trace is used. - FM * Fixed anchor deletion problem in yesterday's ISMAP mods. - FM * Removed -ltermcap from AIX makes (AIX doesn't use it). - FM 04-16-95 * Send a 0,0 coordinate pair if a user clicks on an ISMAP link, so that it's handled equivalently to clicks on an ISMAP submit button, and (typically) will return the server's default. Note that the default often is the parent document, and if so, the current document will be returned via redirection (pointlessly 8-). However, this mod allows the WebMaster to use a pure-text document as the default for Lynx. - FM * Protections against crashes for inappropriately positioned form tags. - FM * Fixes in handling of configurable INEWS path. - FM * Support for VT500 series terminals. - George Cook (cook@wvnvaxa.wvnet.edu) 04-12-95 * Makefile tweaks for bsdi and aix4. - FM 04-11-95 * Mods for building with BSD Interative (bsdi). - FM 04-08-95 * Added translation of HTML entities and decimal escaping for the VALUEs of INPUT and OPTION tags. - FM * For TYPE="image" INPUT tags, use "[IMAGE]-Submit" as a pseudo-ALT string, and submit a 0,0 coordinate pair if it's clicked, which typically will invoke the server's default (I guess something is better than nothing. 8-). - FM * Handle (possibly multiple) angle brackets in bookmark and showinfo link names. - FM * Fixed typo in for-ultrix code in LYMain.c. - FM 04-04-95 * Added ability to set proxy environment variables via lynx.cfg. - FM 04-01-95 * Added handling of the HTML 3.0 attributes for ISINDEX tags: ISINDEX HREF="reference" PROMPT="string" The ACTION attribute didn't make it into HTML 2.0. For now, we'll keep supporting it in Lynx by treating it as a synonym for HREF. - FM 03-31-95 * Mods for AIX v4.1.1 and addition of make aix4. - FM * Added prototype and extern declarations for BSDselect(). - FM * Fixed bugs in form_getstr() that could clobber the stack. - GL * Fixes for symlink handling. - GL * Made LYShowInfo.c aware of the setuid, setgid and sticky file modes, and nicer mode display if the file doesn't have the read bit set. - GL 03-30-95 * Fixed glitch in BASE tag handling. - FM 03-29-95 * Initialize pointers in add_trusted() of LYGetFile.c before the StrAllocCopy() calls. - FM 03-26-95 * Miscellaneous TRACE and related messaging tweaks. - FM 03-24-95 * Handle defaulted localhost in file BASE tags, and related tweaks of defaulted localhost handling in file URLs. - FM * Use RM_PATH for both file and directory deletions with the DIRED_SUPPORT remove function. - GL --- STARTING 2.3-FM --- ============================================================================== 03-23-95 * Designate this code set as lynx2-3-FM to avoid any confusion with the official releases at UKans. - FM * Tweaks of code for defaulted localhost in file URLs. Don't require any host field marker in such URLs - FM 03-21-95 * Added handling of defaulted localhost in file URLs. - FM * More protections against bad HTML. - FM * SYSLOGing enhancements. - GL * Suspend curses during my_spawn()'s, and fixes of code for the child and error return detection. - GL 03-20-95 * More protections against potentially infinite loops. - FM 03-16-95 * Enhancements of 'c'omment and mailto handling. - FM * Mods to build.com for enabling submission to BATCH. - FM * Ultrix terminal-handling fix. - Roman Czyborra (czyborra@cs.tu-berlin.de) 03-15-95 * Fixed bug in for-Unix directory listing code to screen out inaccessible parent directories. Was also being applied to ftp listings. - FM * Made bolding of H1 through H7 headers a lynx.cfg option, with the non-bolding as the compilation default. - FM 03-13-95 * Fixed bug in setting link[].lname elements to empty strings for form INPUT_ANCHORs. Was causing showinfo() to report the links from the previous document (yet another memory leak bites the dust 8-). - FM * Numerous fixups of bold and underline handling. - FM 03-09-95 * Increased the while() loop limit for select() tries in HTTCP.c to 500. - FM * Memory allocation/free fixes in HTAccess.c. - FM * Makefile and documentation tweaks. - FM 03-07-95 * Implemented HT_BOLD when specified for headers in DefaultStyle.c. H1 is now uppercase, bold, and centered. H2 - H7 are lower or mixed case, bold, and progressively indented. - FM * Miscellaneous enhancements of menu displays. - FM * Allow tabs and '$' in lynxexec commands. - FM * More TOUPPER/TOLOWER fixes. - FM 03-06-95 * Added ability to set the INEWS path in lynx.cfg. - FM 03-05-95 * Separated the newspost URL into newspost versus newsreply, and modified LYNews.c to behave more rationally for new versus followup posting. - FM * Added "mode reader" command for news list and article requests. - FM * Enabled saving of list_dir_style settings in the user's RC file. - FM * Don't restrict rearming SIGINT in LYClean.c for IGNORE_CTRL_C to just SVR4. - FM * Added numerous protections against core_dumps/ACCVIOs in HTML.c for bad HTML. Should also help reduce likelihood of infinite while() loops and a runaway CPU if binary files are mistyped and rendering is attempted. - FM * Added (unsigned char) type casts in addch() calls for proper handling of high value ISOLATIN1 characters. - FM * Limited the while() loop for select()'s in HTTCP.c to 50 tries, to help reduce likelyhood of a runaway CPU on undetected terminal disconnects. - FM * Fixed typo in build.com. - FM * Added Craig's lynx_help and about_lynx files for the lynx2-3-7 distribution, updated for lynx2-3-9 BETA. - FM --- STARTING 2.3.9 BETA --- ============================================================================== 02-20-95 * Updated doc files and passed on to UKans for archiving on the ftp2.cc.ukans.edu server as 2.3.8 BETA. - FM 02-17-95 * Further updates of building procedures for VMS. - FM * Further updates of lynx.man, lynx.hlp and documentation. Indicate that the inside_foo and outside_foo restrictions are not selective on systems which lack utmp. - FM * Changed yesterday's DGUX define fo DGUX_OLD, because only older Data General systems need it. - FM 02-16-95 * Added Jeff's updates of lynx.man and lynx.hlp, further updated for v2.3.8 - FM * Fixed typos in LYMail.c and HTTPC.c. - FM * Cleaned up #ifdef'ing for -DIGNORE_CTRL_C. - FM * Added -DDGUX for using inet_addr(host).s_addr instead of inet_addr(host) in HTParseInet() of HTTCP.c (Data General may need it). - FM * Don't report "-help" as an invalid option. - FM 02-15-95 * Handle HTML entities and decimal escaping in ALT strings. - FM * Build fixups for TCPWARE. - FM 02-14-95 * Added transmission of Accept-Language headers. A default preferred language is defined in userdefs.h. It can be overridden via lynx.cfg. Users can change that via the 'o'ptions menu and save their preference in their RC file. - FM * Tweak of FIXED record handling on VMS. - FM * Defined Unix ZIP_PATH and UNZIP_PATH in userdefs.h. - FM 02-12-95 * Added -localhost switch for restricting access to files and servers on the local host. - FM * Added -nobrowse switch for disabling directory browsing. - FM * Added -selective switch for requiring a .www_browsable file in each directory for browsing access to it. The enabling files are not included in the directory listings. - FM * Fixed up displaying of README files in directory listings on VMS. - FM * Replaced all tolower() and toupper() calls with the TOUPPER() and TOLOWER() macros in HTUtils.h (should help deal with some of the strange behavior reported for some flavors of Unix; see header of HTUtils.h). - FM Worked in mods from David Trueman (david@cs.dal.ca) - FM: * Don't issue the ../ link in Unix local directory listings if the parent directory is not readable (was already dealt with on VMS - FM). * Include an Organization: header in Unix news postings, if possible (was already dealt with on VMS - FM). * Don't allow the editing of Unix mail headers because that is error prone (no change on VMS; editable pseudo-headers are included for informational purposes, but the real headers are those of the account running Lynx - FM). * Don't hardcode the Unix mv command; use MV_PATH define in userdefs.h. * Moved the Unix COPY_COMAND define to userdefs.h as COPY_PATH. * Completed the Unix ZIP support. 02-10-95 * Added code for converting the headers of downloaded binaries on VMS to indicate FIXED 512 record format. See the documentation in userdefs.h, lynx.cfg and FIXED512.COM for more information. - FM 02-08-95 * Fixed glitch in HTInit.c which mis-casted the default MIME type for files with a .sh extension, causing the EXEC_SCRIPT function to be disfunctional. - FM * I think I finally have Lynx showing "(p# of N)" properly in the title lines (we'll see if perfection has really been achieved 8-). - FM * Extended directory browsing on VMS to the -homepage specification, if included on the command line, e.g., lynx -homepage=sys$login will start up Lynx with the default startfile, but the 'm'ain menu command will yield listings of the home directory. - FM * Added -fileversions switch on VMS for including all versions of files in directory browser listings (otherwise, only the highest version is listed, with no version numbers displayed). - FM * Modified LYEdit.c to use fopen(filename,"a") instead of access(filename,2) to verify write access for editing files (checking "append" access appears to be a more reliable way to do it across platforms/flavors). - FM 02-07-95 * Implemented directory browsing for VMS. - FM * Fixed printer command handling to actually prompt for and use a second filename argument if two "%s" strings are in the command map. - FM * Added anti-Unix-shell-spoofing code for all of the filename argument handling. - FM * Fixed glitch in getenv(DISPLAY) calls on VMS. 02-04-95 * Fixed a glitch in BASE support. Should now work properly when both standard and Lynx-specific hrefs are in the document. - FM 02-03-95 * Added support for posting to newsgroups from Lynx on VMS via the ANU-NEWS software. - FM * Numerous href parsing enhancements. - FM * Enhancements and bug fixes of news displays. - FM * Enabled display of Linknames with angle brackets (as for news URLs) in the showinfo page. - FM * Ensured that a file URL which is really an ftp URL will yield an "FTP is Disabled" statusline message when it's disabled. - FM 02-01-95 * Defined out the LYK_VERSION code and made Control-V a dead key again, since including the Lynx name and version strings in the showinfo ('=') and 'o'ptions displays is adequate, and people on different platforms or flavors associate Control-V with other functions. - FM 01-31-95 * Beefed up the BASE support. - FM * Made all WWWLib cover pages and menus HTTP/1.0 compliant (to ensure resetting of any BASE tags) and gave them more pizzaz. - FM * Trim terminal slashes in ftp paths if not the Welcome directory, so we'll get "Up to" links. Terminal slashes in file paths still force that directory to be treated as the Welcome directory. For example, ftp://host/blah/foo/ will have an "Up to blah" link listed, but file://host/blah/foo/ will treat /blah/foo/ as "Welcome" (both ftp and file "Up to" links are blocked by -DNO_PARENT_DIR_REFERENCE). - FM * The VMS SOCKETSHR_TCP support can't yet handle telnet, tn3270 or rlogin URL's (Andy Harper is working on it; be patient 8-). Modified HTTelnet.c to compile properly and behave rationally when such URL's aren't supported. - FM * Corrected doc files based on Larry Virden's (lvirden@cas.org) careful (or is it carefull) proof-reading. Thanks Larry! - FM * More type casts for ANSI C compliance. - FM 01-30-95 * Added numerous type casts for ANSI C compliance. - FM 01-29-95 * Prototyped HTHostName() for yesterday's mods in HTAccess.c. - FM * Updated lynx.cfg. - FM 01-28-95 * Added lynx name and version to the showinfo page and options menu. - FM * Tweaked Danny's news proxying mods for selective no_proxy directives with a port field (119) for news, and added equivalent code for wais (port 210). - FM * Updated the INSTALLATION file (I hope people read it 8-). - FM * Hadn't included last night's typo fix in the archived fileset. - FM 01-27-95 * Added Danny Mayer's (mayer@ljo.dec.com) mods for proper handling of no_proxy directives for news (NNTPSERVER) hosts. - FM * Worked in Ari Luotonen's (luotonen@dxcern.cern.ch) mods for sending a "Pragma: no-cache" header for use by a proxy server in conjunction with the RELOAD command. - FM * Fixed to handle file URL's appropriately in conjunction with proxying of ftp URL's. For file URL's on the local host, direct access is attempted, with no ftp attempt if that fails, whether or not proxying is in effect, and whether or not no_proxy directives have been set. Both ftp URL's, and file URL's on a remote host, are sought via ftp without a direct access attempt. File URL's for remote hosts are converted to ftp URL's before submission to a proxy server, so no special procedure need be implemented to induce the proxy server to act on them (You shouldn't continue using file URL's when you intend ftp, but Lynx will handle such URL's properly when encountered in old documents that use file when ftp is intended.) - FM * Fixed typo in yesterday's "psychotherapy". - FM 01-26-95 * Escaping of ISINDEX queries needed more tweaks to work properly with high value IsoLatin1 characters. - FM * Applied psychotherapy to the schizophrenic behavior that was exhibited when download, upload, print, history or showinfo commands were used during displays of each other's menus or temporary files. - FM * Enabled downloading of links from the history page. - FM 01-25-95 * Added LYK_VERSION command (^V) for showing version of Lynx. - FM * Include file fixes for TCPWARE. - FM * Fixed bug in showinfo() which caused core dumps when invoked while positioned on any form field which has a "linkname" but a NULL "filename". - FM * Fixed glitch in 'p'rint menu. - FM 01-24-95 * Enabled SOCKSification for any Unix flavor via the SITE-LYDEFS, SITE-DEFS and SOCKSLIB definitions in the top-level Makefile. Added info in INSTALLATION on how to do it for VMS. Included notes that you are better off building Lynx normally, and instead using a SOCKSified proxy server to get through a firewall. - FM * Added instructions in INSTALLATION for setting up proxy service. - FM * Fixed multiple submit button handling to distiguish which button was activated when they have the same name, and include only that button's name/value pair in the submission. - FM * Figured out how to apply all security and restrictions checks for redirecting URLs returned by ISINDEX searches, and accordingly lifted the bypasses for the previously insecure access types. - FM * Added option to use Jerry Whelan's (guru@bradley.edu) BSDselect() for SVR4 systems with the "type any key" problem. - FM 01-23-95 * Fixed up escaping of queries in HTSearch(). - FM * Updated the sample jumps files. - FM * Worked in socksification mods from Reese Ferry (reesef@VNET.IBM.COM) - FM * Enabled use of LOCALE for international characters with any Unix flavor (not just sun) via a define in the top level Makefile. - FM 01-22-95 * Updated the lynx.cfg configuration file. - FM * Implemented BASE handling. - FM 01-21-95 * Fixed -cfg switch handling so that the specified, alternate configuration file properly is read instead of the default system file specified in userdefs.h. - FM * Made 'p'rint, 'd'ownload and 'u'pload menu lists single spaced. - FM * Fixed HTFileFormat() in HTFile.c so that it properly processes the suffix-to-MIME-type mappings when version numbers are in local file URLs on VMS. We therefore no longer trim off the version number if if was included, and Lynx will now access and process that version rather than only the highest version. - FM 01-18-95 * Makefile fixes for convex and linux. - FM 01-17-95 * More Makefile fixes. - FM 01-14-95 * Fixes for FreeBSD. - FM 01-12-95 * Made the "ls -l" emulation in local directory listings a compilation option (see the top level Makefile). - FM * Made inclusion of "Up to" parent links in local directory listings a compilation option (see top level Makefile). - FM * Message fix for checkmail on Unix. - FM * Fixes for SCO with gcc. - FM 01-11-95 * Restored original hash table function in HTAnchor.c without (hopefully 8-) reviving anchor deletion problems. - FM * Fixed typo in HTAccess.c. - FM * Added code in HTFile.c from Timothy Newsham (newsham@aloha.net) for generating long style Unix listings (ls -l). - FM 01-10-95 * Escape dashes in lynx.man. - FM * Added NetBSD support from Bryan T. Vold (btv@wiley.HealthPartners.COM). - FM * Made anchor searches in hash tables case-sensitive (so paths which differ only in their case can be distinguished, as people using the DIRED support kept requesting) without (hopefully 8-) reviving anchor deletion problems. - FM 01-09-95 * More Makefile and code fixes for building properly with various systems and compilers. - FM 01-06-95 * Numerous fixes for handling signals (e.g., SIGWINCH) received during keystroke fetches, without (hopefully 8-) reviving the problem of runaway CPU's on undetected terminal disconnects. - FM * More Makefile and code fixes for building properly with various systems and compilers. - FM 01-05-95 * Changed define for syslog() logging to SYSLOG_REQUESTED_URLS and picked up logging of ISINDEX search requests that don't go through getfile(). - FM * More fixes for redirection returned via ISINDEX searches. - FM * Fixed missing newline character at end of last .lynxrc entry. - FM * More Makefile tweaks. - FM * More additions in LYCurses.h for compilers which fail to check whether TRUE and FALSE are already defined before defining them in curses.h. - FM 01-03-95 * Fix for redirection returned via ISINDEX searches. - FM 12-29-94 * Yet more top level Makefile tweaks. - FM * Fix bcopy problem for UCX. - Martin Zinser (zinser@vscn.gsi.de) * Fix ioctl() problem for UCX. - MZ 12-27-94 * More top level Makefile tweaks. - FM 12-26-94 * Added Lou Montulli's procedure for PURIFY to the top level Makefile. - FM 12-23-94 * Added Lou Montulli's memory leak fixes. - FM * Fixed HTLoadedDocumentTitle() call in LYGetFile.c. - FM --- RELEASE of 2.3.8 BETA --- 12-22-94 * The WFEB code as of 12-15-94 has been archived at UKans as lynx2-3-7, so we'll make this lynx2-3-8 to avoid confusion. - FM * Added bookmark_exec restriction for disallowing use of lynxexec URL's in the user's bookmark file or converted Mosaic hotlist. - FM * Enable any lynxexec URL in JUMPFILE if EXEC_LINKS has been defined. This allows you to set both LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE to TRUE and a single TRUSTED_EXEC rule that will always fail (e.g., TRUSTED_EXEC:none), so that *ONLY* the lynxexec URL's in the jumps file will be acted upon. - FM * Disallow lynxexec URL's in G)oto if no_shell is set or if LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE is TRUE. - FM 12-21-94 * Include LYFLAGS in the BSDI_Makefile. - FM * Numerous mods based on patches from David Trueman - FM: * Changed SUN4 ifdef for implementing the "reverse clear screen hack" to REVERSE_CLEAR_SCREEN_PROBLEM since not all sun4 systems experience this problem. * Changed a few messages to use key_for_func() instead of a hard-coded key mapping. * Allow control-C as well as control-G to abort or cancel on Unix (as already on VMS). On VMS, control-C and control-Y evoke a "Do you really want to quit?" prompt, and a 'n'o reply gets handled as if control-G has been entered in the first place. On Unix, control-C is treated simply as a synonym for control-G, and control-Y is not an interrupt signal. This seems the best way to handle those control signals, based on what VMSers versus Unixites would expect them to do. * Added code to disallow the writing of files beginning with a dot if NO_DOT_FILES is set TRUE in userdefs.h and/or lynx.cfg. * Added possibility of logging URL access via syslog() on Unix (ifdef'd with LOGGING). * Improved and made more flexible the security for lynxexec URL's. The default behaviour is the same as now, but source locations and the path (Unix) or name (VMS) of programs to be executed can be restricted via TRUSTED_EXEC rules in the lynx.cfg file. * Convert ~ in lynxexec paths to $HOME on Unix. * Several changes in DIRED support. Tidied and consolidated code. Changed the way tags are freed (fixing a bug where they did not always get cleared properly). Changed all programs to *_PATH defines. Changed the display of tags so they work with numbered links. * Added another restriction to disallow telnet port specifications in G)oto URL's. * A bit of special case code in jump handling. If key mapping is G, allow it to be typed as "go target". * Change strncmp in remap() to strcmp() (bug fix). * Report offending bad option in main(). * In mainloop(), make \r same as \t and \n. * Combine LYK_REMOVE code with LYK_DEL_BOOKMARK so that they can share the same key map. * If show_cursor is true, position cursor 1 position before the link, which makes it less likely that the link is obscured in defective terminal programs 12-15-94 * More fixes in LYno_attr_char_case_strstr() and LYno_attr_char_strstr() - FM * People didn't like having to erase the default WHEREIS ('/') search string when it wasn't what they wanted in a new document (though most didn't know that it can be done easily via ^U), and Lynx doesn't have real editing via LYgetstr() (just deletion from the end of the string), so I got rid of the the editing offer. The previous search string is still buffered across document fetches, and can be used across documents via NEXT ('n'). You also can use WHEREIS without a search string entry to turn off highlighting within the current document, and then NEXT to restore it. If control-G is used instead of a blank string to cancel a WHEREIS command, it does not turn off the highlighting. So everything everyone asked for is now possible (once you figure out how to do it 8-). - FM 12-14-94 * Oops! Fixes in tcp.h for MULTINET with DECC/VAX had left SOCKET_ERRNO undefined for all the other VMS TCPIP packages. That's what I get for working on this stuff too late at night. - FM * Additional ANSI compliance fixes in HTTCP.c for builds with DECC/VAX and non-MULTINET VMS TCPIP packages. - FM 12-13-94 * Modified searches for strings within the currently displayed document ('/', as opposed to 's' for ISINDEX searches) so that the highlighting of the search string is not retained when the current document is changed, and added recall buffering of the search string so that it's offered as the default for editing or reuse on subsequent '/' commands. Also, we now force redraws on invokations of such searches so that hits will be highlighted even if they occur on the current page. Links with hits such that they have embedded highlighting of the search strings will not have the embedded highlighting restored when the cursor is moved onto and then off of them (helps to distinguished whether it's intended or the due to the search), but will be restored whenever the page is redrawn. All embedded highlighting also is restored when the 'n'ext command is used to repeat the search in the current document, even if the returned hits do not cause a page change. Note that these searches first search only the links, and position you on the first link with a hit occurring after the current link. If there were no hits in the links, then the text is searched and the first hit occurring after the current link is positioned at the top of the page. They never did, and still do not, search both the link and text portions of the document simultaneously. Also note that ISINDEX searches never have and still do not yield highlighting of the query string(s) in the returned document. * Fixed LYno_attr_char_case_strstr() and LYno_attr_char_strstr() in HTStrings.c so that they properly ignore any attribute characters in the comparison string and return a pointer to the correct location of a match with the target string. - FM 12-12-94 * Modified FTP gateway to display 230- as well as 250- information/help messages, and on non-Unix as well as Unix systems. - FM --- RELEASE of 2.3.7 BETA --- 12-11-94 * Further tweaked explanatory comments in the configuration and samples files, and updated the instruction files. - FM 12-09-94 * Modifed PassesTest() in HTInit.c to avoid the overhead of system() calls by using getenv() when test -n "$DISPLAY" and test -z "$DISPLAY" commands are encountered in the mailcap file. Otherwise, needlessly expensive system() calls potentially could be made for virtually every viewer mapping in that file!. For Lynx, those two strings in the mailcap file now are equivalent to the :XWINDOWS and :NON_XWINDOWS flags, respectively, for VIEWER: assignments in lynx.cfg. - FM * Also modified PassesTest() so that it simply treats test -n "LYNX_VERSION" as success. Why spawn a system() command to see if Lynx is running, when it obviously is!. However, that string can be included in the mailcap file for assignments that should be restricted to Lynx if other software also uses the file. - FM * The above two mods make it unnecessary to actually use a "test" script for differentially setting viewers in XWINDOWS versus NON_XWINDOWS environments, so VMSers also can use the mailcap files for differential assigments of viewers, without those DCL error messages about "test" which have been mystifying so many people. However, yesterday's mods do make it possible for VMSers to use a "test" script for checking other environment or system features, and thereby setting viewer switches differentially, analogously to the command line switches for Lynx itself. - FM * Modified comments in samples/mailcap to indicate these enhancements. - FM * Modified comments in userdefs.h to describe correctly what the Lynx code does as of v2.3: Any SUFFIX or VIEWER mappings in lynx.cfg will be overridden in src/HTInit.c if they also appear there. Then, any mappings in mime.type or mailcap will override those from lynx.cfg and src/HTInit.c. The XLOADIMAGE definition is used in src/HTIinit.c, and you can use mailcap, but not lynx.cfg, to override it. - FM * Modified comments in lynx.cfg and samples/lynx.cfg to indicate what Lynx really does, and the use of mailcap files to do what lynx.cfg had claimed it could do but doesn't. - FM * Fully implemented multiple submit button support for both POST and GET forms. - FM * Added LYK_RESUBMIT keymap (with default binding to 'x' and 'X') for forcing submissions of forms to servers (i.e., never use cache). LYK_ACTIVATE (with default binding to right-arrow and RETURN) still fetches from cache if available. Statusline help describes these commands when positioned on a submit button. - FM 12-08-94 * Fixed HText_submitForm() in GridText.c to handle submitting INPUT types (e.g., type="image") which have name/value pairs. - FM * Modified DCLspawn to recognize -1 on failure and 0 or 1 on success as return or exit values of scripts, and report -1 or 0 as it's own return value. If a "test" script is used on VMS in conjunction with .mailcap for setting viewers, it should return -1 if the test fails and 0 or 1 if it passes (the "test" script can be DCL or an exectutable, and should be defined as a foreign command). If you don't have a "test" script, don't include that instruction in .mailcap. - FM * The tmpaddress pointer in do_www_search() of GridText.c needed to be initalized to NULL. - FM 12-07-94 * Made sufficiently ANSI compliant to build with DECC on VMS without using the /stand=vaxc qualifier, and further modified so that Lynx will build and run (extremely well 8-) with DECC/VAX. Whooh, that took some doing! These mods are also desireable for builds on Unix. - FM 12-02-94 * Fixed the query recall buffer in do_www_search() of GridText.c to restore the +'s to spaces and unescape properly. - FM * Include file and define fix ups, for SOCKETSHR/NETLIB support and convex builds, in tcp.h, LYShowInfo.c and top level Makefile. - FM 11-27-94 * Fixed bugs associated with failure to check the post_data element in addition to the address element when making push/pop decisions for the history stack, and when checking whether a requested document has been loaded successfully. The address element is insufficient for documents returned by POST'ed forms. - FM * Check -trace switch earlier in LYMain.c so that trace messages associated with setting up the Lynx configuration will actually be displayed. - GL 11-23-94 * More fix ups for the SOCKETSHR/NETLIB support. Close to "all set" but needs more field testing with the full range of TCPIP packages for VMS. - FM * Added HP_TERMINAL define for the DIM workaround to the REVERSE problem with HP terminals. If not defined, SNAKE builds will not make that substitution (would be better to do this in a way that checks the terminal at run time, but we'll hold off on that for now). - FM --- RELEASE of 2.3.6 BETA --- 11-21-94 * Replaced ucx$inetdef.h with socketshr_library:ioctl.h for the SOCKETSHR_TCP builds. Note that the ioctl.h is not presently included in the binary distribution of SOCKETSHR/NETLIB. You have to get it from the sources distribution. - FM 11-18-94 * Added Andy Harper's (A.Harper@bay.cc.kcl.ac.uk) "first round" support for SOCKETSHR/NETLIB (see SOCKETSHR.ANNOUNCE). Note that it is presently including ucx$inetdef.h which is not provided with SOCKETSHR or NETLIB source sets, and may not be available to non-UCX sites. We're checking into how to deal with that. - FM * Made recall buffering of shortcuts for the 'J'ump command a configuration file option (in userdefs.h and/or lynx.cfg). - FM * Added clearerr() before the GetChar() in LYStrings.c. - FM * Made the optional novice help lines conform to the "standard default" key bindings. Edit them appropriately in userdefs.h if you plan to use other bindings with that feature. * Added George Lindholm's (lindholm@ucs.ubc.ca) Makefile patch for making it just a tad easier to set up local compile options. - FM * Eliminated serial free() in LYSanctify() of LYGetFile.c. - FM * Restricted all "hack to fix reverse clear screen problem" code to SUN4 (had missed one 8-). - FM 11-15-94 * Eliminated separate list and atexit deletions of redirecting anchors. - FM * Added Rick Dyson's (Dyson@IowaSP.Physics.UIowa.EDU) updates of the descrip.mms files. - FM 11-12-94 * Worked in Malcolm MacArthur's (mcscs2mm@zippy.dct.ac.uk) mods for reading a printer's page length from the configuration file and calculating the correct number of pages for the statusline query on whether to continue if the document is longer than 4 printer pages. Further modified that code to use the current LYlines for the computation when the built in "print to screen" option is selected. See the comments concerning "PRINTER:" definitions in lynx.cfg for more information. - FM * Fixed HTInetStatus() in HTTCP.c to use SOCKET_ERRNO instead of errno, based on the platform/transport-specific definitions in tcp.h. Thanks to Danny Mayer (mayer@ljo.dec.com) for tracking down this glitch. - FM 11-10-94 * Added David Trueman's latest clever enhancement: The command line option -homepage=URL separates the notion of a home page (or main screen) from the start file. So, lynx -homepage=URL1 URL2 will start up with URL2 but the MAIN_MENU key will take the user to URL1 rather than URL2. This is useful for public accounts that start up with an information page or form, that then leads the user to a URL for the actual home page. The MAIN_MENU key can thereafter be used whenever the user wishes to return to the actual home page. - FM * Enlarged string buffer in LYEdit.c to handle large paths. - FM * Made 'K'eymap title and descriptions easier to edit for alternate languages (e.g., Dutch or Greek) as required by Dick Wesseling (but, alas, the editing still has to be done in LYKeymap.c, because it's too much to move into userdefs.h; someday Lynx will have real internationalization code 8-) - FM * Added titles to tops of jumps files so that the nesting level will be reset on reloads. - FM 11-09-94 * More prototyping and include file fixes in LYJump.c and LYMainLoop.c - FM 11-08-94 * Prototyping fix in LYJump.c. - FM * Miscellaneous fixes in src/descrip.mms. - FM * Hadn't included patch for latest LYUtils.c in lynx2-3-5.patches. - FM 11-07-94 * At popular request (already 8-), changed the "Jump to:" query to work exactly like the "goto:" query. The previous entry is recalled, a '?' must be entered explicitly to fetch the shortcut list (with an instruction about that added to the prompt), and a blank entry or Control-G returns the user to the current document. - FM --- RELEASE of 2.3.5 BETA --- 11-05-94 * Numerous wonderful enhancements based on patches from David Trueman, and entensions of those mods. Briefly: * Implemented 'K'eymap command for showing all of the key bindings currently in effect, with a description of their functions. This is faster and more helpful than the online help's description of the default key bindings. Must be uppercase 'K' if VI keys are ON, otherwise the command is case-insensitive. Try it, you'll love it! - FM * Implemented 'J'ump command for using "shortcut" names to access URL's in a local "jumps.html" file that has a sorted DL list which maps each target (shortcut) DT to it's full URL DD (see the sample jumps files added to the distribution). The URL's could be local or remote resources, or lynxexec or launch file URL's for system utilities (e.g., the shortcut "news" could invoke the news reader, "mail" the mail utility, "swing" the VMS File/Directory Management Utility, etc.). This feature is enabled by defining JUMPFILE in userdefs.h or lynx.cfg, and can be disabled via at run time via -restrictions=jump as a commandline switch. Must be uppercase 'J' if VI keys are ON, otherwise the command is case-insensitive. Try it, you'll love this too! - FM * Added a CHECKMAIL symbol which if set TRUE in userdefs.h or lynx.cfg will report the existance of unread mail at Lynx startup, and arrivals of new mail, via statusline messages. VMSers can block unsoliticed system NEWMAIL screen broadcasts ($ SET BROADCAST/NOMAIL) when using this feature. It can be disabled at run time via the -restrictions=mail switch, which also disables standard mail functions in Lynx, but still allows 'J'umps via a "mail" shortcut to a lynxexec URL for a script which could perform security functions before permitting or rejecting access to the mail utility. The hackers will really love this! - FM * Added ability to toggle the novice help line to show all of the principle commands. - FM * Miscellanous bugs and memory leaks found and fixed in conjuction with adding and enhancing the above features. - FM * The code may need some tweaking to build and run properly on some flavors of Unix (appears to be all set for VMS). - FM 11-01-94 * Fixed bug if editor is dereferenced. - David Trueman (david@cs.dal.ca) * Enable alternate boxing of popup windows via defines for BOXVERT and BOXHORI in userdefs.h - Dick Wesseling (ftu@fi.ruu.nl) * Check for LYCursesON before making any Curses calls in cleanup() - DW 10-31-94 * Looks like the last of the problems deleting anchors has been solved by Dick Wasseling, so the bypass is lifted again. - FM * If CANT_EDIT_UNWRITABLE_FILES is defined on Unix, write access is required to edit files (write and delete access are always required on VMS). - Alex Whittaker (alex@biu.icnet.uk) * Moved "Press RETURN ..." text to userdefs.h. - AW 10-28-94 * Uncache documents or bookmark file before reloads (via Control-R or 'r'emove command) in LYMainLoop.c. - FM * Uncache showinfo display or print, download, option, etc, menus before reloading those in GridText.c. - Dick Wesseling (ftu@fi.ruu.nl) * Above two fixes still don't completely solve the anchor deletion problem, so we're still bypassing. * Enable iso entity translations inside TITLEs - DW 10-26-94 * Problems when deleting anchors have been reported, apparently for documents which have been (re)loaded with LYforce_no_cache. So, we'll retore the bypass until that problem is tracked down. - FM 10-25-94 * Added coded for disabling mail for -anonymous via CAN_ANONYMOUS_MAIL in userdefs.h, and via -restrictions=mail (default is enabled). - FM 10-21-94 * Added Danny Mayer's (mayer@ljo.dec.com) samples/lynx.com - FM 10-05-94 * Modified tcp.h to deal with conflicting typedefing in the MultiNet types.h and time.h versus those for DECC. - FM * Define FANCY_CURSES for linux-ncurses. - FM 09-30-94 * -restrictions help list in LYMain.c should indicate "option_save" (not "options_save") for disabling the saving of options in .lynxrc. - FM 09-29-94 Mods based on patches from George Lindholm (lindholm@ucs.ubc.ca) - FM: * Fixed problem when IGNORE_CTRL_C is defined, that was created by the fix for runaway processes on Unix when undetected terminal disconnects occurred. * Added options to disable rlogin and/or ftp access. 09-28-94 * Use "hack to fix reverse clear screen problem" in GridText.c if SUN4 is defined (still need clarification on the exact nature of the problem to decide if this is the best way to handle it; it bothers me to have this kind of hack in the code 8-) - FM Mods based on patches from George Lindholm (lindholm@ucs.ubc.ca) - FM: * Move the "quit" text to userdefs.h from LYMainLoop.c for easier customization. * Typo fix for buttons submit value in GridText.c * Renable SIGINT signal for SVR4 machines if control-c is to be ignored when editing. * Solaris fixes for LYCurses.h. * Recognize pico as a special editor. * Fix -restrictions help text. * Fix -telnet and -news options so that they actually do something. * Fix upload code so that you can have more than one uploader option, and fix for freeing a static variable. * Various prototype fixes. * -editor command line option signals that the editor can't be changed. * Added a SYSTEM_EDITOR option to lynx.cfg for a locked editor. --- RELEASE of 2.3.4 BETA --- 09-27-94 * Alas! I think I've tracked down and fixed all the bugs that were causing ACCVIOs/CoreDumps if anchors were deleted/freed when freeing the cached documents. So now we do delete/free them. This plugs a major memory leak in Lynx (which we knew about, but heretofore had to live with). - FM * Added Danny Mayer's (mayer@ljo.dec.com) fix so that MIME types are handled case-insensitively. - FM * Restored text/html (WWW_HTML) as the default MIME type when an HTTP/1.0 server fails to send it in the headers. This happens because it's the default in Mosaic and developers using that don't realize their server or script code is failing to send it (other MIME types will be caught as an error, and the code will be fixed by the developers). Garrett's change to application/octet-stream (WWW_UNKNOWN) was technically correct. You can change it back to that where indicated in HTMIME.c if you prefer that Lynx be technically correct but functionally wrong when dealing with this situation. - FM --- RELEASE of 2.3.3 BETA --- 09-22-94 * Finished up redirection handling. Will now handle serial redirections across multiple sites (with an arbitrary limit of 10, to prevent the possibilily of an infinite loop of circular redirections), works properly with redirections via the VALUE fields of OPTION tags, and no longer alters any anchor addresses, avoiding all the problems that caused in the hash table. - FM * Worked in Rick Mallett's (rmallett@ccs.carleton.ca) fix for runaway processes on Unix when undetected terminal disconnects occur. - FM * Added Eric Jon Rostetter's (ERIC@uoft02.utoledo.edu) code for proper keyboard handling with DEC eightbit terminals. - FM * Added David Greer's (david_greer@robelle.com) mods for curses on HP terminals. - FM --- RELEASE of 2.3.2 BETA --- 09-17-94 * More fix ups of forms structure handling, freeing and redirecting. - FM * Fixed problem with free's of startfile, thanks to Dick Wesseling ftu@fi.ruu.nl - FM 09-14-94 * More memory leak and redirection fix ups (still not perfect). - FM * Various mods to speed up memory management with VAXC on VAXen (still slow compared to DECC on AXPen). - FM 09-13-94 * If an ISINDEX document is one returned by a previous search, the 's' command puts up the query which returned it, for editting as a new query (use Control-U to erase, Control-G to abort) Otherwise, no string is offered in the prompt for a database query. If the previous query is submitted without modification, a message to use Control-R to resubmit the same query is display (so that the search will not be repeated inadvertantly). - FM 09-12-94 * Fixed failure to load the popped menu properly when a gopher search was selected and a NULL string, Control-G, or arrow key is entered to cancel the prompt for a query. - FM * Hit lists/documents returned by ISINDEX searches are now always displayed at their tops. They no longer inherit, inappropriately, the page and link numbers of the previous list/document. - FM 09-11-94 * Fixed redirection handling so that the hash tables are updated and the history stack works properly, including with forms that have VALUE fields in OPTION tags that return Location: URL's for searches (e.g., the CUSI forms at Nexor). Whew, that took some doing! - FM 09-05-94 * Fixed up remaining problems with OPTION VALUE="foo" handling and the associated popup window positioning and scrolling. - FM * Fixed bugs and several inadequacies in the history structure and code (still needs some redesigning to deal more effectively with all aspects of documents returned by forms and/or redirection). - FM * Now deals properly with anchors in a single document returned by a form. - FM * Command line file specs on VMS can now be any valid explicit, wildcarded, partial, or relative VMS specification, and will be converted to a valid file://localhost/ URL, so that partial or relative URL's within the file also will be interpretted properly. - FM * Now trims trailing white space and won't get tripped up by '=' characters when reading configuration files. - FM * Miscellaneous bug fixes and enhancements. - FM * Tracked down and eliminated more memory leaks. - FM --- RELEASE of 2.3.1 BETA --- 7-08-94 * Correction handling of OPTION VALUE="" implemented. * Miscellaneous bugs corrected. 6-17-94 * Option to log memory leaks at exit by defining LY_FIND_LEAKS at compilation. 6-17-94 * Check amount of allocated memory, rather than just number of documents cached, before deciding to remove the oldest document (implemented for VMS with VAXC, not yet for Unix or VMS with DECC). 6-16-94 * VMS bookmark file version numbers are reset on additions of bookmarks. 6-16-94 * Gopher URL's with /hGET%20/ are converted to http URL's, as in the UMN Unix/VMS gopher+ client. 6-16-94 * Added DIRECT_WAIS support for VMS 6-16-94 * Added build support for VMS TCPWare TCP/IP 5-28-94 * Increased nesting of HTML elements from 40 to 400. Hopefully this will limit won't be encountered often. 5-28-94 * Modified for handling of Telnet URLs with spaces/other characters in the username. 5-26-94 * Began terminating memory leaks with extreme predjudice. 5-24-94 * WAIS searches will now work when they are of type "www/present" as opposed to only viewing the source. 5-23-94 * Added VMS CMU TCP/IP support, thanks to Andy Harper. --- RELEASE of 2.3 (19-May-1994, see CHANGES2-3) --- PK0]dccdocs/IBMPC-charsets.announcenu[ Summary ======= This document is primarily for people who will be using Lynx on a remote UNIX or VMS system via an MS-DOS based terminal program. General Information =================== Lynx comes with built-in translation tables to map the 8-bit character codes or character entities coming in from an HTML document to their equivalent codes, where possible, for various character sets. IMPORTANT: you should choose display character set in Lynx Options Menu according to your font installed locally. Probably it would be cpXXX. Please contact lynx-dev mailing list if you want any new codepage not listed there. Note that all points of the connection between the display at your end and Lynx at the remote end must be 8-bit clean. If the high bit is being stripped at any point in between, the only character set you can use (effectively) in Lynx will be "7 bit approximations". More on that later. MS-DOS character set weirdness ============================== MS-DOS uses a bass-ackwards character set in which half the normal characters have been replaced by pseudo-graphic line and box-drawing characters, and in which almost all of the international characters are mapped to nonstandard numbers. It also contains Greek letters. Further confusing matters, there is more than one MS-DOS character set. The character sets are referred to as "codepages," each of which has a unique number. IBM PCs and compatibles come with one hardware-based default codepage and a keyboard to match. In the US market the hardware codepage is 437. PCs destined for other regions of the world often have a different default codepage which contains characters for other languages and keyboards. Under MS-DOS, one can load different codepages into memory and use one of them instead of the hardware default. If you are using Lynx through an MS-DOS based terminal program or telnet client, you should use an appropriate DOS codepage in Lynx and you need not any translation within terminal program (this is different from old-style behavior and works better because of superior Lynx translation support). Check your display by accessing Martin Ramsch's ISO-8859-1 table (iso8859-1.html in the Lynx distribution's test subdirectory). Ramsch's table describes each entity and shows examples of each. It should be immediately obvious that you are either seeing what you are supposed to, or you're not. If you see box and line-drawing characters and mismatched letters and so on, you are likely displaying 7 bit data, not 8. Ensure that all points of your connection are 8-bit clean: On any remote UNIX systems you must pass through, do 'stty cs8 -istrip' or 'stty pass8'. 'stty -a' should list your settings. On any remote VMS systems, do 'set terminal /eightbit'. Make sure your terminal program or telnet client is not filtering 8-bit data. You may found the choice between "VT-100 strict" and "VT-100 relaxed" emulation mode - use relaxed. Note: Procomm for DOS has a confusing "Use 7 bit or 8 bit ANSI" setting -- this has to do with ANSI sequences. If set to 8 bit, some 8-bit character sequences, including those passed by Lynx as well as those which are for your terminal type (vt100, etc.) will be processed by Procomm as ANSI screen control codes and will most likely result in a garbled display. Set it to 7 bit. If going through a dialup terminal server, you may have to set the terminal server itself to pass 8 bit data. How to do this varies with the make of the server, and in some cases only a system admin in charge of the box will have the authorization to do that. SLIP or PPP connections should already be 8-bit clean. PK0]DDdocs/README.releasenu[-- $LynxId: README.release,v 1.1 2009/09/06 13:57:02 tom Exp $ The version number with dots appears in, e.g., README docs/README.metrics lynx.hlp lynx.man lynx_help/Lynx_users_guide.html The version number with dashes appears in several places, e.g., lynx.cfg lynx_help/lynx_help_main.html makefile.in userdefs.h PK0]v}docs/CHANGES2.8nu[======================================================================= --- Release of Lynx v2.8 (March 10, 1998) --- ======================================================================= 1998-03-10 * omit platform-specifics about release (recommended by HN). - TD * drop samples/lynx.cfg since it is redundant (recommended by HN). - TD * modify makefile.in so that "make install-cfg" does not edit lynx.cfg to point at local helpfiles, while "make install-help" will now do that (reported by LP). - TD 1998-03-07 * move ifdef's for EXP_8BIT_TOUPPER inside UPPER8 function to allow check for DOS/WINDOWS display charsets. - LP 1998-03-06 * clarify relationship between the configure script and userdefs.h with respect to the LYNX_CFG_FILE definition. - TD * newer CF_FIND_LIBRARY autoconf macro, to allow ncurses library in /lib only, needed for SUSE Linux. - TD * add casts to UPPER8 function's comparison for equality of parameters, and to TOUPPER macro to guard against sign-extension due to prototype. - AAC * correct spelling of -lcur_colr library in aclocal.m4, change order of tests to put -lHcurses second on HP-UX (patch by Jonathan Sergent). * restore simple zmodem downloader script, displaced by recent undocumented change (there are some concerns about security or permissions with the alternate script). - DK * DOSPATH localfile patch: corrected display of file://localhost/c:/, which was displayed as file://localhost/c%3A/ (tweak LYConvertToUrl() in LYUtils.c). Now we may start "lynx c:" or 'go' c: and not see these strange letters. On the other hand, if % and # symbols found in local path it will be escaped as before (note that #fragment is not supposed here to be used from command line...) - LP * workaround error in vendor's terminfo description of 'dtterm' by ensuring we limit color pair-number accordingly. - TD 1998-03-04 * strip -g compiler option if not otherwise specified, for debugging (note that autoconf 2.12 does not try to use -O option due to concerns about compiler optimization). - TD * correct value of $host_os used in CF_CURSES_LIBS for special-case of HP's -lHcurses (Jonathan Sergent ). * correct def7_uni.tbl for Greek letters, note about UPPER8 assumption added to chrtrans/README.format. - LP * few comments corrected. - LP 1998-02-28 * create new PRCS revision (2.8pre) for pre-release testing of Lynx 2.8 -TD * remove RELEASE_STATEMENT, merging it into README as per HN's recommendation - TD * comments/minor changes to HTDOS.c, HTDOS.h, LYUtils.c - LP * document recent fix for RAW_DOS_KEY_HACK in lynx.cfg - DK * rename CHANGES.new to docs/CHANGES2.8 - TD * undo last minor change to UPPER8 - LP 1998-02-27 * add RELEASE_STATEMENT file. - TD * modify slang configuration to add fake 'scrollok()' - JED * modify LYmktime() so that 2-digit years must be greater/equal to 70 to be in 1900's (patch by Bela Lubkin). Also adjust parse_windows_nt_dir_entry() and parse_cms_dir_entry() as noted by Bela - TD * comment-out entries in cp1252_uni.tbl which correspond to nonprinting control-characters - LP * add logic in SGML.c to correspond with 2.7.2 logic for codes used by Microsoft FrontPage. - LP * remove unneeded code for nbsp, ensp, emsp, thinsp and shy from handle_entity() in SGML.c - LP * ifdef UPPER8 function with EXP_8BIT_TOUPPER, add configure option --enable-8bit-toupper to allow testing. - TD * case-insensitive search and 8bit letters: It was realized that information about upper/lower mapping got from TOUPPER which depends on locale in its 8bit and usually fails on non-UNIX systems. We introduce UPPER8 and strcasecomp8 to implement 8-bit aware case-independent search using one simple assumption: 8bit upper/lower case letters have their "7bit approximation" images in def7_uni.tbl matched case-insensitively (7bit). The cost of this assumption is that several differently accented letters may be interpreted as equal but this is negligible if the search string is more than one character long. (LYStrings.c, also HTString.c and LYMainLoop.c). - LP, TD * add SunOS 4.x-specific ifdef to quiet redefinition warnings for sys/ioctl.h vs sys/termios.h - TD * convert usage/options messages into arrays to simplify maintenance. - TD * add "-useragent" command-line option to set "User-Agent" (request by Merlin Mathesius ). - LP * tweak HTML in LYDownload.c, LYPrint.c to restore some double-spacing effects altered in 'collapsible spaces' change 1998-01-25 (reported by James Elkinton ). - LP * use strncasecomp/strcasecomp consistently throughout to avoid library dependency on strncasecmp/strcasecmp. - TD * correct lengths in several strncasecmp calls for command-line options (though -w is still an abbreviation for -width). - TD * test-build with BSD curses on OS/2 EMX (does not display properly), and with ncurses -TD * add configure check CF_FUNC_LSTAT -TD * modify CF_CHECK_ERRNO so that configure script on OS/2 EMX finds sys_errlist[] -TD * reset styles[] and styleSheet list in DefaultStyle.c, HTML.c so that when a user reloads a page with ^R, we undo changes to those data structures (reported by Larry Virden). - TD * remove extra copy of HTML.h from Implementation directory. - TD * add CF_GCC_ATTRIBUTES to configure script, to use in flushing out unused parameter warnings (and later, to support prototypes for logging). - TD * rename 'extra_entities' to 'unicode_entities' (recommended by LP) - TD * add configure option --use-default-colors, to allow background color to use default value (request by SUNAGAWA Keiki ) -TD * change default for --disable-internal-links so it is normally-off - TD 1998-02-19 * add configure test CF_FIONBIO, some ifdef's (e.g., S_IFLNK) to support build on OS/2 EMX. - TD * add configure option --disable-extended-dtd, for testing - TD * split-out entities.h from HTMLDTD.c - TD * remove obsolete mapping in "private" e000 area of mnem_suni.tbl, mnem2_suni.tbl, rfc_suni.tbl - LP * remove unused function HTMLGetLatinOneValue() - LP * remove logic that would attempt lookup of Unicode entities by index into the unicode_entities.put_entity method (e.g., of HTML_dtd), in HTML.c (HTML_put_entity) and HTMLGen.c (HTMLGen_put_entity) - LP * tweaks to HTPlain.c, LYCharUtils.c and SGML.c, remove extra checks for Unicode mdash, ndash, trade, as well as "iso-8859-2", "koi8-r", since they are done in the chartrans tables - LP * add an alias 'H' for F1 when using RAWDOSKEYHACK (LYStrings.c) - DK * restore -DRAWDOSKEYHACK to src/makefile.dos, reported by DK - TD * correct a typo in CF_CURSES_LIBS configure macro, which caused the configure script to not add termcap library to the list - TD * correct --disable-internal-links, by adding DONT_TRACK_INTERNAL_LINKS to config.hin - TD 1998-02-13 * use size_t in SGML_dtd. - TD * remove extra trademark symbol and quotes from chrtrans/*.tbl, since they are in the default def7_uni.tbl - LP * New item to lynx.cfg added: PREPEND_CHARSET_TO_SOURCE (similar to BASE), we need it to resolve charset for downloaded/printed HTML sources which became local. This is really useful because downloaded and printed texts may happened to have different charsets so assume_local_charset fails. For downloaded source meta charset added from HTTP charset header (if and only if present). For printed source meta charset added from display_charset (real charset after chrtrans). If the original source has its own meta charset and we add the second on top - Lynx currently use those on top and ignore others (old) value (that is correct, although non standard like BASE on top). The compilation default is FALSE (compatibility). - LP * modify ncurses mouse behavior to match slang (use button 3 rather than button 2 for "previous document" (reported by Michael Ritzert) - TD * use case-independent comparison for tail-only comparison in override_proxy (patch by pg@sweng.stortek.com) - TD * remove unneeded definitions of ALT_CHAR_SET, NCURSES_VERSION in src/makefile.dos - DK * correct syntax for the RAW_DOS_KEY_HACK in lynx.cfg, add a little information on how to compile this. Also patched makefile.dos to make compilation of the raw dos key hack the default when compiling in DOS. - DK * change back to boolean since the logic was unused: UCCanTranslateFromTo(), UCCanTranslateUniTo(), and UCCanUniTranslateFrom(). - TD * Mods of SGML.c and LYCharUtils.c to improve handling of entities, obsolete stuff removed (not all yet). - LP * -localhost mode: disable interpreting BASE HREF= if local_host_only to resolve local html files with BASE (Lynx add base to downloaded sources and this may affect links if looking them with -localhost). (tweak in html.c). - LP * Modify HTMLGetEntityUCValue in LYCharSets.c: we begin to move from old style entities[] to unicode-based. - LP * added a few comments. - LP 1998-02-07 * Fixed a bug in HTTP.c which could cause trashing of authorization info for an origin HTTP(s) server if the request is being proxied. - FM * Tweak in HTTP.c so that the reloading variable is not reset until after any resubmissions due to authorization challenges. - FM * Tweaks of userdefs.h, lynx.cfg, LYMessages_en.h, LYMain.c, LYMainLoop.c, LYClean.c, LYReadCFG.c, and LYGlobalDefs.h so that the QUIT_DEFAULT_YES compilation symbol can be overridden in lynx.cfg, in keeping with the principle that only strict security-related compilation symbols cannot be overridden at run time. - FM 1998-02-05 * adjust formatting, comments & some messages in WWW files to simplify comparison with 2.7.2 version. (I have preserved some chunks of difference, ifdef'd NOTUSED_FOTEMODS or NOTDEFINED for ease of comparison -- these may be removed at a later time, when we are done absorbing changes from 2.7.2) - TD * Update SGML entity to Unicode table in HTMLDTD.c from ftp.unicode.org - lots of new entities, iso-latin-1 now included there. See also new files in test/ directory: sgml.html and unicode.html. Tweak a few typos in test/*.html according to sgml.html. Add a few new entries in def7_uni.tbl according to sgml.html - LP * Cleanup iso01-iso09, cp866 tables against ones found at ftp.unicode.org -LP * Strip the fat from LYCharSets.c - unnecessary obsoleted tables removed and redirected to SevenBitApproximation table (ones which have unicode tables override it anyway, those for CJK had exactly the same tables as SevenBit..). - LP * Remove obsolete "Other ISO Latin" charset, which works _exactly_ the same as "7 bit approximation" (See the note on 06-14-96 where it comes from) -LP * Sort the list of charsets in Options according to 2.7.2 for 1997-10-15, see the comments in UCinit at the bottom of UCDomap.c - LP * add ifdef to HTFile.c to workaround conflicting S_IFIFO vs S_IFSOCK (e.g., on Apollo, from a report by Dave Eaton ) - TD * updated INSTALLATION (patch by HN) - TD * modify DOS handling of CTL-C and CTL-BREAK handling for DOS to allow exiting via SIGINT when pressing CTL-C or CTL-BREAK regardless of the BREAK setting in DOS. This leaves the BREAK setting unchanged unless CTL-C or CTL-BREAK is actually pressed (in which case it leaves BREAK ON) - DK * add note about Lynx vs frames to User's Guide (from Al Gilman) - TD 1998-01-27 * correct lynx.man to reference section "1" (one), not "l", since it is not installed in the latter (reported by Jason Castonguay ) - TD * fix for VMS declarations of mainloop() and from_hex() (reported by FM) - TD * add to include-paths in libmake.com, build.com (reported by FM, citing Brian Tillman) - TD * revert HTML.c to use LYHandleSELECT() - TD * align cases for function keys in LYStrings.c with 2.7.2 - TD * remove EXP_CHARTRANS ifdef's - TD * remove symbol USE_SIZECHANGEHACK -TD * adjust formatting, comments & some messages in most remaining ./src files to simplify comparison with 2.7.2 version. - TD 1998-01-25 * Changed the utf-8 Display Character Set string to "UNICODE UTF-8" (i.e., added the hyphen between UTF and 8), and fixed typos in the comments about iso-8859-5. -LP, FM * Modified HTML.c to add collapsible spaces before and after IMG ALT strings or pseudo-ALTs whether or not the IMG element is within Anchor content. The occasional absence of such spaces due to poor HTML was problematic for blind users. Note that markup which uses an image for a fancy letter with the ASCII letter as an ALT will have that letter separated from the rest of the word. Also note that these spaces will not be collapsed in PRE blocks, but IMG is invalid in PRE blocks. The spaces could be omitted when IMG is used invalidly in PRE blocks, but that would revive the problem for blind users that they might not be present at all, so it seems better to suffer extra spaces in such cases. - FM 1998-01-24 * Tweak in HTAccess.c to reset the title element in anchors on forced reloads. - FM 1998-01-22 * Tweaks in HTML.c to prevent collapsing of blank lines within TEXTAREA default values. Note that we still strip any leading or trailing blank lines (reported by Edward S. Marshall ). - FM * Tweaks of LYCurses.c, LYMain.c, LYOptions.c, LYReadCFG.c, LYUtils.c and LYAuto.c to ensure properly setting, with internal buffering, and avoid memory leaks for the display and homedir values (reported by pg@sweng.stortek.com). - FM * include userdefs.h in LYCurses.h to address redefinition warnings for curses-related configuration. - TD * adjust formatting, comments & some messages in recently-modified files to simplify comparison with 2.7.2 version. - TD * remove obsolete logic from UCCanTranslateFromTo, (recommended by LP). - TD * make character set names (e.g., cp437, cp850, next) consistent in lynx.cfg, userdefs.h (reported by LP). - TD * change configure script to check for termcap library before curses, in case it is dependent. - TD * More corrections in the Russian Cyrillic area of def7_uni.tbl. - LP 1998-01-17 * correct logic for no_color_video by ensuring that if not defined, it doesn't disable underline with color. - TD * remove NSL_CLONE - didn't build. - TD 1998-01-16 * eliminate gcc "shadowed variable", "nested declaration", "no previous prototype" warnings. - TD * add --disable-internal-links configure option. - TD * remove W3C gateway (patch by DK, based on email from Gerald Oskoboiny ). - TD * documentation updates (patch by JS). - TD * add CONTENT_TYPE to environment of lynxcgi POST documents (reported by Ty Sarna & FM). - TD * add NSL_CLONE ifdef that enables use of the Linux clone() call instead of fork() for the gethostbyname() calls in HTTCP.c. (patch by Ryan Nielsen ). - TD from the lynx code. I think the following patch does this. 1998-01-15 * Tweak of the NSL_FORK code in HTTCP.c to prevent zombie processes from being created when gethostbyname() is interrupted. - RN * Corrected the Russian Cyrillic area of the def7_uni.tbl Unicode to 7-bit approximations conversion table. - LP * Mods of UCAux.c, LYCharUtils.c, SGML.c and HTPlain.c to use 7-bit approximations instead of 8th bit stripping when the document charset is koi8-r and the Display Character Set does not have the corresponding characters. - FM * Tweaks in HTML.c to ignore a newline character immediately following a PRE start tag more consistently. When PRE blocks are used to create blank lines, you should get only as many as are actually included in the PRE block, unless you include less than the number specified for "before" the block to which you return, in which case you'll get the latter number of blank lines. - FM 1998-01-13 * Fixed a typo in the HTParse() code of HTParse.c for checking whether a colon in the host field indeed delimits a port number. - FM * Changed the internal MIME names for all Microsoft Windows codepages from cp#### to windows-####, since the latter is used more commonly as the charset value in META elements and/or Content-Type headers, and most of them have been registered that way with IANA. Note, however, that Microsoft uses cp instead of windows- prefixes in the charset names for the Unicode conversion tables submitted to the Unicode Consortium. Also note that we still treat cp, cp-, and ibm prefixes as synonyms for the windows- prefix. - FM 1998-01-06 * work around for 'keypad()' function w/o corresponding key defines (reported by Francisco A. Tomei Torres for NeXTstep 4.0). - TD * quote message in install rule, just in case (from HN). - TD * correct expression to supply default value of .cfg file's pathname (reported by LE & Ambrose Li ). - TD * correct dependency of .cfg files upon $(libdir) in makefile.in - TD 1998-01-04 * correct temporary filename for -traversal -crawl (patch by Doug Kaufman). - TD * correct redefinition of SYSTEM_MAIL_FLAGS. (reported by Doug Kaufman). - TD * uncache current document when character set may have changed (patch by Andrey A. Chernov) - TD * modify Linux setfont code to restore the original font on exit - TD * correct missing backslash (again) in makefile.in (reported by Mark Mentovai - again) - TD 1998-01-02 * workaround for sed expression when rerunning configure with config.cache for slang libraries (reported by Hynek Med). - TD * fix indicated by Laura Eaves (LE) for LYUCFullyTranslateString_1() - TD * modify SPAWNING_MSG for DOSPATH configuration, avoid unnecessary use of clear-screen in shell (patch by Doug Kaufman). - TD * remove install-help from list for install rule, adding message to indicate how to install it. - TD * install lynx.lss only if color-style is configured. - TD * correct filemode for DJGPP when processing config-file, patch by Doug Kaufman). - TD * add LYNX_LSS_FILE to config.hin, reported by Ambrose Li . - TD * new copy of INSTALLATION file from HN. - TD * add COPY* to install rule. - TD * simplify includes in UCdomap.c by using include-path in makefiles. - TD * build configure script with patched autoconf to workaround limited environment space on CLIX 3.1 - TD * rename mnemonic_suni.tbl to mnem2_suni.tbl to accommodate 'make' on older system with 14-character name-limit. - TD * sorted some lists (e.g., character sets) which were unreadable. - TD * incorporate most of FM's changes from 971124 to 971230 (see below). - TD (Note: don't try to use fflush(stdin) -- it's an FAQ -- nonstandard, dumps core on some platforms). 1997-12-30 * Added Unicode translation support for "DosBaltRim (cp775)" and "WinBaltRim (cp1257)". - FM 1997-12-29 * Fixed bug in the order of re-initializations for the 1997-12-22 get_connection() mods. - FM * Fixed typos in some LYCharUtils.c comment. - FM * Fixed typo in LYrcFile.c comments concerning the NO_FROM_HEADER symbol. - DK 1997-12-24 * resolve conflict between autoconf $INSTALL and lynx's INSTALL_PATH (reported by Scott McGee). - TD * modify CF_CHECK_FUNCDECL to work with non-gcc compilers. - TD * add to prototype test for getgrgid getgrnam, needed on SVr3. - TD * add install-lss to makefile.in. - TD * modify order of includes in LYKeymap.c so that USE_EXTERNALS is defined if it comes from userdefs.h (inferred from a report by Larry Virden). - TD * correct spelling of USE_EXTERNALS which prevented --enable-externs from working. - TD * move assignment to stderr from VMSexit to cleanup function (reported by Brian Tillman & FM). - TD * modify UCChangeTerminalCodepage() to not use stderr, disentangling it from stderr/logfile hack. - TD * rename docs/CHANGES2-* files to docs/CHANGES2.* (reported by Doug Kaufman). - TD * add start_color() call to DOSPATH version of start_curses() to fix problem reported by Doug Kaufman - TD * correct typo in ColorCode() function (reported by Doug Kaufman) - TD * modify comments in makefile.in (patch by HN) - TD * minor fixes for CF_CHECK_ERRNO, CF_SIZECHANGE, CF_SLANG_CPPFLAGS macros. - TD * add configure option --enable-nsl-fork to turn on code defined by NSL_FORK. - TD * add configure option --enable-links to turn on code defined by UNDERLINE_LINKS. - TD * add configure option --enable-font-switch, to turn on code defined by EXP_CHARTRANS_AUTOSWITCH. - TD * modify configure CF_CURSES_LIBS test to look also for ncurses, since some systems do not have a "curses" library (reported by Michael Ritzert). - TD 1997-12-22 * Reworked -width=NUMBER command line switch for specifying the screen width for formatting of dumps (default is 80; forced wraps occur at one column less than the screen width, i.e., at 79 by default). - FM * Tweak of get_connection() in HTFTP.c to re-initialize the elements of the connection structure when using a previously allocated connection object. -DW, FM * Mods of LYexit.c, LYClean.c, LYMain.c and LYMainLoop.c to fflush() all standard file descriptors in conjunction with all fopen() and fclose() operations on the TRACE log and redirections of stderr via equality statements (see 1997-12-16, 1997-12-13 and 1997-07-18 mods). - FM 1997-12-18 * forgotten last } UN-inserted (John Line) - WB * few commented messages corrected according to RFC2068 (HTTP1.1) (Leonid Pauzner) - WB 1997-12-17 * Changed all %i tokens to %d or %ld in functions that always get decimal values in their arguments. - FM 1997-12-17 (all patches by Leonid Pauzner) * open text mode while writing lynx.rc and bookmarks files LYrcFile.c and LYBookmark.c (forgotten last } inserted). - WB * add a comment about binary mode in LYMain.c and pile them in one ifdef - WB * few misprinted characters (in comments) corrected in \chrtrans\cp850_uni.tbl - WB 1997-12-16 * Further mods in LYClean.c (see 1997-12-13 mods) do block the *stderr = LYOrigStderr; statement in cleanup() for VMS with VAXC. - FM * Added an ELGOTO keystroke command, mapped by default to upper case 'E' (lower case 'e' still invokes the editor for the current document, if it is a local file), for passing the URL (or ACTION) of the current link to the line editor for editing as a goto URL. Works like the ECGOTO ('G') keystroke command for editing the URL of the current document as a goto URL, i.e., if the URL is not modified, is set to a zero-length string, or ^G is entered, the command is cancelled. - FM * Mods of LYMainLoop.c to disallow ECGOTO or ELGOTO commands for File Management (DIRED_SUPPORT) menu URLs. - FM 1997-12-15 * Added reporting of the Discard value (YES or NO), in the Cookie Jar Page (note that until we have code for storing cookies beyond the current session, Lynx behaves as if Discard were set, whether or not it was set by the server, but we still report the server's instructions, as we do for the Maximum Gobble Date). - FM 1997-12-14 * added a lynx.cfg switch to turn on/off extended dos translations for keys. -WB * added minor DOS tweaks by Doug Kaufman and myself. - WB * fixed windows binary mode piping. - WB 1997-12-13 * Tweaks in LYList.c to make the link numbers correspond with those in the current document when LINKS_AND_FORM_FIELDS_ARE_NUMBERED in on, and to show the current document's URL in the display. - FM * Mods in HTTP.c to show the body of a 305 return status instead of ever acting on it. A number of security/privacy problems with this status are being discussed in the HTTP-WG, and it's likely to be dropped or deprecated in the next revision of the HTTP/1.1 specs. - FM * Restored the v2.7.1 HTmmdecode() that's specific for iso-2022-jp in HTMIME.c. We still only call it when HTCJK == JAPANESE, and the generalized version reportedly has problems. - FM * Removed the *stderr = LYOrigStderr; statement from VMSexit() in LYCurses.c and added it to the if() claused section which closes the TRACE log file, if opened, in cleanup() of LYClean.c. This is just a stab in the dark for dealing with reported problems on exit with VAXC on VAXen. We may need to use freopen() for redirecting TRACE messages to a file for VAXC or VAXen (there's no apparent problem with the current code with DECC on VMS/AXP). - FM * Added more function key cases to the keypad() mode switch() in LYgetch() of LYStrings.c. We don't need them with this code set, but they may as well be there for completeness. - FM * check for and use ncurses default-color extension, use to make the color-style configuration usable on xterm with white background. - TD * add cases in LYgetch() for remaining VT220-compatible codes, reported by Michael Ritzert and FM. - TD * add configure test to see if slang can be linked without curses or termcap libraries, request by John Davis. - TD * set umask in mkdirs.sh script to work around users who have set root's umask to 077. - TD * split up install rule to install-bin, install-cfg, install-man and install-help. - TD * suppress suffixes in top-level makefile so 'make' won't try to create a file named "install" from install.sh - TD * make $(CPPFLAGS) inherit consistently from top-level makefile. - TD (reported by Mark Mentovai) * add configure option --enable-externs, to turn on USE_EXTERNS. - TD * use explicit comparison for enum values, fix compile problem with VAX C for UCAux functions (reported by Brian Tillman). - TD 1997-12-03 * Remove CHANGES.configure, since it is redundant. - TD * Make -g3 option check for OSF/1 3.2 consistent with -Olimit check. - TD * Use 'result' rather than 'time' in mktime.c to avoid shadowing. - TD * Use wborder only if configure finds it, not ifdef FANCY_CURSES. - PHDM * List of systems having strerror replaced by configure test. - PHDM * Beautifying of mktime.c (`now' was misleading). - PHDM 1997-12-02 * Mods in LYCookie.c to prompt whether to accept (or reject) cookies with an invalid domain value which yields a hostname prefix with a dot (as specified in section 4.3.2 of the IETF cookie drafts and RFC), rather than rejecting it silently. Note that it is rejected in non-interactive (-dump or -source) mode, because the user can't be prompted. - FM 1997-11-27 * Added a PREPEND_BASE_TO_SOURCE configuration symbol in lynx.cfg which can be set FALSE to suppress prepending of a Request URL comment and BASE element to text/html sources retrieved for 'd'ownloading or passed to 'p'rint functions. Note that this prepending is not done for -source dumps unless the -base switch also was included on the command line, and the latter switch overrides the setting of the PREPEND_BASE_TO_SOURCE configuration variable. - FM 1997-11-25 * Mods in LYMail.c and LYPrint.c to handle to=address(es), cc=address(es), subject=string, keywords=word_list, and body=message fields in the ?searchpart of mailto URLs as specified in the 1997-11-16 draft: ftp://ftp.isi.edu/internet-drafts/draft-hoffman-mailto-url-03.txt The cc=address(es) values are now handled as a Cc: header, and a self copy, if confirmed on prompt, is added to the Cc: header. Note that the draft now allows mailto:?to=address(es)[&foo=blah] as a format, i.e., without an address before the ?searchpart. The Netscape ?searchpart tack-on broke all pre-existing implementations of mailto, and this breaks Lynx's support through v2.7.1. Though it's now supported in this code set, don't use it. Complaints and formal requests to provide this functionality via a new scheme (e.g., mail: or smtp:) without breaking existing implementation of mailto:, including from TimBL (HimSelf :), thus far have fallen on deaf ears. You can send email to those deaf ears via: mailto:masinter@parc.xerox.com%20(Larry%20Masinter) Don't allow the IETF backward compatibility principle to go down the drain. - FM * Mods to support use of the PMDF SEND command on VMS in conjunction with a temporary header file, so that all headers specified in the ?searchpart of mailto URLs can be included in the mailing, and made that the compilation default in userdefs.h to go with the default MAIL_ADRS mask for PMDF (If the "generic" VMS MAIL utility is used, not all of the headers can be specified on the command line, as it requires). Look at the code in LYMail.c and LYPrint.c that is used when isPMDF is TRUE as a model of how to do this with other header-file-capable VMS mailers (but I don't have any besides PMDF, and can't do it for you :). - FM * Tweak of the 1997-11-17 URL parsing mods so that relative symbolic elements immediately preceding a ?searchpart are handled identically to when a ?searchpart is not present. - FM * Added support for setting both SYSTEM_MAIL and SYSTEM_MAIL_FLAGS in both userdefs.h and lynx.cfg. - FM 1997-11-23 * integrate PHDM's patch. - TD * Check for existence of sys/wait.h. - PHDM * Do not include sys/stat.h twice. - PHDM * New autoconf-macros to check if a function is declared after including a specific set of files. - PHDM * Declare strstr if it is not declared by string.h. - PHDM * Declare getgrgid and getgrnam if not declared by grp.h. - PHDM * Provide strstr and mktime implementations, and use them if needed. - PHDM * Always include sys/types.h in HTUtils.h. - PHDM * define NO_GROUPS if we do not have getgroups. - PHDM * define NEED_REMOVE also if test yields unknown. - PHDM * define mode_t if not done by system include files. - PHDM (phdm@macqel.be) * change CF_UNION_WAIT to use compile+link rather than compile, to ensure that we pick up the wait-macros rather than an implied function, which should fix configure problems on NeXT for Francisco A. Tomei Torres . - TD * spelling nit from Larry Virden. - TD * add osf3.0 to special case compiler options using -g3 in place of -O -g, from Harsh Kumar . - TD * remove redundant "-c" option from $(installbin) in makefile.in, reported by Michael Warner , for OSF/1 4.0. - TD * if configure --srcdir is not used, comment-out rmdir's in "make distclean" rule. - TD * modify recent erase/clear change so that it applies only to FANCY_CURSES, since BSD curses does not otherwise clear the screen when restoring after popup. - TD * modify change for boxes so this builds with BSD curses, which has no wborder() function. - TD * reverse ifdef for NO_SIZECHANGEHACK to USE_SIZECHANGEHACK, which is normally off, since this code did not work with BSD 4.4 curses, SVr4 curses, or ncurses 4.1 with xterm. (Will make a configure test if anyone can identify a configuration that works). - TD 1997-11-21 * Changed LYE_LINKN to LYE_LKCMD (still mapped by default to Ctrl-V; may need to be entered twice for some systems) for invoking a prompt to enter any Lynx keystroke command when in form text fields. - FM 1997-11-20 * Added an LYK_CLEAR_AUTH command, mapped to underscore ('_') by default, which clears all authorization info for the current session. This is recommended for the situation when one leaves one's terminal but doesn't want to end the browser session, nor want others to be able to retrieve protected documents with previously entered username and password info. Note that we don't yet have a way to block access to any protected documents which are still in cache. - FM 1997-11-19 * Tweak of HTTP.c to ensure closing of the connection when interrupted ('z'apped) on the first socket read. - FM 1997-11-18 * Mods to use the explicit label "Bad HTML:" in trace messages corresponding to BAD_HTML_USE_TRACE messages. - FM, KW * Tweak of the restored TABLE-in-PRE block handling to deal with the case when it's encased in a CENTER or DIV with ALIGN="center". - FM * Changed docs/README.defines to refer to INSTALLATION file - HN 1997-11-17 * Changed the default ASCII BOXVERT and BOXHORI definitions from '*' to to '|' and '-', and new function LYbox() for non-VMS (n)curses. - FM * Use explicitly specified characters for drawing the corners of popup boxes with non-VMS (n)curses if we have also specified characters for vertical and horizontal lines. - KW * Mods in HTTP.c to trim any "LYNXIMGMAP:" leader from Referer header values and strip the #fragment when making http(s) requests via links in the pseudo-documents constructed for MAP elements. - FM, KW * Mods of SGML parsing to better handle SELECT blocks with invalid markup, in effect for both TagSoup and SortaSGML parsing (for the latter just in case it doesn't already prevent invalid markup from being passed on). Only OPTION elements are accepted in SELECT blocks. Otherwise, if the element is a form-related start tag, the SELECT block is closed and the new form-related element is started. All other elements are ignored. A FORM end or start tag ends any open SELECT block and the current FORM (before starting another FORM if it is a start tag). Note that we now support SELECT blocks outside of FORM blocks, which some providers are using for "informational" popups, but no Lynx user would do anything that awful, right? - FM * Tweak in LYMainLoop.c to override an LYresubmit_posts flag if we are reloading a popped document due to a NOT_FOUND or NULLFILE return value from getfile(). - FM (But if the document that would be loaded after such a failure has POST data and is not in memory, still jump to the PREV_DOC code, see enttry for 1997-11-03. - KW) * Worked in a variant of AJL's suggestion of setting LINES and COLUMNS artificially high before the initscr() call with Unix curses, then using a dummy call to size_change() for setting LYlines and LYcols to the actual screen dimensions, so that increases in the screen size during the Lynx session, and not just decreases, can be handled. Note that one still needs to do a RELOAD (^R) overtly to create a new HText structure based on the current screen size. - FM (The new code can be disabled by defining NO_SIZECHANGEHACK, in case some curses version or terminal cannot deal with it. - KW) * Tweaks of the chartrans code. - FM, KW * Change in HTNews.c to ignore very long bogus newsgroup names when listing available groups. - KW * Tweaks in code for highlighting search text in anchors, to better deal with terminals in UTF-8 mode. - KW * Mods to ignore anything past a '?' character when simplifying URL paths, as is now more clearly specified in the Fielding URL draft. Note that we still assume a ';' is not in fact a parameter delimiter, or won't have a value with characters that could be misinterpreted as relative path specs. - FM * Increased the redirection limit to the original Lynx's value of 10, because the HTTP/1.1 draft no longer will restrict it to 5, but instead will leave it to the discretion of the browser (and I like 10, as a reminder of the "good old days" :). - FM 1997-11-15 * Mods of parsing in HTML.c to restore support for the TABLE-in-PRE-block HTML kludge described in http://ppewww.ph.gla.ac.uk/~flavell/tablejob.html, which stopped working in conjunction with the 1997-05-21 mods (see below) for treating TABLEs as DIVisions to support ALIGNment attributes in TABLE markup. The PRE-in-TABLE-block HTML kludge was not affected by those mods but works only with the TagSoup parsing mode. - FM, KW 1997-11-12 * Made handling of the 'x' in hexadecimal character references (&#xH;) case insensitive, as for the "alphabetic digits" (a-f, A-F). - FM * Added a LINKN command key in the line editor, mapped to Ctrl-V, for invoking the F_LINK_NUM prompt when in form text fields. Ctrl-V is still a dead key under other circumstances in the line editor. - FM * remove options --with-lss-file and --with-cfg-file, since the corresponding files will always be installed under $(libdir), reported by Henry Eric Nelson (HN). - TD * modify configure script and makefile templates to permit builds with the --srcdir option, noted by Philippe De Muyter. - TD 1997-11-08 * Added Unicode support for "DosArabic (cp864)", "WinArabic (cp1256)", "DosGreek (cp737)", "DosGreek2 (cp869)", "WinGreek (cp1253)", "DosHebrew (cp862)", and "WinHebrew (cp1255)". Note that we still have no code for taking DIR attributes, or directionality in general, into account. - FM * Mods to handle "cp-#" charset names as synonyms for "cp#", and some cp# names as synonyms for "windows-#". -FM, KW 1997-11-07 * Change of LY_SLrefresh() in LYCurses.c as suggested by JED - FM * add logic to make install-directories as needed. - TD * remove --disable-char-trans option (ifdef's still remain). - TD * correct type used in first compile-test for union wait. - TD * correct order of deletions in "make distclean" rule. - TD * new versions of macros used to check for ncurses version. - TD * don't suppress -I/usr/local/include when checking -I/usr/local/include/*, to accommodate older versions of gcc. - TD 1997-11-06 * Use erase() instead of clear() in some places, to avoid unnecessary full screen repainting even for UNIX (and similar) curses. Renamed LY_SLclear to LY_SLerase, but it is used for erase() and clear() now, so there should be no change in behavior for slang introduced by this. - KW * Added new format for lines in chartrans .tbl files: U+NNNN "a string" where the string can have C backslash-escaped characters. This allows to write replacement strings with 8-bit characters that won't be garbled when the .tbl files are transferred in some non-binary way. Note there is no ':' between the Unicode value and the beginning quote character. - KW * Changes to HTMLDTD.c (for SortaSGML parsing) and HTML.c (second line of defense) for dealing with invalid SELECT tags. Also tolerate SELECT outside of forms. - KW * Change in HTLocalName for DOSPATH so that it doesn't depend on whether HTDOS_name returns a pointer to static memory or not. - KW * Started new file docs/README.defines. Renamed CHANGES to CHANGES2-7, removed duplicate 2-7-1 entries. Minor changes to INSTALLATION, other files. CHANGES.chartrans is gone. - KW * Tweaked color style stuff again. Statusline may behave better. - KW * Don't use memmove for HEAD in HTNews.c. - KW * For UNIX, use normal umask permissions, instead of the extra-cautious temp file permissions, for files saved to disk by the default actions for PRINT and DOWNLOAD. - KW * Changes (untested) in the code dealing with reading of compressed files in HTFile.c, in parallel to the code for other systems. - KW * Mods to avoid va_start redefinition warnings when building with slang. - FM 1997-11-05 * Change in LYForms.c to avoid full screen repaint after popup is retracted for slang. - KW, FM 1997-11-03 * Internal links code revised. Some details follow, but first a summary of the basic premises. Links in a document given as href="#fragment" or href="" (empty, but href attribute is present) mean something different from href="url#fragment" or href="url" (where url is a non-empty absolute or relative URL not including a fragment), they are internal links pointing to an element or a location within the same copy of the document (or to the document itself, for href=""). In contrast, a URL-Reference with a non- empty URL refers to a (generally...) external resource. If the "url" happens to coincide with (or, if it is relative, resolve to) the URL from which the current document was retrieved, the current document is a representation of the resource, but not the same thing. In most such cases we can treat href="#fragment" and href="url#fragment" the same way, i.e. activating such a link is interpreted as a request to reposition within the current document; we are using the current document as a cache copy of the resource (like we would other documents in the memory cache). But if we have marked our copy as no-cache, it seems more consistent to treat activation of a href="url#fragment" link as a request for retrieving a new copy and _then_ locating #fragment in it, as we do for "any-other-url #fragment" if we have cached a document which represents "any-other-url" and which is marked no-cache. Following a href="" link should just result in repositioning to the start of the document, not in a new retrieval for no-cache documents. If the current document is the result of a POST submission, there is in general no way to refer to its underlying resource with a URL, since there is no URL notation for "url+post_data". Internal links can be used within the context of this document, but there is no way to hyperlink to it or parts of it from "outside". A link to a href="url" or href="url#fragment" target should always imply a GET retrieval, whether it occurs within a document from a POST submission or not, for consistency. This understanding also applies to other than uses of URL- References in documents, for example the link implied between a USEMAP attribute and a MAP element; but not to all uses, for example a FORM's ACTION requires an external resource and not an internal reference, so ACTION="" is resolved to an absolute URL (using a base URL if one is given). The semantics for URL-less URL-References are given in Internet Draft , including that "Traversal of such a reference should not result in an additional retrieval action." No comparable prescriptions are made for references which have a URL, in particular it is not stated that they should be treated as equivalent when the URL coincides with or resolves to the current document's retrieval URL. The changes to the Lynx code attempt to implement what is outlined above, by keeping track of how a link destination was originally specified. href= "#fragment" and href="" links are still "resolved" into a "url#fragment" and "url" form, for use internally, and if an explicit NOCACHE action is requested, and for generating lists of links etc., and in general for use outside of the context of the current document. To the best of my knowledge they do not lead to unwanted (or misdirected) resubmission of POST content without prompting the user for confirmation (although the prompt texts probably need improvement). - KW * The notion of the context of the "current document" is extended, so that auxiliary LYNXIMGMAP documents generated by Lynx are within the scope of the underlying document, i.e., the document containing the MAP and AREA elements. Although they are treated as separate documents for display and internal handling, following links between the underlying document and its LYNXIMGMAP documents will result in display from cached data (if available) even for no-cache documents, if a fragment-only (or empty) URL-Reference was used in the HTML. This includes the link generated for pointing from the IMG to the LYNXIMGMAP if the USEMAP attribute value was was fragment-only; the LYNXIMGMAP is normally regenerated from the list of MAP and AREA elements kept internally when a link to it is activated. (Note that a LYNXIMGMAP screen is still not reloaded from external sources even when RELOAD or NOCACHE keys are used, if data for the MAP is found in the internal list; but that reloading the underlying document will refresh the internal lists.) - KW * List Page screens are also in the context of the underlying document, so that internal links in the underlying document can be listed and activated from the List Page. When following an internal link from a List Page, it is not pushed on the history stack (similar to the History List Page), to reduce the chance of confusion when walking back through history. - KW * LYNXIMGMAP and List Page auxiliary documents can now be associated with POST data. This does not mean that the data is posted to a "LYNXIMGMAP:" or "file:" URL, which is impossible; but that the underlying document is associated with the POST data. This way these aux documents can still have links regarded as "internal" pointing to the document of which they are logically a part, keeping track of what POST data are applicable if several form submissions have occurred. Normally the underlying document should be in the document cache when such a link is activated, so that resubmission of the POST can be overridden. If it is not found, resubmission may happen after user confirmation. Although the POST data content is not shown on such aux pages, it can be inspected with the INFO ('=') command. Note that the association of LYNXIMGMAPs and List Pages with POST data automatically excludes them from various operations which may otherwise be possible, such as bookmarking or inclusion in the 'V'isited Links Page. Note also that such aux pages are treated internally as different documents from their POST-free counterparts with the same address, which might be generated for example after typing the address at a 'g'oto prompt while viewing a different text. It may be possible to generate confusing situations, but regenerating the displayed data (by invoking 'L'IST again, or by following a LYNXIMGMAP: link) will always show the currently applicable information. For image maps, the change implements link-following capabilities which come naturally to graphical UAs, which can handle IMG USEMAP and the corresponding MAP elements from the same data stream as objects within the same document instance. - KW * To implement the above, MAP and AREA information from a POST response is not kept in the global list shared by all other documents, but in a separate list specific to the underlying (containing) document and the POST data. The specific lists are managed with the underlying document's anchor structure so that they can automatically expire after the anchor is removed from memory and will not stay around and accumulate until session end. - KW * POST data is kept in mainloop when following an internal link, but is now always dropped for links that were given with a URL. This removes the limitation by which a link in a POST response to the URL of the POST submission script would be inappropriately converted to a resubmission of the POST data. (example: search form from ) - KW * Changes to the PREV_DOC handling in mainloop. When encountering documents that may need to be reloaded while walking back in history, because they have POST data associated and are not marked "safe" and are either not found in the memory cache or -resubmit_posts has been set, the user is prompted for confirmation as before; if the reply is 'n' the document will be skipped but if the user cancels with ^G the walkback operation is cancelled and the currently viewed document remains loaded. Some of the aux documents which can new be associated with POST data may be automatically skipped if their document structures are not any more in memory. - KW * When following a link marked internal from a List Page and confirmation is required, ^G may also have the different effect of cancelling the operation while responding 'n' may attempt to follow the link as a GET request (i.e. with POST data dropped). - KW * In some situations, automatic popping from the history stack in mainloop after getfile fails to load a new document could lead to resubmission of a previous POST request without prompting. This is now avoided by jumping to the code handling PREV_DOC. - KW * Use new LYinternal_flag variable for propagating info to HTAccess, rather than overloading LYoverride_no_cache. - KW * Tweaks for bad form tag soup with crashes on unclosed SELECT. Changes in HTML.c and GridText.c to prevent memory leaks resulting from insanely placed or unclosed form field tags, hopefully not introducing other problems... - KW 1997-11-02 * Changes in HTParse's scan to leave additional '#' characters alone after the first has been found when scanning (from left) for fragments, and to apply the "don't treat '#' as start of a fragment for some kinds of URLs" hack only when the '#' will become part of what has been scanned as a path. NNTP articles with more than '#' in the message-id are now accessible with the "news:" or "nntp:" schemes. We should actually always escape when generating URLs and unescape when parsing them instead. - KW * Changed HTUnEscape to leave '%' alone if not followed by two valid hex digits. - KW * Allow the HEAD key and -head and -mime_header flags for "lynxcgi:" URLs and for "news:" and "nntp:" URLs that specify a single news article. - KW * Change to writing of POST data in LYCgi.c, to close file descriptor after done writing and before reading as suggested by mhw@bcs.org.uk (Mark H. Wilkinson), and to check status from the write() call and retry if needed. Note that the code is not appropriate for handling large amounts of POST data, since it still first does all the writing and then all the reading. - KW 1997-11-01 * Added support for presentation of text/plain files in SOURCE ('\') mode, homologously to text/html files, rather than treating the command as a synonym for 'd'ownload when viewing a text/plain file. Note that if the text/plain file has no long lines, the display of it will not change, but otherwise, the long lines will not be wrapped in SOURCE mode, and thus can be 'p'rinted without line wrapping. One still should use 'd'ownload for a faithful copy of the file, i.e., without charset conversions and expansions of TABs. - FM 1997-10-30 * Get numbering of links on List Page right, by faking hidden links for form fields which get counted but are not selectable. - KW * Allow LYNXHIST: links in List Page since the History Page may get 'L'isted... - KW * Mods of HTML.c parsing to close any open Anchor or emphasis elements at the starts of TABLE elements, as the Big Two's TABLE handlers appear to do now. - FM * Tweaks of charset handling via META elements and CHARSET attributes. - FM 1997-10-29 * Tweak of SortaSGML DTD for insane HTML with FORM start before HEAD. - KW * Prevent memory leaks from HTChunks for option and textarea with very bad markup, added TRACE and BAD_HTML_USE_TRACE warnings for those. - KW * Don't call tigetnum("ncv") for _WINDOWS - BD * Added Unicode tables for the "DEC Multinational", "Macintosh (8 bit)", and "NeXT character set" display character sets. - FM 1997-10-28 * Disable setting of the `reloading' flag in HTLoadDocument which would generate no-cache headers for request where this is not appropriate. - KW * Memory leak for first OPTION in SELECT removed. - KW * Changed HTDOS_name to not return pointer to static area. - Binh Do * Changes to INSTALLATION file. - HN * Fix in HTMIME.c to recognize Content-location. - KW 1997-10-27 * Don't disable FORMs that have INPUTs with TYPE="file" or TYPE="range" since those fields may be optional and the rest of the FORM may be valid to submit. - FM * Updated links to www.w3.org in help files. - KW * Some changes for DOS compilation. - DK * Changes to INSTALLATION file. - HN * Tweaks of internal links stuff. - KW * Allow HEAD on URLs starting with LYNXIMGMAP:http by stripping the prefix. - KW * Reverted LYCheckForCSI() to previous incarnation. - KW 1997-10-26 * If compiled with -DDONT_TRACK_INTERNAL_LINKS, behavior with respect to internal links as in FM's code. - KW * Some chartrans tweaks. - KW 1997-10-25 * Changes to INSTALLATION file. - HN * Make temp file names conform to 8+3 naming convention for DOS, and give LYNX_TEMP_SPACE priority over TEMP and TMP for DOS. - DK * Create temp file names with '-' char as separator between pid and sequential number for non-8+3 systems, to prevent (unlikely) collision. - KW 1997-10-24 * Change in HTML.c to use the base (rather than current document, if the base differs) in all cases for form ACTIONs (i.e., if the ACTION is empty, or has a lone fragment, or an ACTION attribute is not included) as specified in the -07 to -09 Fielding URL drafts. - FM 1997-10-23 * Fixed a few typos and glued together a few URLs to make it easier for folk to cut and paste them, in the new INSTALLATION file. - LV 1997-10-22 * Many locations of files changed, about_lynx/ directory and references to aboutfilepath removed, userdefs.h reorganized, changed README, new INSTALLATION file, doc changes, some doc files removed. - HN (Removed paragraph in README which doesn't apply yet, some files still not done - KW) * Patch to WWW/Library/djgpp/makefile - WS * Added entity names from HTML 4.0 draft to extra entities in HTMLDTD.c - KW * Understand lists in ACCEPT-CHARSET attributes. Added a list of forms to GridText structure (currently underused). - KW * Don't try to use box drawing chars in UTF-8 display mode. - KW * Changed chartrans mechanism (UCdomap.c, makeuctb.c) so that the "default" translation table is now used as a fallback for other translation tables. This also applies to display character sets which do not have a chartrans table file but are listed in LYCharSets.c. Changed syntax of table files (see src/chrtrans/README.format), added a keyword to disable using the fallback. Currently def7_uni (corresponding to "7 bit approximations" and the MIME charset "us-ascii") is used as default table, as before; but previously the default table didn't have any real meaning. Conceptually every translation table (unless it disables fallback) is extended as if it included all the replacements from the default table. Note that mappings for some characters in the default table file still differ from the old mappings given in LYCharSets.c, and what is displayed e.g., for umlaut characters may not be consistent, this still has to be sorted out. It may just have become more visible now. - KW * Tweaks to some replacement strings in def7_uni.tbl; contributions of more useful strings would be welcome... - KW * Removed mappings for invalid chars from some chartrans files, removed Ethiopic chars from iso01_uni.tbl. - KW * Some other corrections and tweaks for chartrans mechanisms. - KW 1997-10-21 * Fixed handling of Control-D (delete character under the cursor) in the line editor when the cursor is at the end of the line instead of on a character in the string being edited. - FM * revised tests for wait/waitpid/union-wait. - TD * correct/update handling of default prefix in CF_WITH_PATH macro, used for parsing --with-cfg-file and --with-lss-file options. - TD * add uninstall target to top-level makefile. - TD * remove redundant install options from $(INSTALL_DATA). - TD * add configure --with-lss-file option - TD * minor cleanup of gcc warnings, ifdefs. - TD 1997-10-20 * Mods in the CSO/PH gateway to set the anchor's safe flag to TRUE so the user need not be bothered with confirmation prompts on resubmissions of the search form. - FM * Tweaked the break point setting code in GridText.c for CJK di-bytes so that one is set after a recognized "ESC(" ISO 2022 escape sequence has been found. - FM 1997-10-16 * Tweaks to recognition of Japanese (better recognize x-euc-*), and to the mechanism in GridText.c keeping track of which encoding is used for Japanese. The state for this is now reset on explicit '\n' and '\r' received by the HText object in addition to space chars. - KW * Tweaks in HTTP.c to avoid access to uninitialized memory and pacify paranoid dbx. - KW * Try to more consistently remember the charset in effect for a document when going to SOURCE view, using new LYUC{Push,Pop}Assumed functions. Note that this is only in effect immediately when switching to SOURCE view; any later reloading while within SOURCE view (including those caused by RELOAD, RAW_TOGGLE and other keys, or by Options Screen changes) may still revert to the usual assumption about charset, which means a charset specified in a META tag may be forgotten at that point; this may be considered a feature... - KW * Refer to TagSoup and SortaSGML parsing (coined by FM), rather than "old" and "new" DTD. - KW * Made some of the changes concerning and removal and location changes of files proposed by HN. - KW * Restored LYCheckForCSI example function to its previous form, with a check added and comments added. - KW 1997-10-15 * Changed the order of display character set entries for the options menu popup. "ISO Latin 1" and its "DosLatin1 (cp850)" and "WinLatin1 (cp1252)" equivalents come first, then the system-based charsets (note that I changed "IBM PC character set" to "DosLatinUS (cp437)"), then the CJK and Vietnamese charsets, then "Other ISO Latin" (probably don't need that one any more), then the known ISO 8859-# charsets with their homologs (e.g, Dos and Win Cyrillic and KOI8-R) in groups, then "UNICODE UTF 8" and the Unicode mnemonic charsets. - FM * Various fixes for color style code, should prevent memory corruption. - KW * Some LYCharUtils.c cleanup. - KW * Added some of the changes from fotemods to SGML.c, especially handling of ‌ as allowing a line break, and conversion to UNICODE UTF-8. - KW * Mods in code handling mailcap lines, to avoid access to invalid memory. - KW 1997-10-12 * Added LYLeakSACopy and LYLeakSACat to LYLeaks.c. Running Lynx compiled with LY_FIND_LEAKS defined will now give the source locations where StrAllocCopy and StrAllocCat are used, if those create leaks. Added missing include of LYLeaks.h in LYCookie.c. - KW * More heavy tweaks in LYCharUtils.c. Associated changes in HTChunk.c (new functions), small change for -raw (in connection with attribute values) in SGML_character. LYCharUtils.c is still a work in progress... - KW * Tweaks to allow some chars as data input (0x97, 0x9b, 0xa0) if the current display character set seems to have those values as printable characters (by testing LYlowest_eightbit[]). - KW 1997-10-11 * Mods in HTFTP.c to recognize NetPresenz server (variation of AppleShare claiming to be Peter Lewis server?, try current ftp://www.unicode.org/), and to show server's identification from initial greeting on info screen for FTP URLs. Other cosmetic changes in HTFTP.c. - KW * Fixed various memory leaks. - KW * Some more minor cleanup tweaks for color style code. - KW * Avoid unnecessary pauses if TRACE is on and a Trace Log file is in use. - KW 1997-10-10 * Renamed lynx_help/keystroke_commands/ directory to lynx_help/keystrokes/ for the benefit of DOS, and changed references accordingly. - KW * Changed parsing of command line options for -lss file, it should now be used and override the default from userdefs.h or environment variables as advertised. - KW * More tweaks and cleanup in HText_SubmitForm. - KW * Code to recover from memory exhaustion, sometimes. The requests for dynamic memory which heuristically most often fail for lack of memory when rendering large documents are the calloc() calls in split_line. They are replaced by LY_check_calloc() which has the same calling conventions as calloc() but additionally checks if "enough" memory is available for the requested amount plus some margin and tries some remedial action if this is not the case. The additional safety margins are required to make it likely that other allocation requests in other places of the program won't fail before the next check. The actions which may be taken in order to avoid exiting if low memory is detected: (1) Try to unload cached documents (other than the one currently being loaded), until we seem to have enough memory. (2) If that fails (or there are no other documents cached in memory), try to fake a 'Z' key interruption; this will have the same effect as if the user had pressed 'Z' so it will only detected if some other part of the program tests HTCheckForInterrupt() and acts on it. (3) If this seems not to be sufficient to stop loading, halt appending of normal text data to the document structure (A warning *** MEMORY EXHAUSTED *** is appended instead). - KW * A tweak of color style memory allocation. - KW 1997-10-09 * Some more tweaks from FM for VMS build - KW * For DJGPP compilation, src/chrtrans/makefile.dos - WS (Bill Schiavo ) * Some cleanup in Hext_SubmitForm (needs more). Start using ACCEPT-CHARSET (doesn't recognize list yet, only recognized if on the INPUT field that causes submission). - KW * Added two test files for iso-8859-2 charset. - KW * Tweaks in LYMainLoop.c for various keys that page up, to better preserve keep the current link selected if possible and to correct a glitch with UP_LINK. - KW * Reorder text/html and text/plain to the beginning of HTPresentations list, so they will be found more quickly and will appear at the beginning of Accept request header fields. - KW 1997-10-08 * add logic to implement mouse button 2 "previous document" for ncurses configuration. - TD * add dependencies on 'lynx' to top-level 'all' and 'install' rules in makefile.in - TD * add osf4.0 to special case compiler options using -g3 in place of -O -g, for Heikki Kantola . - TD * correct some of the uninitialized-variable warnings. - TD * Removed the compilation of the old libwww-FM HTAlert.c module for VMS, as previously removed for Unix. - FM * Added comments and tweaks of build.com, build-slang.com and libmake.com, (and a complementary tweak of tcp.h) to make more clear how compiler definitions and compiler and linker options can be added. - FM 1997-10-07 * Changed PROBLEMS file for ^Z and for "forgetting emphasis of link text" problem (which shouldn't occur any more). - KW 1997-10-05 * Changed SGML.c parsing of unrecognized and invalid start tags. If the '<' character in HTML is followed by a 7-bit letter character, we now do tag parsing even if the element name is not recognized, instead of going to 'S_junk_tag' mode, so that a '>' embedded in an attribute value (which may also be part of a CJK character's encoding) will not prematurely end the tag. (But "soft double-quotes parsing" mode is recognized.) Treat a '<' followed by most other 7-bit chars as data, i.e., recover it and the following char. - KW 1997-10-04 * Corrected check for empty string at beginning of LYUnEscapeEntities. - KW * Squeezed option for "Assume charset if unknown:" into Options screen. It is selected with a control char (^A), is only available in Advanced User mode, and the value is currently not saved into .lynxrc with '>', i.e. for a persistent change lynx.cfg has to be modified (or use an alias or, for DOS, a batch file to call lynx with -assume_charset=...). The interaction with the Raw M(O)de setting may be confusing (or confused :) ), and it is possible to set nonsensical values that have no effect. - KW * Changed order and criteria of transformation attempts in HTPlain.c to be more like SGML.c. For plain text KOI8-R would use 8-bit stripping to early. HTPlain_write still is too different from SGML_character... - KW * Reinstate the slash after special interpretation of /~ at beginning of file URL path for DOSPATH - DK * Changed SGML_character to not try to convert attribute values to UTF-8 if HTCJK is in effect (arrggh!) - KW * Changed effect of -raw / '@' for CJK display character sets: it now toggles the effective charset assumption between that specified with ASSUME_CHARSET or -assume_charset (or iso-8859-1 if none given) and the charset that corresponds to the selected display character set, as for non-CJK. An exception is made if both charsets are CJK charsets, so that the toggle will still have the function of toggling CJK mode on and off. Explicitly specifying a CJK charset as assumed is currently not very useful, since we cannot translate from that to other character sets. - KW * Oh, by the way: compilation without defining EXP_CHARTRANS won't work any more. Regard #ifdef EXP_CHARTRANS as some strange kind of comment for now, until it goes away. - KW * Write comment at top of .lynxrc file to make clear that it is different from lynx.cfg, suggested by LV. - KW 1997-09-30 * Changed order of display character sets on options screen a bit, and corrected charset listings in lynx.cfg and userdefs.h files - KW * Added comment on lynx.lss in userdefs.h, moved it. - KW 1997-09-27 * Made TRACE messages which correspond to BAD_HTML_USE_TRACE warnings stand out more by decorating them with ***** characters, so that users who follow the BAD_HTML_USE_TRACE advice can more easily find the relevant messages. - KW * Reworked LYUnEscapeEntities() while loop into a (hopefully) more understandable and consistent state-based switch, and integrated LYUnEscapeToLatinOne functionality. - KW * Non-ASCII characters in URLs and similar strings encountered in the HTML.c processing (previously handled by LYUnEscapeToLatinOne) are now generally URL-encoded, instead of doing this just for 8-bit characters which are the result of entity expansion. There is no clear standard definition what non-ASCII characters in URLs in HTML attributes (HREF etc.) actually mean, especially if the transmission character encoding is something else than iso-8859-1. Leaving them as the raw byte values as received runs against the HTML i18n view that the transmission encoding is distinct from the document character set and has to be (conceptually at least) decoded before SGML parsing. It also won't work in general for entities that expand to to Unicode characters which cannot be expressed at all in the currently effective (or assumed) charset, and would lead to problems with displaying URLs on the statusline or representing them in auxiliary screens or bookmark files. So now we try to first transform to the document charset "as usual" (undo the transmission encoding), then translate the Unicode value into a sequence of (one or more) byte values which are then URL-encoded. Since character values > 255 cannot be expressed in a byte, always use UTF-8 for them. It may not be what the author intended, but should be at least consistent between internal (fragment) HREFs and NAME (or ID) attributes in the same document or set of documents. Since this is dealing with bytes currently disallowed in URLs, it falls under error recovery. But the handling should be roughly in line with current Internet Drafts (draft-masinter-url-i18n-00.txt, draft-duerst-query-i18n-00.txt, draft-ietf-ftpext-intl-ftp-02.txt). For character values < 256 (but > 127) this isn't currently consistently done, we may still be URL-escaping the byte value without UTF-8 encoding -KW 1997-09-25 * Integrated the attribute and form field translation stuff from separate code line. This is still a rough attempt. Needs testing and refinement, for various character set situations, expect glitches and bugs. - KW 1997-09-24 * Removed the compilations of the old libwww-FM HTInit.c and HTFWriter.c modules for VMS, as previously removed for Unix. - FM * Added other changes from FM's feedback for VMS. - KW * Fixed a bug in the SGML unescaping of OPTION values. - FM * Fixed a bug in the SGML unescaping of TEXTAREA text. - KW 1997-09-23 * Fixed file 'E'dit command from dired directory listing, which I had broken in 2.7.1ac-0.69. - KW * Added -width=NUMBER option to specify line width for non-interactive formatting (-dump output). Also used by -preparsed source mode. - KW * Changed suffix mapping mechanism to deal with "real" content-encoding parameters (gzip, compress) in addition to 7bit, 8bit, and binary. Added a new field for brief descriptive text, so that the MIME type doesn't have to be abused for this purpose, but left most settings in HTInit.c unchanged for now. - KW * Changes in HTFWriter.c and HTFile.c so that we don't forget the file type and encoding information we already have for a compressed file when passing control to HTLoadFile (possibly after uncompression). - KW * Introduced FNAMES_8_3 symbol (for DOS 8+3 file system), and HTML_SUFFIX which should be defined as ".htm" for DOS and ".html" otherwise. Various tweaks to deal with systems with 8+3 restricted filenames, in general and in connection with uncompression. - KW * Applied diffs from FM for VMS, compared with recent fotemods. - KW 1997-09-21 * Use 0.01 rather than 0.001 as the q value for inserted iso-8859-1 and us-ascii charset parameters in Accept-Charset headers. - FM * Added internal buffering of I.value elements in HTML_start_element() of HTML.c. - FM 1997-09-20 * Show HTTP header for all 2xx status codes (including 204-206) if requested with HEAD or -head. - KW 1997-09-19 * Modified the Unix "strange character" filter in exec_ok() of LYGetFile.c to allow '+', '&' and '=' characters. - FM * minor ifdef/declaration fixes required to build on IRIX 6.2, SunOS (K&R) and VAX C. - TD 1997-09-18 * Try again after interrupted waitpid() in LYLoadCGI(), as in LYExecv() - KW * Tweak in LYKeymap.c to bypass the isalpha() test for non-ASCII values, including values > 255 mapped to arrow keys, etc., when generating the 'k'eymap display. - KW * Changes to prevent many (but not all) compiler warnings about `const'. Not that this is different from TD's recent changes. Also some other minor tweaks relating to (gcc) compiler warnings. - KW 1997-09-17 * Mods in GridText.c to use HTEscapeSP() for space-to-plus conversions of name fields, and not just value fields, in submitted form content. Note that some CGI scripts may still be doing plus-to-space restorations only for value fields, and only hex unescaping for name fields, while others may not be hex unescaping the name fields, so we may as well follow the specs fully (and cross our fingers :). - KW, FM * merge symbols 'has_color' and 'lynx_has_color' to simplify ifdef's, and correct a problem building color-style configuration. - TD * add configure symbol for ifdef'ing presence of waitpid, which was stopping build on HP-UX. - TD * correct the symbol that is defined by CF_SIZECHANGE test, noted by failure to build SCO version after making an include for ifdef'd according to configure test. - TD * corrected check for broken (pre-1.9.9g) ncurses versions so that they can build with color support. - TD * cache state of CF_NETLIBS so that rerunning configure will yield the same results for network libraries. - TD * Add configure test for HP-UX -lHcurses library. - TD * Minor adjustments to names of configure-script variables, to make them the same as other programs (e.g., tin-unoff). - TD 1997-09-16 * Added code to JKT's and KW's mods in LYPrint.c to also handle VMS, i.e., set the document's title as a logical on VMS (can be accessed via f$trnlnm("LYNX_PRINT_TITLE") in scripts). - FM * Smaller cleanups here and there - FM, KW 1997-09-15 * Recover from bad sequence "<=" in SGML.c by outputting those characters literally. - KW * Try again after interrupted waitpid() in LYExecv(). - JED * Some tweaks in new DTD, some doc typo corrections. - KW 1997-09-13 * Changes in LYConvertToURL() for better handling of the case when the pathname of the current directory (when Lynx is invoked) contains unusual, URL-reserved characters (especially '#') and we test for a relative but URL-encoded path. (no change for VMS) - KW 1997-09-13 * Changes in LYStrings.c to enable keypad() processing for non-NCURSES if HAVE_KEYPAD is defined. - KW 1997-09-12 * Correct mismatch/omission of HAVE_TYPE_UNIONWAIT symbol from change for wait vs waitpid. - TD 1997-09-11 * Tweaks in HTMLGen.c for display of special characters and line breaking with -preparsed. - KW * Got rid of use of underlining together with reverse for non-current links for (n)curses if color is not used. - KW * Small HTMLDTD.c changes for new parsing. - KW * Change in SGML.c to always recognize SOFT HYPHEN when given as ­. - KW 1997-09-10 * Modify CF_WITH_PATH to allow substitution of --libdir and other configure options pathnames, e.g., for --with-cfg-file. - TD * Include lynx_cfg.h in userdefs.h to resolve redefinition reported by AAC. - TD * Remove Ultrix/sony_news -specific ifdef's for curses headers, replace with configure-tests. - TD * Remove AIX/NeXT/sony_news -specific ifdef's for wait vs waitpid, replace with configure-tests. - TD * Add/use CF_HELP_MESSAGE macro to visually break down the very long help message into sections. - TD * Move the development options to the beginning of the configure script, to facilitate adjustment of compiler options (especially for Ultrix) to reduce the number of spurious warnings from miscombining -g/-O options. - TD * Correct misplaced assignment to cf_cv_ncurses_header in configure.in, which caused misconfigure against vendor curses, reported by Hynek Med (Ultrix) and Roger Hill (HP-UX 10.x). - TD 1997-09-09 * Added arguments to the multinet_htons() and multinet_ntohs() declarations in tcp.h. - FM * Tweak of the this_MIMEcharset[] and this_LYNXcharset[] checks in makeuctb.c. - FM * Replaced the index() and bcopy() with strchr() and memcpy() in the putenv() for NeXT in LYUtils.c. - FM 1997-09-08 * Added a -preparsed flag, to be used with -source or with SOURCE view. When invoked with this flag, show HTML text as it is output from the SGML parsing stage, regenerated via HTMLGen.c functions, rather than the usual more raw rendering (in SOURCE view) or the original byte stream (as with the -source flag, possibly with BASE information prepended). Lynx will attempt to wrap the text to screen width (or 80 cols for the -source flag), but will not always succeed. Unrecognized tags and attributes as well as comments are dropped, attributes reordered, missing end tags supplied, abd other changes made, showing how Lynx internally treats the document's structure. This is probably most useful for debugging (of either Lynx's parsing or of HTML documents, although a real validator should be used for the latter!). It can also be instructive to switch the DTD parsing mode (with the ^V key) while viewing preparsed source. Note that this doesn't work so well now with character translations and entity expansion don't work well now, showing some of the same problems which appear for rendered documents and dropping some characters. Making those problems of parsing more directly visible was one of the motivations for this flag. Also note that META tags which may contain charset info are never interpreted when using -source (with or without the -preparsed flag), but when interactively switching to SOURCE view, Lynx MAY remember that charset info from the previous non-SOURCE full parsing (again this applies with or without -preparsed); the INFO screen should always show the assumption currently in effect. - KW * Updated some HTMLGenerator functions to use line wrapping logic found in newer libwww versions, and further mods in HTMLGen.c. - KW * Tweaks to use of chartrans stages, should now better preserve charset info from META tags even in compressed HTML files. - KW * Fixed a problem with LYCheckForCSI which could lead to crashes. - KW 1997-09-06 * Modifications to allow the Lynx lynxcgi feature to process PATH_INFO in addition to QUERY_STRINGS in URLs. DOCUMENT_ROOT may be set by the user in lynx.cfg and is then passed as well. If DOCUMENT_ROOT is set, then PATH_TRANSLATED is calculated and passed as well. - JKT (J Kevin Ternes ) * Changes to LYPrint.c to put the variable LYNX_PRINT_TITLE into the system()'ed environment for use by post-Lynx, pre-lp formatting scripts. LYNX_PRINT_TITLE is simply generated by calling HText_GetTitle(). - JKT * Corrections to JKT's mods (to avoid memory leaks etc.). Avoid unnecessary stat() calls. Other fixes in LYCgi.c. Make setting of HTTP_ACCEPT_CHARSET actually work. Now URL-unescape the path in lynxcgi URLs before doing anything with it. Better logic for when to check for restrictions, the previous checking for !reloading could be easily circumvented. Also check whether the full path including a possible PATH_INFO passes the restrictions test by exec_ok(), to catch "../" segments. Don't try to handle a non-executable lynxcgi URL as a file URL if there was a PATH_INFO part, it gets too confusing. Strip '#' fragments from the lynxcgi path, but leave the interpretation of '#' characters after a '?' as before so that they are still regarded as part of the query or search string. If PATHINFO is present, unescaped '#' characters in it will still be rejected by exec_ok(). - KW * added a bit of text about running ./configure to INSTALLATION file - David Combs (), KW * Added a translation table for Vietnamese (VISCII), and associated code changes. See the file viscii_uni.tbl. - KW 1997-09-05 * Mods in LYGetFile.c to retain a fragment on redirection if the redirection URL does not include a fragment. - FM 1997-09-04 * Correct ifdef'ing for getbkgd function calls. - TD * Correct ifdef'ing for remaining inline chmod calls. - TD * Consolidate various logic for opening secure files into utility functions, correcting portability problems as well. - TD * Add configure option --with-cfg-file to override default location of Lynx configuration file (requested by Laura Eaves). - TD * Strip -g option from CFLAGS for the non-debug version of Ultrix configuration (requested by Hynek Med). - TD * Add configure test for HP "color" curses (noting that this cannot possibly comply with XPG4 due to naming conventions, we'll expect other problems with it). - TD * Add checks to configure test for COLOR_CURSES to work around bug report for HP-UX. - TD * Don't cache configure options except where essential (e.g., the setting of 'screen'). - TD * Change some configure options to disable/enable for consistency. - TD 1997-09-03 * Tweaks in HTML_put_string() and LYUnEscapeEntities() to deal with line- breaks within attributes more consistently, and more independently of which convention is used (CRLF, CR, or LF). - KW * Tweaks to prevent a few compiler warnings. - KW * Tweaks of the iso06_uni.tbl and iso08_uni.tbl files now compiled in. Note that a replacement character or string to replace invalid or unrecognized characters can be defined by mapping the Unicode value U+FFFD, which is done here (for testing, and because these two charsets have a lot of undefined code points). Also some mods in default 7-bit table for some Hebrew characters and points. - KW 1997-09-02 * Mods to include "ISO 8859-6 Arabic" and "ISO 8859-8 Hebrew" in the display character set options (Note, though, that Lynx presently has no code to deal overtly with non-Latin directionalities.). - DK, FM 1997-08-31 * Mod of HTMIME.c to ignore any Content-Encoding header with a value of "identity" (case insensitive). Shouldn't happen, but better safe than sorry. - FM 1997-08-28 * Correct a quoting error in CF_RECHECK_FUNC macro. - TD 1997-08-27 * Further refine/correct configure macros for finding network and curses libraries, adding CF_RECHECK_FUNC to simplify CF_NETLIBS. - TD * Rename #define for NCURSESHEADER to HAVE_NCURSES_H, for consistency. - TD * Add-back test for -lm to support slang shared libraries. - TD * Modify test for disentangling ncurses library from mytinfo on FreeBSD to workaround linker limitation. - AAC 1997-08-22 * Fixed typo in LYReadCFG.c when checking for a NOVICE mode default. - JN (Note that this and other lynx.cfg defaults which have 'o'ptions settings are overridden when the 'o'ptions are saved to the RC file. - FM) 1997-08-21 * Tweak to LYHistory.c to better remember last position on page. - KW * Eliminated two more MIME types (application/html and text/x-sgml) from the Accept header generated by default by setting the q-value to 2.0, since there are more standard alternatives for these names. - KW * Lower maximum length for generated Accept header lines from 1000 to 252, to accommodate an incompetent Windows HTTP server. - KW * Changed order of some functions in LYCharUtils.c (no other change there yet). - KW 1997-08-20 * Modify top-level install rule to depend on 'all'. - TD * Suppress check for ANSI compiler when we are using gcc. - TD * Use -g3 option in place of -O -g for Ultrix compiler --debug configuration (request by Hynek Med). - TD * Drop "-lm" library from slang configuration, since it does not seem to be used. - TD * Add configure --includedir and --oldincludedir values to header search path for ncurses and slang. - TD * Modify configure checks for ncurses and slang libraries to generate -L options as required, using new macros CF_FIND_LIBRARY and CF_LIBRARY_PATH. - TD * Add substitution for CPP in src/makefile.in so that .c.i rule works. - TD * Add configure test for lint program. - TD * Add "make depend" target to generated makefiles. This is intended only for use in editing/developing, since many of the header dependencies in chrtrans are generated during the build process and cannot be determined by makedepend in advance. - TD * Add configure option --with-zlib. - TD 1997-08-19 * Tweak of highlight() in LYUtils.c to ensure that split link names with a soft hyphen are handled identically for slang, VMS curses and Unix curses when such links are made current. - FM 1997-08-17 * Use 0.01 rather than 0.001 as the q value for the global wildcard in Accept headers. - FM * Put up correct makefile for dos port (oops) - WB 1997-08-16 * Mini tweaks for the win-dos ports. One fix for the pull down boxes and the rest mostly maintenance. - WB * Fixed a bug in LYNews.c which caused overwriting of the first three characters in the Subject for a followup. - FM 1997-08-15 * Hack in highlight() to preserve a '-' character at the end of line within anchor text, which can result from splitting at the position of a ­ or or SOFT HYPHEN character. - KW * Tweaks in print_wwwfile_to_fd print_crawl_to_fd to output a soft hyphen character if it is present at the end of a line. For -dump, a raw ISO 8859 SOFT HYPHEN character may be written if the Display Character Set (default from lynx.cfg or saved value in .lynxrc) is an ISO 8859 character set, but this may be overridden with the -raw toggle. Otherwise represent soft hyphen with '-' as usual. - KW * Modified the news gateway to try XGTITLE for wildcarded lists of available newsgroups (e.g., news:bionet.* for the bionet hierarchy, or news:* for all of its served newsgroups). If that fails, Lynx retries with the old behavior of using LIST NEWSGROUPS and parsing the reply itself for the desired groups. Note that LIST NEWSGROUPS can take a wildcarded argument for some nntp servers, but not all, so we don't risk it. - FM * Fixed a bug in HTHandleAuthInfo() of yesterday's HTNews.c which could yield an infinite while() loop. - FM * Various tweaks in HTNews.c to HTHandleAuthInfo() and elsewhere, to keep connections open more often in some common cases of non-fatal errors, and also avoid trying to use the network socket after some recognized case of closing by the server. Only based on some testing with INN's nnrpd, not on any written specs. - KW 1997-08-14 * Added nntp authorization (AUTHINFO) handling to the news gateway. - FM * Added a "Loading cfg file '%s'." trace message in LYMain.c to indicate the absolute path of the configuration (lynx.cfg) file which was used at startup (if Lynx is invoked with the -trace command line switch). - FM * Added code in HTFWriter.c to avoid calling HTLoadFile() on the temporary file which results from decompression of a temporary file created by HTCompressed(), if this would just result in making a copy of the file and then invoking an external viewer. Instead the viewer command is now invoked directly from the HTFWriter_free of the HTCompressed() stream after decompression. - KW * Added code in HTFWriter.c, HTFile.c, and HTFormat.c to support reading of gzipped local files directly, using functions from the zlib library. Note that gzipped files from remote servers are still first copied to a temporary file before lynx can process them further, and an external GZIP_PATH command is still needed at least for passing such files to an external viewer, as well as for various DIRED_SUPPORT File menu functions. To activate this code, the symbol USE_ZLIB has to be defined, it is currently not set by the auto-config script. The zlib library may be already installed on your system (probably called libz.a or libz.so.1 or similar, the required header files are zlib.h and zconf.h), otherwise it is available through , it appears to support all platforms for which lynx is available (including VMS, DOS, MS Win32). Note that this library would probably also be needed if in the future support for the HTTP/1.1 "deflate" content-coding is added. - KW * Don't send MIME types in Accept headers whose q values are outside of the allowed range 0.0 <= q <= 1.0 - KW * Tweaks in HTInit.c to use the official names for image/png and image/tiff, but still support the image/x-* forms. - KW 1997-08-13 * Tweaks of LYConvertToURL() in LYUtils.c and HTParseInet() in HTTCP.c to deal more coherently with 'z'ap attempts during gethostbyname() calls. - FM * Tweaks of split_line() and HText_endAppend() in GridText.c to handle trimming of spaces from the tails of link names more effectively. - FM * Expanded the OL nesting depth and type counters to track up to 12 list depths before punting to the lowest negative number. Note that the indentations still are limited to 6 nested depths, so use the TYPE attribute to distinguish OLs with deeper nestings. - FM 1997-08-12 * Mods of LYMainLoop.c to maintain treatment of a local startfile as text/html source when it does not have a suffix mapped to that MIME type and the -force_html switch was used. - FM * Added .phtml to the default suffix mappings for text/html. - FM * Mods of LYCurses.c to avoid using /dev/tty arbitrarily for stdin on Unix when compiling with slang versions greater than 0.99-35, based on JED's suggestion to lynx-dev. - FM * Tweaks of HTCheckFnameForCompression() in GridText.c to avoid warnings from some compilers. - FM 1997-08-09 * Changed the code of 1997-08-06 which modifies suggested filenames for a 'D'ownload to be more cautious: don't remove a '.gz', '.Z' etc. suffix if there is no header indication that we have a compressed file. Not all servers and gateways (including the internal FTP gateway) detect and label compressed content reliably. - KW 1997-08-08 * Mods of HTTP.c so that download requests are converted to presentation requests for interactive users, and traversal requests are converted to cancels, when servers return non-success statuses with bodies which should be displayed to interactive users. - FM * Added the "DosCyrillic (cp866)" display character set to the chartrans support, and tweaked the other Cyrillic charset tables. - AAC, KW * Tweaked MULTI_SUFFIX support in HTFile.c, so that it now somewhat works. Dunno whether it's useful for anybody. - KW 1997-08-07 * Tweaks of yesterdays mods in GridText.c. - FM * Correct storage class of variables in UCMap.h, from -warn-common linker option. - TD * Refine configure tests for acs_map, ttytype to accommodate broken linker on FreeBSD 2.1.5 - TD * Modify README.configure to indicate the associated definitions for each configure option, as suggested by Klaus Weide. - TD * Correct duplicate declaration of Current_Attr, which Linux linker ignores (reported by Hynek Med). - TD * Add -G7 option to Ultrix compiler options (request by Hynek Med ). - TD * Add include for to utmp configure test (reported by Andrey A. Chernov). - TD * Add check for FreeBSD library mytinfo (reported by Andrey A. Chernov ). - TD * Modify ./makefile.in so that 'all', the default target, will build the Lynx executable. The old 'all' target is retained as "make help". - TD * Modify src/makefile.in to allow development compiles within the src directory. - TD * Mask spaces in the bkgd (background attribute) calls for color curses to make the color-style code work better with SVr4 curses. - TD * Change workaround for 8-bit acs characters by adding to the initialization a loop forcing the entries of acs_map[] to 8-bits. - TD * Many minor tweaks for the DJGPP version by DK - WB * A rename of about_lynx_dev.html to lynx_dev.html for 8.3 systems - WB 1997-08-06 * Modified HTMIME.c and LYCharUtils.c so that setting of suggested filenames via a filename=value pair in Content-Disposition headers and META elements is not restricted to the file disposition type. - FM * Mods in GridText.c, LYGetFile.c and HTAnchor.c so that suggested filenames will have appropriate suffixes when 'd'ownloading, based on whether or not the file is gzipped or Unix compressed. - FM 1997-08-05 * Mods of the lead relative symbolic element stripping for http/https URLs in cases for which they would persist when resolved to an absolute URL. The latest URL draft is ambiguous about whether this should be considered an error, and leaves the handling of it up to the UA. So we now get rid of all lead relative symbolic elements from the resolved http/https URLs, but no others, and still issue a Bad Partial Reference statusline message. - FM * Tweaks of title handling in LYMainLoop.c and LYShowInfo.c so that the known title, or link name associated with ACTIVATE-ion, form submission, or a HEAD request, will be used in the INFO ('=') display. - FM, KW 1997-08-04 * Fixed header parsing in HTMIME.c so that "Safe:" is recognized. - KW * Changed confirmation prompts for HEAD (']') commands acting on a POST document, to reflect the fact that the POST request body will not actually be submitted in a HEAD request. - KW * Reset LYCancelDownload to FALSE at top of getfile(), to prevent delayed effect which can otherwise occur. - KW * Block URLs with port numbers outside the range of valid numbers in getfile(). - KW 1997-08-03 * Changed the NSL_FORK code in HTTCP.c so that the gethostbyname() call is retried without forking if the child process exits without returning enough data. Also added trace output, to show whether something unusual has happened to the child process. - KW * The IETF has indicated intent to adopt KW's "status 307" proposal for dealing with the status 302 problems, so HTTP.c and HTAlert.c implement that now. The 302 status is "General (temporary) Redirection" which can be handled as 303 at the UA's discretion, so we do that in all cases, rather than prompting the user whether to do that when the 302 is for a POST submission. The 307 (and 305) for POST submissions invokes a prompt whether to P)roceed or C)ancel, without the Use G)ET option. The 301 is treated as permanent, normally, but for POST submissions still is treated as temporary and invokes a prompt which includes the Use G)ET option, because scripts written to empirical behavior may still be expecting that (it's virtually never encountered in redirections of POSTs, though, because the document containing the form typically is redirected, so the user only sees the form if a local copy has been made, and it would be best to C)ancel and get a new local copy of the document from the correct http/https URL, to serve as a BASE for the form's ACTION). - FM * Changed the typedef for HTCoord in HTStyle.h from float to int, for significant speedup of rendering on machines without floating-point hardware based on DW's, KW's, BL's analyses. Note that this should be taken into account when/if external style sheet support is added for page formatting (e.g., for optimum handling by speech synthesizers and braille interfaces), beyond the current emphasis on colorizing. - FM 1997-08-02 * The cookie pre-draft has been adopted as an IETF ID, see ftp://ds.internic.net/internet-drafts/draft-ietf-http-state-man-mec-03.txt so the code for combining Set-Cookie and Set-Cookie2 headers has been eliminated in LYCookie.c (see mods for 1997-07-31). - FM 1997-08-01 * Fixed typos in LYCookie.c. - FM 1997-07-31 * Mods of the cookie handling based on the latest pre-draft. Add a Cookie2: $Version="1" header in any requests that use historical cookies in the Cookie: request header, so that modern servers will use Set-Cookie2 headers with modern cookies in their subsequent replies. Limit the scheme for commentURLs to http or https, not just to network servers (e.g., gopher is now barred too). Include a $Port attribute in modern Cookie request headers if it was set via a server's reply header. The pre-draft indicates intention to drop the requirement to combine Set-Cookie2 and Set-Cookie headers if both types were received. We're still combining them, but based on bona fide one-to-one correspondence checks (which were not specified in the earlier draft), so that's OK, and we'll get rid of that needless overhead if the current pre-draft holds up and becomes an official IETF draft. - FM * Added a -nocc command line switch for disabling the Cc: prompt for self copies of mailings. Note that this does not disable any CCs that have been incorporated within a mailto URL or form ACTION. - FM * Added a NO_FORCED_CORE_DUMP compilation (userdefs.h) and configuration (lynx.cfg) symbol, normally set FALSE, which if changed to TRUE will block forced core dumps on Unix via abort() calls on fatal errors or assert() calls on potentially fatal error checks. Also added a -core command line switch for toggling the default. - FM * Updated the documentation and 'h'elp concerning the new symbol and switches. - FM 1997-07-30 * Added workaround for curses with broken handling of 8-bit acs characters (which may be used for drawing of popup boxes) to LYCurses.h. This fixes box characters and attributes/colors for solaris curses used with linux console as terminal. Currently it is not automatically enabled or configured, but can be enabled by -DBROKEN_CURSES_8BIT_ACS. - KW * Mod in HTFWriter.c to change the statusline appropriately when an uncompression has completed. - FM * Fixed code in LYOptions.c for the case when NEVER_ALLOW_REMOTE_EXEC was not defined and ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS was defined. - KW 1997-07-28 * Avoid traversing the full list of anchors each time when HText_endAnchor() is called with a non-zero anchor number, if that number corresponds to the last anchor added to the HText structure. It is is the most common case that HText_endAnchor() refers to the last anchor, and the only case that could be handled correctly before FM's changes of 1997-05-13. Avoiding the loop over the list of anchor can improve loading time significantly, especially for large files with thousands of anchors. - KW * Add progress display and 'z'appability for loading of local files. They are activated only after a few hundred k bytes have been read. Added define for HT_PARTIAL_CONTENT to HTUtils.h, used in above. (The WWW Library 5.x uses HTTP-ish status codes like this throughout. I find it much less confusing than -29998 and so on, and there's no conflict in this case. - KW * Minor LYUtils.c tweaks. - KW 1997-07-27 * Changed code for checks in LYGetFile.c for URL schemes which should be rejected when received as redirections, added checks for more schemes. - FM * Rename top-level Makefile to Makefile.old (it's obsolete) - TD * Reduce top-level targets to one, 'lynx' - TD * Move comments describing DirEd to README.configure from makefile.in, leaving only the definitions that haven't been integrated yet. - TD * Add configure options to enable/disable DirEd and its associated modes. - TD * Add configure option to enable/disable char-trans support. - TD * Correct sense of autoconf'd symbol for size-change. - TD * Accommodate systems with obsolete ncurses.h in configure tests. - TD 1997-07-26 * Changed the variable hline in LYUtils.c to hLine, so as not to conflict with a curses function or macro. - FM * Fixed an esoteric glitch in highlight() of LYUtils.c which could cause the last character of a current link to receive WHEREIS search target emphasis if it happened to be the first character of the target (though perfection is unattainable, we should strive to achieve it :). - FM * Changed the default value for STRIP_DOTDOT_URLS (lynx.cfg) to TRUE. - KW * Made some of the additional checks introduced yesterday in LYMainLoop.c for invalid links to internal dired URLs more strict, as they probably were intended. - KW * Added checks for some internal URL types, which should be rejected if received in a server redirection, to LYGetFile.c. Maybe more types should be added to the list. - KW 1997-07-25 * Map charsets of the form "ibmNNN<...>" to "cpNNN<...>" in UCdomap.c if not already recognized. Also recognize "windows-1252". - KW * Compared the handling of 4-way "show color (&)" in the 'o'ptions menu against FM's implementation, and made some changes (mostly in formatting, variable and constant names and usage, ordering of statements) to aid further comparison. The logic is still messy and needs further cleanup and simplification, but seems to do what it should. Note that this also handles color-curses, in a (hopefully) reasonable way. Command line flags -nocolor and (if using slang) -color override a preference found in the RC file. See updated "Lynx Users Guide" file and the comments written to the RC file. Documentation changes adapted from FM's changes. - KW * Mods of the DIRED_SUPPORT to check the actual URLs of temporary files rather than just their titles when filtering for spoofing attempts via external files with internal URLs. Also recast the PRIVATE my_spawn() to a PUBLIC LYExecv(), so that it can be used by any module (though presently it's still used only by LYLocal.c functions). - FM * Tweaks of LYCharUtils.c to handle Set-Cookie HTTP-EQUIVs in META elements without risking crashes in LYCookie.c or HTParse.c. - FM 1997-07-24 * Made "show color" option a 4-way choice, if compiled with color support and if saving of options to a .lynxrc file is allowed. - KW * Made changing file permissions with DIRED_SUPPORT work again; one of the recently added checks in LYMainLoop.c was too restrictive. Added protection to permit_location in LYLocal.c, similar to the changes of 1997-06-24 to LYDownload.c. - KW * Generate CANCELLED message when editing of a string value on the Options Screen has been cancelled (typically with ^G), instead of an inappropriate VALUE_ACCEPTED statusline. - KW 1997-07-23 * Tweaks of the strtok() calls for textarea values in HTML.c, so that they will never be repeated after NULL has been returned, and thus won't cause linux-alpha to crash. - FM * Make -nocolor command line flag work if compiled with slang. Note that -nocolor is strong, it overrides all other reasons that might otherwise turn color on. - KW * Tweaks in LYCurses.c to ensure that slang library and Lynx flags for whether color support is on stay in register. - FM * Change the default in userdefs.h for SHOW_COLOR to FALSE for USE_SLANG. Because of the different logic used for LYShowColor in the curses code vs. slang code, setting SHOW_COLOR to TRUE makes it difficult to invoke a binary compiled with slang so that color is not used on startup (except by using -nocolor). Note that reading show_color from .lynxrc is still commented out. - KW * There is now a "trailing comment" handler in LYReadCFG.c. It treats '#' as a comment token only if it is somewhere after the last colon for the lynx.cfg entry and is preceded by a space or tab. - FM * Added TT to the Utterly Tag and Attribute Soup group of HTML elements. - FM (applies only to "old" DTD in this code set, as usual - KW) 1997-07-22 * Modify curses popups in LYForms.c and LYOptions.c to use background color from main window - TD * Ifdef'd out the logic that saves "show color" to .lynxrc, since it is deemed to be confusing to users - TD * Merged FM's changes to the "show color (&)" toggle to save to .lynxrc, support slang, update online documentation - TD * Add error message to show actual context in error-checking for color parsing suggested by Filip M Gieszczykiewicz - TD * Check for/suppress duplicate -lsocket in network library configure - TD * Remove HP-UX snake2/snake3 targets from makefile.in - TD * Add configure script case for 'sequent', drop ptx, ptx2 targets from makefile.in - TD * Add logic to configure script handling of slang to suppress spurious -Ipredefined when header location is given in $CFLAGS - TD 1997-07-21 * Check for lynx_uses_color and LYShowColor in lynx_start_status_color() and lynx_stop_status_color() of LYCurses.c so that the statusline will appear reverse (or otherwise highlighted if the terminal doesn't support reverse), if color support is compiled in but not currently used. - KW * Added comments on color usage to lynx.cfg. - KW 1997-07-20 * Added command-line option "-nocolor" to disable color on terminals that would otherwise support it. Added options toggle for colors, tested with ncurses. - TD * Remove option value from configure option "--with-color-styles". - TD * Correct background of popups in LYOptions.c - TD * Add configure check for compiler options to enable prototypes - TD * Remove IRIX "-cckr" compiler flags. - TD * Correct whitespace as per LPS: LYCurses.c, LYOptions.c - TD * Tweaks of LYMainLoop.c in the code controlling how the document is reloaded due to any changes in the 'o'ption menu which require a new rendering of the document (but still without forcing a proxy cache refresh when that is inappropriate; see the 1997-05-26 mods). - FM 1997-07-18 * Mods in LYexit.c and LYCurses.c to ensure restoration of stderr (if it was changed for output to the trace log) on all exits. - BL, FM * Include an unsigned char typecast in the HASH_FUNCTION definition for HTAtom.c - CK * Modified change to is_url() of 1997-07-13 to check for the slash after stripping any lead space characters. - FM 1997-07-16 * Added the Windows Cyrillic display character set. - AAC (Andrey A. Chernov ) 1997-07-15 * Added support for a commentURL attribute in cookies. This attribute is under discussion in the HTTP-WG and not presently in the draft (see the 1997-07-09 mods for the draft's URL), but would be extremely advantageous for multi-lingual and non-English-speaking sites because the comment attribute can have only ASCII characters in its value, whereas a request for the comment via a URL in turn allows use of charset and language negotiation for what the server returns. The value of the commentURL is resolved and retained only if it's scheme points to a server (i.e., file and special lynx URLs are rejected), and if it is retained, is included as a link in the Cookie Jar Page. If commentURL is not ultimately included in the revised State Management RFC, sites which wish to use it could do a User-Agent check for Lynx (and any other browsers which implement it). - FM * Fixed a typo in HTCompressed() of HTFWriter.c so that the last dot in a tentative temporary filename is sought via strrchr(), as is done for HTSaveAndExecute() and HTSaveToFile(). - KW 1997-07-14 * Yet more tweaks of the cookie support. We include $PATH and/or $DOMAIN attribute/value pairs in Cookie request headers only when their values were set explicitly via a server's Set-Cookie and/or Set-Cookie2 reply headers (and the cookies are $VERSION="1" or greater). - FM * Added support for IFRAME homologous (but not identical) to that for FRAME. It is handled as a block with a blank line before and after style, and with margins and default alignment inherited from the containing block, division, or span. The IFRAME rendition always begins with an emphasized "IFRAME: " label followed by the NAME attribute's value, if present, or the URL for the SRC attribute, serving as a link for the SRC, followed on a new line by any rendered IFRAME content. - FM * Added handling of LEGEND elements. The content is rendered in place, as for CAPTION elements, since we don't have multiple pass inlining capabilities. Hopefully, if the LEGEND is intended to be ALIGN-ed at the "top" or "bottom" of the associated insert, the author will place the LEGEND element above or below it, respectively. Note that LABEL elements similarly are rendered in place, and will be displayed interpretably only if the INPUT to which the LABEL's "for" attribute refers, immediately follows the LABEL element. - FM * Added recognition of BUTTON elements, and handling of them (sorta :) when they are TYPE="submit" or TYPE="reset" in forms. The default "submit" or "reset" string, or the value of a VALUE attribute, if present, is embedded in parentheses and used for the link, and the content is simply rendered and displayed in place. Until we see what kind of markup the real world puts in such elements, it's too risky to try to use that rendition as the link. Also, the W3C's HTML 4.0 draft presently is very fuzzy about whether, and if so, when, an IMG element in the BUTTON content should be treated as an image map, so the present code doesn't try to cast any submitted BUTTON name/value pairs into the format for INPUTs with TYPE="image". When the BUTTON is a script control rather than submit or reset button, a "[BUTTON]" pseudo-ALT is inserted to warn users of its presence, but the form is not disabled. The W3C's HTML 4.0 draft makes scripting intrinsic, with no SGML-based fallbacks if it is not available or is disabled by security-conscious sites. Dave Raggett of the W3C replied to criticisms of this in www-html@w3c.org by saying that he wished it have been otherwise, but "market forces" prevailed (Sigh...) - FM 1997-07-13 * Changed is_url() to return immediately if the string to check starts with a slash character. This prevents some false positives if the string contains ':' characters. - KW * Added support for "MACOS AppleShare IP FTP Server" to HTFTP.c. Only based on and tested with (the current incarnation of) . - KW 1997-07-12 * Correct some build issues with the merge (ifdefs for the curses modules) as well as minor fix for makefile distclean rule. - TD * More refinements of the cookie support in relation to recent discussions in the HTTP-WG, and for more fully effective protection against denial of service attacks. If the same attribute appears more than once for the same cookie, ensure that the first instance will be used. Limit the total number of cookies across Set-Cookie and Set-Cookie2 headers to 50 per server reply, and each cookie to a maximum of 4096 bytes. - FM 1997-07-11 * Added support for hexadecimal character references (&#xH;) as proposed in the W3C HTML 4.0 draft. - FM 1997-07-10 * Synchronized the development code against the fotemods patches up to 1997-07-06 (relevant changes listed below, as usual). Note that FM has now included the chartrans code, but has eliminated conditional compilation of it; however, in this code set setting "-DEXP_CHARTRANS" at compile time is still necessary (but compilation without it has not been tested). - KW * Fixed character counting logic in display_line() for lines where soft hyphens (­ or or a soft-hyphen character) are used for their intended purpose. - KW NOTE: The W3C HTML 4.0 draft explicitly specifies handling of ­, ­ (and now also ­) in the manner long implemented by Lynx (i.e., as a truly soft hyphen), and not in the brain-dead manner implemented by Netscape and MSIE. - FM * Various tweaks of the cookie support to handle likely (based on past experience in the real world :) abuses of Set-Cookie and Set-Cookie2 headers from servers. Most importantly, apply sanity checks to the values of port attributes so that any unquoted port list will not be misinterpreted as the start of a new cookie within the port list. Also added code to fold (CR LF TAB) Cookie request headers if they contain a long sequence of cookies which would exceed 1024 bytes on one line, since some servers suffer buffer overruns and crash in such cases. - FM * Modified HTNews.c to use HTmmdecode() and HTrjis() for the Subject and Author strings in listings of news articles when using a Japanese display character set. - HN 1997-07-09 * Massive updating and revamping of the cookie support in accordance with http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-state-man-mec-02.txt which is scheduled to replace RFC 2109 on July 15, 1997. Noteworthy changes are that (1) the blanket port restriction is now lifted, and sharing of cookies among servers with matching domains but different ports is blocked only if a port attribute was included in the Set-Cookie2 header (or Set-Cookie header, though it's not expected there), with a value which defaults to the request's port, but can be a comma separated list of ports, and (2) the blanket restriction on sharing of SSL-encrypted (https) cookies with http servers is lifted, and normally depends on the Set-Cookie or Set-Cookie2 header having included a secure attribute. However, a configuration option (see lynx.cfg) to FORCE_SSL_COOKIES_SECURE is now available, and the compilation or configuration default can be toggled via a -force_secure command line switch. - FM * Make NOCACHE ('x' key) work as expected from history list for internal links. - KW * Removed bogus checking for a config file in home directory which had been introduced into the development code. - KW 1997-07-08 * Synchronized the development code against the fotemods patches up to 1997-06-24 - TD, KW 1997-07-06 * Implemented popup windows for the 'o'ptions menu, homologous to those for SELECT blocks in forms. They are implemented when select_popups is on, and include WHEREIS search and 123[g,p] features (very useful for navigating the choice list of 28 display character sets :). Use the F_LINK_NUM command ('0') to invoke the prompt for a choice list number when in NUMBERS_AS_ARROWS mode. The popups are not invoked for the simple, binary choice options. Also modified the options menu so that the cursor is positioned to the left of choices when show_curser is on (but it is still positioned initially at the endings of strings when the line editor is invoked for options that have user-entered values). - FM 1997-07-04 (KaBoom! :) * Mods of HTMIME.c and HTFile.c to ignore Content-Type parameters other than charset when charset is not present, as we do when it is present and we know we can handle it. - FM * Fixed bug in LYNews.c which could cause Lynx to crash when posting or sending followups to news groups and the Organization header was obtained from the /etc/organization file. - FM * Fixed bug in LYEdit.c which could cause Lynx to crash when an editor to which a line number is passed as an argument is used and there are no links on the current page of the document to be edited. - FM * Added information about the new $USER feature to the comments about TEMP_SPACE in userdefs.h. - FM 1997-07-03 * Tweaks of change_sug_filename() in LYUtils.c to make protections against buffer overruns explicit within the function. - FM * Tweaks of the #ifdef'ing in HTTCP.c. - FM 1997-07-02 * Mods in LYDownload.c and LYPrint.c to treat a suggested output file entry of "/dev/null" on Unix, and "nl:" or "/nl/" paths on VMS (case insensitive), as a cancel (^G). - FM * Mods in LYGetFile.c to include URLs with content from a form submission with method GET in the group for which Referer headers are never sent, because the content might include private (e.g., password or credit card) information which should not be visible in Referer logs. - FM * Added -G 7 to the LYFLAGS and MCFLAGS for the ultrix and ultrix-slang Makefile targets when using the native ultrix compiler. - HM * Added -DNSL_FORK to the LYFLAGS for all of the solaris2 and Linux targets in Makefile. - FM * The above two changes don't affect the makefile used by auto-config - KW 1997-06-30 * Removed a redundant declaration in UCdomap.c which was causing some compilers to balk. - FM * Fixed typos in SGML.c which could cause echoing of numeric character references for some of the display character sets. - FM 1997-06-29 * Updated lynx.hlp, lynx.man and the online 'h'elp concerning the chartrans support. - FM 1997-06-26 * Tweak of the "tag and attribute soup" parsing mods in HTML.c so that the PLAIN attribute works for UL blocks again. - FM * More tweaks of LYMainLoop.c to issue informative statusline messages about attempts to ACTIVATE, DOWNLOAD, or submit URLs or ACTIONs which are disallowed in the current context and destined to fail, rather than acting on them and generating actual failures. - FM * Mods of LYmktime() in LYUtils.c to support dd-mm-yyyy format for expires headers and cookie attributes. - FM * Oops, hadn't included checks for whether there are links on the page in this morning's LYMainLoop.c mods to ensure appropriate statusline messages for attempts to bookmark special URLs that can't be bookmarked, which could yield a crash it there aren't any. The checks are in there now. - FM * Added ability to bookmark links from the Lynx List Page, as from the Visited Links Page, but not for those pages, themselves, since they are temporary files. Note that Lynx List Page links will not have the documents' titles, as do those in the Visited Links Page, unless you've visited them before invoking the Lynx List Page. - FM * Added explicit protections against buffer overruns in the LYDownload.c handling of suggested filenames. - FM * Changes in LYCurses.c, GridText.c, HTML.c, and LYUtils.c, and smaller changes to some other files, to fix problems with RP's style code. Color leaking should now be at least much reduced, and some possible crashes avoided. - KW 1997-06-24 * Mods in LYDownload.c to check whether the File= field in a LYNXDOWNLOAD URL has the value that was inserted into the URL via the most recent download options menu. This prevents spoofing with arbitrary LYNXDOWNLOAD URLs entered via the 'g'oto or ECGOTO commands, or ACTIVATE-ed in a file other than the most recent download options menu which was created by Lynx internally. - FM * Mods in LYMainLoop.c to ignore LYNXCOOKIE, LYNXDIRED, LYNXDOWNLOAD, and LYNXPRINT URLs if entered via a 'g'oto or ECGOTO command, and to issue a statusline message explaining that the special URL is not allowed as a goto. This is just for informational purposes, and the above anti-spoof mod is not dependent on it. - FM 1997-06-23 * remove "Styles" identifier from Lynx version string in userdefs.h since it causes "patch-o-matic" to choke. - JES 1997-06-20 * Now that we add or subtract attributes for Unix FANCY_CURSES, as for VMS curses and slang, the 1997-05-30 mods based on LE's patch for keeping track of whether links occur in an underlining context, and if so, restoring it when a current link is made non-current, should be extended to FANCY_CURSES as well. So they are extended, now, in highlight() of LYUtils.c. - FM * Added code in LYNewsPost() of LYNews.c for converting any EUC or SJIS to JIS (ISO-2022-JP) in posts or followups to Usenet news groups if the display character set is "Japanese (EUC)" or "Japanese (SJIS)". The mods need testing by Japanese users, because the TO_JIS() function I added long ago in SGML.c has not actually been used before. - FM * Modified the hack in LYPrint.c for mailing HTML source so that it never appends a charset parameter to the "text/html" value of the Content-Type header if compiled without chartrans enabled. - FM, KW 1997-06-18 * Added a check for nonsense LINES and COLS values in setup() of LYCurses.c, homologous to the check in size_change() of LYUtils.c, and set LYlines and LYcols to the 80x24 default if they're nonsense. The slang library and most curses implementations do the equivalent themselves, but we may as well make sure it's done. - FM * Tweaks of the anti-spoof mods in HTFWriter.c for additional protection against extra %s entries in viewer command mappings. - FM 1997-06-17 * Came up with a low overhead way to restore the emphasis for WHEREIS search targets when links are made current or non-current and the target string starts before and/or extends past the end of the link name (hightext or hightext2) string (see 1997-06-14 mods), so the restoration works in that case as well, now. - FM 1997-06-14 * Fixed a longstanding bug in highlight() of LYUtils.c which caused seeking of a column position less than 0 and strange behavior when a link is made current, if show_cursor is on and the link begins at column 0 (as can happen in PRE blocks). We now position the cursor on the first character of such links, so the current link will remain clear for those with speech or braille interfaces. - FM * Added functions in LYCurses.c, along the lines of those in the development code, so that the [w]start_foo() and [w]stop_foo() functions no longer just replace character attributes for Unix FANCY_CURSES, but now add or subtract them as for VMS curses and slang. - FM * More mods in GridText.c and LYUtils.c so that the handling of WHEREIS search target emphasis when links are made current and non-current is the full equivalent for Unix FANCY_CURSES of that for VMS curses and slang. Note that the restoration of search target emphasis does not succeed if the hit started before or extends beyond the link name (hightext or hightext2 string). What it would take to succeed in that case as well doesn't seem worth the overhead, but I'm still thinking about it. Also note that we still do not emphasize search target hits, but only do link or page re-positioning, for Unix curses when only standout() and standin() are supported. In that case, standout() is being used for all links, including the current (with the latter indicated via cursor position by turning show_cursor on), so we don't want to create a totally confusing situation by using standout() for search target hits as well. The code is still designed to degrade gracefully when the terminal does not have the capabilities of the curses or slang with which Lynx was built. - FM 1997-06-13 * Tweak of yesterday's LYGetFile.c mods. Lost a lynx_edit_mode = FALSE statement that is still needed when DIRED_SUPPORT is defined. - FM * Mods in LYForms.c so that the cursor is positioned at the left of the current option in select popup windows when show_cursor is on, as when the cursor is used to indicate the current link in the main document. This is important when Lynx is used with a speech or braille interface, or a terminal which does not respond to the highlighting/color for the current option. When show_cursor is off, the cursor is still positioned to the right of the current option for curses, and is fully "hidden" in the lower right corner for slang, so that the highlighting or color of the current option can be used without the distraction of a blinking cursor in the left-to-right reading field. - FM * Added ability to change the show_cursor setting via the 'o'ptions menu and to save that as the default in the RC file (otherwise, the default is still that set in userdefs.h or lynx.cfg). The -show_cursor command line switch toggles the default, however obtained, homologously to the -popup toggle. Updated the online 'h'elp accordingly (option_help.html and Lynx_users_guide.html). - FM 1997-06-12 * Tweaks of the 1997-06-04 mods for restoring emphasis of WHEREIS search targets in link names when they are changed to the current link or again made non-current. When the link is made current, the first and last characters of the link name never are emphasized, so they'll retain the attributes/color for the current link, and the user can see (if sighted) that the link was made current. With this change, the restoration of emphasis also is interpretable with Unix FANCY_CURSES, so the block for that is lifted. Note that I figured out why the bold+reverse+underline combination doesn't work for that. The vanilla and this Lynx code are not adding or subtracting attributes for their start_foo() and stop_foo() functions (as is done for slang and VMS curses), but are replacing them, so you always end up with the last attribute in a series of start_foo() calls (underlining for the search target emphasis). I don't know if ability to sum attributes applies to all Unix curses flavors for which FANCY_CURSES is defined in the Makefile, so I left the Unix, non-slang start_foo() and stop_foo() functions the way they are, for now. - FM * Mods in LYGetFile.c so that any '~' in file URLs is handled as when in startfile, home page, or 'g'oto commands. Only the first '~' is converted to Home_Dir(), and only for the first symbolic element in the URL, and if it is followed by a username, that username is stripped (so that the "~username" becomes a reference to the home of the account running Lynx, as if only '~' had been used, and can't be used as a reference for an arbitrary home). Note that we don't do this stripping for ftp URLs, because the ftp server should decide, itself, whether to grant access to arbitrary homes, based on the username and password that were used to log in. Note, also, that if the account running Lynx is allowed access to the root of the file system for its home, then access to any arbitrary home in that file system can be gained from there. Access to the root never is allowed for file URLs in the for-VMS code, but depends on the root's protection in the for-Unix code. Also, any arbitrary path in file URLs will be attempted if it is specified as an absolute path. The stripping of the username from "~username" in most cases on Unix only protects against probing for homes in other file systems, without the user knowing the corresponding absolute path. - FM 1997-06-11 * Mods in HTAABrow.c, HTTP.c and HTAlert.c so that auth_proxy is no longer a module wide global, and the structures which handle/create authentication/authorization headers maintain separate setup trees for proxy authentication/authorization versus for protected limbs of http/https data trees (realms) on the same server. This ensures that each proxy's template, which is the global '*' for all paths (that are in fact full URLs) in its proxying requests, are kept distinct from the templates for true paths of the protected limbs on the same saver, even if the user fails to include that proxy in the no_proxy list, or the server's WebMaster fails to do the equivalent configuration for the server, and the realm names overlap. Also modified the prompt strings for the username and password to be encrypted for protected document requests versus for proxy access so that they indicate explicitly whether the user's entries will be used for one or the other. - FM * Added a -pauth=id:pw switch for proxy servers, homologous to the -auth=id:pw switch for protected documents, along the lines of AJL's patch. Note that the -pauth value is used only for authorization headers to the first protected proxy server encountered, and the -auth value is used only for the authorization headers in document requests for the first protected limb encountered. Now that we have an explicit switch for proxy authentication, it should be used explicitly for that, instead of still allowing use of the -auth=id:pw switch for either (IMHO). Also, there's no serious need to make inclusion of the code for handling these switches a compilation option, because they are only available to users with shell access. Updated the help files concerning these switches, and included advice to make sure any script files which use these switches have restricted access. - FM 1997-06-09 * More refinements of the code in GridText.c, HTML.c and LYCharUtils.c for handling visible versus hidden links, blank lines, stripping of the numbered brackets for links, and the interactions of these things with soft hyphens. - FM 1997-06-06 * Fixed typos in LYrcFile.c which caused failure to start two comments on new lines when writing to the RC file. - FM * Fixed a typo in the lead dot pair stripping code in LYLegitimizeHREF() of LYCharUtils.c. - FM * Tweak of code in GridText.c for handling soft hyphens so that we don't display a hyphen if it's the first character in the line, or is preceded by a space, even if it is followed by a newline. - FM * Mods of the hidden link handling and numbered bracket stripping code in GridText.c so that it succeeds no matter how many blank lines are in the anchor content. - FM 1997-06-04 * Mods in LYLegitimizeHREF() of LYCharUtils.c for dealing more effectively with fragments which have illegal characters, as is becoming common due to authoring tools such as Microsoft's Frontpage and Netscape's HTML editor. The actual URL-reference is still handled so as to yield a fully legitimate absolute URL, without any unescaped spaces, but the fragment is checked only for problem characters such as tab or newline, and otherwise is unmodified. (Try the vanilla versus modified code with the http://www.cnib.org/library/ww_flw96.htm atrocity, brought to you discourtesy of Frontpage. :) - FM * Worked into the fotemods code use of bold+reverse+underline highlighting of WHEREIS search hits for VMS curses, and slang on both VMS and Unix (with or without the color mode on), and added code in highlight() of LYUtils.c for restoring that highlighting when links are made current or non-current if the string for the hit was contained within the string for the link (won't be restored if the hit's string starts before or extends past the link's string). Couldn't get any of this to work with curses and the solaris2 target, so for Unix curses the hit string still is just underlined and not restored when links are made current or non-current. - FM * Fixed typo in the 1997-06-01 LYOptions.c mods. - FM 1997-06-03 * Mods in LYList.c to skip setting up a list block for visible links if the document has only hidden links, and in HTML.c to include a notice about this with a suggestion to use the 'l'ist command. Try it with the http://www.sony.com/ atrocity. - FM * Tweak in LYMainLoop.c to fix a longstanding bug which would cause the curdoc.line and curdoc.link numbers to be mishandled, and thus cause the wrong page and current link to be restored on return to the document via PREV_DOC or the History Page, if the document was fetched originally with a fragment and a link on its first page had been activated. - FM * Tweaks in GridText.c so that returns from image map menus to parent documents are not treated as if a different document is being sought, and thus any no-cache directives associated with the parent will be ignored unless another fetch is initiated within the parent or via another, externally existing document. - FM * Added SEEK_FRAG_MAP_IN_CUR and SEEK_FRAG_AREA_IN_CUR configuration (lynx.cfg) options for how to resolve USEMAP attribute values in IMG or OBJECT tags and HREF attribute values in AREA tags when they consist solely of a fragment (USEMAP="#frag" or HREF="#frag"). The compilation default is TRUE, i.e., they are resolved with respect to the current document's URL, even if the base is different, as is being done for the HREF attribute values of Anchors and LINKs. The compilation default seems to be working out, even though most of the currently deployed browsers still use the base. - FM 1997-06-02 * Mods in LYMain.c so as not to require that a lone "-" argument for invoking input of command line arguments from stdin be the only argument on the actual command line. That requirement preluded use of this feature when the command for invoking Lynx was aliased so as to include arguments, because the lone "-" then could not be the only argument. Also tweaked the code so that any stdin-derived arguments which need to be processed early in main() are so processed. The vanilla code had severely flawed logic in this respect. The security considerations associated with switch handling have gotten hairy beyond reasonable bounds, but I think I've thought it all through (we'll see :), and have plugged some holes in the vanilla code for this feature. Redirection of stdout and/or stderr to a file now also works reliably in conjunction with this feature. - FM * Added an explanation in the PROBLEMS file of the bad getsockname() and getpeername() functions within SOCKETSHR 0.9D which affect the ftp gateway, and the URLs for Andy Harper's (A.HARPER@kcl.ac.uk) fixes of the SOCKETSHR 0.9D sources. - FM * Cast LYLocal.c into the Lynx programming style. - FM 1997-06-01 * Added support for numbered form fields, and options in SELECT popups, based on LE's patch. The LINKS_AND_FORM_FIELDS_ARE_NUMBERED keypad mode can be defined in userdefs.h and via the 'o'ptions menu. When in SELECT popups, the F_LINK_NUM ('0') command can be used in any mode to invoke a "Select option (or page) number:" prompt, which can take 'g' or 'p' suffixes, homologously to the "Follow link (or goto link or page) number:" prompt in the main document with popups retracted. Note that when in the main document, the F_LINK_NUM command has an implied 'g' suffix for form links (i.e., will position you on the form link, not, for example, ACTIVATE a submit button), but *not* in popup windows (i.e., without a 'g' suffix, the option corresponding to the number will be selected, and the popup will be retracted, as if you had pressed ACTIVATE when positioned on that option). The 123p feature is quite useful in popups with a very large number of options, and supplements the HOME, END and WHEREIS functions for seeking positions in the list (again, regardless of keypad mode, if F_LINK_NUM is used to invoke the prompt). A "page" is defined as the number of lines within the vertical dimension of the popup box. - FM * Mods in LYEdit.c to seek the current page and line when the editor is sedt on VMS. - FM * Updated the online 'h'elp concerning the "Follow link (or page) number:" and "Select option (or page) number:" features (Lynx_users_guide.html, follow_help.html, keystroke_help.html and other_help.html). - FM * changes to help files to reflect the different prompt string. - KW 1997-05-30 * Worked in LE's patch for keeping track of whether links occur in an underlining context, and if so, restore it when slang color is on and a current link is made non-current, thereby actually dealing with the longstanding bug discussed in the 1997-05-27 mods (This is just a hobby, and I always reserve the right to change my mind! :). - FM * Mods of LYForms.c and LYStrings.c to deal with form field values too long to fit in the line editor's buffer (such as long TEXTAREA values which have no newlines in them). As much of the tail as fits in the buffer is offered for editing, with statusline messages explaining the situation. If the tail is modified, it is combined with the unmodified head when the form field is made non-current. The result can be edited further by making the form field current again. If the form has a Reset button, it can be used to restore the original value. The vanilla code would crash on buffer overflow (Ugh! A potential security hole.). - FM 1997-05-29 * Restored underlining in conjunction with reversing for the current link with slang when colors are being used, but not otherwise. - FM * The 1997-05-26 mods to bypass screen redraws on retractions of SELECT popups when the selected OPTION was not changed worked properly only for VMS curses. Tweaked the for-slang code so that it now works like VMS curses (though not as efficiently). However, with Unix curses, the delwin() - refresh() sequence does not restore what was there before the popup was invoked, and none of the tweaks I tried got that to work, so the poor Unix folks using Unix curses are now stuck again with screen redraws for every popup retraction. - FM 1997-05-27 * Eliminated in the fotemods code underlining in conjunction with reversing for the current link with slang, to avoid the longstanding bug of underlining being lost (and distracting color changes occurring) when that link ceases to be current and it was embedded in an underlined region of text. The attributes of the current link can be better handled in the development code based on configurable style sheets, so there's no point letting this bug ride, nor trying to deal with it through temporary internal mods, in the fotemods code set. - FM 1997-05-26 * Mods of display_title() in GridText.c to eliminate the "format" mask as in KW's 1997-05-14 development code mods, and to make the memory management more efficient. - FM * Mods of change_form_link() in LYForms.c to bypass the screen redraw on retraction of a SELECT popup if the SELECT block is DISABLE-ed or the selected OPTION was not changed. Note that the complete elimination of the screen redraw in the 1997-05-20 development code mods, i.e., even when the selected OPTION was changed, results in the change not being made evident to the user in the retracted popup unless the screen is redrawn fortuitously (e.g., due to subsequent paging). - FM * Modified the caching-related changes of 1997-05-15 to LYMainLoop.c, handling automatic reloading after a change of the User-Agent string like after comparable other option changes. We force a reload if "preferred document lan(G)uage" or "preferred document c(H)arset" are changed via the 'o'ptions menu, and to set the "reloading" flag for forcing a proxy cache refresh if those or "user (A)gent" are changed and the current document has an http, https or lynxcgi scheme, but not force a proxy cache refresh if we're reloading due to an INLINE_TOGGLE, IMAGE_TOGGLE, or RAW_TOGGLE command. - KW, FM 1997-05-25 * Mods in LYMain.c to convert $USER if present in the TEMP_SPACE definition or LYNX_TEMP_SPACE environment variable to the string returned by getenv("USER"). - FM * Fixed two typos for me->inFONT settings in HTML.c - TD * Added chmod(file, 0600) calls for most files created by Lynx. - FM 1997-05-24 * integrate patch JED's mods which support mouse for slang as well as add new functions to encapsulate differences between slang/curses. - TD 1997-05-21 * Mods in HTML.c and LYCharUtils.c so that TABLE blocks are treated as divisions in the DIV nest, with a default alignment of HT_LEFT if the TABLE start tag lacks an ALIGN attribute, and otherwise, that attribute's value. Nested TABLEs extend the DIV nest. This avoids the problem in the vanilla code of TABLE content inheriting the alignment of a containing CENTER or DIV which is intended for alignment of the TABLE as a whole. Also added support for ALIGN attributes in TR elements. If the TR has no ALIGN attribute, it inherits that of the current division, which should be that of the current TABLE. This, of course, still does not yield true TABLEs for truly tabular content, but makes TABLEs used for formatting more readable. - FM 1997-05-20 * correct 2 occurrences of "me->inFONT == TRUE;" in HTML.c - TD * add configure --with-color-style option to merge RP's alpha changes for color styles (this works only with ncurses, since it does not initialize the window background, leaving it null, thereby exploiting a bug in ncurses which sets null backgrounds to a space). Also some whitespace (and renamed CS to make this build w/o ncurses) - TD * test-built with ncurses 1.8.7, 1.9.4, 1.9.9e and 4.0, as well as bsd 4.4 curses and slang - TD * Tweak of HTFWriter.c so that it does the anti-spoof tests normally done by tempname() (see the 1997-05-19 mods) in all cases for which it changes the temporary file suffix from any of those checked by tempname() itself. At this point, every way I've thought of for trying to spoof Lynx via links for temporary files is blocked, but people should beat on today's code to see if there's any spoofing strategy I haven't yet blocked. - FM * Modified the Lynx Trace Log handling so that it doesn't use actual redirection of stderr via freopen() calls, and restores the original value of stderr during any escape to shell. This avoids the problem on Unix that sh and ksh send their prompt strings to stderr, and that bash sends both its prompt and command line echo to stderr, so they end up in the log instead of being visible. I had tested the initial design on VMS and with csh on Unix, and thus didn't notice this foolishness for the other Unix shells. Anyway, it's OK for all of them now. - FM * Tweaked SIGTSTP interrupt handler in the USE_SLANG for-unix code, so that it gets set to SIG_DFL when stop_curses() is called, to prevent strange interferences experienced when ^Z is used while a helper process is in the foreground. - KW * Change in LYForms.c to prevent forced screen refresh after selection from a popup box. - KW 1997-05-19 * Recognize Linux console F1 key in LYgetch() (applies if "-DNO_KEYPAD" is in effect, as for all binaries built with slang). - KW * Protect LYgetch() against returning raw values of keypad() symbols which are invalid when used later as an index into keymap[], override[], etc. - KW * in the USE_SLANG for-unix start_curses(), honor the no_suspend flag if set. This implements -restrictions=suspend handling for slang (although it was intended for curses implementations which have problems with ^Z within Lynx; see the PROBLEMS file). Note that the no_suspend flag cannot be suspected to have the desired effect if lynx is executed from a shell script, unless the shell process forked for the script also ignores the SIGTSTP signal generated (usually) by the ^Z key. Also if the user is allowed to execute any helper process (VIEWER, PRINTER, etc.) which does allow suspending while no_suspend is in effect for the Lynx parent process (by overriding the SIG_IGN setting done by Lynx or by other means), then suspending may still be possible, in addition to strange effects either immediately or when the process or process group is continued (wrong tty and screen state, zombie processes, total hang of the session without any way to interrupt - you get the idea...). Trying to use the suspend restriction in order to prevent users from getting a shell prompt doesn't make much sense anyway when they are allowed access to execute commands which may be interrupted or allow escaping to a shell... - KW * Tweak of HTFile.c so that we no longer lose an LYforce_HTML_mode directive if the file is gzipped or compressed and the uncompressed suffix is not mapped to text/html. - FM * Modified tempname() in LYUtils.c so that it checks whether files with the current PID and target count already exist, and if so, increments the count until a name for a non-existing file has been created. - FM 1997-05-18 * Mods in LYMainLoop.c and LYClean.c so that Control-G is treated as a synonym for 'n'o in quit confirmation prompts. - FM * Mods in LYPrint.c to strip any gzip or compress suffix from the suggested filename, on the assumption that we're deal with a text/html or text/plain file that had a corresponding Content-Encoding and no Content-Disposition: file; filename=name.suffix header indicating the appropriate filename after uncompression. This assumption does apply for our current ftp gateway, and for most present-day http servers. This mod in turn ensures that text/html files which are not being printed as source will have their uncompressed suffixes converted to .txt, indicated that they are rendered. - FM 1997-05-17 * Fixed long-standing bug in display_page() of GridText.c. When it was updating the links structures, it wasn't re-initializing the form element if the links structure is not for a form field. - FM * Mods in HTML.c to deal more effectively with H# headers used instead of LH in lists. We now, in effect, treat them fully as if they were LH, so that their left indentations are in register with the current list nesting depth, and we apply better error recovery in cases where the author is mis-using H# for a FONT change rather than as an actual header. - FM 1997-05-16 * Changed the line where a WHEREIS search target should preferably be displayed to the 4th line (not counting the title line). This can be changed by redefining SEARCH_GOAL_LINE in userdefs.h. SEARCH_GOAL_LINE can also be a simple expression in terms of the variable display_lines, e.g., `#define SEARCH_GOAL_LINE (display_lines/3)', this should then automatically adapt to screen size changes (provided the display system can deal with that...) Note that this this goal line will normally not be used if the next target, according to the algorithm Lynx uses, is already on the displayed screen. Also, when the displayed page changes to show a search result, there is no guarantee that it will end up on the line set by SEARCH_GOAL_LINE. It should rather be regarded as a maximum. For example the presence of anchors on the line with the target or on the preceding lines will change the positioning. - KW * The SEARCH_GOAL_LINE line will also be used for "going to" a link with 'g' suffix at the "Follow link ..." prompt, although the algorithm is quite different. As for a search target, this only applies when Lynx has to position to a different page of the document, and then is only a maximum. - KW * Enabled the no-cache setting for the pseudo document Lynx creates for a client-side image map in LYMap.c, for now. - KW * Minor typo fix for the proxy authentication mods. - FM * Tweak of PRE block handling in HTML.c to ensure an implied paragraph after the block if it is in a list and not followed by an LI. - FM * Tweaks of SGML.c and LYCharUtils.c to allow any non-digit to terminate a numeric character reference once at least one digit has been found in the reference. - FM * Change in LYUnEscapeToLatinOne() to use isdigit() instead of isalnum() for recognizing numeric character references like LYUnEscapeEntities() does. - KW 1997-05-15 * Worked in JED's mods for taking a suspend into account during select() calls. - FM * Mods in LYMainLoop.c to not force a cache refresh on a proxy any more when INLINE_TOGGLE, IMAGE_TOGGLE, RAW_TOGGLE are used. On the other hand, do force a proxy cache refresh after one of the variables relevant for content negotiation `language' or `pref_charset' has been changed from the Options screen, if the current document is from a http, https, or lynxcgi resource. - KW * Set HTTP_ACCEPT_CHARSET environment variable for the child process in LYCgi.c if pref_charset is not NULL. - KW * (chartrans) Write a META tag with the current display character sets to the files generated for Bookmarks, List, Info, History, and Visited Links pages, so title strings contained in those files will (hopefully) not get erroneously translated again. Use new function LYaddMETAcharsetToFD() in LUCharUtils for this purpose. - KW * (chartrans) makeuctb now sets RawUni to UCT_ENC_8BIT if not otherwise set and if there are char values above 127. - KW * (chartrans) Change in HTuncache_current_document() to prevent caching of UCStages info which should be discarded. Still allow caching for this in the node_anchor for source display, so that a META tag in the parsed HTML can influence the display after using the SOURCE '\' key. - KW 1997-05-14 * Don't use title in showlist() if it is empty, to prevent "hidden links" on the List Page itself caused by documents with . - KW * Changed display_title() in GridText.c to not rely on sprintf() to get the number of blanks right. - KW * (chartrans) Added new lynx.cfg symbols ASSUME_CHARSET, ASSUME_LOCAL_CHARSET, and ASSUME_UNREC_CHARSET. They are only recognized if compiled with -DEXP_CHARTRANS. They correspond to the command line options -assume_charset, -assume_local_charset, and -assume_unrec_charset. The default for ASSUME_CHARSET is iso-8859-1 (corresponding to display character set "ISO Latin 1"). If no ASSUME_LOCAL_CHARSET is set, the explicit or default value for ASSUME_CHARSET will also be used for local files. ASSUME_UNREC_CHARSET has no default. See added text in lynx.cfg. - KW * (chartrans) Changes in LYCharSets.c to HTMLSetCharacterHandling() and HTMLSetUseDefaultRawMode() to support (hopefully) more consistent and user-friendly handling of raw mode and its default. Note that the following description does not apply if the display character set is one of the CJK settings. In that case, -raw and the corresponding Options setting is used as a CJK toggle as before. Note that the -raw flag is a toggle. It changes the "raw mode" setting from the default. The current setting of "raw mode" can be seen on the Options screen, and is also shown in a statusline message when the RAW_TOGGLE key (normally '@') is used. The default depends on the display character set (as previously) but now also on the ASSUME_CHARSET setting (as determined by a setting in lynx.cfg, possibly overridden by -assume_charset on the command line, or the default iso-8859-1). When the display character set corresponds to the ASSUME_CHARSET, the default for "raw mode" is ON, otherwise it is OFF. The effect of "raw mode" on the interpretation of documents which have no explicit charset label (from HTTP headers, a META tag, or otherwise) is as follows. There is an internal "assume charset" which may differ from the user-specified ASSUME_CHARSET value. When "raw mode" is set ON, the internal variable is set to correspond to the display character set. When "raw mode" is set OFF, the internal variable changes to the user-specified ASSUME_CHARSET or, if that also corresponds to the display character set (so that otherwise there would be no change), reverts back to the iso-8859-1 Web default. Raw mode doesn't imply total rawness. HTML character entities may be expanded and translated with either setting, 8-bit characters which are inappropriate for the display character set will not be sent to the terminal. For a "more raw" setting, try the "Transparent" pseudo display character set. - KW 1997-05-13 * Changed the compilation default in userdefs.h for USE_TRACE_LOG to FALSE, for now. - KW * Code for "fixing" of relative http and https URLs which start with a ../ segment from FM added, but it has to be enabled with the new lynx.cfg symbol STRIP_DOTDOT_URLS (default currently set to FALSE). See FM's description under 1997-04-23. - KW * Changed the test for dot segment fixing in LYLegitimizeHREF() so that now (if enabled) it also applies when the http or https base URL in effect does have a non-empty path but without any slashes in it (beyond the initial one between host and path). The test was too narrow before and did not recognize this case, so that an unmodified URL with ../ in it would still be sent to the server and without generating a statusline message. - KW * Tweak of case LYK_REFRESH: in LYMainLoop.c so that the REFRESH command still invokes an obligatory, complete refresh of the screen for slang on Unix with the new LY_SLclear() function (see 1997-05-09 mods), by using scrollok() if USE_SLANG is defined. - FM * Changed the local variable name, lines, in follow_link_number() of LYGetFile.c to nlines, to deal with the AIX 4.2 bug of treating lines as a macro. Also changed the variable name, pages, to npages for logical complementarity (they both refer to the total number). - FM * Mods in HTML.c, LYCharUtils.c and GridText.c to deal with links for positioning, specified via NAME or ID attributes, when they are embedded in Anchors which have an HREF, so that they now don't force premature closing of those Anchors. Also tweaked the code for creating links for the sources of images or other for-GUI embedded objects when clickable images ('*') is toggled on, so they use those mods as well, when possible. Note, however, that the clickable images feature is creating Anchors with HREFs which aren't actually there, and still can create technically invalid markup, on occasion, when the non-doctored markup actually is valid. The latter mods still need some improvements in the formatting, but are OK to use for now, and my brain hurts from trying to think through all the possible markup we might encounter. - FM * Tweaks of the Lynx Trace Log handling to deal with reloads when the HText structure for the log has been dumped. Made the first letter of the filename uppercase (Lynx.trace), complementary to Lynx.leaks. Eliminated the log from the Visited Links Page so it can't be sought there as a forward link. Use the History Page if you want to 'd'ownload the log, or use the 'p'rint option while viewing the log. Note that suffix maps do tail matching, and thus the so-called suffixes need not begin with a dot. If you want to use an external viewer for the log, you can put: SUFFIX:Lynx.trace:application/x-LynxTrace VIEWER:application/x-LynxTrace:most +s %s in your lynx.cfg, or their equivalents in your mime.types and mailcap files. - FM * Tweaks in LYMainLoop.c to set newdoc.title for various special pages generated by Lynx (History Page, Info Page, etc.) and when following a link. - FM * Small change to the heuristics for New_DTD in start_element() in SGML.c (try a bit more to close containing element if it's the same tag) - KW 1997-05-12 * Added support for proxy authentication. - AJL, FM * Updated follow_help.html to indicate that 0 is the universal F_LINK_NUM mapping for invoking the "Follow link (or ...) number:" prompt. - FM 1997-05-11 * Tweaks in LYMainLoop.c to ensure that the LYforce_HTML_mode flag is reset reliably, so it doesn't carry over to requests for text/plain documents, as it was doing under some circumstances in the vanilla code, e.g., when a bookmark file was used as the startfile via a file://localhost/path URL rather than via the -book switch. - FM * Very minor change in Lynx_users_guide.html, added two words - KW 1997-05-10 * Fixed a typo in statusline() of LYUtils.c. The check for whether the string is zero length before bothering to convert CJK multi-bytes was checking a holding buffer instead of the string. - FM * Fixed a bug in LYHandleMETA() of LYCharUtils.c. The check for a URL following the SECONDS value in REFRESH directives was not taking into account that an EOL might follow the digits for the SECONDS value. - FM * Changed the behavior of boolean_choice() in LYOptions.c so that the cursor is positioned immediately at the option display line instead of staying at the statusline instructions until an initial entry is made, and modified the statusline instructions accordingly. - LE, FM * Added a check for a NULL pointer in the LYCookie.c code for blocking sharing of SSL encrypted cookies with http servers, based on a patch from RT, and added a comment on why code for a block based on the scheme is there, despite its being redundant with the current blanket restriction based of the ports. - FM * Mapped 0 to F_LINK_NUM (as suggested by KW), so that 0 invokes the "Follow link (or goto link or page) number:" prompt under all circumstances (but with the 0 not treated as the first digit of the number entry). That's a better way to do it, because then the F_LINK_NUM command and explanation always appears in the "Current Key Map" display, and only the mappings of numbers to functions drop out when going from NUMBERS_AS_ARROWS to LINKS_ARE_NUMBERS mode (as they should, 'cuz the numbers no longer are mapped to functions; though maybe they should stay mapped to functions now that we have an explicit command key for invoking the prompt; something to think about...). - FM * Updated the PROBLEMS file to indicate that you should try changing -lresolve to -lbind if you have upgraded to the bind-8.1 or later library on a Sun system and keep getting the message "Alert!: Unable to connect to remote host". - FM 1997-05-09 * Typo fix in follow_help.html. - FM * Added an LY_SLclear() function in LYCurses.c as a more efficient substitute for slang of the curses clear(), based on a patch from JED. - FM * Added a USE_TRACE_LOG compilation (userdefs.h) symbol and -tlog command line toggle of the compilation default (normally TRUE), for directing syserr messages to a lynx.trace file in the user's home directory when TRACE mode has been turned on (either via the -trace command line switch, or the TOGGLE_TRACE (Control-T) command. Also added a TRACE_LOG command (normally ';') for viewing the "Lynx Trace Log" (lynx.trace) at any time, if one has been initiated during the current session. The trace log feature is disabled automatically in anonymous or validation accounts, and should not be used in any account which could have different users simultaneously. The mods work well to the extent I've exercised them thus far on VMS and for the solaris2 target, but possibly need more refinements, depending on the behavior for other Unix flavors of freopen(), which is used for redirecting stderr to the log. Updated lynx.man, lynx.hlp, and the online 'h'elp to describe these new features. - FM 1997-05-08 * Made the handling of hidden links dependent on a new command line option. With -hiddenlinks=listonly hidden links are only shown on 'l'ist screens and listings generated by -dump or from the 'p'rint menu, but appear separately at the end of those lists. With -hiddenlinks=ignore they don't appear even in listings. With -hiddenlinks=merge hidden links are treated as before, i.e., they show up as bracketed numbers if LINKS_ARE_NUMBERED is on, and are numbered together with other links in the sequence of their occurrence in the document. The default is -hiddenlinks=listonly. Changed the new follow_help.html file accordingly. This may help obviate an apparent need to call something a bug which others regard as a feature... - KW * Function HText_AreDifferent() updated as in FM's code, but still unused. - KW 1997-05-07 * Added another argument in follow_link_number() of LYGetFile.c for returning the number entered at the "Follow link (or page) number:" prompt to the mainloop(), and modified the statusline error messages that may be issued from the mainloop() in conjunction the with 'g' or 'p' suffixes so that they report that number when appropriate. - FM * Changed the prompt to "Follow link (or goto link or page) number:" - KW * Tweaked case HTML_DD: in HTML.c so that it checks whether a wrap has just occurred naturally before imposing a newline for DD start tags. Without that check, seemingly random, extra newlines could occur in the DL/DT/DD blocks. - FM * Created a follow_help.html for the keystroke_commands subdirectory of the online 'h'elp, describing the "Follow link (or page) number:" features, and added links to it in Lynx_users_guide.html and keystroke_help.html. - FM * Changed the help description according to what is implemented here - KW 1997-05-06 * Further tweaked KW's mainloop() tweak (see yesterday's entry), so that newdoc.link is reinitialized properly when we're going to, but not ACTIVATE-ing, a link in the current page due to a 'g' suffix for a "Follow link (or page) number:" entry. Otherwise, if the number with a 'g' suffix was used to make the last link on the current page the current link, and then a NEXT_LINK command was used, one could end up on a link beyond the first one in the next page. Also added a statusline message if the 'g' suffix is used with a number which corresponds to a link that already is current. - FM * Tweaked yesterday's LYList.c mods so that an OL with the CONTINUE attribute is used when a "Hidden links:" list is appended to a "Visible links:" list and NUMBERS_AS_ARROWS mode is on. This allows you to see the number to enter at "Follow link (or page) number:" prompts, as when LINKS_ARE_NUMBERED mode is on. - FM * Mods in HTML.c for LI and LH handling so that a pointless wrap will not occur at the spacer following the bullet in UL blocks or the Arabic number, Roman numeral, or upper- or lowercase letter in OL blocks if the subsequent text has no spaces, itself, up to the right margin. In such cases, that text now stays on the initial LI or LH line, and wraps at the right margin to the left indentation for a second or greater line in the LI or LH. - FM * Changes to avoid memory leaks in LYCookie.c - KW * Escape '<' and '>' characters (using the LYEntify functions) in URL strings written to the temporary files for LIST and INFO screens, to avoid invalid HTML and corrupted display as a result of URLs which contain these characters (although they shouldn't) and have not been escaped earlier. - KW * Changed the label for the currently selected link from "Filename:" to "URL:", and fixed an alignment glitch for the 9th item on the History and Visited Links pages. - KW * Changed an "8-bit" occurring in HtInit.c to "8bit", tweaked LYKeymap.c comments. - KW 1997-05-05 * Added HText_AddHiddenLink(), HText_HiddenLinkCount(), and HText_HiddenLinkAt() functions in GridText.c for keeping track of the addresses (URL, plus fragment if present) for links that were converted to hidden by HText_endAnchor() due to their having no visible link name, and modified showlist() and printlist() in LYList.c so that if any hidden links were create during the rendition, the "References in this document:" menu for the 'l'ist command or appendix on dumps segregates and clearly labels the visible versus hidden links. - FM * Plugged a memory leak in LYEntify() of LYCharUtils.c. - FM * Modified experimental DTD info to not close anchors when an invalid P, H1-H6, or ADDRESS start tag is encountered, and to change error recovery for P and MAP. - KW * Modified experimental DTD info and HTML.c to not close PRE when an invalid FORM start tag is encountered, and to use the appropriate handling for preformatted text if PRE is in effect but is not the top element on HTML.c's stack. The HTStyle structure's freeFormat (which wasn't used anywhere before) is now used as one test whether we are within preformatted text, also corrected the style setting of freeFormat for PRE in DefaultStyle.c. - KW * Changed internal gateways (in HTNews.c, HTFile.c, HTWAIS.c, HTWSRC.c) to end LI, DT, and DD elements if they are not declared SGML_EMPTY, so that HTML.c's stack won't get overloaded in this case. - KW * Tweaks in mainloop() handling of DO_GOTOLINK_STUFF and DO_GOTOPAGE_STUFF. Going to a link with the 'g' suffix and then immediately ACTIVATing that link could previously show the wrong page of the new document, since newdoc.line was not being reset. - KW 1997-05-03 * (chartrans) Now always check for LYlowest_eightbit[current_char_set] near the top of HText_appendCharacter(), to prevent writing C1 control chars to the terminal if they are not valid as displayable characters according to the selected "display character set" Option. All this should be handled earlier in processing, and this check may disappear again for testing, but somebody asked for it... - KW * (chartrans) Small changes to README files. - KW * In the section of HTUtils.h for non-autoconf builds, don't set HAVE_KEYPAD or HAVE_TTYTYPE if USE_SLANG is defined. - KW * Modified HText_LinksInLines() to not count hidden form fields. - KW * Added support for setting an anchor's no_cache element based on a comparison between Expires and Date headers if both were received and we didn't set it based on a Cache-Control directive. Also added equivalent support for a comparison between an Expires value from a META tag and a Date header. We still compare Expires header or META values versus the system time if no Date header was received, and still do not accept Date values from META tags because they are unlikely to be reliable. - FM 1997-05-02 * Fixed a bug in LYAddImageMap() of LYMap.c which could cause multiple insertions of the same MAP into the LynxMaps structure, and crashes on some systems due to the consequent multiple FREE()'s at exit. - FM 1997-05-01 * More mods in HTML.c, LYCharUtils.c and GridText.c for rational handling of potentially wrapped form fields in PRE blocks. We now artificially wrap the line if the form field would start within 6 columns from the right margin. This makes sure that editing windows and the highlighted segments of submit or reset buttons will not ever be ridiculously short, and is homologous to our use of a collapsible space before input fields and buttons when not in PRE blocks to promote a wrap there instead of within the fields or buttons. - FM * Expanded the WHEREIS query support so that it also locates the values of form fields within the current document and repositions or pages accordingly, as for normal (Anchor) links and for text strings. Note that if the hit was for an OPTION value in a retracted SELECT popup, you are positioned on the retracted window, and must pop it up and search again to be positioned on the OPTION value with the hit, unless it already is the selected OPTION. The mods are hairy enough without trying to do the latter automatically, at least for now. - FM 1997-04-30 * Quote the URL for external command (not for VMS or DOS or Windows) to avoid dangerous chars and shell spoofing. - KW * Escape characters properly when constructing URLs from filenames in LYConvertToURL. If a string given for startfile, home page, or a goto command which does not already have the form of an absolute URL starting with an URL scheme and which does not start with '~' (but may start with '/') specifies an existing file or directory in valid Unix-like format for the native filesystem, i.e., without using escaping, it gets URL-escaped, otherwise it is assumed to already be URL-escaped. - KW 1997-04-29 * Updated RP Styles 0.2 code, don't allow comma as separator between fg and bg colors after all, fix the LYNX_VERSION string generation in userdefs.h to have `-Styles' appended *within* the quoted string. - KW * Added support for a 'p' suffix, like the 'g' suffix for making a link number the current link rather than ACTIVATE-ing it, but for displaying the page indicated by the number preceding the 'p' suffix entered at the "follow link (or goto link or page) number:" prompt. [...] If the number entered at the prompt is '1' or less followed by the 'p' suffix, or only 'p' is entered, you get the same behavior as for the HOME command. If the number is equal to or greater than the number of pages, you get the last page displayed as you would if you had used successive PAGE_DOWN commands from the HOME position to reach it. This differs from the END command, which fills the screen with lines from the end of the document if you are not already displaying the end of the document. Note that if you enter a number without a suffix (to ACTIVATE the link with that number) or with the 'g' suffix (to make the link with that number the current link) it must correspond to a valid link number or an error statusline message will be issued, in contrast to the 'p' suffix for which an out of range number is treated as a request to display the first or last actual page in the current document. - FM * Fixed some typos in lynx.man. - LV * More modifications of the anchor counting code for HTGetLinkInfo() in GridText.c so that it properly skips hidden form fields and anchors without selectable text. - KW * More modifications in GridText.c and HTML.c so that it deals rationally with submit or reset button values, and the underscore placeholders for other form fields, when in versus not in PRE blocks. The entire submit or reset button values are now always displayed, whether or not a portion of it was wrapped, but we still can only highlight the portion before the wrap to indicate a link for submission of the form or for resetting the form field values. - FM * Undid some mysterious changes in SIGHUP setting (SIG_IGN vs. SIG_DFL) which had sneaked in in connection with adding the NOSIGHUP conditional. - KW * Tweaks to New DTD's extra info for CENTER and H1..H6 - KW * New function HText_AreDifferent() from FM added to GridText.c, but not used yet. - KW * Tweaks to WB's additions for external command: use strncasecomp, add LYExtern.o to src/makefile.in, changed test for empty command. - KW * Changed LYKeymap.h and LYKeymap.c so they agree about the symbols assigned to the new keys (SWITCH_DTD, EXTERN). - KW * correct minor syntax err that caused SCO 3.x to fail make-include autoconf test. also, eliminate whitespace before '#' that causes compile-fail on K&R compilers. - TD 1997-04-28 * Updated lynx_url_support.html so as to make clear that the offer to include the currently displayed document with right-angle-bracket prefixing for mailto, newsreply, and snewsreply URLs is made only if the user has defined an external editor via the Options Menu, and that the user is expected to edit this inclusion so that it retains only those passages relevant to the email or followup message which the user will add. - FM * Tweak of INPUT handling in HTML.c so that we use nbsp instead of any spaces when loading a submit or reset button's actual value instead of a series of underscores into the HText structure, so that we still promote a wrap, if needed, at the space we ensured would be present before each INPUT. - FM * Made first_option a structure member rather than a static variable in HTML.c - KW 1997-04-27 * Tweak of Control-C and Control-G handling for popup_options() in LYForms.c. They were being sought improperly as command keys rather than as raw keyboard entries. Note that only Control-G should be used as "cancel" within popup windows on Unix, because Control-C is not being trapped to a handler as on VMS. - LE, FM * Tweak of the anchor counting code for HTGetLinkInfo() in GridText.c so that it takes form fields into account when making a link current based on a "Follow link number" entry with the 'g' suffix. Also added comments to that code. - KW 1997-04-25 * Added information in the "Lynx bookmarks" section of the Users Guide about appropriate versus unsupported modifications when editing the bookmark files. - FM * RP Styles 0.2 fixed a bit and brought up to current experimental code level (no autoconfig or simple-curses, only older version of Wayne's mods, maybe something else is missing, too). No documentation, no detailed checking, no real cleanup. Makefile slightly adapted, but still needs changing for new systems - see comments there. - KW 1997-04-24 * Tweaks for enhanced mouse support in Win32 and hooks for 386 which doesn't have mouse support yet. - WB * External command added. See LYExtern.* in src and lynx.cfg. You need to define USE_EXTERNALS to compile this in. - WB 1997-04-23 * Modified LYCharUtils.c, HTML.c and LYMessages_en.h so that if a partial reference (HREF or SRC value) would be resolved to an http or https URL which has only two dots as the first symbolic element in the path (e.g., http://host/../foo.html), such that the server would reject the request, that element is excluded from the resultant URL, but a statusline message is issued (once per document) about a bad partial reference, as immediate feedback which might lead to the document provider correcting the bad partial reference(s). We still retain that first symbolic element, in compliance with the IETF RFCs and IDs for resolving URLs, with other URL schemes (e.g., ftp). - FM * Added a skip_stack int to the HTML.h struct _HTStructured, to use for flagging that the next call to HTML_start_element or HTML_end_element is an internal shortcut and should skip pushing or popping the HTML.c paragraph style stack even for elements that are not declared SGML_EMPTY. Added a SET_SKIP_STACK macro to HTML.c to set the flag, use it. - KW * Changes to HTML.c to better deal with a number of elements which may or may not have been declared SGML_EMPTY in HTMLDTD.c: if the last stacked element is HTML_OPTION, treat text as for HTML_SELECT in HTML_put_character and HTML_put_character and HTML_put_string. Added handling code for

to HTML_end_element (similar but not identical to that for P in HTML_start_element). Added check whether a SELECT is still open to FORM handling in HTML_end_element. Added check whether a FORM is open to SELECT handling in HTML_end_element. Added cases for end tags of TABLE-related elements (TR, THEAD, TFOOT, TBODY, COLGROUP, TH, TD) and of DT, DD, LH, LI, FONT, OVERLAY to the switch in HTML_end_element, currently just break from the switch. - KW * Some tweaks and corrections to the additional element info and to the content types used with New_DTD, in HTMLDTD.c. Made OPTION non-empty. - KW * Now changed the tags_old[] in HTMLDTD.c, which is used with the switchable "old" SGML parsing, to follow the changes for A, B, BLINK, CITE, EM, FONT, I, STRONG, and U mentioned in the entry of 1997-04-15. These, together with FORM and P, are all declared as SGML_EMPTY now when the "old" SGML parsing is in effect, but not with new parsing. - KW * Changes to LYMail.c and LYPrint.c to send Content-Transfer-Encoding headers and/or a charset parameter when mailing, based on idea from Hynek Med. Don't use charset if we only have 7-bit characters anyway. If compiled with EXP_CHARTRANS, use MIME name corresponding to display character set if it looks valid (not "x-"), otherwise only an explicitly given document charset. In the chartrans case, don't send charset parameter for CJK since it may be wrong... - KW * Added TRACE output to UCAuto.c - HM 1997-04-22 * refined check for slang libraries/headers by checking if $CFLAGS has been set so that slang.h is in the search path - TD * add check to allow use of broken ncurses 1.9.9e's color - TD * add check for NGROUPS, TRUE, FALSE macro definitions - TD * remove top-level makefile.in targets that can be combined with the generic target (more work required on the remaining ones) - TD * Plugged memory leak in deleteLinks() of HTAnchor.c. - KW * When dumping or outputting a rendered document via the 'p'rint menu, Lynx would use the underscore placeholders for submit/image/reset buttons as for other INPUT fields. We now load the values of submit/image/reset buttons instead of placeholders into the HText structure, so the values will be seen when dumping or outputting via the 'p'rint menu. See the comments under case HTML_INPUT: in HTML.c for the still less than optimal things that happen if a wrap occurs within the INPUT value or placeholder strings, as might happen in PRE blocks, or for strings wider than the screen. - LE, FM * SGML_abort() did not free memory used by the SGML.c parser stack. Now it does, but still doesn't call HTML_end_element() for the stacked elements (it's an abort after all...) - KW 1997-04-21 * Tweaks of the 1997-04-11 and 1997-04-09 mods in HText_endAnchor() of GridText.c so as to take possible wrapping of Anchor content into account when deciding whether or not to implement the Anchor as an ACTIVATE-able link. - FM * New SGML.c parser, and new HTMLDTD.c with additional element info. Extra content information for each tag is now included in the HTTag structure, and given in an extended tags_new[] table in HTMLDTD.c. Modified start_element() and end_element() in SGML.c to perform some heuristic wind-downs of the parsing stack, based on the extra element info. - KW * Revert treatment of some tags which were treated as SGML_EMPTY before to their "natural" content model. No changes made to HTML.c to accommodate this change, so results may differ where HTML.c relies on previous hacks or has now handling code for end tags of elements which were previously SGML_EMPTY. - KW * Made SGML parsing switchable between old and new HTMLDTD info and SGML.c code, controlled by a New_DTD global variable and LYK_SWITCH_DTD toggle key. Use (temporarily?) ^V for the toggle key. This is not yet changeable via command line, lynx.cfg, etc., and the default is New_DTD==YES (so that it gets tested :-) ). - KW * Made some of the error messages before exit in LYMainLoop.c and LYMain.c go to stderr instead of stdout, but only for UNIX and, in the case of the LYMainLoop.c messages, only if dump_output_immediately was in effect. - KW 1997-04-20 * Tweaks in LYCharUtils.c to bind META CONTENT to a header value only via an HTTP-EQUIV attribute (i.e., not via a NAME attribute). - FM * Mod in HTAccess.c to ignore the anchor's no_cache element if we're seeking a position in the currently loaded document. - FM * Commented out the above change in HTAccess.c. There's a more complete mechanism for it already in this code... - KW * Fixed a typo in the bookmark file lead text. - DK (Doug Kaufman ) 1997-04-19 * Changed the inappropriate StrAllocCat() to StrAllocCopy() for loading the XLOADIMAGE_COMMAND in LYReadCFG.c. - PC 1997-04-18 * Based on recent discussions in www-html@w3.org, added HY and SHY to the DTD (treated as synonyms; one or the other is most likely to be used in future HTML specs, so for now, we support both), as markup equivalent to the named entity ­ and numeric character reference ­ (soft hyphen). Note that Lynx implements soft hyphens as specified in IETF RFC 2070 (link "HTML i18n" in the Users Guide). Use of a tag instead of entity is preferable for a soft hyphen because browsers which do not support soft hyphen will ignore it as an "unknown tag" instead of inappropriately inserting a hyphen or displaying the raw entity. Also added WBR, which is handled like soft hyphen (indicating a permissible wrap point), but does not insert a hyphen at the wrap. - FM 1997-04-17 * Mods in HTML.c, HTML.h, and LYMessages_en.h to issue an HTML stack overrun message only once per document, and as a statusline message if not in TRACE mode, and to check in HTML_end_element() for correspondence between the SGML and HTML stacks if an overrun should occur. - FM * Corrections in HTML.c for the bounds checks associated with DIV and CENTER nesting levels, and for an HTML stack underrun. - KW * Plugged a memory leak under case HTML_IMG: of HTML_start_element() in HTML.c, and removed an inappropriate if(){} in HText_endAnchor() of GridText.c. - FM, KW * Modified the lead text created for bookmark files in LYBookmark.c so that it indicates that an editor can be used to delete or reorder the links, but that the format within lines should not be changed, nor other HTML markup added. Note that the new lead text will be used only when new bookmark files are created via the 'a'dd bookmark link command. A new bookmark file is not created if the one being sought already exists, so existing ones will still have the old lead text. - FM 1997-04-16 * Extensive changes to try to keep track of whether a document (or a location within it) was reached by an internal (fragment-only) URL reference or not. The basic idea is to be serious about I-D (currently) draft-fielding-url-syntax-04.txt. URL references starting with '#' are always to the current document (from which the reference is made). This leads to a lot of hackery in HTML.c, LYMainLoop.c, LYHistory.c, etc. etc... to distinguish a doc that was reached by an "internal" reference from others. But it seems necessary to keep track of how the reference to a fragment was specified, whether with a non-empty "real" URL (possibly relative) preceding the '#' or without it, all the way way from the HTML parsing to the mainloop. Only then can the mainloop decide to not start a new retrieval for an internal reference without skipping a new retrieval if a full URL reference with fragment is made to a location in the same document (which may be non-cachable or the result of a POST)... This code prevents unnecessary/inappropriate POST form resubmissions on following an internal link in a POST response, as they are present for example in WebTechs validation results. - KW * A "Goto numbered link" feature. The user interface could be improved... Start typing the link number, then add 'g' before hitting enter - KW * Some improvements to WHEREIS search. Will not always position found string on first line (details depend on whether anchors are present, usually will position in top third of screen), and avoid some unnecessary screen updates. - KW 1997-04-15 * Miscellaneous additional tweaks in HTML.c for more robust error recovery from bad HTML involving emphasis or style elements (B, BLINK, CITE, EM, FONT, I, STRONG, and U), or HREF-less NAME-ed Anchors without matching end tags. - FM * Modified the declarations in HTMLDTD.c and code in SGML.C, HTML.c, and GridText.c to handle A, B, BLINK, CITE, EM, FONT, I, STRONG, and U container elements homologously to the modified handling of FORM (see 1997-04-05 mods) so that if they are invalidly interdigitated or have spurious end tags in the markup, substitutions of the "expected" end tags by the SGML.c stack-based parser will not be made, and without messing up the HTML.c stack-based parser. Appears to work reliably for all of the elements, and to be reasonably crash safe (hopefully as safe as the vanilla v2.7.1), but there are no guarantees. - FM * Only *some* (most?) of the changes described in the above two entries are used, as far as they change HTML.c. Not yet using the changes to HTMLDTD.c and SGML.c. - KW * refined logic of SVr4 curses color support to test the no_color_video attribute - TD * ifdef'd NCURSES_MOUSE_VERSION logic to allow build with ncurses 1.9.4 - TD * ifdef'd wgetbkgd misspelling to allow build with ncurses prior to 1.9.9g - TD * document USE_MOUSE configuration-option - TD * modify configure script and makefile.in templates to make BSDI_Makefile obsolete - TD * rename config.h to lynx_cfg.h to minimize conflict when configuring against ncurses or slang in nonstandard locations - TD * new autoconf macro CF_HEADER_PATH is used to make header-search for slang the same as ncurses - TD * modify CF_CURSES_LIBS, CF_NCURSES_LIBS and CF_SLANG_LIBS to accommodate predefinition of $LIBS variable - TD * corrected autoconf'd compiler flags for Ultrix - TD * add config.guess & config.sub to allow specialized host-type checks - TD * guard against redefinition of NO_FILIO_H - TD * use new autoconf macro CF_SYSTEM_MAIL_FLAGS -JES 1997-04-14 * Tweaked LYAddImageMap() in LYMap.c so that it removes all pre-existing AREA element entries when updating MAP element content, and set the no_cache anchor element in LYLoadIMGmap() so that the updated MAPs always will be used when rendering. - FM * Not using the no_cache change from last entry, until further investigation. - KW * Removed two spurious lines under case LYK_PRINT: in LYMainLoop.c (from an old cut and paste from case LYK_HISTORY: done too late at night 8-). - FM 1997-04-13 * Modified the handling of BASE for resolving HREFs in relation to MAP and AREA elements, and USEMAPs in IMG and OBJECT elements. The formally released code was treating such links equivalently to the handling of fragments for positioning the display to ID-ed elements or NAME-ed Anchors, and assuming they're in the same document if the associated HREF value begins with a '#', rather than resolving versus the BASE, and was always resolving versus the BASE for MAP ID or NAME attributes, and for the AREA HREFs in MAP content. We now always resolve the MAP ID or NAME attributes versus the current stream's address (since the MAP must be in it or we wouldn't be handling it) [...] According to the original draft and the current HTML 3.2 Proposed Standard, MAPs need not be in the same document as the IMG or OBJECT elements which specify links to the MAPs. Because MAPs are "deferred objects", they logically should be placed above any IMG or OBJECT elements which reference them in the same document (as is done for SCRIPTs), but this isn't stated in the specs, nor always done in practice. [...] ([A]uthors who place the MAPs further down in the same document should be informed about "deferred objects" and encouraged to move them up 8-). - FM * Use logical extension of the rules for HREF references also for USEMAP references to MAPs: relative URL references are resolved with respect to a BASE element if one is present in the document where they occur, unless they are URL references without a URL, i.e., only a fragment starting with '#'. In the latter case they are taken as internal references referring to a MAP in the same document where the USEMAP occurs, whether the MAP occurs before the USEMAP (as it should, according to previous entry) or after the USEMAP. HREF's in AREA elements follow the same rules. - KW * Fixed bug in HTML_free() for the case when LYMapsOnly is set. We didn't create an HText structure for the stream (just scanned it for MAPs and processed them into LYMap.c's LynxMaps structure), nor do we want to create a blank one (as was being done) since we didn't render the stream, nor would we have a me->target set. So we just free any me elements that might still be allocated (though they should have been freed already), and return rather than continuing through the rest of the HTML_free() code. - FM 1997-04-11 * Fixed bugs in Gridtext.c and HTML.c which could cause mishandling of anchors in LINKS_ARE_NUMBERS mode if a line wrap occurred in the numbered bracket or the anchor content following the bracket, and failures to suppress the numbered bracket if the anchor content was empty due to ALT="" in an IMG tag, or if Lynx was configured or toggled to suppress the link for the server-side image map if both ISMAP and USEMAP attibutes were present in the IMG tag. - FM * Only using the number-removing code under additional conditions: ISMAPs which appear together with USEMAPs and which are suppressed with LYNoISMAPifUSEMAP in LINKS_ARE_NUMBERS mode. - KW * Extended the disk_save restriction to the print menu as well as the download menu, and accordingly updated lynx.hlp, lynx.man, and Lynx_users_guide.html. - HN, FM 1997-04-09 * Many changes to further the Win32 and 386 ports. An emulation of the HTVMS_ calls was used to try and cover all the DOS'izms. A specialized ifdef for pdcurses color mapping added. Some keypad tweaks. More generalized process spawning. .lynxrc is lynx.rc for 386 - WB * Tweak to ensure that a newline isn't inserted by virtue of a FORM start tag if it's in the first line of a list element and no text precedes it other than a UL's bullet or OL's number on that line. - FM * Added pauses for the "Bad HTML" statusline messages under cases HTML_HTML and HTML_BODY in HTML_end_element(), and eliminated their checks for an unclosed FORM because we no longer expect that to cause a serious problem. - LE, FM * Added a NO_ISMAP_IF_USEMAP configuration symbol and -ismap command line toggle for suppressing inclusion of a link for the server-side-image-map if an IMG or OBJECT element has both ISMAP and USEMAP attributes such that a client-side-image-map link is created. Updated lynx.man, lynx.hlp and Lynx_users_guide.html accordingly. - FM * Fixed a glitch in HText_endAnchor() of Gridtext.c which could cause dangling Anchors in LINKS_ARE_NUMBERED mode if the Anchor's content was handled in a manner which caused it to become zero length. - FM * Moved handling for NEWS_POSTING in LYReadCFG.c to the right place, so that it can actually have an effect. - LV * Typo fixes for the comment concerning NO_ANONYMOUS_EMAIL in userdefs.h - HN, FM 1997-04-08 * New translation table koi8r_uni for KOI8-R charset. Lynx can now translate between iso-8859-5 and KOI8-R, at least for the Cyrillic characters present in both. - KW * New translation table def7_uni with default 7-bit mappings (replacement representation). Based on RFC1345 and mnemonic,ds from ftp://dkuug.dk/i18n/ and previous Lynx replacements in LYCharSets.c and IPA FAQ convention and stuff for Ethiopic and KOI8-R. It maps many of the accented Latin characters present in Unicode to their unaccented counterparts. This table is now used for the "7 bit approximations" display "character set". - KW * Entities for Latin2 characters added to HTMLDTD.c These also include many entity names for ASCII characters, and characters which are in both iso-8859-1 and iso-8859-2. - Hynek Med * Changes to the non-chartrans translation tables in LYCharSets.c for Đ, Ð, and ð. Treat Đ more like an entity for the (Latin-2) Unicode character U+0110, since that seems to be SGML standard usage. - KW * Added mappings for some "smart quote" characters to several translation tables. - KW * Make makeuctb slightly more flexible (accept unicode range for mapping to single code point). - KW 1997-04-07 * Took out special-case handling in the curses-color code for underlining when lynx is running under Linux using the linux console with color. The code was introduced on 1997-03-12 and would ignore "smul" capability info from terminfo or termcap under those circumstances, always using bold instead of underline. - KW * Slightly modified the FORM handling patch of 1997-04-05, as follows: Use a generic test for a non-SGML_EMPTY element for bypassing the stack pop in HTML_end_element() of HTML.c instead of an explicit test for HTML_FORM. - KW 1997-04-06 * Patch for IMG elements which have both ISMAP and USEMAP in effect. In HTML_start_element() don't generate the "[ISMAP]-" string for output in this case, unless clickable_images is set TRUE. - KW 1997-04-05 * Patch for Lynx v2.7.1 to handle invalidly interdigitated container elements or spurious container end tags without substitutions of "expected" FORM end tags by the SGML.c stack-based parser, and without messing up the HTML.c stack-based parser. Reliably succeeds in not closing FORMs before all of the FORM elements, including submit buttons, have been processed. Should be reasonably crash safe (hopefully as safe as the vanilla v2.7.1), but there are no guarantees. - FM 1997-04-04 ============================================================================ --- Release of Lynx2-7 + BUGFIXES as Lynx v2.7.1 (April 4, 1997) by FM --- ============================================================================ * Note that 2.7.1 was not a release from this code set, but all 2.7 -> 2.7.1 bugfixes and other changes are also included in this code set, in either identical or equivalent form. Therefore the entries below this point comprise the 2.7 -> 2.7.1 changes, and additionally other changes made to the development code set during that time. - KW 1997-04-02 * add Andrew Kuchling's patch to support mouse-clicks with ncurses. - TD * refine tests that address porting problems to SCO (detecting struct winsize, workaround for misdefinition of 'remove') - TD * refine CF_COLOR_CURSES test to avoid ncurses 1.9.9e bugs. - TD * refine CF_PATH_PROG to allow for machines that haven't the given programs, by using only the program name and added configure option --disable-full-paths to enforce this behavior. - TD * fixes for some gcc compiler warnings (missing prototypes, unused variables, uninitialized variables, shadowed variables). - TD * Fixed typos in LYHistory.c, LYMail.c and LYMain.c which caused failures of flag setting in the distributed code. - TD * correct cast in HTFWriter.c that may break if atoi() is not prototyped. - TD * add top-level makefile target 'maintainer-clean', use this to remove Lynx.prj - TD 1997-03-31 * Added a missing check for whether the fragment token is NULL in LYConvertToURL() of LYUtils.c. Without the check, the for-Unix code could crash if a local file spec was entered as a startfile or goto with escaped characters. - KW * Mod in HTML.c to retain "[INLINE]" as the default ALT string if an IMG element has an ISMAP attribute but is not in Anchor content such that it could not in fact function as a server-side image map. - FM 1997-03-27 * In mainloop(), after the call to HText_pageDisplay() following a change of the document view, ensure that curdoc.link does not remain set to -1 if there are any links on the screen. This would otherwise happen if a document is pushed to the history stack while there are no links, and later popped (and refreshed) after one or more links have been created. This change prevents segmentation faults which occurred after creation of a new file in a previously empty directory via the DIRED menu. The access to invalid memory only occurred if the screen showing the empty directory did not have a parent dir reference link (which is always the case if NO_PARENT_DIR_REFERENCE was specified at compilation time). - KW * In LYLocal.c, modified the code handling DIRED_MENU to do more careful checking of the selected file. In addition to "TAG", "FILE", and "DIR", DIRED_MENU definitions in lynx.cfg now also recognize LINK as a type. DIRED_MENU definitions with a type field of "LINK" are only used if the current selection is a symbolic link ("FILE" and "DIR" definitions are not used in that case). The default menu definitions have been updated to reflect this change, and to avoid the showing of menu items whose action would always fail - KW * Some cleanup to eliminate compiler warnings, remove some unused variables - KW * Fixed a typo and added comments for the code in LYMainLoop.c which decides whether to load the URLs for homepage and/or startfile into the goto buffer at startup. The typo in the distributed code caused the startfile URL always to be added to the goto buffer, even if it had POST content such that it could be resent inappropriately as a GET request via the goto buffer. - FM * Added a bsdi-slang target to the Makefile. - Laura Eaves 1997-03-26 * Changed highlighting of strings found by a WHEREIS ('/') search. Now uses Christmas tree attribute combination ("all bits are on"), which with color support translates to COLOR:7. - KW * Modified the HTStream structure and associated code in src/HTFWriter.c so that we save and use the relevant content of the associated HTPresentation structure as two HTFormat elements rather than via a pointer to the HTPresentation structure itself, because the latter structure might not be valid under some circumstances when HTFWriter_free() is called. The distributed code might indirectly result in segmentation faults during downloading on Linux and some other flavors of Unix (though they don't occur for most flavors, or on VMS). - KW 1997-03-23 * Further reduction of top-level makefile.in by moving definitions out of WWW/Implementation/*/Makefile, so only one is needed for autoconfigured build (i.e., WWW/Implementation/unix/Makefile). This highlights the remaining differences between the top-level targets - TD * Make configure script generate Unix makefiles in subdirectories, a step toward being able to run make from any directory, for development - TD * Add autoconf tests for paths of programs, including sendmail vs mmdf - TD * Add configure script options for development (--disable-echo, --enable-debug, --enable-find-leaks, --enable-warnings) - TD * Allow user to override search path for ncurses header by setting $CFLAGS or $CPPFLAGS - TD * Correct array limit in LYCurses.c for SVr4 color support - TD * Use addstr rather than printw in popup-forms to address concern about 8-bit characters - TD 1997-03-21 * Changes in auto config handling of ncurses header location, function used for reading terminal input, some other system dependent tweaks (including SCO broken remove, time.h) - TD * Fix for popup handling with late ncurses versions (uses wprintw instead of waddstr in LYForms.c) - TD * Mods in LYPrint.c to use ".txt" as the output file extension for all rendered text/html files regardless of their original extension. The distributed code was doing this only for ones with an extension of ".html". The original extension still is retained if the file is being output as source. - FM * Added protection against passing a NULL pointer for path_url to render_item() from dired_options() in LYLocal.c. - GN 1997-03-20 * Tweaked the protection against URLs directed to port 19 or port 25 so that it can't be circumvented via lead zeros in the port numbers. - FM * Changed the compilation default so as not to send From MIME headers to http or https servers. The default can still be changed via lynx.cfg. Replaced the -nofrom disabling switch to a -from switch for toggling the compilation or configuration default. Sending the From header has become widely regarded as an invasion of privacy risk, particularly in conjunction with cookie support. - FM * Corrected a typo in the lynx.cfg comments concerning TRUSTED_LYNXCGI rules. - KW 1997-03-17 * Mods of LYNews.c and LYMail.c to prepend a "-- " separator before appending the LYNX_SIG_FILE signature file to news and email messages. - FM * Made the installation mode 755 in the top-level Makefile. The distributed code used 555, and some install commands were unable to do the strip. - LV 1997-03-14 * Corrected typos and expanded the comments concerning lynxcgi symbols in userdefs.h and lynx.cfg. - FM * Modified SGML.c to handle the numeric character reference ™ as the named entity ™ also in the non-chartrans case. The trademark character (given by ™ or ™) will be shown as "(TM)" as the ASCII substitution unless the current display character has a code point for the trademark character or unless overridden by a chartrans translation table. The code of 1997-02-25 prevented showing the trademark sign as "(R)" but did not work in all non-chartrans cases. - KW * Include time.h via tcp.h for SVR4 systems. The tcp.h header does include sys/time.h for Unix systems, but this apparently doesn't get struct tm and extern char * ctime() declared for SVR4. - FM 1997-03-13 * Added protection in LYGetFile.c against connections to the port 25 ESMTP service. - FM 1997-03-12 * (chartrans) Make compilation in src/chrtrans less verbose, no more generating automatic *.h_old backup copies. - KW * Refinement to the SVr4 (ncurses) color support, allowing it to more closely model the slang support. - TD 1997-03-11 * Tweak for command line parsing of files with no URL in LYUtils.c. Also added ability to pass partial domain names in the DJGPP version. - WB * Added the closing function for Win32 TCP in LYExit.c (did anyone see a difference?!). - WB * Altered LYCurses.c so that the DJGPP version could spawn other programs without certain death. - WB * Ignoring the whole ~/lynx.cfg problem (expanding '~') entirely for the Win32 version for now. - WB * Some other tweaks for Win32 and DJGPP - WB * Added protection in LYGetFile.c against denial of service attacks via the port 19 CHARGEN service. The distributed code left Lynx or proxies vulnerable to such attacks via direct or redirection URLs. - FM 1997-03-10 * Fixed error in the handling of numeric character references with values greater than 255 in SGML.c. The distributed code was breaking after substitutions instead of falling through to reset the string chunk and recycle the terminator if not a semi-colon. - FM 1997-03-09 * Integrated (simple) color, auto-configure patches with 2.7 following chrtrans patch - TD (T.Dickey), JES (J.Spath) 1997-03-08 * Fixed error in the switch positioning of checks for XLOADIMAGE_COMMAND and wais_proxy in LYReadCFG.c. The distributed code had them reversed under case 'W' versus case 'X'. - PDS * Expanded the copyright and licensing statements in the -version output. - FM 1997-03-04 * Corrected the offset computation in textsearch() of LYSearch.c so that WHEREIS searches repeated on a page with no links seek the target starting at the line immediately following the last displayed. The distributed code was setting a greater offset. - JES 1997-03-02 * Don't entify post content for the showinfo display, now that we are making it an XMP block in that display to handle all of the supported enctypes. - FM * Patches to fix mail and FTP for Win32 (LYMail.c, HTFile.c). - WB * Makefiles to compile chartrans code for Win32. - WB * (chartrans) Minor cleanups (makeuctb.c, chrtrans/Makefile, HTPlain.c) to enable successful compilation on Win32. - KW 1997-02-28 * Changed all references to "image/*" to just "image" in the userdefs.h and lynx.cfg comments about XLOADIMAGE_COMMAND. The "/*" within the userdefs.h comments was generating warnings from some compilers. - FM * Added a snake-slang target to the Makefile, and added -DUNIX to the LYFLAGS for the snake3 and snake3-slang targets (HP-UX apparently does not define "unix" itself with the -Ae switch, and thus needs to have that definition forced via -DUNIX). - HL * Merged with patches and makefiles from Wayne Buttles (buttles@wsb.champlain.edu) to enable compilation in two new environments: Win32 (95/NT) with Borland C++ 4.52 compiler, and 386 DOS with DJGPP compiler. To add ports for Win32 (95/NT) and 386 DOS computers with a packet driver, four new defines were created: _WINDOWS (Defined for Win32 specific code - Mostly TCP related), DJGPP (Defined for 386 specific code - Mostly TCP related), DOSPATH (Defined for any DOS'ish computer), and NOSIGHUP (Defined for computers not supporting sighup signal calls). Separate utility programs needed for compiling and running Lynx on those platforms are available from Wayne at . - WB, KW * Fixed Telnet for Win32 - WB * (chartrans) Small correction in SGML.c (set_chartrans_handling) - KW 1997-02-26 * Close both descriptors of the pipe() for the NSL_FORK enabled code in HTTCP.c. The distributed code was closing only one of them on completed gethostbyname() calls, and neither on 'z'aps. - FM * Changed the HREF for the "Lynx FAQ" link in the online 'h'elp to its new URL (http://www.slcc.edu/lynx/faq.html). - FM 1997-02-25 * More reverse engineering to cope with Netscape's bogus cookie header parsing. The parser must not require an '=' between the expires attribute name and value, because Set-Cookie headers are being transmitted without it (e.g., by http://law.agps.gov.au). So Lynx now treats that as another special case. - FM * Cope with invalid use of expires attributes in Version 1 cookies. An -06 State Management draft recommends that for "backward compatibility", and has been severely criticized in the HTTP-WG, but it would be foolish not to assume Netscape will do that. See the expanded comments in LYSetCookie() of LYCookie.c for more information. Note that "expires" thus cannot be used as a Version 1 cookie name, but a provider would be foolish to use that, anyway. Note also that the possibility of using different header names for Version 1 versus Version 0 (a.k.a., "Netscape") cookies is being discussed in the HTTP-WG, which might have been better to do in the first place, but the -05 draft has been approved as RFC 2109: http://info.internet.isi.edu/in-notes/rfc/files/rfc2109.txt so it would be a while before that were done, if ever. - FM * chartrans code for translation of character sets, handling of Unicode, and i18n updated for Lynx 2.7. Support for CHARSET attribute on A tags. New directory src/chrtrans with table files. Compilation flags -DEXP_CHARTRANS, -DEXP_CHARTRANS_AUTOSWITCH (for Linux), -DSLANG_MBCS_HACK (for raw unicode console). New command line options when compiled with -DEXP_CHARTRANS, i.e., "-assume_charset", "-assume_local_charset", "-assume_unrec_charset". See README.chartrans and README files in src/chrtrans for more info. INFO screen shows of effective charset even if not given explicitly. Translation routines in LYCharUtils.c not chartrans-ified at this point - KW * No showing of ™ or ™ as (R) any more, use (TM) instead. - KW * Prefer HTTP-EQUIV over NAME in META tags. - KW 1997-02-22 * Fixed a memory management glitch which could cause a crash if the MIME type of a reply to a FORM submission with METHOD=POST caused a download offer to be invoked. - FM * Don't simplify ftp URLs by trimming trailing slashes if the URL is being proxied. The Netscape proxy server for some unknown reason can return redirection for ftp URLs with the slash appended, and trimming it can result in a redirection loop. Based on a posted patch from KW. - FM * Fixed two typos in the checks for HTPassHighCtrlRaw in LYExpandString() of LYCharUtils.c. - KW * Fixed typo in the equality check on line 1553 in HTGopher.c. - FM 1997-02-19 * Reset the host string after an '@', if present, when trimming default ":port" fields in the new code aimed at compliance with the Masinter and Fielding URL drafts, expected to replace RFCs 1738 and 1808. The distributed code neglected to do that, and was ending up on a ":password" field, if present, instead of on the ":port" field, causing the username to be treated as the host name. - FM * Expand the default port trimming so as to include all of the registered URL schemes which support a port field in the v2.7 release. - FM * Correctly uncache the current directory listing when invoking an 'u'pload, so that it will be updated to include the uploaded file if placed in the current directory. The released code attempted to do this in a manner which prevented a pop, so that the directory listing couldn't be restored on return from the uploader menu. - FM * Recognize a bookmark file used as the startfile, whether it resides in the home directory or in a subdirectory off home. The released code failed if the file was in home, and not in a subdirectory, unless the -book switch was used instead of a startfile entry or WWW_HOME variable. - FM PK0]d d docs/README.optionsnu[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 PK0],xHHdocs/FM.announcenu[LYNX FILE MANAGEMENT SUPPORT New facilities have been added since Lynx 2-3 to provide support for managing files on the local filesystem. These facilities allow the user to delete, rename, and re-locate files and/or directories and to create and/or upload new files and directories. This will mainly be of interest to systems administrators who are interested in running lynx as a restricted shell in order to provide controlled access to a range of services (as in a freenet). It may also be of use at sites where some of the users are experiencing difficulty with the raw Unix interface. Support for the new facilities is enabled at compile time by defining the variable `DIRED_SUPPORT' in the `MCFLAGS' list in the Lynx Makefile, and in the WWW makefile `CommonMakefile'. Runtime support for disabling the facilities is provided by way of the restriction `dired_support' which can be set on the command line for a particular session. The Makefile also provides additional compile time flags for controlling the extent and application of the file management facilities; specifically, `OK_TAR' which enables support for creating and expanding tar archives, `OK_GZIP' which enables use of gzip to compress and decompress files, and `OK_OVERRIDE' which allows access to the file management facilities directly from the keyboard in addition to access by way of a file management menu. There are two possible modes of operation; the first in which a single file management menu is invoked via the `f', or `F' key; the second, in which the more often used facilities are made available directly from the keyboard in addition to access via the menu. The second method provides a much better user interface but requires re-mapping some of the keys from their standard lynx interpretation, temporarily when file management mode is in effect. For example, if OK_OVERRIDE is defined at compile-time, then the line at the bottom of the screen, in novice mode, will be C)reate D)ownload E)dit F)ull menu M)odify R)emove T)ag U)pload rather than the standard second noviceline, H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list when the user is browsing part of the file system. If OK_OVERRIDE is not defined then all access to file management functionality must be by way of the menu. The only exception is that the facility to tag files for subsequent removal and/or re-location is always available directly from the keyboard using `t', and `T'. This is a first release of the file management enhancements and suggestions for improvements are welcome. Among the enhancements which are currently being considered are facilities for changing file access attributes, and a facility for listing and extracting part of an archive. In order to use the file management facilities you may either point the program at a directory on the command line or point the program at an html file which contains a link of the following form: Manage Personal Directory ? where the anchor `file://localhost/~/' implies a reference to /home/username. Because the `~/' in a file URL is converted to `/home/username' regardless of origin, these facilities also work when the anchor shown above is served from an http server as well. In either case the reference is to files on the local system and not files in the domain of the server. By default the file listing is in standard Unix mixed format, but you may use the Options menu to select WWW `directories first' format, or `files first' format if you prefer. Rick Mallett, Carleton University, Ottawa Canada. (rmallett@ccs.carleton.ca) PK0]S}{LLdocs/README.definesnu[-- $LynxId: README.defines,v 1.19 2018/03/11 22:48:09 tom Exp $ This file lists preprocessor macros (symbols) which are tested in the code (typically with ifdef). Does not include - symbols defined and documented in userdefs.h - symbols expected to be set by compiler to indicate system type or compiler features - many symbols set and used only in connection with the ./configure mechanism - the full and current list can be found in config.hin (as a template) or, after running ./configure, in lynx_cfg.h. - most symbols and macros defined in the source code ***Not complete.*** A. Symbols primarily to enable compilation on specific systems ============================================================== See also under B for things needed by some systems. # if you have an SVR4 system with the "type any key" problem, try defining # # -DSVR4_BSDSELECT --- Ports have been added for Win32 (95/NT) and 386 DOS computers with a packet driver. I created four new defines to accomplish this. _WINDOWS Defined for Win32 specific code (Mostly TCP related) DJGPP Defined for 386 specific code (Mostly TCP related) DOSPATH Defined for any DOS'ish computer NOSIGHUP Defined for computers not supporting sighup signal calls. -- Wayne Buttles lynx-port@fdisk.com Added for 8+3 filesystems (DOS): FNAMES_8_3 also defined in userdefs.h if __DJGPP__ * incorporate changes for win32 by Hiroyuki Senshu (SH) from ftp://crab.it.osha.sut.ac.jp/pub/Win32/develope/senshu/Lynx/ Most changes are ifdef'd #define _WIN_CC= .... for Windows C Compiler #define CJK_EX .... CJK EXtension #define SH_EX .... Senshu Hiroyuki EXtension #define WIN_EX .... Windows EXtension B. Symbols to enable or disable specific features, mostly ========================================================= Note that some of these may be only usable on some system types, most were originally for UNIX. Network related, specific protocols ----------------------------------- # -DSOCKS For making a SOCKSified lynx. see comments in makefile.in Related to DirEd code - probably only usable for UNIX or similar ---------------------------------------------------------------- # -DDIRED_SUPPORT (see INSTALLATION, Section II-1c) # -DOK_GZIP (see INSTALLATION, Section II-1c) # -DOK_OVERRIDE (see INSTALLATION, Section II-1c) # -DOK_PERMIT (see INSTALLATION, Section II-1c) # -DOK_TAR (see INSTALLATION, Section II-1c) # -DOK_UUDECODE (see INSTALLATION, Section II-1c) # -DOK_ZIP (see INSTALLATION, Section II-1c) # -DOK_INSTALL to enable dired menu "Install" function # -DARCHIVE_ONLY (see INSTALLATION, Section II-1c) # -DNO_CHANGE_EXECUTE_PERMS (see INSTALLATION, Section II-1c) # -DCANT_EDIT_UNWRITABLE_FILES (see LYEdit.c - always in effect for VMS) Related to formatting of local directory listings ------------------------------------------------- # -DLONG_LIST (see INSTALLATION, Section II-1c) # -DNO_PARENT_DIR_REFERENCE (see INSTALLATION, Section II-1c) Related to screen display ------------------------- Using curses or ncurses library: # -DNCURSES (see INSTALLATION, Section II-1c) # -DFANCY_CURSES whether curses lib supports more than very basic stuff for UNIX handled by ./configure, for VMS defined in code # -DNO_KEYPAD (old) or HAVE_KEYPAD (new) whether curses lib uses keypad(). for UNIX handled by ./configure, may be set in HTUtils.h # -DCOLOR_CURSES whether curses lib supports color (in the right way). for UNIX handled by ./configure # -DUSE_COLOR_STYLE (see INSTALLATION, Section II-1c) needs SVr4 curses # -DUNDERLINE_LINKS Define if you want links underlined instead of bold. # -DNO_SIZECHANGE (old) or HAVE_SIZECHANGE (new) whether using code to detect new size after size changes of the terminal (window). for UNIX handled by ./configure, may be set in HTUtils.h # -DUSE_SCROLLBAR supports scrollbar when built with ncurses # -DWIDEC_CURSES whether curses lib supports wide/multibyte characters. Using slang library: # -DUSE_SLANG (see INSTALLATION, Section II-1c) Other general ------------- # -DIGNORE_CTRL_C Define if Control-C shouldn't exit lynx. # -DINACTIVE_INPUT_STYLE_VH Different style for showing inactive text fields # -DNO_DUMP_WITH_BACKSPACES Disables -with_backspaces code # -DNO_RULES Disables code for CERN-style rules files # -DUSE_VASPRINT Use vasprintf() function Untested -------- # -DNO_EXTENDED_HTMLDTD Disable some "SortaSGML" code, see SGML.c # -DWIND_DOWN_STACK Aggressive handling of end tags for "TagSoup", SGML.c C. Secondary symbols ==================== Some macros that are not primary, i.e. they are normally automatically set or unset in the code based on other macros (including those from ./configure), but it may be sometimes useful to set them differently. They may directly affect several source files. Filenames show where they are set. Normally installers shouldn't have to care about these symbols. COOKIE_FILE LYMain.c default cookie file in HOME dir SHOW_WHEREIS_TARGETS LYCurses.h whereis search highlighting USE_KEYMAPS LYCurses.h use of .lynx-keymaps files D. Symbols defined locally to modify some behavior ================================================== Defined in the source files to which they apply. Only filenames are listed, the files would have to be read and edited anyway to change the definition. Normally installers shouldn't have to care about any of these symbols. ADVANCED_INFO LYShowInfo.c ALLOW_PROXY_HEAD LYUtils.c CHECK_FREE_MEM GridText.c CLEAN_URLS HTParse.c DEBUG_HOSTENT HTTCP.c DEBUG_HOSTENT_CHILD HTTCP.c DEFAULT_INVCHECK_BV LYCookie.c DUPLICATE_ANCHOR_NAME_WORKAROUND HTAnchor.c EXTENDED_OPTION_LOGIC LYMain.c EXTENDED_STARTFILE_RECALL LYMain.c OPTNAME_ALLOW_DASHES LYMain.c OVERLAP HTNews.c RESTRICT_NM_ALLOW_DASHES LYUtils.c SOCKET_DEBUG_TRACE HTTCP.c TRADITIONAL_SUFFIXES HTInit.c USE_XHDR HTNews.c max_cookies_buffer LYCookie.c max_cookies_domain LYCookie.c max_cookies_global LYCookie.c reverse_mailcap HTInit.c PK0]f?rFFdocs/CHANGES2.3nu[--- RELEASE of 2.3 (19-May-1994) --- 5-19-94 * Better memory allocation routines used for some VMS systems. 5-19-94 * Non-interactive (-source) access to documents requiring access authorization not allowed to avoid crashes. 3-30-94 * Lynx exports the environment variable LYNX_VERSION on UNIX systems with the current version number as the value. 3-29-94 * added "action=" handling to ISINDEX tags. (Is that in the spec?) 3-27-94 * fixed Telnet security problem 3-19-94 * added .mailcap and mailcap support as well as mime.types support for the configuration of viewers and extension mappings. The test command is now implemented so that viewers can be conditionally setup. 3-17-94 * Revamped the FTP code to recognize different server types and to parse full directory listings (LIST output). File types, sizes and dates are displayed when possible. 3-16-94 * added transparent support for mosaic bookmark files. Just point Lynx at your existing default mosaic bookmark file and Lynx will handle the rest. Viewing, addition, and removal are supported. 3-15-94 * added second line of reverse video to show multiline links better. 3-10-94 * added configurable MIME types and viewers to lynx.cfg. MIME types and VIEWERS can be configured by following the instructions within the newest lynx.cfg file. 3-?-94 * added second %s argument to PRINTER and DOWNLOADER definitions. If a second %s is present in the command definition it will be filled in by a suggested filename which is derived from the URL of the document. See lynx.cfg for more details. 3-?-94 * got code from CERN to fix HTBTree FTP bug. Large ftp lists should not crash anymore. 3-9-94 * added no_proxy environment variable. set it to a comma delimited list of domains or hosts that should not be proxyed. (Thanks CERN :) USAGE: (UNIX) setenv no_proxy "domain1.dom, domain2.dom, domain3, etc" 3-?-94 * Fixed Referer: field handleing so that it doesn't crash on really long URL's 3-?-94 * True popup menus are now supported for non-multiple SELECT lists. 2-28-94 * fixed the delete-a-bookmark command and bound it to 'r' for remove. (thanks to David Trueman for the fix) ---------- RELEASE of 2.2 ------------------ 2-9-94 * added 'd' for download current link. Can be used to force a download of any file. * 'r' removed as a comment key. Use 'c' or reconfigure your keys to add 'r' back in. (I would like to use 'r' in the future to mean remove current bookmark link) * Found the bug in the HTTP redirection code that was causing it not to work. So HTTP redirection appears to work now! * Added Referer: header to HTTP requests to list the URL of the document listing the requsted URL. Here's an extract from CERN: This optional header field allows the client to specify, for the server's benefit, the address ( URI ) of the document (or element within the document) from which the URI in the request was obtained. This allows a server to generate lists of back-links to documents, for interest, logging, etc. It allows bad links to be traced for maintenance. 2-8-94 * changed novice line to be displayed on bottom two lines with the status line moved up two lines. 1-27-94 * Made configurable keymappings a reality. Keys can be remapped in the lynx.cfg file. (diffs from David Trueman) * Got code from Foteos to make 'a' work for VMS connection interrupts. 1-24-94 * Moving closer towards configurable keymappings. New keyhandleing code will make it very easy to implement. (diffs from David Trueman) 1-14-94 * Lynx FTP now supports PASV code. (fixes to CERN (Dave Raggert?) PASV code from John Ellson) It is not enabled by default. Line 43 in WWW/Library/Implementation/HTFTP must be commented out for PASV code to be used. This was done because not all FTP sites can support PASV FTP. 1-13-94 * slight change in forms user interface. For the better, I hope you will agree. Text input fields are now active as soon as the cursor pointer is over them. Therefore you may begin typing into the text field as soon as you come to it. Tab, and up and down arrow keys will move off of the text input field. The only problem with this is as follows. If you are in the habit of using the number keys (keypad) the or h,j,k,l vi keys, as soon as you move over the text link you will begin seeing numbers or hjk or l show up in the text field. In other words, your movement commands are now broken :( You must use true arrow keys or the tab key to move off of the text field. I've tried this out and it seems to work alright. I don't think that users unfamiliar with this will have too hard a time figureing it out. Once you see numbers or letter appearing it becomes fairly obvious whats going on. I'll put a message at the bottom of the screen saying "use tab or arrow keys to move off of link." * added mods by David Trueman to implement -restrictions commandline option. -restrictions allows a list of services to be disabled selectively. -restrictions takes the form of "lynx -restrictions=[default],[all],[inside_telnet],[outside_telnet],[shell],\ [editor],[bookmark],[option_save],[print],[file_url],[download],[exec]" all restricts all options. default same as commandline option -anonymous. Disables default services for anonymous users. Currently set to, all restricted except for: inside_telnet, outside_telnet, and goto. Defaults settable within userdefs.h inside_telnet disallow telnets for people coming from inside your domain. outside_telnet disallow telnets for people coming from outside your domain. shell disallow shell escapes editor disallow editing bookmark disallow changing the location of the bookmark file. options_save disallow saving options in .lynxrc print disallow most print options goto disable the 'g' (goto) command. file_url disallow using G)oto to go to file: URL's download disallow saving binary files to disk in the download menu. exec disable execution scripts exec_frozen disallow the user from changing the execution link setting in the O)ptions menu. 1-12-93 * added new more informative messages for form links. 1-11-93 * fixed -dump and -source options so that they work for binary files now. * Interruptable I/0 now completely works for UNIX systems. VMS is next. Just hit an 'a' for abort anytime during a transfer to abort. If there is a partial file to show, it will be shown. * Added command line option -show_curser. If enabled the curser will not be hidden in the right hand corner but will instead be positioned at the start of the currently selected link. show curser is the default for systems without FANCY_CURSES capibilities, and the default configuration can be changed in userdefs.h 1-9-93 * Added NNTP posting capibilities. Currently uses external inews program which will be included in the utils directory. Would someone like to patch in some freeware inews code, or send me some? 1-7-93 * fixed bug in password handling which cuased it to be displayed accidentally :( (Danny Mayer) 1-6-94 * bold and emphasis now use curses underlining to represent ephasized text. The use of _underline_ chars before and after the text is now removed. 1-5-94 * Added configurable download menu so that binary files may be downloaded using any protocal. Download menu is displayed after selecting a non-displayable file. * Added exec links. 4 types currently defined: files ending in: .csh, .ksh, .sh, (for UNIX) and .com (for VMS); Use exec link controls to turn on and off exec links. * Gopher menues are now within PRE so that spaces are not collapsed in menu entries. * added configurable character sets. Can be set in lynx.cfg by the user in the options screen or in the users .lynxrc file current sets are: ISO Latin I, IBM PC Character set, & 7 bit approximations. New sets can be added to src/LYCharSets.c ----------RELEASE of Lynx 2.1 and 2.1.1---------------------- -grey area- * Ability to FTP to VMS systems. (Foteos Macrides) * Fixed lots of display and interupt problems (Foteos Macrides) * The Lynx Bookmark file is now interpreted as an HTML document. Old Lynx bookmark files must be converted using the lynx2html program or deleted. * HTML+ forms as implemented by XMosaic now work. fill in the empty spaces and press the submit button to submit the form. * The TEXTAREA tag isn't done yet. It will currently only give a one line text area. The next version of Lynx will include a true textarea implementation once I figure out a reasonable interface. * Incorporated WWWlib 2.14 and fixed up the descrip.mms files. Foteos Macrides made VMS port changes and wrote a really nice build.com script to make compilation on VMS systems really easy. Foteos also ported Lynx to OpenVMS for alpha axp systems. * 's' now means search a searchable indexed document through the server, and can no longer be used to search for strings within the displayed document. * '/' now only searches through the current displayed document for strings and can not be used for searchable index documents. * Capital 'Q' now quits without asking for confirmation. * 'm' for Main Menu now askes for confirmation and does NOT clear the history stack. * Blockquote style changed slightly. * fixed bug with A and other tags messing up formatting withing PRE segments. * Verbose Gopher option removed, verbose gopher functionality is now set permenantly on. * Default editor is now configurable in the lynx.cfg file. * Default bookmark file is now configurable in the lynx.cfg file. 12-15-93 * ownership is no longer inherited. * link rev="owner" href="mailto:ADDRESS" now accepted as well as link rev="made" href="mailto:ADDRESS" to define the URL of the owner or person responsible for the info. * 's' now only searches ISINDEX server documents. * '/' always means search within the document. -grey area- * still doing massive rewrite. Debugging!! 11-30-93 * anonymous users cannot change the bookmark page! (thanks to Jyrki Kuoppal for pointing out a security hole) -grey area- * massive rewrite. Removed all Lynx internal format code and restructured all the source files. 11-8-93 * added   (non-breaking space),   and   ---------- RELEASE of 2.0.12 ----------------- 11-1-93 * Change HTInit.c so that unsupported types are not sent out in accept parameters. For non X screen only text/html and application/octet-stream are sent. 10-26-93 * descriptive title added to files mailed from lynx 10-25-93 * disabled FTP connection caching to help fix multiple FTP problems 10-23-93 * added preliminary level 1 forms support. 10-20-93 * fixed a bunch of gopher holes * gopher lists are turned into URL's now instead of lynx internal format document links * local documents ending in .html can now be referenced with just a filename and/or path from the command line. 10-19-93 * Added preloaded searches to gopher URL's. They previously didn't work. This is readily apparent as preloaded CSO searches, which alot of people wanted. * removed old hytelnet compatibility code which looked in multiple directories to find the correct file. If you still need this capibility talk to me. 10-12-93 * The users specified editor is now spawned for mail messages. If no editor is defined or if the user is anonymous, the built-in lynx mail sender is used. 10-11-93 * changed all static data structures to be dynamic This was a pretty major change of code which may add several bugs. * rewrote parse_links routine to make it more efficient and to work with dynamic structures. 10-6-93 * added progress messages to HTTP transfers. 10-5-93 * added -cache=# command line option to specify the number of WWW documents cached in memory. 9-28-93 * added VMS port fixes from Foteos Macrides. Lynx now compiles and works on VMS! * fixed ftp bug in WWWlib that didn't de-escape URL's before sending request to FTP server. 9-21-93 * fixed coredump bug for some files with no links. 9-3-93 * Moved many configuration options including printer setup to lynx.cfg file. The default placement of the lynx.cfg file will be /usr/local/lib & sys$public 9-1-93 * Removed STARTDIR variable from userdefs.h STARTDIR is now inferred from the STARTFILE. 8-30-93 * Fixed bug with only one link selectable out of many on the last line of the display. * Ported to SVR4 courtesy of Nickolay Saukh (from Russia, Wow this is really getting around!) * Uneditable documents don't get refetched. (Nickolay Saukh) * National language support through LOCALE (instead of ISOLATIN1), protected by #ifdef LOCALE (Nickolay Saukh) ------Release of Lynx 2.0.11-------------------------------- 8-27-93 * Caused major international incident when a large bug was discovered after release. :) * Fixed internal document hypertext refernces with URL's. '#selector' strings now work again. 8-24-93 * When files come through on pre HTTP/1.0 servers they are now recognized by their file extensions 8-23-93 * Lynx can now speak to old NCSA pre HTTP/1.0 servers * fixed ALT bug that had to do with style changes not happening before the alt was printed. 8-21-93 * updated the man file lynx.1. 8-19-93 * updated help and converted it to HTML. Made a new help location and server. The new default help file is http://kufacts.cc.ukans.edu/lynx_help/lynx_help_main.html 8-15-93 * changed '\' to toggle between source and no source. When you press '\' while viewing a rendered HTML document you will get the HTML source when you press '\' while viewing HTML source you will get the rendered HTML. * Added ALT attribute to IMG tag. When ALT is available the contents are displayed. When ALT is missing [IMAGE] is displayed. When ALT="" nothing is displayed. 8-14-93 * Added document reload command. CTRL-R when pressed will reload the document into memory and redisplay it, clearing the screen. This is very useful when editing documents, outside of Lynx while using Lynx for rendering. * Added source view mode. '\' when pressed will reload the document and display the HTML source. (doesn't work for gopher directoryies right now, but gopher isn't HTML anyways) * fixed bug in LibWWW that caused it not to be able to convert to www/source. * fixed bug in LibWWW that caused most binary file transfers to fail * added binary file transfer ability. When binary files are selected the user is prompted for a file name to save to. The default directory is the one the user started in. * Lynx now reloads local HTML files and re-renders them after editing. ??-??-?? * At some point I added the ability to edit HTML files on the local machine. 8-12-93 * Added Nested Lists, up to six levels, with different bullets for each level. * Due to the fact that nearly everyone seems to use P to mean two returns within the same style, and Mosaic has been kind enough to support this meaning, :( :( :( I have changed the P tag to reflect this interpretation. P can be used anywhere and will mean insert two returns. (i.e., two BR tags) 8-11-93 * Made the default Mime type for unknown file types on ftp servers to be text/plain. Previously the WWWLibrary had the default as application/octet-stream which meant that most files could not be viewed. * Changed the ADDRESS style to be more like XMosaic Left flush, newline top and bottom * The Statusline now displays the URL when retrieving files. * added BR (linebreak) tag! The BR tag inserts a line break and maintains the current style! The BR tag may be used anywhere. * added HR (horizontal rule tag!) The HR tag puts a horizontal line seperating two bodies of text. The HR tag may be used anywhere. 8-8-93 * All spaces, tabs and returns are now collapsed down do one space. * fixed bug whiched caused certain links beginning at the begining of a line to be bad. * added '*' (stars) to unordered lists and numbers to ordered lists. * changed dir lists to be more like menu lists. * all emphasis, physical and symantic, now have _underlines_ around them to show emphasis. RELEASE OF VER 2.0.10 ----------------------------------------------- 7-8-93 Added [IMAGE] in all places where IMG tags appear. added WWW_HOME environment variable support. fixed searching in WWW. removed tildas from mail messages for security reasons. added emacs-like key defs. changed gopher dir routines and Verbose format of directories 6-30-93 Forgot to put all kinds of bug fixes and stuff in here during the past month. I have been working on upgrading to the 2.X WWWlibrary Today I changed 'g' to mean goto a url, and 'v' to be view the bookmark page. 5-30-93 Fixed problem with ftp: URL not being recognized and not working. 5-28-93 Tried to remove the use of tabs and replace them with appropriate spaces. This was done to support brain dead curses packages that don't handle tabs. (like linux) 5-20-93 Fixed socket problem which was causing a problem with telnet's connecting 5-18-93 Fixed SUN curses problem, now works with the /usr/5lib routines 4-9-93 Added an option to turn on link numbering 4-7-93 Fixed read_rc() bug which caused .lynxrc files to be read incorrectly Fixed file cacheing bug which only allowed searching to be performed once. (it cached the answer and displayed that each time a new search was requested) 4-2-93 Fixed VMS I/O bug and TCP routines. 4-1-93 Ported 2.0 to VMS 3-17-93 Fixed a bug: Multiply defined procedure async_abort in the files get_file and get_bin_file 3-16-93 Optomized Gopher TCP routines, increased speed by a factor of 10! 3-9-93 Added WWW support by integrating the WWWlib1.4 2-10-93 Added home page support and append features. 12-22-92 Added support for Image types using xloadimage for X-terminals. 12-1-92 Added gopher binary file types PK0]Ų,XXdocs/slang.keynu[ S-Lang Keymaps for DOS F0 0x200 F(X) (SL_KEY_F0 + X) /* If X>1 */ PK0]惰Gdocs/CHANGES2.7nu[======================================================================= --- Release of Lynx2-6FM as Lynx v2.7 (February 15, 1997) --- ======================================================================= 1997-02-15 * Release of Lynx2-6FM as Lynx v2.7. - FM * Included -Ae when compiling the Implementation modules for the snake3 target. - FM 1997-02-14 * Mods to issue an alert about a BASE tag not having an absolute URL only once per document. - FM * Added code for appending LYNX_SIG_FILE to email messages as well as to news posts or followups, and updated the Users Guide accordingly. - FM * Updated build-slang.com. - FM 1997-02-12 * Fixed some problems in the code for using a hookless Lynx image with snew_proxy, snewspost_proxy, and snewsreply_proxy set to "nntp://host:port/" so that it uses Tom Zerucha's (tz@execpc.com) daemon which handles the SSL communications on behalf of the Lynx image. Also polished up all of the news gateway code, and added comments for the benefit of new developers. - FM * Added an ECGOTO command mapped by default to 'G', complementary to the GOTO command (default 'g'), to edit the current document's URL and then go to it. Using case-sensitive letters with different command definitions ensures that both will appear with their brief explanations in the 'k'eymap listing. For ECGOTO, Control-G, failure to modify the URL, or complete deletion of it, all act as a cancel. If the current document has POST content associated with it, a warning will be issued before offering the URL to edit. The POST content is retained if the modification merely involves a change in fragment for the URL. Otherwise, the modified URL (if it has an http scheme) will be submitted with method GET and no POST content. If the ECGOTO command is not cancelled, or not simply a fragment change, the modified URL will be added to the 'g'oto buffer, and can be re-accessed, to edit further, via the GOTO command. See the updated online 'h'elp for more information. - FM 1997-02-10 * Amplified the comments concerning deletion of prototypes for MultiNet socket library functions as they get added to MultiNet's own headers in newer versions of it's socket library. - FM * Added a missing fclose() in post_article() of HTNews.c, and added code to delete the temporary file there, so it's gone as soon as we're done with it. - FM 02-09-97 * Enhanced the Set-Cookie header parser to handle values that contain spaces but were not enclosed in double-quotes, and to use such quoting or not when sending Cookie headers, depending on whether this was done in the Set-Cookie header. Also added anti-crash checks should the parser's efforts to handle both historical (a.k.a. original Netscape) cookies and Version 1 cookies go awry (does deal successfully now with all the cookies which had been reported as problematic). - FM * Mods of the screen handling in LYNews.c for cleaning up any screen trash created by the external editor. - FM * Tracked down an uninitialized pointer in LYNews.c that probably was behind reports of crashes when posting to newsgroups. - FM * Plugged a memory leak in LYMainLoop.c. - TJC * Added posting ability to the news gateway, in lieu of the previous, variably reliable, use of a spawned news client for posting. The news, nntp, and snews URLs now all return links for posting new messages or followups (replies) to the server from which a newsgroup listing or news article was retrieved, unless the server indicates that it does not accept posts from the site at which Lynx is running. See the updated INSTALLATION, userdefs.h, and lynx.cfg files, the "USENET News posting" section of the Users Guide, and "Supported URLs" page of the online 'h'elp for more information. * Fixed typo for e-dieresis in the KOI8-R charset. - AJF * Replaced an inappropriate _user_message() call in HTConfirmCookie() of HTAlert.c with a _statusline() call. The original code could cause crashes with some cookie values. - FM 02-06-97 * Added support for both hex escaped and unescaped white characters in lynxexec and lynxprog URLs. Normally, Lynx strips out any white characters that are not hex escaped in attribute values that are to be resolved as URLs, on the assumption that they were derived from wrapping in the markup. Any serial white characters in lynxexec and lynxprog URLs are condensed to one space (' '), and any lead or trailing white characters are trimmed. Note that we still require hex escaping of spaces in mailto URLs, e.g, HREF="mailto:lynx-dev@sig.net%20(I%20found%20a%20bug.)". - FM * Removed the 'e' switch from tar commands in LYLocal.c for greater portability across all supported Unix flavors. - FM * Expanded the information in the PROBLEMS file on how to deal with DECC and MultiNet header incompatibilites for different combinations of the VMS compiler and socket library versions. - FM * Added TRACE message of the edit command created for the system() call in LYEdit.c. - LWV * Fixed a typo in the userdefs.h comments. - NHE 02-04-97 * Mod in LYMainLoop.c to bypass mailing "not found" messages when MAIL_SYSTEM_ERROR_LOGGING was set TRUE (which it should NOT be, indescriminately) if the document's owner is the lynx-dev list. - FM * Added crash protection checks for the actual presence of anchors in all HText structure anchor scans in GridText.c, based on a crash report and suggested fix for one of them from Jonathan Sergent (sergent@hillres55-129.cc.purdue.edu). - FM * Eliminated the typecast for ttytype (apparently varies across flavors, and each flavor should know it's own typing; we'll see) in LYCurses.c, and moved VMS system definitions with non-ANSI conformant tokens to a separate header for VMS (LYVMSdef.h). - BL * Made the description of HISTORY in the 'k'eymap page more clear that it invokes a list of the "suspended" documents currently held in the history stack. - DC * Typo fixes in the help files and lynx.cfg. - LWV 02-03-97 * Today's distribution is a pre-release of v2.7. The projected official release date is 02-15-97. All header, help and documentation files, and the top directory name, have been updated for v2.7. - FM * Made xli, which is freeware, the default XLOADIMAGE_COMMAND for Unix in userdefs.h (still xv on VMS, since its port is freeware), and expanded the "self-documentation" to indicate where to get this freeware. Added XLOADIMAGE_COMMAND as a configuration symbol in lynx.cfg, so that the compilation default can be overridden on systems which have and prefer xv (all users can override the default mappings for image helper apps via their mailcap files) - FM * Added a -base command line switch which can be used with -source or -mime_header to prepend the request URL as a comment, and a BASE tag (which may or may not be the same as the request URL, depending on HTTP/1.1 headers) for text/html documents, equivalent to the prepend kludge for 'd'ownloads (see 09-20-96 mods). - FM * Added a check for an "ORGANIZATION" environment variable for inclusion as a news post header on Unix (all system logicals intended for news post headers automatically are included on VMS), and a sleep() before restoring curses mode after the post, to allow reading of any error messages from the news software. - FM * Fixed bug which yielded a "[LINK]" instead of "[INLINE]" pseduo-ALT for ALT-less IMG tags used as the content for NAME-ed Anchors without an HREF. - FM * Portability tweaks for the mini inews utility. - FM * Fixed an old and irrelevant typo in HTWriter.c. - JS 01-29-97 * Added more REL tokens that are acceptible for banner links. - FM * Ifdef'ed the standard foo_PATH definitions for FreeBSD at the bottom of userdefs.h, based on a patch from AAC, and assuming they also apply for NetBSD, BSDI, and Linux (we'll see 8-). - FM * Added make freebsd-slang target. - AAC 01-28-97 * Mods of LYSetCookie() to ensure setting of 443 as the default port for https URLs, and force the secure flag on for https URLs whether or not the Set-Cookie header had a secure parameter (too many Version 0 cookies don't, when they should). - FM * Removed -ltermcap from make for all ncurses targets. - FM * Tweaks of make for FreeBSD. - AAC * Use SLtt_get_screen_size() instead of the apparently less portable code for slang in size_change() of LYUtils.c. - JED 01-27-97 * Made ALT a synonym for VALUE in INPUTs with TYPE="image" to cooperate with well-intentioned (though misinformed) providers who use ALT instead of VALUE for the benefit of text clients or GUIs with image handling turned off. - FM * Modified the code for submission of form content with TYPE="image" NAME-ed INPUTs that have a VALUE (or ALT) to "fake" a 0,0 coordinate pair, as when a VALUE (or ALT) is absent, instead of sending a single name=value pair. Requests that using a name=value pair in such cases to indicate that the submission was from a text client or GUI with image handling turned off be included in the HTML specifications keep falling on deaf ears, so we may as well "fake" something closer to what the CGI scripts are expecting, and hope that the script interprets 0,0 as an indicator that the user did not see the image and make a conscious choice within it. * Added code to offer a link for the SRC of the image in INPUTs with TYPE="image", distinct from the submit button, when clickable images is on. - FM * Updated the "HTML Forms" section of the Users Guide. - FM * Fixed a typo in the parsing of Cache-Control MIME headers and META directives. - FM 01-25-97 * Updated lynx_help_main.html, about_lynx.html and about_lynx-dev.html. - FM * Mods to indicate a toolbar by a '#' preceding its first link when the toolbar is being displayed, and to indicate the availability of a toolbar by a '#' in the top, left-hand corner of the screen when the toolbar is not being displayed. Added explanation of this in the online 'h'elp. - FM * Indicate the 'allow' setting (always, never, or via prompt) for each domain in the Cookie Jar Page. - AK * Don't delete cookie-less domains silently during garbage collections if they have their 'allow' set to always or never. - AK & FM * Added ability to change the 'allow' settings for domains via the Cookie Jar Page. - FM * Added basic protection against "denial of service attacks" by limiting a domain to 50 cookies, the total number of stored cookies to 500, and the maximum processed size of a cookie to 4096 bytes. - FM * SGML escape any ampersands or angle brackets in the cookie names, values, parameters, and comments when creating the HTML stream for the Cookie Jar Page, and only include entries for comments if they were present in the servers' Set-Cookie headers. - FM * Updated the online 'h'elp for cookies. - FM * Removed -DNO_KEYPAD from all ncurses targets in the Makefile. - FM 01-23-97 * Added a "Lynx State Management (Me want cookie!)" section to the Lynx Users Guide, and a cross-linked cookie_help.html file for the Cookie Jar Page. - FM * Added prompting for whether to show the body of a 401 status reply or simply return to the current document when an activated link requires authentication via a username and password, and the user has none for that realm, or forgot them. - FM 01-22-97 * Added handling of expires attribute values in Version 0 (a.k.a. Netscape) Set-Cookie MIME headers or META tags, and added "Maximum Gobble Date" entries in the Cookie Jar Page which indicate the maximum intended age for each cookie based on the Version 0 expires or Version 1 max-age attribute values. - FM * Added an LYmktime() function in LYUtils.c which accepts strings in the format "Day, dd-Mon-yy hh:mm:ss GMT" or "Day, dd Mon yyyy hh:mm:ss GMT", parses and converts them to time_t format (seconds since 00:00:00 Jan 1 1970), and returns the time_t value, or zero if the date is in the past. It is used for handling Expires headers or attribute values. - FM * Added parsing of Cache-Control and Expires MIME headers and META tags sufficient to determine whether the no_cache element should be set in the document's structures. - FM * Eliminated the "; $Path=foo; $Domain=blah" attr=value pairs when sending Version 0 (a.k.a. Netscape) cookies in request headers, because too may CGI scripts in the real world have brain-dead parsers and fail when they are included. - FM * Added handling of Set-Cookie directives in META tags. - AK 01-20-97 * Added confirmation prompts for deletions from the Cookie Jar, expanded the garbage collecting for expired cookies, debugged and implemented the code for security checks based on lead and embedded dots in domain values and host prefixes as described in Section 4.3.2 of the -05 State Management draft, added requirement for https URLs (direct, or via proxy) to include cookies which have the secure flag set in request headers, and extensively annotated the cookie support code for ease of further development. - FM * Added ability to set SHOW_CURSOR in lynx.cfg, to override the compilation setting in userdefs.h, and made the -show_cursor command line switch a toggle for the compilation or configuration default. - FM 01-18-97 * Bug fixes and memory leak plugs for the cookie support. Added ability to delete individual cookies or entire domains via the Cookie Jar Page (Ctrl-K). The domains and cookies are displayed as DL/DT/DD blocks, with links for each domain and cookies name. The deletions are done by activating those links, which can be numbered, so it should be OK for blind users. - FM * Tweaks of the news/nntp/snews gateway. - FM * Tweaks of paragraphing if ADDRESS, BANNER, BLOCKQUOTE, BQ, FN, MARQUEE or NOTE blocks are nested (note that nesting does not yield progressive indentations of these blocks). - FM 01-16-97 * Added "first pass" cookie support based on patches from Andrew Kuchling (amk@magnet.com). Still needs work (see comments at top of LYCookie.c). A SET_COOKIE symbol in userdefs.h and lynx.cfg determines whether cookie support will be on or off by default, and the default can be toggled via a -cookies command line switch. When on, Set-Cookie headers invoke confirmations with possible replies of 'Y'es or 'N'o for that cookie, 'A'lways, to accept all cookies from that domain, or ne'V'er to never accept cookies from that domain. The Cookie Jar can be examined via the COOKIE_JAR keystroke command, mapped by default to Ctrl-K. The Cookie Jar, and any 'A'lways or ne'V'er settings, do not presently outlast the Lynx session. - FM 01-14-97 * Added use of DEFAULT_INDEX_FILE or the URL from an -index=URL command line switch as the the HREF for a banner LINK with REL="Index" and no HREF of its own (see the 01-01-97 mods and the HTML Banners section of the Lynx Users Guide). - FM 01-13-97 * Tweaks of the news gateway. - FM * Added "Negotiate: trans" header for GET and HEAD requests. Shouldn't be necessary to get 300 instead of 406 replies when nothing matches the Accept and Accept-foo request headers, but some HTTP/1.1 servers apparently want it when the UA declares itself as HTTP/1.0, as Lynx still does. - FM 01-12-97 * More updates of the online 'h'elp files. - FM * Simplified the code for checking whether a startfile is a bookmark file entered as a URL instead of invoked via the -book switch. The previous code was tripping up some versions of the osf and linux compilers. - FM 01-10-97 * Replaced the realloc() in split_line() of GridText.c with a calloc(), memcpy(), FREE() sequence for all systems, not just AIX and ultrix, based on analysis of memory wastage by Hans Reiser (dl9rdz@cip.e-technik.uni-erlangen.de). - FM * Tweaks of the body= handling in mailto URLs. - FM * Tweaks of the ftp gateway. - FM * Restored inheritence when resolving versus a base with the same scheme, because the RFC1808 and Fielding Draft behavior of not doing so yields too many failures in the real world (sigh...). - FM 01-09-97 * Ugh! The distribution zip still had the Nov 4, 1996 HTTCP.c instead of the one I modified on Christmas. No wonder people were still reporting the wrong messaging with -DNSL_FORK. The right HTTCP.c is in there now. - FM * Mods to resolve the HREFs for LINKs with REV="made" or REV="owner" versus the base (a many, many year old bug finally caught 8-). - FM * Added HTAlert messages about BASE HREF vaules, Location header values, and Refresh URL values that were not received as absolute URLs. We still resolve them versus the RequestURI, since that's invariably what is intended, and thus the optimum "error recovery" strategy. - FM * Added handling of cc= and body= fields in ?searchpart strings of mailto URLs. They are described in draft-hoffman-mailto-url-00.txt recently posted to the URI-WG list. This draft ignores the objections which have been filed about changing the semantics of mailto and breaking clients which are fully conformant with the mailto specs in RFC1738, instead of using a new scheme name (e.g., smtp:) for URLs with mail headers, and it extends the ill-advised use of '&' as puctuation in URLs instead of honoring the previous IETF effort to seek it's replacement by ';' as the URL name=value separator and, in effect, treating them as parameters without need to worry about confusions with entities when the URLs are attribute values in text/html. However, the chairman of the URI-WG is a co-author of this draft, so, sigh... As far as this Lynx code is concerned, the mods are more "error recovery" to cope with the sad things which have afflicted the Web during the past 2-3 years, and use of a ?searchpart in mailto URLs is still DISadvised. Lynx uses only subject=, cc=, and body= fields from a ?searchpart, using it's own "safe" rules for other mail headers, and ignoring ones other than those three in the ?searchpart as "unsafe". The cc= values in a ?searchpart are added to the primary address as a comma-separated list for the mail agent, and Lynx's own Cc: is that entered, optionally, by the user. Any body= field is passed to the external editor, if one has been defined, for review and possible modification. Otherwise, it is scrolled for review. The mailing can be cancelled at any time (via Ctrl-G), and via a statusline prompt after everything has been reviewed, if the user judges the body and/or addresses to be unsafe or inappropriate. - FM * Moved information and prompt strings in LYMail.c to installer-modifiable symbols in LYMessages_en.h. - FM 01-07-97 * Eliminated forced exits for keyboard input buffer overruns on VMS. There's no perfect way to deal with it, but Lynx should recover gracefully most of the time now, and do nothing bad if ungraceful. - FM * Added handling of Content-Base and Content-Location MIME headers when 'd'ownloading, 'p'rinting, or mailing HTML source. For this, as for rendered HTML streams (see 01-06-97 mods) the base is determined according to HTTP/1.1 rules: If a Content-Base header was received, that's the base. Otherwise, if a Content-Location header was received and it's an absolute URL, that's the base. Otherwise, the URL used to retrieve the document is the base. When actually rendering, any BASE tag in the document overrides the base derived from headers. When 'd'ownloading, or outputting HTML source for a 'p'rint option, an X-URL comment with the URL used to retrieve the document and a BASE tag with the header or URL-derived base are inserted at the top of the document. These should be moved down into the actual HEAD section to make the HTML fully legal, but will work as is if the output is used in conjunction with automatic invocation of Lynx or Netscape as a text/html helper application. When mailing with an SMTP-conformant mailer, the actual URL used to retrieve the document is indicated via an X-URL header, and for HTML source, a Content-Base and a Content-Location header are included, set to what was actually received by Lynx via MIME headers, or to the retrieval URL. - FM 01-06-97 * More updates of the online 'h'elp. The Visited Links Page ('V'), multi-bookmark file support, REL/REV and META enhancements, and new switches are now all fully documented in the 'h'elp. - FM * Added handling of Content-Base and Content-Location MIME headers for rendered HTML streams (still using the document's URL in the 'd'ownload and 'p'rint (and mailing) BASE prepending kludge). - FM * Added code to avoid getting tripped up by double-quoted header values in HTMIME.c. We still need more sophisticated parsing of possibly compound HTTP/1.1 headers, but we don't yet use any of those. - FM * Tweak of the efficiency mods for command line parsing in LYMain.c. - FM * Simplified some code in LYMainLoop.c that was tripping up the AIX32 compiler. - FM 01-04-97 * More updates of the online 'h'elp. - FM * Added DIRED_MENU support for .tgz files as for .tar.gz files. - FM 01-03-97 * Made the command line parsing in LYMain.c more efficient. - FM * Added -nopause switch for setting InfoSecs, MessageSecs, and AlertSecs to zero. Can be used to eliminate forced statusline pauses during traversals. - FM * Mods to allow absolute zero quality values for Accept headers, so that in mailcap files users can do things like map image/* to a helper app but exclude particular image subtypes which the app can't handle by assigning q=0 for that subtype. HTTP/1.1 still specifies 4 significant figures for quality values, so if the value is non-zero, Lynx still forces a minimum of q=0.001. - FM * Typo fixes in lynx.cfg. - LWV 01-02-97 * Updates of the online 'h'elp files. - FM * Made the parsing of lynx.cfg in LYReadCFG.c more efficient. - FM 01-01-97 -- Happy New Year! * More partial/relative HREF resolving enhancements. Everything is now handled as recommended in Larry Masinter's -03 revision of Roy Fielding's -02 URL ID, except file and ftp URLs (which Lynx handles as described in the online 'h'elp ). Note, though, that Lynx handles known schemes on a scheme-by-scheme basis, and for schemes that involve substitutions of "/" for a NULL/zero-length path, Lynx inserts the "/" at the resolving stage, so those slashes are present where the Fielding test suite doesn't indicate them, but the actual requests sent to servers (or bad URL message if it's a scheme that requires a host field and doesn't have a default) will be the same. Note, also, that Lynx sends only the path ("absolute path") in it's direct http requests and indicates the host of the URL in the Host: header, i.e., sends the absolute URL only to proxies. Note, as well, that Lynx treats a zero-length attribute value for an HREF, SRC, etc. as a reference to the currently displayed document, but still uses the base (which might not be the current document's address) as the default for FORMs without an ACTION specified, or ISINDEX tags without an HREF or ACTION specified. - FM * Expanded REL/REV handling. All of the REL values in the (expired) Maloney and Quin draft-ietf-relrev-00.txt ID which make sense for banner links in Lynx have been added. For REL="Help" without an HREF in the LINK, Lynx uses its helpfile URL. For REL="Home" without an HREF in the LINK, it uses the configuration startfile or WWW_HOME URL (i.e., not a startfile specified on the command line), or the command line homepage, if it was specified. - FM * Added handling of fragments in conjunction with URL expansion guessing for startfile, homepage and 'g'oto strings. Note that any '#' that is not a fragment delimiter should be hex escaped (%23), and ideally all reserved or unsafe characters will be hex escaped in the user-entered string, though you can get away with not using the hex codes for most others, depending on their positions in the string. Also note that on VMS if you include the version for local files it must precede the fragment (e.g., foo.html;3#frag) as for parameters. - FM 12-26-96 * Mods of HREF resolving to be more consistent with the latest IETF draft (http://www.ics.uci.edu/pub/ietf/uri/draft-fielding-url-syntax-02.txt). Most importantly, lone fragments (HREF="#fragment") are resolved versus the current document's URL, and no longer versus the BASE, if present. There are a few things in the draft which are at odds with what virtually all currently deployed browsers do, and so I stuck with the "deployed" behavior. Try the tests in http://www.ics.uci.edu/~fielding/url/ to see where Lynx still differs from the draft. - FM * Tweaks of 'z'ap handling. - FM 12-24-96 * Tweaks of DIRED_SUPPORT and make for osf. - FM 12-23-96 * Added code to check if the startfile has BOOKMARK_TITLE as its title, and if so, and it's in the bookmark file list, add the bookmark element and reload to have it treated as if it were invoked with -book. - FM 12-21-96 * Added code for the DIRED_MENU command ('f' and 'F' by default) to invoke CSwing on VMS if CSWING_PATH is defined, as explained in userdefs.h and lynx.cfg . - FM 12-20-96 * More improvements in the fatal error and memory exhaustion handling, and plugging of memory leaks. - FM * Changed "newline" to "Newline" in LYMainLoop.c to deal with another reported, ill-advised, macro in the AIX 4.2 curses.h. - FM * More tweaks of lynx.cfg. - FM 12-19-96 * Improvements in the messaging and cleanups for aborts on fatal errors and exits on memory exhaustion. - FM * Worked v2.1 of lpansi.c into the distribution. - FM * Modified lynx.cfg to reflect the compilation defaults consistently, and changed the compilation default for SUBSTITUTE_UNDERSCORES to FALSE. - FM * Changed the "lines" element to "Lines" in the HText structure and the "tab" structure name to "Tab" to cope with some unwise employee reportedly using all lower case "lines" and "tab" strings as macros in the AIX 4.2 curses.h. - FM 12-17-96 * Restored use of the -l format in the parent links of local Unix directory listings if LONG_LIST is defined, without the v2.6 bug of creating strange, trailing relative or escaped strings. As far as I can tell from exercizing them, the DIRED_SUPPORT and LONG_LIST handling are now fully debugged (famous last words... 8-). - FM 12-16-96 * Don't reiterate parent links in local directory listings. They are offered only in the top, up to parent link if NO_PARENT_DIR_REFERENCE is not defined. - FM * Moved more HTML.c functions to LYCharUtils.c. - FM * Tweak of META handling, which was causing crashes (due to freeing an anchor structure prematurely in the 12-13-96 mods for moving HTML.c code to LYCharUtils.c). - FM * Block Unix relative path strings in lynxexec and lynxprog URLs. - DT 12-14-96 * Added a COLLAPSE_BR_TAGS compilation and configuration symbol for determinining whether Lynx collapses serial BR tags. Note that the valid way to create extra blank lines in HTML is with PRE blocks that contain only newlines. - FM * Fixed a longstanding glitch in the alignment handling which could cause a Paragraph's ALIGN value to cross embebbed blocks, rather than restoring the appropriate alignment for the outer division or block on close of the embedded block. - FM * Modified HR handling so that it inserts the same before and after spacing regardless of whether P end and/or start tags are present before and/or after the HR. - FM * Don't insert the bookmark file description and filepath if multiple bookmark file support has been turned off, and this is the default bookmark file (but they will still be inserted if it's not the default, e.g., if it's another bookmark file viewed before the support was turned off, and retrieved as a previous document). - FM 12-13-96 * Added parsing of Content-Disposition in META tags and setting the suggested file name if file; filename=name.suffix is in the value of the Content attribute and we don't already have that via a server header. - FM * Incorporated almost all globals related to stream parsing and page display in HTML.c and GridText.c into the HTML object structure and HText structure to make the parsing and display functions more nearly re-entrant, and moved several functions from HTML.c to LYCharUtils.c to reduce the size of HTML.c. - FM * Added -cckr to the libwww Makefile compiler options for SGI. - Carl Buxbaum (crb@world.std.com) * Fixed typo in LYMainLoop.c that affected the 'd'ownload command when DIRED_SUPPORT is enabled. - FM 12-10-96 * Implemented Safe header handling and prompting about resubmissions of forms with method POST along the lines described in the 24-Nov-96 IETF ID: http://gewis.win.tue.nl/~koen/draft-holtman-http-safe-01.txt Lynx prompts for confirmation whenever it detects that a resubmission would occur, unless the previous reply included "Safe: yes". Prompts always will occur if the -resubmit_post toggle is on (since resubmission always would occur; not advised). If not toggled on, resubmissions would occur when no_cache is set or the previous reply has been dumped from the cache. When using the PREV_DOC command or History Page, if confirmation is not obtained, Lynx will skip to the yet earlier document, or cancel, as appropriate. - FM * Added parsing of the Safe header in HTMIME.c, and added a safe element to the anchor and document structures. Will be FALSE unless a Safe header is received that specifies "YES" or "TRUE" (case-insensitive, only "YES" is in the specs), and applies only to replies from form submissions with the POST method. - FM * Cleanup of code in HTAccess.c. May correct problem of crashes for ISINDEX searches on some systems, though I couldn't reproduce that problem here. - FM 12-09-96 * Added an HTSetPresentation() for image/x-xbitmap in HTInit.c when DISPLAY is set. - FM * Added an LYOutOfMemory boolean that is set by the outofmem() macro, and code in the Unix FatalProblem() and VMS exit handler for reporting the memory exhaustion instead of the misleading "bug" message when they are invoked due to memory exhaustion. May not be reported reliably for linux, because for some reason I don't understand, the SIGBUS trapping is ifdef'ed out for linux in LYMain.c. - FM * Fixed typo in the new LYAddVisitedLink() in LYHistory.c of yesterday's mods. - KW 12-08-96 * Added a VLINKS command, mapped by default to upper case 'V', and code for creating a list of all links 'V'isited during the current Lynx session in order of recency (most recent highest in the list). Lower case 'v' is still mapped to VIEW_BOOKMARKS. The VLINKS listing is complementary to the History Page listing, and formatted similarly. It excludes POST replies, and bookmark, menu and list files (use the History Page or direct keystroke commands for those). It includes any links that were downloaded, or passed to a helper app (except mailto and newsreply or newsfollowup links, since those require activation in the original document for proper inclusion of it in the email message or news post). You can print the Visited Links Page, or 'd'ownload it via the History Page. - FM * Added reporting of the Charset parameter, if present in a server reply header, META tag, or by virtue of a suffix map, to the showinfo ('=') display. - FM 12-07-96 * Added 'p'rint menu support for the History Page. - FM * Added a content_length element to the anchor structure and use that, if a Content-Length header has been received, to indicate the total bytes in the statusline when receiving the stream. - FM * Include HTTP_ACCEPT_LANGUAGE in the lynxcgi environment. - David Trueman (david@cs.dal.ca). 12-06-96 * Many more cleanups and commenting of the code for the benefit of new developers. - FM * Tweaks of URL parsing and path simplifications. Added simplification of the file://localhost paths from startup and 'g'oto guesses. - FM * More anti-crash protections for bad HTML in SELECT blocks. - FM * Usability enhancement for DIRED's 'F' menu: list number and names of (some of) the tagged items, and provide a way to untag all items. - KW * Force screen refresh after a DIRED system command has failed. - KW * Modified HTFile.c to handle relative and "Up to parent" links more effectively. - KW * Added KEYGEN to the DTD (but no code to do anything with it yet). - FM 12-05-96 * Fixed typo in the for-Unix section of LYAddPathToHome() that was added yesterday in LYUtils.c. - James Troup (J.J.Troup@comp.brad.ac.uk) 12-04-96 * Numerous cleanups and commenting of the LYfoo.c and LYfoo.h modules, for the benefit of new Lynx developers. - FM * More security-related enhancements and polishing up of the multiple bookmark file support. - FM * Increased the sizes of MAXHIST and MAXLINKS, added statusline messages should they ever be exceeded (not likely now 8-), and code for freeing all excess pointers on each page draw instead of letting them grow and freeing them on exit (should help for memory-limited systems 8-). - FM * Tweaks of DIRED_SUPPORT. - KW 12-02-96 * Show nntp server status messages in group listings when not 221 (normal reply to HEAD request), so the user will know that the articles are not available from the server, rather than a bug in Lynx. - FM * Tweaks of BASE resolving. - FM * Added "trick" to send hostname guesses to stdout when the startfile or homepage are not URLs, as we send to the statusline for 'g'oto guesses (but don't use stdout if we are not interactive and the desired output is going to stdout). If the DNS lookup stalls, one thus can Control-C out, instead of wondering why Lynx is taking so long to start up. - FM * Cleaned up the read_rc() and save_rc() functions in LYrcFile.c. - FM * Eliminated all printw() calls to avoid problems with non-ASCII and/or multibyte/CJK characters. - FM * Numerous additional bug fixes and enhancements of the multiple bookmark file support. - FM * Got rid of the ADVANCED_MULTI_BOOKMARKS symbol now that the choice can be made in the 'o'ptions menu and saved in the .lynxrc file. - FM 11-30-96 * Added the ability to set the advanced mode for multiple bookmarks from the options menu and save the defaults in the .lynxrc file - HL * Various typo corrections including one which kept LYMainLoop.c from compiling under Unix when DIRED_SUPPORT was defined. - HL 11-29-96 * Numerous additional refinements and enhancements of the multiple bookmark support. Added support for REFRESH and PREV_DOC in the options and bookmark menus, and NEXT_PAGE, PREV_PAGE, and ACTIVATE in the bookmark menus or prompts. Expanded the anchor and document structures to keep track of different bookmark files in conjunction with VIEW_BOOKMARK, ADD_BOOKMARK, and DEL_BOOKMARK commands, to restore the proper bookmark files on reloads (overt, or because the cache was dumped for subsequent documents accessed via bookmark links), and in conjunction with security-related restrictions. Multiple bookmark support can be regulated via MULTI_BOOKMARK_SUPPORT, BLOCK_MULTI_BOOKMARKS and ADVANCED_MULTI_BOOKMARKS symbols in userdefs.h (or as SITE_DEFS in the Makefile) and lynx.cfg. The multiple bookmark support can be blocked via a -restrictions=multibook command line switch, which is also set for -anonymous and -validate. Prompting or display of the bookmark file selection menu occurs only if bookmark files in addition to the startup default have been defined (via the B)ookmark command in the 'o'ptions menu, if mu(L)ti bookmarks has been turned on; the setting and definitions can be saved in the .lynxrc file). Plugged memory leaks in the previous implementation of multiple bookmark support. Added code for inserting the current description and filepath for each bookmark file dynamically during rendering. - FM * Another tweak of attribute order in HTMLDTD.c. - KW 11-28-96 * Tweaked multiple bookmark support to fix an error which was causing a crash on some systems and incorrect behavior on others - HL * Tweaked editing of multiple bookmark filenames to correct shifting of screen between multiple pages - HL 11-26-96 * Added support for setting the rendering of SELECT OPTIONs as popup menus versus radio button lists via the 'o'ptions menu, and saving the default in the RC file. Changed NO_SELECT_POPUPS to USE_SELECT_POPUPS in lynx.cfg and userdefs.h. The -popup switch still overrides everything. - FM * Added multiple bookmark support along the lines of the patch from Filip M. Gieszczykiewicz (filipg@paranoia.com), plus numerous enhancements of the 'o'ptions menu and bookmark handling. - FM * Tweaks of attribute orders in HTMLDTD.h and HTMLDTD.c. - KW 11-25-96 * Updated the "Lynx Enhanced Pages" links to the new "Lynx links" (http://www.crl.com/~subir/lynx.html) throughout the help, docs, and code. - FM 11-24-96 * Modified the ENCTYPE="multipart/form-data" handling to indicate the Content-Type with charset parameter, when known, within each part rather than in the main Content-Type header. - FM * Corrected typo in HTNews.c. - FM * Added support for setting the suggested filename in 'd'ownload and 'p'rint options based on the Content-Disposition header if it included the string file; filename=name.suffix in its value. Can be used by CGI scripts to set the suggested filename for saves to disk, downloads or mailings of the script's reply body, so it won't be the last symbolic element in the path field of the form's ACTION (which is normally the the script, itself, or a PATH_INFO element, and thus misleading). - FM * Tweaks of change_sug_filename() in LYUtils.c for better handling of gzipped files on VMS. - FM 11-23-96 * Added reporting of the Server, Date and Last-Modified headers, if present in server replies, to the showinfo ('=') display. - FM * Added the ability to store the NO_SELECT_POPUPS in the .lynxrc, but the .lynxrc must be edited manually until the options handling is converted to a form-like interface that accommodates more options. For now, select 'O'ptions and write out the options with '>' to create a block in .lynxrc with an explanation of the switch. The switch is "select_popups" and can have the values of "on", "off", or nothing. If nothing, the default set in userdefs.h or lynx.cfg will persist. Otherwise, "on" will set use of popups and "off" will set use of radio buttons as the default. The startup default always can be toggled via the -popup switch. - HL & FM * Corrected a couple of typos in the help files. - HL 11-22-96 * Added support for WHEREIS ('/') and 'n'ext searches within SELECT popups. The buffering for 'n'ext is separate from that in the main loop (i.e., for non-form field document searches), but all previously entered search strings are still combined into a circular buffer and can be accessed via the up-arrow or down-arrow keys at the prompt for a search string. The searches within popup menus do not yield highlighting of the search string, but simply positioning of the cursor on successive options which contain the search string. - FM * Added support for all of the navigation commands within SELECT popup windows, including HOME, END, UP_TWO, DOWN_TWO, UP_HALF and DOWN_HALF, in addition to the single line and paging navigation commands. - FM * Added support for the REFRESH command within SELECT popup windows. - FM * Tweak of hookless snews handling. - FM 11-21-96 * Added handling of forms with ENCTYPE="multipart/form-data". Note that we still don't support INPUTs with TYPE="file" or TYPE="range", and thus still set the DISABLED attribute for all fields in the form if either of those two TYPEs are present in it. - FM * Tweak of -mime_header handling. - FM * Typo fixes of comments in HTML.c. - Albert S Woodhull (aswNS@hamp.hampshire.edu) 11-20-96 * Added a NO_SELECT_POPUPS compilation (userdefs.h) and configuration (lynx.cfg) definition, normally set FALSE. If set TRUE, single-choice SELECT blocks (i.e., ones without the MULTIPLE attribute) will be handled as a list of radio buttons instead of via a popup window. Also added a -popup command line switch for toggling the compilation or configuration setting. - FM 11-18-96 * Tweak of LYFindEndOfComment() in LYCharUtils.c. - Brian Borowski (brianb@braille.uwo.ca) 11-17-96 * Added links to the lynx-dev hypertext archive at FLORA in the online 'h'elp. - FM * Tweaks of my_spawn() in LYLocal.c. - KW 11-16-96 * Added support for use of the 'd'ownload command on TYPE="submit" and TYPE="image" submit buttons. You still must use the History Page for TYPE="text" INPUT fields that also act as submit buttons by virtue of being the only non-hidden field, because the 'd'ownload command key could be a text entry into the field, and thus must be treated as such. - FM 11-15-96 * Mods of HTFormat.c and HTTP.c for better handling of unexpected server disconnects. - FM 11-13-96 * Wind down the element stack on EOF if any unclosed tags were received. - FM * Fixed typos in the HTMLDTD.c BODYTEXT definitions. - FM 11-10-96 * More tweaks of hook-less snews handling. - FM * Changed the default STARTFILE to http://lynx.browser.org/ and the default HELPFILE to the v2.6 set at NYU in userdefs.h and lynx.cfg. - FM * New function HTUnEscapeSome() in HTParse.c for unescaping selected characters in a string.. - KW * Numerous changes to make DIRED_SUPPORT work as intended, to use the library's HTList functions and macros for managing the list of tagged file URLs, and to keep track of proper levels of URL escaping so that unusual filenames which contain #% etc. are handled properly. Can now edit, move, etc. Abc%25252525def.html, #xy#~, etc. - KW 11-09-96 * Treat 301 or 302 redirection of a POST as 303 when the Lynx process is non-interactive, rather than rejecting the redirection, since 303 is still most likely what the CGI script actually intends (will still prompt if the process is interactive). - FM * Added parsing and trace mode reporting of Content-Disposition headers in HTMIME.c (should be used, someday, to set the suggested file name for disk saves and downloads based on any filename=foo.blah field). - FM * Further mods of HTNews.c to facilitate use of Lynx without SSL-hooks in conjunction with an SSL-capable daemon/proxy for snews URLs that returns NNTP streams for Lynx itself to convert into HTML, instead of already converted streams as from a standard proxy. - TZ & FM 11-08-96 * Changed information returned by "-version" in LYMain.c to point to lynx.browser.org and added a date to the copyright info. - HL 11-07-96 * Mods of HTNews.c to facilitate use of Lynx without SSL-hooks in conjunction with an SSL-capable daemon/proxy for snews URLs. - TZ 11-05-96 * Typo fixes in HTMIME.c. - KW * Tweak of NSL_FORK mods. - FM 11-04-96 * Tweaks of host parsing when a password and/or username is present in override_proxy() of HTAccess.c. - FM * Tweaks of the UNDERSCORES and STARS macro setup and useage to avoid possible crashes for FORMs with long values. - FM * Worked in Tom Zerucha's (tz@execpc.com) code for fork-based name server lookups that can be 'z'apped. May not yet be portable to all flavors of Unix. Add -DNSL_FORK to your SITE_LYDEFS to try it. - FM 11-02-96 * Fixed typo in HTAlert.h. - FM * Cleaned up HTTCP.c code, simplified some of its spaghetti ifdef'ing, and worked in mods to bypass connection confirmations when Lynx is SOCKSified and the socks_flag is set. - FM * Added recognition and acceptance of text/x-sgml and text/sgml MIME types (all that I've encountered thus far work fine with Lynx, though it doesn't yet interpret marked sections). - FM * Added socket function prototypes for MultiNet in tcp.h. - FM * Mods to facilitate application of the SSL patches (after some corrections in the patches to keep HTLoadHTTP re-entrant, make CONNECT work as intended again, and eliminate memory leaks in the SSLeay adaption) - FM * Adding info about -DNO_TTYTYPE in top level Makefile. - FM * Use clrtoeol() in LYOptions.c to ensure that no terminals which use reverse video for standout() will have trailing reverse fields on edits of option vaules. - DK * Offer user@host instead of WebMaster@host for the 'c'omment command if the path for the URL begins with a tilde and there is no LINK REV="made" present. - FM * Tweaks of inews Makefile and clientlib.c. - Christopher R. Maden (crm@ebt.com) * Check nhist before attempting a DIRED_SUPPORT directory listing in LYShowInfo.c. - KW 10-21-96 * Offer WebMaster@host for the 'c'omment command if no LINK REV="made" was present in a text/html document, and save a known owner URL when toggling to source ('\') so that the 'c'omment command can still be used with that owner's (mailto or homepage) URL, but the source can be included in the comment, as would be desireable (instead of a bad rendering) when sending a comment about bad HTML in the document. - FM 10-20-96 * Added code for traversing the pseudo-documents created for client-side image MAPs. See the updated CRAWL.announce for more information. - FM 10-19-96 * Added definitions in LYCurses.h relating curses function calls to slang functions or emulations for compatibility with new versions of slang, based on patch from John E. Davis (davis@space.mit.edu). - FM * Added unescaping of the full address fields in mailto URLs or ACTIONs, and improved the reliability of the parsing of the subject header from the ?searchpart Netscapism when present. - FM * Give user option to use 303-like coversion of POST to GET in confirmation requests for redirection of POSTs, base on patches from Drazen Kacar (dave@fly.cc.fer.hr). - FM * Tweaks of POST content submissions in HTTP.c, based on patch from KW. - FM * Fixed EOF checks in HTAAFile.c, HTGroup.c and HTPasswd.c, and improved host address parsing in HTTCP.c, based on patches from Larry Schwimmer (schwim@cyclone.stanford.edu) and Klaus Weide (kweide@tezcat.com). - FM * Added targets for umaxv and umaxv-slang for Encore's UMAXV - Thanh Ma (tma@encore.com) 10-16-96 * Send the rendering of decompressed files to stdout with -dump, don't spawn a viewer under any circumstances if -dump was used instead of -source for Content-Types that are not text/html, and remove the temporary decompressed files before exiting with -dump or -source. - FM * Properly handle TYPE="radio" versus TYPE="checkbox" INPUTs with NULL or zero-length VALUEs. - FM * Added a continuation line token for the netbsd-ncurses target - HL * Fixed a typo in HTMIME.c in the trace output - HL * Block predictable buffer overrun in GridText.c if a page has more than MAXLINKS links in it. - FM 10-01-96 * Add a Mime-Version header to the other headers in LYPrint.c so that the 09-20-96 mods for mailing source do what they were intended to do. :) - Hamish MacEwan (macewanh@diatp.dia.govt.nz) 09-20-96 * Add a BASE tag to the tops of HTML source files, a la Netscape, when mailing or downloading, and don't worry, for now, if that creates technically invalid HTML (since Lynx copes with it as of the 09-15-96 mods 8-). - FM * Include Content-Type, Content-Location and Content-Base headers when mailing HTML source on Unix. - FM * Use .txt versus .html suffixes when submitting rendered versus HTML source temporary files to VMS MAIL, so that transports such as PMDF will indicate the appropriate Content-Type. - FM 09-17-96 * Handle illegally positioned BASE tags. - FM * Tweak of Q nesting level checks. - Pawel Wiecek (coven@i17linuxb.ists.pwr.wroc.pl) * Fixed typo in HTMIME.c for parsing of Pragma header. - Wilson Cheung (wcheung@netcom.com) * Added parsing of Set-Cookie header in HTMIME.c (see IETF ID http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-state-mgmt-03.txt for info on how to implement it's use). - FM * Fixed typo in LYMainLoop.c for display of error message when up arrow is pressed at the top of a document. - Hiram Lester, Jr. (hwlester@pobox.com) 09-16-96 * Use standard ls -l parsing of LIST output for Windows_NT ftp servers in Lynx v2.6 as in v2.5. - FM --- Rename of Lynx2-5FM and release as Lynx2-6 (02-Sep-1996) --- (see CHANGES2-6, CHANGES2-5, CHANGES2-4 and CHANGES2-3) ============================================================================== PK0]docs/pdcurses.keynu[ PDCurses Keymaps KEY_F2 0x213 /* F2 */ KEY_F3 0x214 /* F3 */ KEY_F4 0x215 /* F4 */ KEY_F5 0x216 /* F5 */ KEY_F6 0x217 /* F6 */ KEY_F7 0x218 /* F7 */ KEY_F(n) (0x108+(n)) /* If n>7 (9 keys are reserved) */ ALT_0 0x197 /* Alt-0 */ ALT_1 0x198 /* Alt-1 */ ALT_2 0x199 /* Alt-2 */ ALT_3 0x19a /* Alt-3 */ ALT_4 0x19b /* Alt-4 */ ALT_5 0x19c /* Alt-5 */ ALT_6 0x19d /* Alt-6 */ ALT_7 0x19e /* Alt-7 */ ALT_8 0x19f /* Alt-8 */ ALT_9 0x1a0 /* Alt-9 */ ALT_A 0x1a1 /* Alt-A */ ALT_B 0x1a2 /* Alt-B */ ALT_C 0x1a3 /* Alt-C */ ALT_D 0x1a4 /* Alt-D */ ALT_E 0x1a5 /* Alt-E */ ALT_F 0x1a6 /* Alt-F */ ALT_G 0x1a7 /* Alt-G */ ALT_H 0x1a8 /* Alt-H */ ALT_I 0x1a9 /* Alt-I */ ALT_J 0x1aa /* Alt-J */ ALT_K 0x1ab /* Alt-K */ ALT_L 0x1ac /* Alt-L */ ALT_M 0x1ad /* Alt-M */ ALT_N 0x1ae /* Alt-N */ ALT_O 0x1af /* Alt-O */ ALT_P 0x1b0 /* Alt-P */ ALT_Q 0x1b1 /* Alt-Q */ ALT_R 0x1b2 /* Alt-R */ ALT_S 0x1b3 /* Alt-S */ ALT_T 0x1b4 /* Alt-T */ ALT_U 0x1b5 /* Alt-U */ ALT_V 0x1b6 /* Alt-V */ ALT_W 0x1b7 /* Alt-W */ ALT_X 0x1b8 /* Alt-X */ ALT_Y 0x1b9 /* Alt-Y */ ALT_Z 0x1ba /* Alt-Z */ CTL_LEFT 0x1bb /* Control-Left-Arrow */ CTL_RIGHT 0x1bc /* Control-Right-Arrow */ CTL_PGUP 0x1bd /* Control-PgUp */ CTL_PGDN 0x1be /* Control-PgDn */ CTL_HOME 0x1bf /* Control-Home */ CTL_END 0x1c0 /* Control-End */ KEY_B2 0x1c5 /* center on Virt. keypad */ PADSLASH 0x1ca /* slash on keypad */ CTL_PADENTER 0x1cc /* ctl-enter on keypad */ ALT_PADENTER 0x1cd /* alt-enter on keypad */ PADSTOP 0x1ce /* stop on keypad */ PADSTAR 0x1cf /* star on keypad */ PADMINUS 0x1d0 /* minus on keypad */ PADPLUS 0x1d1 /* plus on keypad */ CTL_PADSTOP 0x1d2 /* ctl-stop on keypad */ CTL_PADCENTER 0x1d3 /* ctl-enter on keypad */ CTL_PADPLUS 0x1d4 /* ctl-plus on keypad */ CTL_PADMINUS 0x1d5 /* ctl-minus on keypad */ CTL_PADSLASH 0x1d6 /* ctl-slash on keypad */ CTL_PADSTAR 0x1d7 /* ctl-star on keypad */ ALT_PADPLUS 0x1d8 /* alt-plus on keypad */ ALT_PADMINUS 0x1d9 /* alt-minus on keypad */ ALT_PADSLASH 0x1da /* alt-slash on keypad */ ALT_PADSTAR 0x1db /* alt-star on keypad */ ALT_PADSTOP 0x1dc /* alt-star on keypad */ CTL_INS 0x1dd /* ctl-insert */ ALT_DEL 0x1de /* alt-delete */ ALT_INS 0x1df /* alt-insert */ CTL_UP 0x1e0 /* ctl-up arrow */ CTL_DOWN 0x1e1 /* ctl-down arrow */ CTL_TAB 0x1e2 /* ctl-tab */ ALT_TAB 0x1e3 /* alt-tab */ ALT_MINUS 0x1e4 /* alt-minus */ ALT_EQUAL 0x1e5 /* alt-equal */ ALT_HOME 0x1e6 /* alt-home */ ALT_PGUP 0x1e7 /* alt-pgup */ ALT_PGDN 0x1e8 /* alt-pgdn */ ALT_END 0x1e9 /* alt-end */ ALT_UP 0x1ea /* alt-up arrow */ ALT_DOWN 0x1eb /* alt-down arrow */ ALT_RIGHT 0x1ec /* alt-right arrow */ ALT_LEFT 0x1ed /* alt-left arrow */ ALT_ENTER 0x1ee /* alt-enter */ ALT_ESC 0x1ef /* alt-escape */ ALT_BQUOTE 0x1f0 /* alt-back quote */ ALT_LBRACKET 0x1f1 /* alt-left bracket */ ALT_RBRACKET 0x1f2 /* alt-right bracket */ ALT_SEMICOLON 0x1f3 /* alt-semi-colon */ ALT_FQUOTE 0x1f4 /* alt-forward quote */ ALT_COMMA 0x1f5 /* alt-comma */ ALT_STOP 0x1f6 /* alt-stop */ ALT_FSLASH 0x1f7 /* alt-forward slash */ ALT_BKSP 0x1f8 /* alt-backspace */ CTL_BKSP 0x1f9 /* ctl-backspace */ PAD0 0x1fa /* ctl-keypad 0 */ CTL_PAD0 0x1fb /* ctl-keypad 0 */ CTL_PAD1 0x1fc /* ctl-keypad 1 */ CTL_PAD2 0x1fd /* ctl-keypad 2 */ CTL_PAD3 0x1fe /* ctl-keypad 3 */ CTL_PAD4 0x1ff /* ctl-keypad 4 */ CTL_PAD5 0x200 /* ctl-keypad 5 */ CTL_PAD6 0x201 /* ctl-keypad 6 */ CTL_PAD7 0x202 /* ctl-keypad 7 */ CTL_PAD8 0x203 /* ctl-keypad 8 */ CTL_PAD9 0x204 /* ctl-keypad 9 */ ALT_PAD0 0x205 /* ctl-keypad 0 */ ALT_PAD1 0x206 /* ctl-keypad 1 */ ALT_PAD2 0x207 /* ctl-keypad 2 */ ALT_PAD3 0x208 /* ctl-keypad 3 */ ALT_PAD4 0x209 /* ctl-keypad 4 */ ALT_PAD5 0x20a /* ctl-keypad 5 */ ALT_PAD6 0x20b /* ctl-keypad 6 */ ALT_PAD7 0x20c /* ctl-keypad 7 */ ALT_PAD8 0x20d /* ctl-keypad 8 */ ALT_PAD9 0x20e /* ctl-keypad 9 */ CTL_DEL 0x20f /* clt-delete */ ALT_BSLASH 0x210 /* alt-back slash */ CTL_ENTER 0x211 /* ctl-enter */ PK0]$ZcZ(Z(docs/README.sslcertsnu[ 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... Such lack of support is no longer the case. Lynx now features excellent certificate management through the openssl project. There is almost no online documentation available regarding how to use openssl's certificate management with other programs, so this will accompany lynx and hopefully encourage good practical security for unix clients. Lynx relies on openssl to not only encrypt connections over https, but also to determine whether it should even accept a certificate and establish a secure connection with a remote host. Because of this reliance upon openssl by lynx, most of this tutorial deals with how to use openssl to "install" both vendor-provided CA cert bundles as well as self-signed certs from trusted sources and, most importantly, how to get them recognized by lynx. While lynx on many systems will transparently accept valid certificates, not all systems enjoy such functionality. Further, as noted above, older versions of lynx do not perform any validity checks on a certificate. There is also the common case of wanting to trust, use and install a 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, 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. THE CURRENT SITUATION: Prior to lynx2.8.5dev9, lynx did not check at all for certificate validity. Since lynx2.8.5.dev9, lynx has reported this openssl error: SSL error:unable to get local issuer certificate-Continue? (y) whenever an https connection was initiated and the certificate could not be found, for whatever reason, by openssl, and therefore lynx. This checking for a certificate is an enhancement to security, but rather tediously generates errors at each https browser request. 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. While this is a convenient setting to employ when using lynx to script https -dumps, it by definition ignores the issue of certificate validity altogether. Those concerned with proper certificate management and the maintenance of a store of updated CA certificates will be uncomfortable with this relaxed security setting. The ability to accept a 'wildcard' certificate, where the first character is a '*' was added to lynx2.8.6dev18. PRELIMINARY PROCEDURES: It is assumed that openssl has been installed correctly, that the default cert directory is /usr/local/ssl/certs, (it's often /etc/ssl/certs, but we need a point of departure for the discussion) and that lynx has been compiled --with-ssl. The default location for certs on your system may be different, or there may not be one. You will have to substitute that location for /usr/local/ssl/certs in the following instructions, and/or set environment variables. To determine the default location for certs on your system you may run the following command: strings libcrypto.a | grep -in cert | less Look in this output for SSL_CERT_DIR and SSL_CERT_FILE, and the lines just above them. This is your default location, respectively, for certificates, and the CA cert bundle, cert.pem. You will need to know where libcrypto.a is found of course. Example output: 7490:/etc/ssl/certs 7491:/etc/ssl/cert.pem 7492:SSL_CERT_DIR 7493:SSL_CERT_FILE Other possible example output: 31555:/usr/local/ssl/certs 31556:/usr/local/ssl/cert.pem 31557:SSL_CERT_DIR 31558:SSL_CERT_FILE Note that when OpenSSL is installed, the c_rehash utility is installed in a bin directory (default /usr/local/ssl/bin). You will need to know where it is on your system. The command: whereis c_rehash will probably give useful results. 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 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 need to get hold of the actual file. If it's a cert local to your network you can ask the sysadmin to make it available for download as a link on a webpage. If such file is not human-readable it's probably DER formatted and will need to be converted to PEM format to allow openssl to use it. To convert DER formatted certificates into something openssl can deal with: Save the cert as site_name.crt in a directory. In that directory, type: openssl x509 -inform DER -in site_name.crt -outform PEM -out site_name.pem You can now copy this individual cert into the directory for that, usually /usr/local/ssl/certs. The alternative is to concatenate the individual certs to the cert.pem bundle in /usr/local/ssl. (Please see INSTALLING OR UPDATING THE CA BUNDLE below). The cert file will now be in an acceptable format to openssl, PEM encoded. However, openssl, and by extension lynx, will not know about it until that cert is symbolically linked to a file named after the hash value of that cert, in the default directory /usr/local/ssl/certs. So the next thing to do is to hash the cert using c_rehash. 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 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). From MirOS, a cert bundle is available at http://caunter.ca/ssl.certs.shar 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. Simply run `sh ssl.certs.shar` in SSL_CERT_DIR. 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 \ -print_certs -text The resulting cert.pem file should be copied to the default directory for bundles (usually /usr/local/ssl) and renamed to "cert.pem", assuming that is the SSL_CERT_FILE. Individual certs can also process if added and hashed in /usr/local/ssl/certs. We now have all of the individual certs we wish to trust in our certs directory, and the most recent bundle of CA certs as well. Confirm that you have the script c_rehash (See PRELIMINARY PROCEDURES; if it is not found, a copy is usually located in the tools directory of the openssl source tree. If you use this copy, it needs the execute bit set or it will not run). Run: ./c_rehash The c_rehash utility is a perl script that runs openssl commands which creates the files named after the hash values of the certs in the default directory for certs. Its output looks like this: Doing /usr/local/ssl/certs vsignss.pem => f73e89fd.0 vsign3.pem => 7651b327.0 ...more output 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 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 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 to the results of the search for the default location for certs procedure (See PRELIMINARY PROCEDURES): SSL_CERT_DIR="/usr/local/ssl/certs" SSL_CERT_FILE="/usr/local/ssl/cert.pem" export SSL_CERT_DIR SSL_CERT_FILE On csh type shells, you can use: setenv SSL_CERT_DIR "/usr/local/ssl/certs" setenv SSL_CERT_FILE "/usr/local/ssl/cert.pem" 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 You will now connect without error to https servers with trusted certs, but will still get this error for untrusted certs: 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 Mohawk College Department of Computer Science Hamilton Ontario Canada PK0]4 docs/README.sslnu[SSL support for Lynx 2.8.5pre.1 -- adapted from http://www.mentovai.com/lynx/ Lynx, in its unmodified form, will not allow you to make secure socket layer (SSL) connections. SSL is used for the secure transfer of information over the Internet. Many sites are now requiring SSL to ensure security for themselves and their users. With a version of Lynx modified to support SSL, Lynx users can now visit these sites with ease as well. The SSL configure option (--with-ssl) for Lynx provides the ability to make use of SSL over HTTP for secure access to web sites (HTTPS) and over NNTP for secure access to news servers (SNEWS). SSL is handled transparently, allowing users to continue accessing web sites and news services from within Lynx through the same interface for both secure and standard transfers. This is based on, and requires, the OpenSSL library. OpenSSL's distribution and use may be restricted by licenses and laws. For information on obtaining OpenSSL, as well as information on its distribution, see http://www.openssl.org/ The main distribution site is at ftp://ftp.openssl.org/source/ Lynx also has experimental support for GnuTLS (configure option --with-gnutls). For information on GnuTLS, see http://www.gnu.org/software/gnutls/ To test your version of Lynx for SSL support, try it out with an SSL site. Below are secure (https) pages which will load if your browser contains SSL support and you accept their certificates; they give you some information about the connection. https://www.gnutls.org:5555/ https://www2.ggn.net/cgi-bin/ssl Lynx will complain about the certificate, since the certificate presented is untrusted. You may accept this certificate to test your configuration, since it is a test, but it is a bad idea to blindly accept certificates from unknown websites if you are transmitting form data or files. You should review the document README.sslcerts for a detailed discussion of correct certificate handling possibilities and procedures in lynx. Users are reminded to check the laws and regulations about encryption software in their own countries. Here is the URL for US notification rules: http://www.bxa.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html Note that that isn't a typo; it really is "Nofify". The site contains links to the full EAR regulations. Lynx is GPL'd, for our own use it falls under the regulations in EAR section 740.13(e)(1): (1) Encryption source code controlled under 5D002, which would be considered publicly available under section 734.3(b)(3) and which is not subject an express agreement for the payment a licensing fee or royalty for commercial production or sale of any product developed with the source code, is released from EI controls and may be exported or reexported without review under License Exception TSU, provided you have submitted written notification to BXA of the Internet location (e.g., URL or Internet address) or a copy of source code by the time of export. PK0]Ƌm@l@ldocs/CHANGES2.5nu[--- Rename of Lynx2-4-FM and release as Lynx2-5 (02-May-1996) --- ============================================================================== 05-02-96 ---- Release of Lynx2-5 ---- * Modified documentation, help, and example files based on feedback for yesterday's Lynx2-5 pre-release. - FM * Include ";q=0.001" whenever "iso8859-1" or "us-ascii" are autoappended to Accept-charset headers. - FM * Added SITE_LIBS symbol in Makefile for convenient linking to any site-specific libraries associated with any site-specific patches. - FM * Fixed an unsigned char typecast in GridText.c - FM * Eliminated statusline and TRACE warnings about possibly strange formatting when TABLEs are in a document. - FM 05-01-96 * Renamed Lynx2-4-FM for pre-release as Lynx2-5 04-30-96 * Modified the fatal error messages such that they direct the user to the local system administrator to confirm a bug before reporting it to lynx-dev, and started updated the help and about files for the switch to lynx-dev@sig.net as the primary list server. - FM 04-28-96 * Made use of ordered versus unordered lists and inclusion of article dates in listings for news groups compilation and configuration options in userdefs.h and lynx.cfg. - FM 04-27-96 * Added -realm switch for restricting URLs to the realm of the startfile. The bookmark and jumps files are always considered as part of the realm. Any execution links or form ACTIONs are permitted if obtained from documents in the realm, but any switches that restrict bookmark operations will still apply. For example, -book -realm will use the bookmark file as the startfile, and restrict URLs to files in the user's account. Adding -restrictions=bookmark_exec will block execution links in the bookmark file, but not in other files within the realm (i.e., in the user's account). If the startfile is an http URL, the realm will be equivalent to that in http authorization procedures. Can be used with -traversal for restricting the traversal to documents within the starting realm for an http server. - FM * Fixed bug in form structure which could cause POST to be treated as GET. - FM 04-25-96 * Added code to send Host: headers as described in the 23-Apr-96 HTTP/1.1 draft. - FM 04-23-96 * Modified HTMIME.c to pass documents with an ISO-8859-3 through -9, EUC-KR, or ISO-2022-KR charset specified in the Content-Type header, to set the flag for not doing 8-bit reverse translations, and to issue a statusline message about the charset instead of forcing a download offer. Will have garbage in the displays of 8-bit characters if one doesn't have the corresponding charset installed for the terminal, but no harm should be done, and those who do can get the files displayed instead of just being up the creek without a paddle. Korean escape sequences will still be trashed, since be have no translation functions as for Japanese, and we still force a download offer if there is a mismatch for the supported character sets, so the user can cancel and then modify the terminal setup and charset choice appropriately. - FM * Increased the maximum number of attributes for tags (was too small for OBJECT), updated the DTD for SCRIPT, and added the STYLE attribute for all tags which presently, or might someday, accept it. - FM 04-21-96 * Modified the news gateway to use an ordered list with the numbers and dates of the articles indicated in newsgroup listings. - FM * Fixed the checking and passing of the mailto argument in LYMainLoop.c to mailmsg() in LYMail.c. - FM 04-20-96 * Fixed bugs in parsing of nntp and snews partial HREFs, and in the parsing of NNTP message headers for creation of mailto and newspost or newsrepy links. - FM 04-19-96 * Added OBJECT and BODYTEXT to the DTD, based on the 12-Apr-96 W3C draft. The code for INSERT is still there, and should be remove if OBJECT becomes a stable replacement. Code to handle data URLs for OBJECTs not yet attempted. - FM * More tweaks for Japanese character handling. - FM 04-18-96 * If LINKS_ARE_NUMBERED is on, include the list of references in the outputs of 'p'rint menu options, analogously to the output with -dump. - FM 04-14-96 * Mods to report the content of SCRIPT, STYLE and ALIAS blocks in trace mode. - FM * Made ¨, ¯ and ™ synonyms for ¨, &hibar; and ®, respectively. - FM * Fixed typo in second line link highlighting code for slang. - ES 04-13-96 * More tweaks of Japanese character handling. - FM * Reinitialize timeout values after select() calls in LYUtils.c. - ES 04-12-96 * More tweaks of Japanese character handling. - FM * Tweak of target line and link setting when toggling to image_links mode in LYMainLoop.c. - FM * Tweaks of circular buffer handling based on analyses from Mike Castle (mcastle@umr.edu) and Bryan T. Vold (btv@ldl.HealthPartners.COM). - FM * Fixed typo for NeXT in tcp.h, based on feedback from LWV - FM * Reinitialize timeout values after select() calls in HTTCP.c. - Erik Sundkvist (ess@lysator.liu.se) 04-11-96 * More tweaks of Japanese character handling. - FM * Added code for handling charset mappings for file and ftp URLs. - FM You can set the mappings via lynx.cfg (or mime.types), e.g.: SUFFIX:.html8R:text/html; charset=KOI8-R SUFFIX:.txt8R:text/plain; charset=KOI8-R * Tweak of charset handling in HTMIME.c - FM 04-09-96 * Modified news gateway to handle split header lines. - FM * Tweaks of authorization header handling to make failures due to bad headers from the http server clear to the Lynx user. - FM 04-08-96 * Yet more tweaks of memory management. - FM 04-07-96 * Tweaks for handling Japanese received via gateways. - FM 04-06-96 * More memory management tweaks. - FM 04-05-96 * Updated lynx.man, lynx.hlp and the online help files. - FM * Tweaks of INPUT, TEXTAREA and SELECT popup OPTION handling when Japanese character translations are on. - FM 04-04-96 * Created new zip. Yesterday's appears to have been bad. - FM 04-03-96 * More optimizations and bug fixes based on patches from JED. - FM * More mods for handling keyboard input via SLANG library functions, based on patches from JED. Note that the code for IGNORE_CTRL_C has been bypassed in those mods, as they presently stand. - FM 04-02-96 * Added "first pass" handling of P end tags. - FM * Mods of HTCheckForInterrupt() for SLANG, based on patches from JED. Note that the for-SLANG code is not taking possible SOCKSification of Lynx into account. - FM * Use 3 for ^C instead of 7 for ^G as the argument for the slang abort key in calls to SLang_init_tty(). - JED * Tweaks of make for clix. - AM 03-31-96 * More tweaks of memory management. - FM 03-30-96 * Added support for Japanese translations of text/plain in addition to text/html documents, and for ALTs and form fields (see 03-26-96 mods). Needs checking. Also added an LYK_JPN_TOGGLE, mapped to '@' by default, for toggling JAPANESE mode ON and OFF, and code to indicate the situation in the 'o'ptions menu. - FM * Added make for ultrix-slang and decstation-slang, and tweaks of LYCgi.c for ultrix. - Alvian Tam (atm@newt.phys.unsw.edu.au) * Found and fixed some typos in yesterday's mods. - FM 03-29-96 * Added build-slang.com for building Lynx with the SLANG library instead of curses on VMS. - FM * Mod to treat an EOF with errno of EINTR when GetChar() is defined as getchar() in LYgetch() as due to a Ctrl-Z suspend, and invoke another character fetch instead of exit on error. Based on patch from Gregory Neil Shapiro (gshapiro@WPI.EDU). - FM * Numerous optimizations and bug fixes based on patches from JED. - FM 03-28-96 * More tweaks of SLANG support. - FM * Yet more tweaks of the HTList functions and macros, and their associated memory management. - FM 03-27-96 * Fixed bug which could cause a crash if links are numbered and you activate a link via a number when there are no links on the currently displayed page. - FM * Tweaks of Content-Encoding header handling, and more detailed messages about it in trace mode. - FM 03-26-96 * Added code in HTMIME.c for taking into account Content-Encoding headers, so that compressed text/html or text/plain files are not displayed inappropriately based on their Content-Type. - FM * Added "first pass" support for Japanese character translations, based on patches for Lynx2-4-1 by Takuya Asada (asada@icsd6.tj.chiba-u.ac.jp). Is to be checked out by Nelson Henry Eric (nelsonhe@ews07.nara.kindai.ac.jp) because I have no way to check it here. Translations can be made the default behavior by setting JAPANESE to TRUE in userdefs.h and/or lynx.cfg. The default can be toggled via a "-jpn" command line switch. If made TRUE by any means, the value of KANJI_CODE set in userdefs.h and or lynx.cfg (EUC, SJIS, or NONE) will be applied, and can be changed via "-euc", "-sjis" or "-ascii" command line switches, for setting Kanji code translations to EUC, Shift JIS, or disabling it, respectively. Note that Japanese translations are not yet performed in the line editor (LYgetstr() of LYStrings.c and form_getstr() of LYForms.c), for form field values, or for gateways (let's first see if what I've done so far works right 8-) - FM * Added "LY" prefix for pop(), pop_num() and push() function names to avoid possible conflicts with the ncurses library functions, and fixed continuation line typo in solaris2 make, based on feedback from PN. - FM 03-23-96 * Tweaks of memory management in the CSO/PH gateway. - FM * Tweaks of wait() versus waitpid() handling for NeXT, aix4 and mips, based on feedback from PN. - FM 03-22-96 * Tweaks of SLANG support for Unix, and finished up code support for it on VMS (but tested only with OpenVMS/AXP). Haven't yet decided how to add VMS build support for it in the COM and MMS files. Get the SLANG library code from ftp://space.mit.edu/pub/davis and then add USE_SLANG in the DEFINE list and the path to it's headers in the INCLUDE list for the compilation, and [path]slang.olb/lib in the link list immediately before the OPT file. We still need the curses library in the OPT file, because that's not just curses functions on VMS and we're using ones not replaced by the SLANG library (Try it, you'll like it! 8-). - FM * Tweaks for NeXT, based on feedback from Paul Nevai (nevai@ops.mps.ohio-state.edu). - FM 03-20-96 * Tweaks of code for sorting directory listings by date (take into account the 6-month-old time versus year rule on Unix). - FM * Tweaks of memory management for HTList-based buffers (use internal allocations, instead of the libwww macros). - FM * Added solaris2-slang to Makefile, and tweaks of the sun4 makes. - LWV 03-19-96 * Tweak of MAP handling so that the ordered lists are displayed exactly in the order of the resolved AREA tags. 03-18-96 * Added SLANG support (for colorized Lynx) based on patches from JED. The make support is for linux and sun4, but it should be portable to other Unix flavors. I have it working on VMS, but the SLANG interrupt and exit handlers are incompatible with the current ones for VMS in Lynx (and with the VMS debugger), so I haven't yet included SLANG support in build.com or the MMS files. - FM 03-17-96 * Tweaks of 'd'ownload menu handling on returns to it from a DOWNLOADER action. - FM * Added various anti-crash protections and cleaner code from John E. Davis (davis@space.mit.edu) for trimming trailing white space and finding unescaped colons in LYReadCFG.c, and cleaned up and more fully commented the functions and subfunctions in that and the LYMainLoop.c modules. - FM 03-16-96 * Fixed routine which sorts directory listings by date (based on 'o'ptions menu setting) to do it accurately and in reverse chronological order. - FM 03-15-96 * Added code to create links for likely URLs in results returned by the CSO/PH and finger gateways. Try: gopher://ns.bradley.edu:105/2 or: cso://ns.bradley.edu/ and search for David Henderson. Also try: gopher://cegt201.bradley.edu:79/0/w%20davidh or: finger://cegt201.bradley.edu/w/davidh as URL.s - FM * Added LYK_INTERRUPT handling for the CSO/PH and finger gateways, and made their memory management more efficient. - FM * Made the my_spawn() function in LYLocal.c more portable by using waitpid() instead of wait(). - FM * Restored the Lynx2-3 behavior of seeking the current position and link on return from 'e'dit. May be wrong if the file was modified, but it might be in the right ball park, and nothing really bad will happen if it's far off. - FM 03-14-96 * Added -reload switch for instructing Lynx to send "Pragma: no-cache" and "Cache-Control: no-cache" headers when requesting the startfile from an http server (doesn't apply to subsequent fetches, or to non-http startfile URLs). - Peter Ekberg (peda@lysator.liu.se) * Put the correct LYMain.c, which declares no_change_exec_perms, in the zip (second try, hope I really did 8-). - FM 03-13-96 * Yet more tweaks of the CSO/PH gateway. - FM * Yet more tweaks of the finger gateway. - FM 03-12-96 * Made the URL and command buffering in the finger gateway secure from stack modifications, beautified the HTLoadFinger() and response() functions, and added support for the following URL formats for sending a "", "/w", "username", or "/w username" command to the finger server: finger://host finger://@host finger://host/ finger://@host/ finger://host/%2fw finger://@host/w finger://host/w finger://host/w/ finger://host/username[@host] finger://username@host finger://host/username[@host]/ finger://username@host/ finger://host/w/username[@host] finger://username@host/w finger://host/%2fw%20username[@host] finger://host/username[@host]/w * Replaced the _tolower macro in the CSO/PH gateway with TOLOWER. - FM * Tweaks of DIRED_SUPPORT. Added NO_CHANGE_EXECUTE_PERMS compilation symbol and change_exec_perms restrictions switch for restricting changes of the eXecute permissions to directories, and not files, when OK_PERMIT has been set. - Earl Fogel (fogel@duke.usask.ca) & FM * Added make support for Intergraph CLIX (note that some online help files must be edited and renamed to meet this Unix flavor's 14 character file name limit). - Alex Matulich (matuli_a@marlin.navsea.navy.mil) 03-11-96 * Added support for using finger://host/w/username to send "/w username" to finger (port 79) servers. - FM * Tweaks of alignment handling to deal with (illegally) embedded CENTER containers (typically due to omission of an end tag for the first CENTER of the pair; ugh!). - FM 03-10-96 * Added form-based CSO/PH (port 105) gateway. Can be invoked via a cso://host[:port]/ or gopher://host[:port]/2 URL. If the gopher format is used and a query token is appended (?[query]), the old ISINDEX-based gateway will be used. - FM 03-07-96 * Added NO_FROM_HEADER configuration symbol in lynx.cfg, and -nofrom command line switch, for blocking all transmissions of From headers by Lynx. - FM * Added NO_REFERER_HEADER configuration symbol in lynx.cfg, and -noreferer command line switch, for blocking all transmissions of Referer headers by Lynx. - FM * Enhancements of the 'o'ptions menu. - FM 03-06-96 * Restored the Lynx2-3 behavior of seeking the current document position and link on (^R)eloads. Will be wrong if the document is actually a changing script output, or SSI with changes in the sizes of inserts, and any form entries will be lost with no warning about that if no form links are in the currently displayed page (and there may be other glitches I don't remember any more). However, it's correct, and more convenient, most of the time, and nothing really bad will happen if it's wrong. - FM 03-05-96 * Added SAVE_SPACE configuration symbol in lynx.cfg, and LYNX_SAVE_SPACE environment variable (Unix) or logical (VMS) for setting a default path prefix in suggested filenames in Save to Disk operations of the 'p'rint and 'd'ownload menus. If not set, only a filename will be suggested, for saving in the current default directory. See the INSTALLATION file and lynx.cfg for more information. - FM 03-02-96 * If an IMG tag has both ISMAP and USEMAP attributes, create links for both, and use the ALT string, if present, for the USEMAP link. The server-side script might have a content-rich default set up for non-GUI clients, so we may as well be able to try it, and still have our own USEMAP listing available if it's a site unconcerned about text and braille clients, or GUI clients with image loading turned off. - FM * Tweaks of MAP code to maximize efficiency of fetching and processing MAPs from a different document. - FM * Make sure the traversal code doesn't get tripped up by any HREFs which contain newline characters due to misparsing (e.g., because a close-double-quote wasn't present where required, and soft_dquotes wasn't toggled ON, or invalid comments were present, and mimimal or historical comment parsing weren't toggled ON). - FM * Renamed LYK_RESUBMIT ('x' or 'X') to LYK_NOCACHE and modified it's code so that it applies to normal links as well as form submit buttons. If used instead of LYK_ACTIVATE, any HText cache from a previous submission or request will be dumped, and the submission or request will be made with the "Pragma: no-cache" and "Cache-Control: no-cache" headers included, to ensure that a proxy/cache server also will not return a cached copy (assuming it respects either of those headers). - FM 03-01-96 * Converted the client-side image MAP code to a protocol which returns a stream, rather than using a temporary file. This allows saving the link as a bookmark, for fetching the MAP and creating a listing without need to fetch and render the original document. Also enabled direct downloading of the MAP listing. - FM 02-29-96 * Added handling of client-side image MAPs. If both USEMAP and ISMAP attributes are present, the client-side MAP is used instead of the the server-side script. The MAPs can be in the same or different documents. The HREFs of the AREA tags are presented as a list, with their ALTs (if present, otherwise their HREFs) as the link names in the list. Added a TITLE attribute for MAPs, which will be ignored by GUI clients, but if present will be used by Lynx as an H1 for the list (MAP NAME="welcomemap" TITLE="Welcome Map"). Otherwise, the IMG's ALT (if present, otherwise "[USEMAP]") will be used as an H1 in the list. The MAP's resolved URL also is shown in the list, since the URL for the list is a temporary file. - FM 02-25-96 * Added a MINIMAL_COMMENTS configuration symbol, which if set TRUE in lynx.cfg will emulate the Netscape v2.0 comment parsing bug of seeking only a '-->' terminator, and not interpreting '--' pairs as serial comments within the overall comment element. The compilation default is FALSE, but we'll set it TRUE in lynx.cfg until Netscape gets its comment parsing right, and "decorative" dashes in comment elements cease to be so common in "Enhance for Netscape" pages. Also added a '-minimal' command line switch for toggling the Mininal or Valid configuration setting, and an LYK_MINIMAL command key toggle (mapped by default to backquote). Note that setting Historical comments on will override the Minimal or Valid setting (i.e., any '>' will be treated as the terminator of a comment element). A statusline message indicates whether Historical, Minimal or Valid comment parsing has gone into effect when the LYK_MINIMAL or LYK_HISTORICAL command key toggles are used (i.e., those two toggles in effect are a "troggle"). - FM 02-22-96 * Tweak of HTList manipulations. - FM * Additions to the online help. - FM * Unescape any hex escaped username and/or password in ftp URLs. - FM 02-20-96 * Handle timeout disconnects of cached NNTP connections. - FM * Allow head or tail match specifications (e.g., comp.infosystems.* or *.unix) in news, nntp and snews URLs (That's illegal, so don't use it in public documents.). - FM * Tweak of bookmark handling. - Ismael Cordeiro (ismael@CAM.ORG) 02-16-96 * Tweak of the new code for setting a default CHECKED radio button. - FM 02-15-96 * Issue a sensible exit message if a non-http URL is used as the startfile with -traversal. - FM * Tweaks of bookmark handling. - FM * Tweaks of Home_Dir() type casting. - FM 02-14-96 Happy Valentine's Day!!! * Tweaks of charset conversions. - FM 02-12-96 * Made inclusion of Unix DIRED_SUPPORT the compilation default, and its refinement easier to understand and set in the Makefile. - Will Mengarini (seldon@eskimo.com) & FM * Changed (X) and ( ) to [X] and [ ] for indicating checked or unchecked checkboxes. For radio buttons, we still use (*) and ( ). - FM 02-11-96 * Distinguish checkboxes from radio buttons in the Lynx display by using (X) versus (*), respectively, when they are checked or selected. - FM * Make the first radio button in a series with the same NAME checked by default if none of them had CHECKED specified. - FM 02-09-96 * Added LYK_HISTORICAL and LYK_SOFT_DQUOTES, mapped by default to the the single- and double-quote keys, respectively, for toggling valid versus "historical" comment parsing, and valid versus "old Mosaic- and Netscape-like" double-quote parsing. - FM * Added SCRIPT to the DTD and code to ensure that bad comments in its content don't generate garbage in the display. - FM * Added -DSVR4 to the make for solaris2. - KH * Use copy instead of rename in descrip.mms for putting lynx.exe in the top directory, as in build.com. - FM * Added TITLE attribute to FORM, and code to use it for the Subject in mailto ACTIONs. It's not in the spec, but better to offer it than to settle into Netscape's ?subject=foo tack-on kludge which breaks mailto for clients which haven't added code to cope with it. - FM 02-08-96 * Added -book switch for using the bookmark page as the startfile. The default or command line startfile will still be set for the 'm'ain screen command, and be used as the startfile if the bookmark page is unavailable or blank. - FM * Fixed glitch for Unix in yesterday's LYMail.c mods. - FM * Try graceful alternatives if getenv("HOME") returns NULL. - Kenneth Herron (kherron@campus.mci.net) & FM 02-07-96 * Added support for the ?subject=foo tack-on kludge to specify the Subject in mailto ACTIONs and HREFs. - FM * Convert Explorer's semi-colon Internet address separators to commas before acting on mailto address lists on Unix or VMS. - FM * Made EMBED empty again (the W3C container version has been replaced by INSERT, and Netscape still has it empty). - FM 02-06-96 * Tweaks of descrip.mms files for VMS. - FM 02-04-96 * Fixed caching of news/nntp connections so that we access the correct host when more than one has been specified. - FM 02-03-96 * Added ndash and mdash to the entities conversion tables. The W3C's DTD specifies those, whereas the text descriptions say endash and emdash, so we'll cover all the bases by supporting all four. - FM * Reduced the "en" metric for TAB to 2 per column. Was 12, to be compatible with UdiWWW, but that's pixels. You can change the enval initialization in HTML.c from 2 to 12 if you want the old behavior. - FM * Force use of DECC in build.com if that compiler is installed on VMS, and make sure external logicals don't defeat a choice of DECC via descrip.mms. - FM 02-02-96 * Mods to handle lone CRs as newlines when dislaying text/plain files from MAC servers. Note that they'll stay CRs when downloading, or fetching with -source, but be handled as newlines when the '\' source toggle is used for text/html files and their source is displayed as text/plain. - FM 01-31-96 * Added dummy initializers in LYCharSets.c and LYEditmap.c to ensure the modules are linked if the external model is common block and they are placed in a library. - FM 01-30-96 * For submissions of forms with a mailto ACTION, allow the user to edit the default Subject string (the TITLE of the document containing the form) via a statusline prompt, or to cancel the submission via Ctrl-G at the prompt, analogously to 'c'omments or for anchors with a mailto HREF. - FM 01-29-96 * Typo fixes in HTML.c, LYJump.c and LYGetFile.c. - PM 01-28-96 * Tweaks of redirection handling. - FM 01-27-96 * Support use of the TITLE attribute for setting the Subject in LINKs with REV="made" or REV="owner" and a mailto HREF, equivalently to its use with anchors in the BODY. - FM * Always use the parent document's URL for X-URL in mailto anchors, but still use mailto:address if it was entered as a 'g'oto. - FM * Improvements of the code in LYMainLoop.c for checking the types of links (first make sure that there are links to check 8-). - FM 01-26-96 * Made LYCharSets.c an object module instead of header for HTML.c, and created LYCharUtils.c with character-related functions from HTML.c, to reduce the size of HTML.c (got a report of memory exhaustion when trying to compile HTML.c). - FM * Added BGSOUND to the DTD and code for creating a link to the source when clickable_images is set. - FM 01-24-96 * Tweak of URL resolving when http servers return the obsolete file URL format for what are actually ftp URLs (as DEC's servers are doing). - FM * Added LYE_LOWER and LYE_UPPER for lower or upper casing lines with the line editor. Default bindings are Ctrl-K and Ctrl-T, respectively (not "intuitive" but they're the only "safe" non-printing keys left 8-). - FM 01-23-96 * Yet more tweaks aimed at getting Lynx to compile across versions of MultiNet through v3.5A and DECC through v5.2 or VAXC. Pat Rankin is trying to cope with this mess for compilations with MultiNet and his VMS port of GNUC (cross your fingers 8-). - FM * Updates of the help and about files. - FM * Tweak of sendmail path for BSDI. - Bennett Todd (bet@ritz.mordor.com) 01-22-96 * More tweaks for dealing with header conflicts in MultiNet v3.5A with DECC v5.2. - FM * Tweak of our kludge to append a 0,0 coordinate pair for ISMAP URLs. - FM * Tweaks of base handling in HTML.c. - FM 01-20-96 * Mods for builds with NetBSD, or MultiNet v3.5A with DECC v5.2 (they have conficting headers). FM & PR 01-18-96 * Improved and corrected the fatal error messages. - FM 01-17-96 * Added ability to set the NNTPSERVER environment variable via lynx.cfg if it has not been set externally (analogously to the proxy variables). - FM * Tweaks of proxy handling. - FM * Modifed the "Accept-Language: " header handling so that is uses the "perferred document lang(G)uage" string without any modifications. This allows the user to specify a comma-separated string with quality values included, exactly to his/her requirements. - FM 01-16-96 * Modified the traversal code so that it always outputs to an error file if requests fail or unknown statuses are received from the http server. - FM * Added target "sun4-ncurses" to the Makefile. - Bennett E. Todd (bet@nyc.fcmc.com) * Tweaks of "preferred document lan(G)uage" and "preferred document c(H)arset" 'o'ptions handling. Send only the preferrence or comma-separated list of preferrences in the "Accept-Language: " and "Accept-Charset: " headers. Append ", en" if "en" isn't present, and ", ISO-8859-1" and/or ", US-ASCII" if those aren't present, rather than relying on servers to honor defaults, but still don't send an "Accept-Charset: " header at all if no preference has been specified by the user. - FM * Fixed typos in the about and help files. - FM 01-15-96 * Tweaks of bold and underline setting in split_line() of GritText.c. - FM * Fixed handling of FORM start tags with no ACTION specified. - FM * Tweaks of "IBM PC character set" and added "IBM PC codepage 850" (ISO8859-1, see IBMPC-charsets.announce). - Mike Brown (mike@hyperreal.com) * Check in userdefs.h whether LYNX_CGF_FILE has been defined via the Makefile, build.com or descrip.mms. - PG * Created CHANGES2-3 with changes through release of Lynx2-3 on 04-19-94, and CHANGES2-4 with subsequent changes through the rename of lynx2-3-FM to Lynx2-4 and its release on 06-18-95, and deleted those sections from this file. - FM * Added the new Copyright and links to it in about_lynx.html. - FM 01-11-96 * Tweaks of HTWAIS.c for compatibility across versions of FreeWAIS. - FM * Unescape any hex escaped percents in mailto URLs and ACTIONs. - FM 01-10-96 * Added an LYCheckForProxyURL() function, and a PROXY_URL_TYPE return value for is_url(), so that Lynx can proxy URLs with an unknown scheme if a proxy for the scheme has been set, e.g., if "foo_proxy" has been set to "http://host/", then "foo:blah", where "blah" may or may not begin with a slash, will be handled as "http://host/foo:blah". Components of "blah" will be checked versus "no_proxy", if set, but since we don't know the default port for scheme "foo", the checks for any ports associated with the no_proxy values may not be reliable (but if we don't proxy, nor know the scheme, nor find "foo:blah" as a local file, the URL would fail, anyway) - FM * Fixed typo in VMSPrint.com. - Paul Farnham (farnham@pasco.wednet.edu) 01-06-96 * Tweak of traversal code. - FM 01-04-96 * Tweak of dynamic SOCKS mods. - TZ 01-03-96 * Added circular recall buffers for JUMP shortcuts. If multiple jumps files are installed, each has it's own recall buffer. If Lynx was built with PERMIT_GOTO_FROM_JUMP defined, any random URLs accessed via the JUMP command are placed in the goto circular buffer, not that for shortcuts, and a JUMP entry of the single character ':' for the target is treated as a command to invoke the circular buffer of previously resolved goto URLs (as if 'g'oto followed by Up-Arrow were used). - FM * Added GOTOBUFFER, homologous to JUMPBUFFER, for specifying via userdefs.h and/or lynx.cfg whether to offer the previous goto URL, if any, for reuse or editing whenever the 'g'oto command is entered, or simply rely on invoking the circular buffer via the Up-Arrow and Down-Arrow keys for accessing previously resolved goto URLs. - FM * Tweak of 'g'oto recall buffering loop in LYMainLoop.c. - AH 01-02-96 * Added circular recall buffering for 'g'oto URLs. Is invoked (if previous URLs have been entered) via Up-Arrow or Down-Arrow after entering the 'g'oto command. - FM * Added circular recall buffering for WHEREIS queries. Buffer is shared with that for ISINDEX queries, and invoked via Up-Arrow or Down-Arrow following the WHEREIS ('/') command. The 'n'ext command still uses the last WHEREIS query, not necessarily the last entry in the recall buffer, which might have been entered via a 's'earch command for an ISINDEX document. - FM * Extended treatment of FORMs which have only one INPUT (TYPE="text") field for user entries as SUBMITting on press of RETURN in that field, so that this behavior is retained if INPUT TYPE="hidden" fields are present. - FM * Tweaks of bookmark deletion sanity checks. - DT 01-01-96 (Happy New Year!!!!) * Added circular recall buffer for ISINDEX queries. Up-Arrow will cylce you from the most current query in the list to previous ones, and roll from the oldest to the most current. Down-Arrow will cycle from the oldest query to subsequent ones, and roll from the most current to the oldest. If a previous query is reused, it is removed from the recall buffer and reinserted as the most current.- FM * Plugged memory leaks in LYUtils.c and LYJump.c. - FM 12-30-95 * Added LOCALHOST_ALIAS symbols for lynx.cfg which can be set to local host aliases or to trusted hosts at other sites which will be accepted as "local" when the -localhost switch is set. - FM * Added the endash and emdash entities. - FM 12-29-95 * Use exit(0) versus exit(-1) more consistently for normal versus abnormal exits, respectively. - FM 12-26-95 * Tweak of RELOAD handling for lynxcgi URLs. - FM * More anti-crash protections for bad HTML. - FM * Tweak of dynamic SOCKS mods. - TZ 12-23-95 * Tweaks of directory building on VMS. - FM * Tweaks of log file declarations for direct wais builds. - FM * Tweak of DIRED_SUPPORT mods so that non-TAG entries don't show up when there are tagged files. - DT 12-22-95 * Added HTMake_VMS_name() to HTFTP.c for use by Unix as well as VMS with VMS ftp servers. - FM * Added INSERT and ALIAS to the DTD, updated PARAM and OVERLAY, and made FIG a paragraphing block, all as described in the 12-21-95 W3C working draft for INSERT. In contrast to FIG, the INSERT and "heritage" EMBED and APPLET elements invoke paragraphing only if their content displayed by Lynx dictates it. The rules for resolving the sources for INSERTs or for handling its ISMAP attribute are extremely complicated, and are not implemented. Let's wait to see how people in the "real world" try to make sense of them and actually use INSERT (if they do 8-). We still create source links in "clickable_image" mode for the "heritage" versions of FIG, OVERLAY, EMBED and APPLET markup, and send a 0,0 cooridinate pair for IMG with the ISMAP attribute. See comments in HTML.c - FM 12-21-95 * Fixed bug in yesterday's ftp password-handling mods that could cause a crash, and handle ftp://user:@host/path as specified in RFC 1738. - FM * Added protection against crashes for SELECT tags without the (required) NAME attribute. - FM * Added code in HTFTP.c for recognizing MS Windows (Chameleon NEWT) servers and parsing their LIST output (tested on ftp://emoryi.jpl.nasa.gov/) - FM * Another typo fix for VMS GNUC in HTFinger.c. - FM * Modified HTFTP.c to use personal_mail_address, if available, for the password with anoymous FTP. It will still use "user@" (trim off the host) if the host does not contain a dot and thus could not be a fully qualified domain name, so it will work with Unix servers such as ftp.uu.net (see get_connection() in HTFTP.c), but this will cause it to fail with MS Windows servers. - FM * Added lots more info to the trace output for the ftp gateway. - FM 12-20-95 * Modified HTFTP.c to handle a hex escaped slash (%2F) following the "punctuation" slash according to the strict provisions of RFC 1738 when connected to VMS ftp servers, so that a device can be in the path and not be mishandled as a subdirectory, e.g., the URL ftp://user:password@host/%2Fsys$common/syshlp will create a directory listing for sys$common:[syshlp]. - FM * Fixed typo for VMS GNUC in HTFinger.c. - FM 12-19-95 * Enhancements of Unix DIRED_SUPPORT (see header of LYLocal.c). - DT 12-18-95 * Tweaks of element and entity structure alignments. - FM 12-17-95 * Tweaks of APPLET CODEBASE attribute resolving. - FM * Added support for a -nosocks command line switch to turn off SOCKS proxy usage if Lynx was SOCKSified. - Thomas Zerucha (tz@execpc.com) 12-16-95 * Added the APPLET element and attributes to the DTD, and code for creating links to the Applet code via image_links - FM * Added code to handle password fields in telnet URLs. - FM * Expanded EMBED as an "attribute soup" (for compatibility with old versions of Netscape). - FM 12-15-95 * Added PARAM, and its attributes in the W3C draft for EMBED, to the DTD, and code in HTML.c to minimize the possiblity of an INPUT belonging to an EMBED being misassociated with a standard FORM container. - FM * Added "first pass" EMBED handling. Should be OK with both the W3C container version and the Netscape "attribute soup" version (we'll see 8-). The clickable_image switch and toggle ('*') are now misnomers. They will cause creation of links to the EMBED SRCs whether they are images or not. - FM * Enhancements of Unix uploading (see header of LYUpload.c). - GL 12-14-95 * Modified LYUnEscapeEntities() and LYExpandString() in HTML.c to make it more likely that they'll be handled correctly across flavors of compilers. - FM * Changed NETSCAPE_QUOTES and -netscape_quotes to SOFT_DQUOTES and -soft_dquotes. - FM * Added '&' to the exclusion list for VMS suggested file names. - FM 12-13-95 * Added CAN_ANONYMOUS_GOTO_TELNET_PORT symbol which if set TRUE in userdefs.h will allow anonymous users to specify a port in 'g'oto commands for telnet URLs. - FM * Added NETSCAPE_QUOTES symbol which if set TRUE in lynx.cfg will cause Lynx to emulate the Netscape bug of treating '>' as a co-terminator of a double-quoted attribute value and the tag which contains it. - FM * Forgot to define FORM_LINK_RESUBMIT_MESSAGE in the distribution's userdefs.h for yesterday's mods. - FM * Forgot to put the HTFile.c with the LIST_FORMAT mods into the distribution (maybe I should just concentrate on Christmas 8-). - FM 12-12-95 * Changed handling of the no-cache META directive so that it applies to the document which contains the META tag, rather than to any form submit buttons within it. The form's CGI script should return a stream which contains the directive to force resubmissions, and any (e.g., ISINDEX) script or (e.g., foo.shtml) document can include the directive to force reloading by Lynx. - FM * Added ALWAYS_RESUBMIT_FORMS symbol in userdefs.h and lynx.cfg for setting forced resubmissions of forms, and a -resubmit_forms command line switch for toggling the default. - FM 12-11-95 * Moved values of LYStrings.h function key definitions from 0x80 - 0x8D to 0x100 - 0x10D and modified all the structures and functions in LYKeymap.c and LYEditmap.c accordingly. - FM * Added the KOI8-R (Russian) character set. - Andrey A. Chernov (ache@astral.msk.su). * Replace gets() with fgets() for the Unix setup() in LYCurses.c - AAC * Tweaks for building with FreeBSD. - AAC & FM * Added handling of META directives for ISO-8859-2 and KOI8-R if the document is text/html and a server header didn't already set the charset. - AAC & FM 12-10-95 * Tweaks of memory management. - FM * Made the LONG_LIST parameters for Unix local directory listings configurable via userdefs.h and lynx.cfg - DT 12-09-95 * Added code for re-computing and retaining the current link if it is still on the page when using the LYK_UP_TWO and LYK_DOWN_TWO commands. - FM * Added support for nested emphasis tags (they're all still displayed as HT_UNDERLINE, but no longer terminated prematurely). - FM 12-08-95 * Added more suffix maps in HTInit.c. - FM * Tweak of META attribute definitions. - FM 12-06-95 * Don't reject LYNXKEYMAP and lynxcgi URLs with the -localhost switch. - FM 12-05-95 * Made the loaded_texts list in GridText.c functionally "circular", so that returning to a cached document causes it to be treated as the most current, and dumps of cache, when necessary to load a new document, are done for the least recently viewed rather than least recently fetched document. - FM * Show the METHOD and ACTION in showinfo() of LYShowInfo.c if invoked when the cursor is positioned on a submit button. - FM * If the user mode is advanced, keep showing the URL in the statusline when Lynx is in forms mode but the link is not a form field. - FM 12-03-95 * Tweaks of code for submissions of forms with only a single INPUT (TYPE="text") field. - FM 12-02-95 * Treat any META directives with a NAME or HTTP-EQUIV value of "Pragma" or "Cache-Control" and a CONTROL value of "no-cache" as an instruction always to resubmit any form(s) in the document. - FM * Added parsing of META directives. Functions can be added where indicated in HTML.c. - FM * Include the HTTP/1.1 "Cache-Control: no-cache" header together with the HTTP/1.0 "Pragma: no-cache" header for reload or resubmit requests. - FM * Fixed bug in the check for an all-space ALT in IMG when creating a link for its SRC. - FM * Fixed parsing of square-bracketted DOCTYPE fields. - FM 12-01-95 * Improvments of logic for indentations within lists. - FM 11-30-95 * For resiliency, treat upper case letters as equivalent to lower case in scheme names (e.g., allow "HTTP" as well as "http"), by converting them to the appropriate case before entering them into the anchor hash table or otherwise acting on them. - FM * Added ability to change the default reply to the "really quit" prompt from "[Y]" to "[N]" via a compilation symbol in userdefs.h. - DT 11-29-95 * Added ALIGN attribute for HR (default is "center"). - FM 11-28-95 * If a form has a single field, and it's INPUT TYPE="text", treat RETURN as a submit command for it. - FM * Added START as a synonym for the SEQNUM attribute in OL. - FM 11-27-95 * Enhancements of the wais gateway. - FM 11-26-95 * Fixed up HREF, ACTION and SRC resolving to be conformant with RFC 1808 (except that we don't yet support a ";params" field). - FM 11-25-95 * Tweaks of yesterday's jumps file mods. - FM 11-24-95 * Enhancements of 'J'umps file handling, including ability to install multiple jumps files mapped to different keys and associated with different statusline prompts and recall buffers. - DT & FM * Deal with ALTs that have only spaces when in clickable_image mode. - FM * Worked in WM's mods to make the REVERSE_CLEAR_SCREEN_PROBLEM workaround a configuration option via ENABLE_SCROLLBACK in lynx.cfg and a command line toggle (-enable_scrollback), for use with comm programs which have screen display buffers that can be accessed for review independently of the Lynx commands (see comments in lynx.cfg). - FM 11-23-95 * Use the BASE, if present, instead of the original document URL, as the default ACTION for forms. - FM * Tweaks of paragraph alignment handling. - FM * Make sure we don't realloc() a NULL env pointer in LYCgi.c. - DT * Cancel bookmark deletion if the line does not have a complete link or if there is more than one link on the line. - DT 11-21-95 * Fixed bad logic in the setting of bold and/or underline starting points in new lines created via split_line() of GridText.c. - FM * Added case KEY_BACKSPACE in LYgetch() of LYStrings.c. - GL 11-19-95 * Fixed problem of SELECT causing all immediately following white space to be ignored. - FM * More tweaks of paragraphing, and handling of labeled blocks within PRE blocks. - FM 11-18-95 * Added INFOSECS, MESSAGESECS and ALERTSECS symbols in userdefs.h and lynx.cfg for setting the durations of statusline pauses (important when using Lynx with a braille-based access). See comments in userdefs.h and lynx.cfg for more information. - FM * More tweaks of paragraph handling. - FM * Include the Reference lists is crawl output files if the -number_links switch was included and the -nolist switch wasn't. - FM 11-17-95 * Tweaks of finger and telnet gateways. - FM * Added handling of MARQUEE equivalently to BANNER. - FM * Various tweaks of 8-bit character and related HTML handling (OLs or ULs without attributes or some wrong combinations were crashing Lynx). - FM 11-16-95 * Implemented the ID attribute for TAB, and the TO and INDENT attributes when its ALIGN attribute is "left" (the default) and the style's alignment is HT_LEFT (the default). If these conditions don't apply, or if the TAB target is outside the current margins or would overlap prior text, a collapsible space is inserted instead of TABing. The INDENT values are in "en" units, treated as 12 per column. Added tabtest.html in the test subdirectory to illustrate TABing. - FM 11-15-95 * Added the HTML 3.0 DTD structures and definitions for SPOT, and fully implemented it (use SPOT ID="foo" as SGML_EMPTY instead of named anchors with no content). - FM * Added the HTML 3.0 DTD structures and definitions for TAB. For now, it simply puts a collapsible space in the text stream if the TO attribute is present. - FM * Added the top-level HTML 3.0 DTD structures and definitions for MATH, and implemented it's ID attribute. The markup is captured as HTML_LITTERAL, and until we have a processor, is output as is, in brackets to alert the user about the situation. - FM 11-14-95 * Tweaks of LYK_UP_LINK and LYK_DOWN_LINK handling, and added them to the default mapping as '<' and '>'. - FM * Tweaks of LYK_TOOLBAR handling. - FM 11-13-95 * Added LYK_TOOLBAR (mapped by default to '#') for jumping up to the pseudo Toolbar or Banner if present in the current document. Using '#' instead of Home to jump there allows you to Left-Arrow back to where you were in the current document. Set up a BANNER in about_lynx-dev.html to serve as an example of this feature. - FM * Added the HTML 3.0 DTD structures and definitions for BANNER, implemented its ID attribute, and set it up to act as a pseudo Toolbar if one hasn't been set up already via REL attributes of LINKs. - FM * Tweaks of paragraphing for CAPTION, CREDIT, FOOTNOTE, and NOTE. - FM 11-12-95 * Handle (i.e., ignore) any P that immediately follows an LI, DT or DD. - FM * Cancel any file fetch and viewer spawn or launch during traverals. - FM 11-11-95 * Added finger gateway (finger://host[/request]) based on patches from Martin Hamilton (martin@mrrl.lut.ac.uk). - FM * Added LYE_TAB for mapping keys to act as LYE_ENTER, but return '\t' so that the behavior of TAB is emulated in TEXTAREAs, and mapped Do to LYE_TAB in the default binding. - FM * Fixed glitch in handling of DEC extended characters which contain two digits (affected Do and Find). - FM * Better documented that disabling access to hidden (dot) files also disables ability to create such files via Lynx. - FM 11-10-95 * Added handling of mailto as a form ACTION. See http://www.q-d.com/swc.htm for software to extract and unescape the mailed content. - FM * Added lynxprog URL handling, which is identical to lynxexec URL handling except that the user is not prompted to enter RETURN before returning to Lynx. Use lynxprog for scripts or programs such as mail which do not need an enforced pause to let the user read the screen output. - FM * Removed code in HTFile.c for treating ',' as a synomym of '.' for hidden files (nobody seems to know why that was being done 8-). - FM * Moved inclusions from LYBookmark to tcp.h. - FM 11-08-95 * Extend optional hidden (dot) file/directory support to Unix, and embellished it on VMS and Unix with regulation via a command line switch and 'o'ptions menu setting. See userdefs.h and lynx.cfg for more information. - GL & FM * Added support on Unix for straight tar files and a compile time option that disables the ability to extract files from an archive file (since there is no control over the files extracted). - GL 11-07-95 * More tweaks of 8-bit character handling. - FM * Added "Macintosh (8 bit)" character set. - Neil K. Guy (nkg@freenet.vancouver.bc.ca) * Added "Example Lynx Optimized User Home Page" to the online 'h'elp. - FM 11-05-95 * Fixed Cc: header handling for email on Unix. - FM 11-04-95 * Reference the current character set for any raw 8-bit characters in text/plain streams (but don't translate named or decimal escaped entities, since that's specific for text/html). - FM * Block any illegal control or escape characters in text/plain streams, to avoid problems if a binary ftp or local file was mistyped and sent to the screen as that Content-type. - FM * Eliminated mod in SGML.c which emulated Netscape's bug of treating '>' as both a close-double-quote and close-tag (Netscape v2.0 fixed its bug, so hopefully the bad HTML with it will go away. 8-). - FM 11-02-95 * Assume an ISO-8859-1 character set for all local files. If it's actually ISO-8859-2 and the terminal is using that, set the Lynx CharSet option to "ISO Latin 1" so that 8-bit characters will be sent raw to the terminal. - FM * Added Martin Ramsch's iso8859-1.html to the test subdirectory. Use it to complete the conversion tables in LYCharSets.c. - FM * Don't block insertion of a lead space for INPUTs in PRE blocks, so alignments will be compatible with those of graphic clients. - FM * Don't block all access to the 'p'rint menu for the print restriction (should still offer printer options which have the TRUE flag set; all access is still blocked for -validate). - FM * Replaced the STDfoo_FILENO symbols in LYCgi.c with the more portable fileno(stdfoo). - WM * Added NCURSESINCDIR compilation symbol for setting the path to the NCURSES header file in LYCurses.h to that of the latest version. - GL * Tweaks of interrupt handling on VMS. 10-31-95 * Added more suffix maps in HTInit.c. - FM * Mods in LYCgi.c which hopefully makes the code more portable across Unix flavors. - FM 10-28-95 * Tweaks of global flag initializations and resets in HTML.c. - FM * Added RESOLVLIB symbol in the top Makefile for including -lresolv in the LIBS= list, if needed, for SUN 3 or 4 OS, and comments about that in the Makefile, and INSTALLATION and PROBLEMS files based on an explanation from Will Mengarini (seldon@eskimo.com). - FM 10-27-95 * Mods of top level Makefile: Added NOPORT compilation symbol for forcing use of PASV in ftp URLs. Added NO_S_IFSOCK compilation symbol for Unix flavors which lack an S_IFSOCK definition for lstat(). - FM * Reload the current document whenever the character set is changed. - FM * Don't reference entities for raw (or decimal escaped) 8-bit characters if the document is not text/html, or for any local files if the charset is Latin. - FM * Made Ctrl-H a synonym for DELETE instead of Left-Arrow in the line editor. - FM 10-25-95 * Handle all characters in strings for the new line editor as unsigned so they don't go negative if 8-bit. - DW * Restored proper handling of the MAXLENGTH attribute in INPUTs for strings entered with the new line editor. - FM 10-24-95 * Deal with all non-printing characters when setting up the SELECT pop-up window strings. - FM * Handle raw 8-bit characters via reference to the ISO-LATIN1 named entities so they in turn can be referenced to the currently selected character set. - FM * Yet more tweaks of non-breaking space handling. - FM 10-22-95 * Improved treatment of the startpage URL with -traversal so that it only blocks traversals of links on other servers. Any links on the same http server which shouldn't be traversed may be blocked via explicit and/or wildcarded entries in REJECT.DAT. Updated CRAWL.announce to make this more clear. - FM * Typo fixes in top-level Makefile. - Steve Jeske (jeske@pa.dec.com) 10-21-95 * Handle decimal escaped entities via reference to the ISO-LATIN1 named entities so they in turn can be referenced to the currently selected character set. - FM 10-20-95 * Tweaks of formatting for LONG_LIST directory lists and README file inclusions in HTFile.c and HTVMSUtils.c. - FM * Tweaks of decimal escaped non-breaking space handling in HTML.c. - FM * Force unescaping of hidden VALUEs for INPUTs as ISO-LATIN1. - FM * Added ".shtml" and ".htmlx" as text/html extensions in HTInit.c. - FM 10-18-95 * Made parsing of the name and address out of the NNTP From: header more reliable in HTNews.c. - FM * Added "LYNX_TEMP_SPACE" environment variable (Unix) or VMS logical, which if present at run time will be used instead of the the TEMP_SPACE definition in userdefs.h as the path prefix for temporary files. - FM 10-17-95 * Added TYPE attritute for OL, and coordinated it with the SEQNUM and CONTINUE attributes. The default TYPE is "1" (Arabic numbers), and SEQNUM values for it can range from -29997 to the system's maximum integer. The Alphabetic TYPEs are "A" (upper case) and "a" (lower case), and can range from 1 (" A." or " a.") to 18278 ("ZZZ." or "zzz."). The Roman TYPES are "I" (upper case) and "i" (lower case), and can range from 1 (" I." or " i.") to 3000 ("MMM." or "mmm."). SEQNUM values should always be Arabic, and will be converted to other types (e.g., SEQNUM="27" TYPE="a" will yield "aa." for the next LI). The CONTINUE attribute will cause the sequence and TYPE of the preceding OL to be continued for LIs in the current OL. - FM 10-16-95 * Treat a value of "*" for "no_proxy" as a global override of any existing proxy variables. - FM 10-15-95 * Deal with raw or decimal escaped non-breaking space characters in SGML_character() of SGML.c and LYUnEscapeEntities() of HTML.c. - FM 10-14-95 * Updated info about lynx-dev in lynx.man and lynx.hlp. - FM * Don't force LINKS_ARE_NUMBERED in dumps if -nolist was included. - FM * Output the References list for dumps with OL-style numbering. - FM * More tweaks of "anti-spoof" handling for telnet URLs. - FM 10-13-95 * Block direct access to the telnet prompt for telnet URLs entered without a host field. - FM * Include the TRUSTED flag in spawns for OpenVMS/AXP v6.1 or greater. - FM 10-12-95 * Convert any strings in news articles that look like URLs into links. - FM * Use the Followup header in news articles, if present, for followups. Otherwise, use the Newsgroups header. - FM * Ignore any invalid ISO 646 7-bit control characters or ISO 8859 8-bit control characters in SGML_character() of SGML.c. - FM 10-11-95 * Typo fix in HTTCP.c for non-MULTINET VMS builds. - Gary Chow (garyc@mrs.com) 10-09-95 * Assume the root as path in HTParse() of HTParse.c if the access and host but no path are given, and the access is http, https, or ftp. - FM 10-05-95 * Make sure the FREE(x) macro gets defined for HTTCP.c. - FM 10-04-95 * Mods in HTTCP.c to prevent string buffer overruns. - FM * Prevent possible string buffer underrun for terminal white space trims in GridText.c. - Renato Buda (renato@peoplebank.co.uk) 10-01-95 * Updated the listserv and archive addresses in the about and help files. - FM 09-30-95 * Added support for Windows_NT FTP servers. - FM * Added ability to send a self copy of mail via a Cc: header on Unix (sending of self copies is set via the mail software itself on VMS). - FM * Tweaks of SOCKET_ERRNO handling in HTTCP.C. - FM * Include unistd.h more consistently on Unix (via tcp.h) if NO_UNISTD_H is not defined. - FM * Modified the FreeBSD and NetBSD libwww Makefiles to use the CommonMakefile. - FM * Makefile addition (snake3) for the HP-UX purchased compiler. - Andy Finkenstadt (genie@panix.com) 09-29-95 * Deal with HTAlert.c function calls to LYgetstr(), e.g., for a password, when doing a -dump or -source non-interactive fetch. - FM * Output HTAlert() messages to both stderr and stdout in TRACE mode. - FM 09-28-95 * Added a description of the line editor's default key bindings to the help file set. - FM * Tweaks of the line editor. - FM * Declare DCLspawn_exception() in LYCurses.c as unsigned int only for DECC (otherwise as int, for VAXC and GNUC). - FM 09-27-95 * Added common line editor for forms and prompted queries, with configurable line editor key bindings. See LYStrings.h and LYEditmap.c for the default configuration. - DW & FM * Tweaks of build.com's symbol assignments when in batch mode. - MM 09-22-95 * Added ISO-8859-2 CharSet, and mods for Accept-Charsets handling based on patches from Mark Martinec (Mark.Martinec@nsc.ijs.si). - FM 09-19-95 * Tweaks of OL attribute handling. Allow negative SEQNUM values. Keep better track of CONTINUE versus non-CONTINUE OL sequences within nests. Allow CONTINUE in the first OL of a new nest, set to the last LI count of the previous nest (at any depth in that previous nest). - FM 09-17-95 * Tweak of LYUnEscapeEntities() in HTML.c. - DW & FM * Another tweak of groupid handling in LYShowInfo.c. - DW * More fixes of 7-bit character approximations. - DW * More help and about file tweaks. - DSL 09-16-95 * Added the HTML 3.0 DTD structures and definitions for DIV, and implemented its ALIGN and ID attributes. I think I have it behaving rationally if it is used together with CENTER, LEFT and/or RIGHT (Though they're all treated as DIVs by Lynx, and shouldn't be embedded in each other, somebody will do that anyway!. 8-). - FM * Added the HTML 3.0 DTD structures and definitions for FN (Footnote). It should be handled as a popup window, but for now, it's implemented as a labelled block and has the same style and behavior as a NOTE with an ID attribute. - FM * Some compilers can't handle the continuation line in yesterday's LYCurses.h. Made it one long line. - FM 09-16-95 * Further enhanced the online help and about files. - FM * Added -DNO_FILIO_H to Makefile for SCO. - FM * Worked in stuff from 14-Sep-95 lynx2-4-2 upgrade. - FM: -------------------------------------------------------- 09-06-95 * Added patch to compile Lynx on BSDI with Ncurses package. -RK 09-06-95 * Ported Lynx to DG-UX. - RK -------------------------------------------------------- 09-12-95 * Further modified HTNews.c so that it returns unmodified news messages when the display is toggled to source ('\') or when downloading them, so uuencoded messages always can be saved without corruption, and so I also changed the SCAN_FOR_BURIED_NEWS_REFS compilation default to TRUE. - FM * Simplified a compound if() in HTParse.c which may have been giving the AIX v4.1 compiler a headache. - FM 09-11-95 * Eliminated distinct style sheets for CAPTION and CREDIT so their content will inherit the current style, and added HTML_EnsureDoubleSpace() and HTML_ResetParagraphAlignment() in HTML.c for coping with the absence of distinct style sheets for those elements, and for FIG. 09-10-95 * Added SCAN_FOR_BURIED_NEWS_REFS configuration symbol in lynx.cfg, with a compilation default of FALSE, and a -buried_news switch for toggling the default. When TRUE, Lynx scans the bodies of news articles for references and converts them to news links, but creates false news links if any email addresses are enclosed in angle brackets, and can trash uuencoded messages. - FM * Eliminated distinct style sheet for FIG so its content will inherit the current style and display appropriately within lists. Should be OK if people use valid HTML 3.0 in it's content for non-graphic clients. - FM * Added links for the W3C HTML 2.0 and 3.0 specifications and for the HAL HTML validation service to the Lynx help file set. * Made the BOLD_NAME_ANCHORS compilation symbols FALSE by default. Most documents now include emphasis tags for NAME (ID) anchors if it's desired, because the most common graphic clients don't emphasize them by default, so we should adjust to that in Lynx as well (IMHO 8-). Added emphasis tags for the NAME anchors in the Lynx help files. - FM * Eliminated forced uppercasing of H1 headers. Most documents have mixed casing and we should preserve it (IMHO 8-). Added a BOLD_H1 configuration symbol, set FALSE by default, for making H1 headers bold even if BOLD_HEADERS is FALSE. Modify the two configuration symbols in lynx.cfg for the pattern or header emphasis which pleases you. - FM * Tweak of list paragraphing. Added HText_PeviousLineSize() in GridText.c for determining if the previous line had only non-printing characters. - FM 09-09-95 * Impelemented true paragraphing and the P ALIGN attribute within lists (UL, OL and DL blocks) and within ADDRESS blocks. Paragraphs within lists have one blank line inserted. Within ADDRESS blocks, a newline will be created if needed, but no blank lines are inserted. Use BR, not P, to force extra newlines within blocks. Do not place a P immediately following the LI or DD tags. Alignments of P blocks are done with respect to the "second line" margins of LI or DD elements. - FM 09-08-95 * Convert '~' to getenv("HOME") in file URLs whether or not DIRED_SUPPORT is defined. - FM * Tweak of TR and more tweaks of HR handling. Added HText_LastLineSize() and HText_TrueLineSize() functions in GridText.c for determining if lines have only non-printing characters in decisions on whether to insert additional newlines. - FM 09-07-95 * Act on Page-Up, Page-Down, Home, End, Find and Select in the form_getstr() editor (hoping they have their default mappings 8-). Also act on Remove and Control-D as delete keys in that line editor (as in the LYgetstr() line editor). - FM * Tweak of HR handling. - FM * Mods to prevent creating multiple copies of temporary printer files. - FM * More fixes for NeXT. Temporary files for VIEWER, DOWNLOADER or PRINTER commands on NeXT all have the ".html" default suffix replaced with ones indicative of the Content-type. - FM 09-06-95 * Mods to prevent creating multiple copies of temporary viewer or downloader files. - FM * Fixes for NeXT. - FM 09-05-95 * Enabled the -help switch when no configuration file is available and Lynx would otherwise exit (i.e., it now outputs the help message before it exits). - FM * Documented the -child switch. - FM * Fixed and documented the -nolog switch. - FM * Changed the -linknums switch to -number_links, fixed the code to work, and documented the switch. - FM * Made handling of escaped colons (\:) in VIEWER commands reliable. - FM 09-04-95 * Implemented the PLAIN attribute for UL, and the SEQNUM and CONTINUE attributes for OL. - FM * Updated the DTD structures and definitions for DD, DL, DT, LI, OL and UL to HTML 3.0, added LH, and implemented full HTML 3.0 ID handling for those, and B, BLINK, BR, CENTER, CITE, CODE, DFN, DIR, EM, FORM, KBD, I, LEFT, LISTING, MENU, PLAINTEXT, PRE, RIGHT, SAMP, STRONG, TT, U, VAR and XMP (some of which are obsoleted in HTML 3.0, but what the heck 8-). - FM 09-03-95 * Made bolding of NAME (ID) anchor contents configurable in lynx.cfg. - FM 09-02-95 * Tweaks of FIG and OVERLAY handling: Only put up [FIGURE] (and +[OVERLAY]) links if clickable_images is set. Assume P ALIGN="left" if contained text does not begin with an explicit tag that sets an alignment. - FM * Implemented full HTML 3.0 ID handling for IMG. - FM * Tweaks for FreeBSD. - Masafumi NAKANE (t94303mn@sfc.keio.ac.jp) 08-31-95 * Added support for using a TITLE attribute as the subject in anchors with a mailto HREF (A HREF="mailto:address" TITLE="RE: subject"). - FM 08-30-95 * Implemented full HTML 3.0 ID handling for A, ADDRESS, BLOCKQUOTE, BQ, CAPTION, CREDIT, FIG, H1 - H6, HR, INPUT, NOTE, OPTION, P, SELECT, TABLE, TD, TEXTAREA, TH and TR. - FM * Updated the DTD structures and definitions for ADDRESS to HTML 3.0. - FM * Block insertion of any escape sequence characters or substitutes when editing form INPUTs or TEXTAREAs. - FM 08-29-95 * Tweak of ALIGN attribute handling in paragraphs. - FM * Protect against hanging on escape sequences if received (illegally) in documents typed as text/plain or text/html. - FM 08-28-95 * Declared DCLspawn_exception() as an unsigned int to keep DECC happy. - FM 08-27-95 * Give LYUpload() a return value (because LYLocal.c has been testing for one all these years 8-). - FM * Force reload on return from 'o'ptions menu if HTfileSortMethod or keypad_mode are changed. - FM * Force no cache of keymap display whenever vi_keys or emacs_keys are changed. - FM * Added Remove and Control-D as Delete synonyms for removing characters to the left of the cursor in the LYgetstr() line editor, and Control-F as Right-arrow synonym for moving the cursor to the right. - FM 08-24-95 * Modified prompted string editing via LYgetstr() along lines in patch from PM (editing of form INPUT and TEXTAREA strings is unchanged). Here's how the prompted string editing works: Left-arrow and Backspace (Control-H) move the cursor to the left, and Right-arrow to the right, within the string. Characters are INSERTed at the cursor position. Delete removes characters to the left of the cursor. Home, Find and Control-A move the cursor to the beginning of the string. End, Select and Control-E move the cursor to the end. Control-U erases the string. Control-G cancels at any time. Return accepts if a string is present, or cancels if it was fully erased or never entered. A right-curley brace appears in the right-most column when the string has segment(s) scrolled off screen, and if left scrolled, the cursor sits on it for further editing with the above command keys (or acceptance via Return). Long strings scroll both left and right between the prompt string and right-curley brace. Had to modify 17 files to make this line editor crash safe (I hope people like it! 8-). - FM 08-22-95 * Use a macro in parse_arg() of LYMain.c to ensure proper handling of switches which take a value and might have a space instead of an '=' between the name and value. - DW * Insulate any system RTL's getline() from the one in HTInit.c. - DW * Enabled editing of titles when adding bookmarks. - FM 08-21-95 * Fixed the IBM PC character set in LYCharSets.c (Note: The PC-set has the currency symbol but it is a control character - ^O - so there is a chance that curses or the user's terminal may discard it. Did not fix the Icelandic characters). - DW * Check whether getpwuid() and getgrid() have returned NULL pointers in LYShowInfo.c. - DW * Break up the too elaborate, compound assignment statements in LYList.c so no compilers get tripped up by evaluation order effects. - DW * Worked in mods from DW to cope with CR, CRLF or LF all as EOL in HTML.c and GridText.c (not sure if they take into account all of the consequences of Lou's "big cheat" in GridText.c, but they appear to, so far). - FM * Explicitly preserve the Lynx bookmark file mode on Unix. - DSL 08-20-95 * More documentation and help updates. - FM 08-19-95 * Updated INSTALLATION and comments in userdefs.h and lynx.cfg. - FM * If save to disk was done via the download menu, and a VMS rename() attempt succeeded so we don't spawn a COPY, we no longer can access the file via the download menu, so pop in that situation. - FM * Worked in stuff from 16-Aug-95 lynx2-4-2 upgrade. Most had already been added to lynx2-4-FM. This is the new stuff. - FM: --------------------------------------------------- 08-16-95 * Applied patch from Peter van Heusden (pch@ucthpx.uct.ac.za) to fix a bug when lynx encounters an OPTION tag before the style is ever updated. - CL 08-09-95 * Added some tweaks to Makefile and LYCurses.h to get lynx to properly compile on ISC. Thanks to Robert Salter (salter1@master.nsbf.nasa.gov). --------------------------------------------------- 08-18-95 * Added a -validate switch for turning off everything except http URLs, helpfiles, and secure menus in Lynx. Can be used with -dump in CGI scripts, but is intended for use with anonymous telnet logins. In the latter case, the user can start with his/her server's or userdir homepage, and validate everything, while able to manipulate the display features (e.g., whether or not links are numbered) and turn on trace (Control-T, then Control-R to reload) when a "Bad HTML" document is encountered. The telnet approach is particularly useful when used with the 'l'ist feature. When used with -dump, compare it with versus without -nolist. - FM * Added a missing curley brace in EF's (08-16-95) patches. - FM 08-17-95 * Added HISTORICAL_COMMENTS symbol which if set TRUE in lynx.cfg will cause Lynx to revert to the "historical" behavior of treating any '>' as a comment terminator instead of (a valid) '-->', and a -historical switch for toggling the default behavior. - FM * Added a -nolist switch for turning off the link list feature in dumps. - FM * Modified SGML.c so that it still substitutes the expected end tag if a different one is encountered (e.g, due to a document having interdigitated instead of validly embedded tags), but doesn't do a wind down of the element stack. This gives it a better chance of recovering from bad HTML, and the sanity checks I've added thus far in HTML.c appear to still be adequate for avoiding crashes (we'll see 8-). - FM 08-16-95 * Mods to support within-document anchors in documents returned via lynxcgi scripts. - FM * Worked in EF's patches to handle changes of keymaps under DIRED_SUPPORT with OK_OVERRIDE, and to give the user some feedback during an Install command. - FM 08-15-95 * Don't include a Referer header for 'g'oto URLs. - FM * Added patches from PR for compilations with VMS port of GNUC: Modified several prototypes to avoid GNUC warnings about conflicts with ones in lib$routines.h, and added code in HTVMS_WaisUI.c to deal with an obscure glitch for GNUC v2.6.[123] and v2.7.0 (not present in v2.6.0 or earlier, and fixed in v2.7.1). - FM * Worked in code from PR as LYVMS_FixedLengthRecords() in HTFWriter.c to change attributes of binary files on VMS from Stream_LF to FIXED 512, no implied carriage control, best try contiguous. Replaces the spawn to execute FIXED512.COM. - FM 08-14-95 * Modified TEXTAREA handling to succeed or fail on bad HTML equivalently to Netscape. - FM 08-12-95 * Mods to avoid crashes and to do something reasonable with OPTION strings that are wider than the available popup window width. Truncation is indicated by omission of a terminating ']' in the window link, and the window, when popped up, is made equal to the screen width (but we can't wrap the strings within the window, so they're truncated if they still don't fit). - FM * Mods to handle INPUT fields that are packaged in PRE and would extend past the wrap column. No way to make that perfect without a major redesign, but it's better now. - FM 08-10-95 * Handle 'g'oto entries equivalently to STARTFILE and HOMEPAGE, i.e., if the user's entry isn't a URL, convert it to a file URL if it's a file or directory on the local system, otherwise convert it to an http URL. For example, "~/" will be converted to a file URL for listing the HOME directory (on both Unix and VMS), and "www.netscape.com" will become "http://www.netscape.com". - FM * Fix LYCurses.h to deal with definitions of TRUE and FALSE in cursesX.h on ultrix. - Brian Exelbierd (bex@ncsu.edu) * Made SYSTEM_MAIL, and MAIL_ADRS on VMS, configurable in lynx.cfg. - FM 08-08-95 * Fixed two initialization problems that could account for reports of inappropriate HEAD requests in pops of cached documents. - FM * More tweaks for coping with bad HTML. - FM * Fixed bug in code for bypassing bad SUFFIX: or VIEWER: entries. - FM 08-06-95 * Added code in GridText.c to deal with syntactically OK but symantically nonsensical uses of ALT="" in IMG tags (i.e., when the IMG is structured to provide the anchor for a link, and so the anchor ends up with nothing but nonprinting characters for bolding), and removed the forcing of an "[ISMAP]" pseudo-ALT in HTML.c. The show_anchor element in TextAnchor structures is now set to NO whenever an anchor does not have any printing characters. - FM * Modified HTML.c to issue only one "Bad HTML" statusline message per document (unless it's one of those unbelievably bad CGI script outputs that are functionally multiple, concatenated documents 8-), and similarly for "Table in Form" and "Form in Table" informational messages. - FM * Don't bother prompting whether to send a HEAD request for the current document if there are no links on the page (but still prompt if the user makes a HEAD request when positioned on an inappropriate form link). - FM 08-05-95 * Added code in SGML.c for storing Identfiers (e.g., !DOCTYPE) and Comments (i.e., tags beginning with !--) and for reporting them in trace mode. Serves as a model for actually using them someday (i.e, functions for analyzing them could be called where we presently just invoke a trace output to stderr). - FM 08-03-95 * Modified SGML.c to handle comments as in the current specs, and put Paul Gilmartin's (pg@sweng.stortek.com) TestComment.html in the test subdirectory. - FM * Added binary extensions in HTInit.c that were giving people problems on FTP servers. - FM 08-02-95 * Added explicit check for CMU in telnet support with SOCKETSHR-built images. - SB * Added -link switch for setting the count in lnk#.dat files with -crawl (needed if you interrupt a traversal and want to pick up again where you left off). - DM * More tweaks of -traversal code and Makefile. All known bugs appear to have been dealt with at this point. Updated lynx.man, lynx.hlp and help files to include the -traversal and -crawl switches. - FM 08-01-95 * Changed the SEQUENT compilation sympbol to PTX2 and added a ptx2 procedure to the Makefile for Sequent Symmetry DYNIX/ptx v2, because more current versions reportedly have solved the problems which the conditional compilation attempted to address. - FM * Force in the "[ISMAP]" pseudo-ALT if someone uses ALT="" for an IMG tag that has ISMAP specified. - FM * Tweaks of the -traversal code (still experimental). - DM & FM 07-31-95 * Worked in code from David Mathog (mathog@seqaxp.bio.caltech.edu) for implementing the TRAVERSAL function from old versions of Lynx, but via a command line switch (-traversal) instead of in a separately compiled executable, and for a CRAWL function, invoked via a command line switch (-crawl), which allows Lynx to be used as the front end for a Web Crawler. See CRAWL.announce for more information. - FM * More tweaks of LYCurses.c and LYCgi.c for GNUC on VMS. - SB * More tweaks of src/Makefile. - DSL 07-30-95 * Tweaks of yesterday's Makefile and descrip.mms files. - FM 07-29-95 * Tweak in HTFTP.c to ensure that Lynx doesn't sit around waiting for an FTP server's good-bye message if the server closes the connection itself and doesn't send one. - FM * Added GNUC support to the VMS descrip.mms files. - FM * Tweaks of HTWAIS.c socket handling on VMS (I can't reproduce a reported problem with SOCKETSHR/NetLIB, but these tweaks might help). - FM * Added my guesses at code for HTTelnet.c to implement telnet, tn3270 and rlogin support, if available, when building with SOCKETSHR/NetLIB on VMS. - FM 07-28-95 * Mods for Sequent Symmetry DYNIX/ptx - Mark Kolmar (mkolmar@ccs.nslsilus.org) * Added GL's lynxcgi patches posted to lynx-dev, plus some tweaks. - FM * Worked in GL's lynxcgi mods as in Lynx2-4-2: -------------------------------------------- Added George Lindholm's LYNXCGI feature. This allows lynx to bypass http daemons to run local CGI scripts using a URL of the form "lynxcgi:/path/cgi-script". To implement in Lynx, LYNXCGI_LINKS must be uncommented in userdefs.h and TRUSTED_LYNXCGI must be fixed in lynx.cfg. It doesn't handle redirection or mime-types and scripts should probably generate partial URLs when referring back to itself. If the file you're going after isn't an executable then it will be loaded as regular file. This makes it possible to go back and forth between cgi-scripts and .html files. I changed the way TRUSTED_LYNXCGIs are recorded because they don't work quite the same as TRUSTED_EXECs do. Also, George says it works fine on SunOS and Solaris, and it seems to work fine on Linux. - CL -------------------------------------------- * Don't block access to the download menu when both no_download and no_disk_save are set if any of the download commands have always_enabled set (ie. present a reduced menu, with those still available). - FM * More tweaks of help and html files. - DSL 07-26-95 * Added support for GNUC in the VMS .com files. Should now compile and link automatically for GNUC via build.com, but that needs testing. - FM * Reorganized VMS option files into ones for the transport and ones for the compiler, with corresponding updates of the .com and .mms files. - FM * Tweaks of mods for GNUC on VMS, based on further discussions with SB. - FM * Tweaks of -help output. - Daniel S. Lewart (d-lewart@uiuc.edu) 07-25-95 * Ugh!! Blew it for Unix when setting up the GLOBALDEF/GLOBALREF definitions in tcp.h for VAXC vs. DECC vs. GNUC on VMS this morning (I'm a night person 8-). - FM * Worked in code for compiling with the VMS port of GNUC, based on patches from Sterling Bjorndahl (bjorndahl@augustana.ab.ca) and advice from Pat Rankin (rankin@eql.caltech.edu). Needs testing, and the linking procedure still needs to be addressed explicitly. - FM * Prevent possibility of a null pointer dereference if an ISMAP anchor fetch fails. - David Trueman (david@cs.dal.ca) 07-21-95 * Added LYK_HEAD (mapped by default to ']') to send HEAD requests for the current document or link (always sent with LYforce_no_cache). - FM * More lynx.man, lynx.hlp, help file and documentation updates. - FM 07-19-95 * Put back "-mime_headers" with mods like those in lynx2-4-2, i.e., so that a source dump is forced. Both "-mine_headers" and "-head" show the status line as well as the MIME headers. - FM * Modified "-error_file" to show the complete status line, as well as the URL and METHOD, and to concatenate entries instead of creating separate files for each request. - FM * Updated the lynx.man, lynx.hlp and lynx_help files. - FM 07-18-95 * Changed "-mime_headers" to "-head" and implemented it as a HEAD request for fetching the MIME headers as text/plain. - FM 07-17-95 * Removed 00DIFFERENT from this distribution. - FM * Made use of _underline_ format in dumps optional via SUBSTITUTE_UNDERSCORES definitions in userdefs.h and/or lynx.cfg, and added a "-underscore" command line switch for toggling the default on or off. - FM * Use system("exec $SHELL") for spawning the default shell on Unix. - Paul Gilmartin (pg@sweng.stortek.com) * Fixed typo in check for news vs. nntp URLs in HTNews.c. - Wilson Cheung (wcheung@netcom.com) * Added code to the VMS setup() for dealing with curses conficts if someone used -post_data or -get_data without specifying -dump under conditions which require it, so it's not forced in LYMain.c as on Unix. If fact, -get_data and -post_data are very useful in interactive invokations. - FM * Fixed memory leak in the -post_data and -get_data handling. - FM * Added LYNX_HOST_NAME in userdefs.h and lynx.cfg for defining an alias which will be treated equivalently to "localhost" and HTHostName (the fully qualified domain name of the system running Lynx) in checks for URLs on the local host (e.g., when the -localhost switch is set). - FM * Added in or improved descriptions for the new switches in the Lynx command line help and Lynx_users_guide.html. - FM 07-16-95 * Tweaks of yesterday's startfile and -homepage mods, and added treatment of '~' as SYS$LOGIN when used as the lead character on VMS (e.g., on VMS as on Unix, lynx ~/ will create a listing of the login directory for the account running lynx). - FM * Worked in stuff from 13-Jul-95 lynx2-4-1 upgrade. Most had already been added to lynx2-4-FM. This is the new stuff. - FM: --------------------------------------------------- 07-13-95 * Added some command line patches from Peter Brooks - CL: (pbrooks@micromind.com). The new command lines are: -post_data, -get_data = send form data from stdin and dumps results. -auth=ID:PASSWD = sets authorization stuff at startup. -mime_header = prints mime header with -source. -noredir = prevents automatic redirection -error_file=file = prints HTTP status code to file. (Not sure of his motivation on this one, something to do with SlipKnot, I think.) (Replaced Peter's strdup()'s with more portable code. - FM) 07-11-95 * Added Erik Olson's (olson@phys.washngton.edu) patch to use the _underline_ format when using the -dump option. - CL (Kept the old code, #ifdef'ed out, to make this optional someday. - FM) 07-07-95 * Fixed a bug in local_dired. Specifically, a pointer to a fixed array was being fed into StrAllocCopy as the destination. Linux was choking on this although OSF/1 and AIX seemed to handle it better. - CL --------------------------------------------------- 07-15-95 * If a command line "startfile" and/or -homepage is not a URL, and can't be located as a file or directory on the local system, treat it as an http URL, e.g., www.wfeb.edu will be treated as http://www.wfeb.edu - FM 07-13-95 * Added nntp URL handling (nntp://news_host[:port]/path). Made it read access only (use news URLs for both read and post access). - FM 07-12-95 * Added code for proxying https and snews URLs. The Netsite proxy server can proxy them without need for SSL code in the clients themselves, i.e., for Lynx as publically distributed (need client-resident SSL code and tunneling for the CERN proxy server, sorry). - FM * Added the CONNECT protocol to our local code, so that SSL URLs can be tunneled through proxy servers, and reorganized some code so that patches for the SSL hooks can be applied easily if NSA regulations are relaxed. - FM 07-11-95 * More tweaks of alignment code. - FM * Fixed bad code for removing trailing white space in GridText.c, LYrcFile.c, LYReadCFG.c and LYUtils.c. - FM * Added snews and nttp protocols, which simply inform the user that they aren't implemented. - FM * The claim is that even mere hooks to the RSA and SSL libraries are objectionable to the NSA, so I removed then from the public distribution, but left in the https protocol, which simply informs the user that it isn't implemented. - FM 07-08-95 * Worked in Lou Montulli's (montulli@netscape.com) code for https URL handling into the Common Library. To actually use it, you have to get the RSA and SSL libraries, which are restricted to US citizens (it works if you are and do 8-). I can't include those in this distribution, because by US law that would in turn restrict it to US citizens. - FM * Tweaks of paragraph alignment code. - FM 07-07-95 * If we are not allowed to change the status of the "lynxexec execution of links" from the option screen then we shouldn't be allowed to change it from the .lynxrc file either. - GL * Added George Lindholm's patch to add uudecode support to Lynx's file manager. Unfortunately, uudecode puts the uudecoded file in the current working directory, namely the directory where lynx is started. I haven't thought of a workaround yet, so I made lynx print a statusline message informing the user. - CL 07-06-95 * Modified redirection-handling code in HTTP.c to ensure that we get all of the headers before trying to track down the Location: header. - FM * For move's or rename's in the local DIRED code, don't write the new file name into the same buffer as the old. - Earl Fogel (fogel@duke.usask.ca) 07-05-95 * Added GL's mods to use a stream-based procedure for displaying the current Lynx keymap. Faster and more efficient than the temporary file-based procedure. - FM 07-04-95 (Enjoy the fireworks!!! 8-) * More mods of SGML/HTML parsing to help recover from bad HTML. - FM * Fixed some cryptic initialization problems in the Common Library's centering and right alignment code, that we're now using, by changing the malloc's in HTChunk.c to calloc's. - FM * Secured some unsafe code in the LYstrncpy() function. - FM * Increased the connect() and select() while()-looping limit in HTTCP.c to 30,000 tries. - FM * Tweak of HR WIDTH attribute handling. - FM 07-03-95 * Updated the DTD structures and definitions for HR to HTML 3.0, plus its Netscape WIDTH and SIZE attributes, and implemented WIDTH, e.g., HR WIDTH="50%" yields a centered horizontal rule half the width between the current left and right margins. - FM * Fixed problem of header end tags not yielding line breaks when embedded in CENTER, LEFT or RIGHT tags. - FM 07-02-95 * Added MAKE_PSEUDO_ALTS_FOR_INLINES in userdefs.h and lynx.cfg which can be defined FALSE to treat inlines without an ALT string as having ALT="" instead of inserting the pseudo-ALT string "[INLINE]" into the document. The configuration file default can be toggled via a -pseudo_inlines command line switch, and the user can toggle the inclusion of pseudo-ALT strings on or off at run time via LYK_INLINE_TOGGLE (mapped by default to '['). - FM * Made the -image_links command line switch a toggle for the configuration file default setting. - FM * Enabled processing of forms that use TABLE for formatting. I don't see any risk of crashes, and they might end up usable. Messages warn the user that the display of the form may be strange. - FM * Relaxed anti-crash protections for forms with bad HTML (usually due to interdigitated instead of embedded tags, written by providers with Netscape or Mosaic clients, which are insensitive to such fundamentally bad HTML). I got the code to still work with several bad forms on the Net, and if a crash should occur, the user has been tipped off via the statusline or trace message about the nature of the problem. - FM 07-01-95 * Restored the meaning of the P element to be the beginning of a paragraph, updated its structures and definitions in the DTD to HTML 3.0, and implemented its ALIGN attribute (left, center, right). Note that it no longer forces double spacing (you'll get the spacing defined in the stylesheet for the current element, which may or may not be double) and empty paragraphs (serial Ps) will not yield additional newlines (use serial BRs for that). - FM * If both download options and disk saves are restricted, don't fetch binary files with a download offer when their links are activated (just issue a statusline message that the file can't be displayed), and issue a "disabled" statusline message for any overt 'd'ownload attemps. - FM * For disk saves in LYDownload.c, on VMS attempt a rename() first, and then a spawned DCL copy if that fails. - FM * Added memory exhaustion checks for all mallocs, reallocs and callocs in the LYfoo modules. - FM * Added CL's realloc() substitute for AIX and ultrix in GridText.c. - FM * Map extensions .html3 and .ht3 to text/html in HTInit.c. - FM 06-29-95 * Added code to enable creation of links for all images. Can be made the default by setting MAKE_LINKS_FOR_ALL_IMAGES to TRUE in userdefs.h and/or lynx.cfg (not advised). Can be implemented for the session via a command line switch, -image_links, e.g., use lynx -dump -image_links to get links for all images, as well as standard links, listed in the output. Can be toggled on and off at run time via LYK_IMAGE_TOGGLE (mapped by default to '*'). Use that in conjuction with the LYK_LIST command to get a list of links that includes all images, e.g., for adding them as bookmarks. The toggle also invokes a reload, so that the change will be implemented for the current and any future documents, but if you return to cached documents, those will need to be reloaded explicitly. See comments in userdefs.h and lynx.cfg for more information. - FM * Don't restrict use of Control-T for toggling trace mode to advanced usermode (i.e., make it available in all usermodes, so people might follow the instructions in "BAD HTML" statusline messages to check the document in trace mode). - FM * Modified LYList.c to indicate the anchor NAME/ID, if present, following the TITLE, if known, in interactive 'l'ists. * Modified SGML.c to treat '>' as both a close-double-quote and close-tag. Now Lynx acts like Netscape, in that respect, so all that bad HTML Netscape users are generating will not bother Lynx. - FM 06-28-95 * Oops, missed an initialization in this morning's centering and right alignment mods. - FM * Fixed up HTML.c to bypass HTML 3.0 attribute checks for start tags generated by the Common Library's non-http access types (gopher, ftp, news, wais) Could crash, otherwise. - FM * Fixed up GridText.c code to take non-printing control characters properly into account when formatting centered or right-aligned text. - FM * Mods to improve appropriate carryover or cancelling of alignment attributes across successive elements. - FM * Implemented Netscape LEFT and RIGHT extensions, homologously to CENTER. - FM * Implemented Netscape BLINK extension as HT_UNDERLINE. - FM 06-26-95 * Updated the DTD structures and definitions for H1 - H6 to HTML 3.0 and implemented their ALIGN attribute (left, right and center). - FM * Implemented the Netscape CENTER extension. - FM 06-25-95 * Updated the DTD structures and definitions for FORM, INPUT, TEXTAREA, SELECT and OPTION to HTML 3.0. - FM * Implemented the HTML 3.0 DISABLED attribute for FORM elements. - FM * INPUT type "scribble" implemented as "text" according to the HTML 3.0 recommendation for non-GUI clients. - FM * Added protections against problems with INPUT types "range" and "file" until they're implemented (will be tricky, but do-able 8-). - FM 06-23-95 * Added all ISO8859-1 entities to the DTD. - FM 06-22-95 * Updated the DTD structures and definitions for A and IMG to HTML 3.0, and implemented their ID attribute. - FM * Tweaks of FIG handling. - FM * It is somehow inappropriate to teach our users to write correct HTML and to tell them to always check it before publishing, when Lynx's on-line help gives such a bad example :-} (not to mention versions from a couple of months back). Better now. - Mark Martinec (Mark.Martinec@nsc.ijs.si) 06-20-95 * Made the DTD structures and definitions for the HTML 3.0 elements BQ, CAPTION, CREDIT, FIG, NOTE and OVERLAY complete, and added those for STYLE, TABLE, TD, TH and TR. * Tweaks of yesterday's HTML 3.0 additions (still just "first pass"). - FM * Added code for avoiding potential problems with stylesheets and tables in HTML 3.0 documents. - FM 06-19-95 * Added "first pass" handling of HTML 3.0 elements BQ, CAPTION, CREDIT, FIG, NOTE and OVERLAY. - FM 06-17-95 * Close the configuration file on completion of the big while() in LYReadCFG.c. - PM * Added 00DIFFERENT to keep track of files in this code set which presently differ from those in the latest development code set at UKans (currently, lynx2-4-1.zip of 15-Jun-95). - FM * Tweak of the pseudo-toolbar code. The 'l'ist command now displays the TITLE (or RelValue, if TITLE is defaulted) of those links if they have never been accessed, or their actual HTML titles if accessed, at the top of the links list, so you can use that command instead of LYK_HOME to reach the toolbar links at any time, and then left-arrow to where you were in the current document instead of having to page back down to that location. - FM 06-16-95 * Added LINK REL="RelValue" HREF="foo" TITLE="TitleValue" HTML 3.0 handling (as in http://www.hpl.hp.co.uk/people/dsr/html3/dochead.html of 28-Mar-95). The HREF and REL values are required (the LINK will be ignored if either is missing or has a zero-length value). TITLE is optional, i.e., the RelValue will be used as the link name if TITLE is omitted. Currently registered toolbar RelValues are: Home, ToC, Index, Glossary, Copyright, Up, Next, Previous, Help, and Bookmark. The Bookmark links are intended to have TITLEs (e.g., "Order Form"). The others have RelValues that yield self-evident link names. The LINKs should be placed in the HEAD section, so they'll be displayed in a manner simulating a toolbar (but not a real one, since we don't have Windows and mouse support; use your LYK_HOME command to access it at any time 8-). The BODY should have a line-breaking element (e.g, H1) to set them off. For now, the Banner RelValue is treated like another toolbar element. The StyleSheet RelValue is ignored, since we don't yet have loadable stylesheet handling. - FM * Fixed up the 06-13-95 NO_ANONYMOUS_EMAIL patch to be appropriate for VMS - FM. 06-14-95 * Added LYK_LIST command ('l' or 'L'; must be uppercase if VI keys are on) for creating an ACTIVATEable list of references (links) in the current document. If LINKS_ARE_NUMBERED is on, it's a UL, otherwise it's an OL. Visited links have the TITLE displayed, otherwise the HREF is displayed. - FM * Added code to append a list of references (links), if present in the document, when -dump is used. Dumps are done with LINKS_ARE_NUMBERED turned on. The reference list is numbered, and always shows the HREFs, so that they can be referenced to the links in the document. - FM * Updated help files. - FM --- lynx2-4-1 on ftp2.cc.ukans.edu (added to lynx2-4-FM on 06-16-95) 06-13-95 * Added George Lindholm's patch to add -r (recurse) to the zip call in DIRED. - JP 06-12-95 * Added George Lindholm's new file permission patch. Here's his description: "Here is a rewamped version of my earlier file permission patch. This version uses a html page to prompt for user input (rather than having the user enter a obscure unix chmod string) using checkboxes." - JP * Added George Lindholm's addition of a compiler flag (NO_ANONYMOUS_EMAIL). If NO_ANONYMOUS_EMAIL is set the user will not be able to add their own from header. This will only work if the mail package being used will add this information. - JP --- lynx2-4-1 on ftp2.cc.ukans.edu 06-09-95 * Replaced info.cern.ch with www.w3.org in html and make files. Designated this code as 2.4-FM, for local use. - FM --- STARTING 2.4-FM --- --- Rename of Lynx2-3-FM and release as Lynx2-4 (08-June-1995) --- (see CHANGES2-4 and CHANGES2-3) PK0]Kdocs/README.TRSTnu[Tabular Support for Simple Tables ================================= Some definitions first: * NO table support What it says. :) Table related tags are treated like other completely unrecognized tags. Only listed for completeness, this does not describe Lynx. * MINIMAL table support Table related tags are recognized, and are used to separate the contents of different cells (by at least a space) and rows (by a line break) visibly from each other. * LYNX minimal table support (LMTS) The minimal table support as implemented by Lynx up to this point, also includes the way ALIGN attributes are handled on TABLE, TR and other specific tweaks (e.g. handle TABLE within PRE specially). LMTS formatting is briefly described in the Lynx User Guide, see the section "Lynx and HTML Tables" there. (The Users Guide has not yet been updated for tabular support.) * TABULAR support for tables Support for tables that really arranges table cells in tabular form. * Tabular Rendering for SIMPLE Tables (TRST) Tabular support for some tables that are 'simple' enough; what this code change provides. One basic idea behind providing TRST is that correct tabular support for all tables is complex, doesn't fit well into the overwhelmingly one-pass way in which Lynx does things, and may in the end not give pleasant results anyway for pages that (ab-)use more complex table structures for display formatting purposes (especially in view of Lynx limitations such as fixed character cell size and lack of horizontal scrolling; see also emacs w3 mode). Full table support within Lynx hasn't happened so far, and continues to seem unlikely to happen in the near future. The other basic idea is the observation that for simple tables, as used mostly for data that are really tabular in nature, LMTS rendering can be transformed into TRST rendering, after parsing the TABLE element, by two simple transformations applied line by line: - Insert spaces in the right places. - Shift the line as a whole. And that's exactly what TRST does. An implementation based on the simple observation above is relatively straightforward, for simple tables. On encountering the start of a TABLE element, Lynx generates output as usual for LMTS. But it also keeps track of cell positions and lengths in parallel. If all goes well, that additional information is used to fix up the already formatted output lines when the TABLE ends. If not all goes well, the table was not 'simple' enough, the additional processing is canceled. One advantage is that we always have a 'safe' fallback to well-understood traditional LMTS formatting: TRST won't make more complex tables look worse than before. What are 'simple' tables? A table is simple enough if each of its TR rows translates into at most one display line in LMTS formatting (excluding leading and trailing line breaks), and the width required by each row (before as well as after fixup) does not exceed the available screen size. Note that this excludes all tables where some of the cells are marked up as block elements ('paragraphs'). Tables that include nested TABLE elements are always specifically excluded, but the inner tables may be subject to TRST handling. Also excluded are some constructs that indicate that markup was already optimized for Lynx (or other browsers with no or minimal table support): TABLE in PRE, use of TAB. The description so far isn't completely accurate. In many cases, tables are not simple enough according to the last paragraph, but parts of each TR row can still benefit from some TRST treatment. Some partial treatment is done for some tables in this grey zone, which may or may not help to a better display, depending on how the table is used. This is an area where tweaks in the future are most expected, and where the code's behavior is currently not well defined. One possible approach: - The table is 'simple' according to all criteria set out in the previous paragraph, except that some cells at the beginning and/or end of TR rows may contain block elements (or other markup that results in formatting like separate paragraphs). - There is at most one range of (non-empty) table cells in each row whose contents is not paragraph-formatted, and who are rendered on one line together by LMTS, separate from the paragraph-formatted cells. Let's call these cells the 'core' of a row. Fixups are then only applied to the text lines showing the 'core' cells. The paragraph-formatted cells are effectively pulled out before/after their row (no horizontal space is allocated to them for the purpose of determining column widths for core line formatting). This is expected to be most useful for tables that are mostly simple tabular data cells, but with the occasional longer text thrown in. For example, a table with intended rendering: -------------------------------------------------------- | date | item no. | price | remarks | |--------|--------------|---------|----------------------| | date-1 | item #1 | $0.00 | | |--------|--------------|---------|----------------------| | date-2 | item #2 | $101.99 | A longer annotation | | | | | marked up as a block | | | | | of text. | |--------|--------------|---------|----------------------| | date-3 | long item #3 | $99.00 | | -------------------------------------------------------- It may now be shown by Lynx as ................................................. date item no. price remarks date-1 item #1 $0.00 date-2 item #2 $101.99 A longer annotation marked up as a block of text. date-3 long item #3 $99.00 ................................................. As can be seen, this is still quite far from the intended rendering, but it is better than without any tabular support. Whether the code does something sensible with "grey area" tables is up for testing. Most of the typical tables in typical Web pages aren't used in a way that can benefit from the TRST approach. Parts of such tables may still end up getting shifted left or right by the TRST code when that doesn't improve anything, but I haven't seen it make things really worse so far (with the current code). TRST and Partial Display ------------------------ [ Partial display mode is the feature which allows viewing and scrolling of pages while they are loaded, without having to wait for a complete transfer. ] During partial display rendering, table lines can sometimes be shown in the original formatting, i.e. with horizontal fixups not yet applied. This is more likely for longer tables, and depends on the state in which partial display 'catches' the TRST code. Sometimes the display may flicker: first the preliminary rendering of table lines is shown, then after loading is finished it is replaced by the fixed-up version. I do not consider this a serious problem: if you have partial display mode enabled, presumably you want to be able to see as much data as possible, and scroll up and down through it, as early as possible. In fact, the approach taken keeps Lynx free from a problem that may graphical browsers have: they often cannot render a table at all until it is received in full. ------------------------------------------------------------------------ To summarize: - TRST is a solution that works in many cases where lack of tabular support was most annoying. - TRST doesn't implement a full table model, and it is extremely unlikely that it will ever be the basis for that. Keep on exploring external solutions, or perhaps waiting for (better: working on) a more fundamental redesign of Lynx's rendering engine. Klaus Weide - kweide@enteract.com 1999-10-13 PK0]RZZdocs/CRAWL.announcenu[The TRAVERSAL code from old versions of Lynx has been upgraded by David Mathog (mathog@seqaxp.bio.caltech.edu) so that it works again, can be implemented via a command line switch (-traversal) instead of via a compilation symbol for creating a separate Lynx executable as in those previous versions, and can be used in conjunction with a -crawl switch to make Lynx a front end for a Web Crawler. Usage: lynx [-traversal] [-realm] [-crawl] ["startpage"] Added switches are: -traversal Follow all http links derived from startpage that are on the same server as startpage. If startpage isn't specified then the traversal begins with the default startfile or WWW_HOME. -realm Further restrict http links to ones in the same realm (having a matching base URI) as the startpage (e.g., http://host/~user/ will restrict the traversal to that user's public html tree). -crawl With [-traversal] outputs each unique hypertext page as an lnk###########.dat file in the format specified below. With [-dump] outputs only the startpage, in the same format, to stdout. Note on startpage: If a startpage is specified and contains any uppercase characters, on VMS it should be enclosed in double-quotes. The code that extracts the access and host fields from startpage for comparsions with links to ensure they are not on another server, and the comparisons with already traversed links, are case sensitive, and the startpage will go to all lowercase on VMS if no double-quotes are supplied, such that it might be treated as a new link if encounted with uppercase letters. Files created and/or used with the -traversal switch, based on definitions in userdefs.h: TRAVERSE_FILE (traverse.dat): Contains a list of all URLs that were traversed. Note that if a URL appears in this file it will not be traversed again (important if runs are started and stopped). Placing an entry in this file BEFORE the run will block traversal of that URL. Unlike reject.dat a final * has no effect (see below). Note that Lynx internal client-side image MAP URLs will be included in this file (e.g., LYNXIMGMAP:http://server/foo.html#map1), in addition to the "real" (external) http URLs. TRAVERSE_FOUND_FILE (traverse2.dat): Contains a list of all URLs that were traversed, in the order encountered or re-encountered (but not re-travered) during a traversal run, and the TITLEs of the documents (separated from the URLs by TABs) A URL and TITLE may be present in this list many times. To simplify the list, on VMS use: sort/nodups traverse2.dat;1 ;2 Note that the URLs and TITLEs of the Lynx internal client-side image MAP pseudo-documents will not be included in this file, though "traversed", but only the http URLs and TITLEs derived from the MAP's AREA tag HREFs that were traversed. TRAVERSE_REJECT_FILE (reject.dat): Contains a list of URLs that have been rejected from the traversal. Once a URL has been entered in this list, it will not be traversed. URLs that end in a * will cause rejection of all URLs that match up to the character before the *. So for instance, to reject all htbin references on a site put this line in the reject.dat file BEFORE starting the run: http://www.site.wherever:8000/htbin* TRAVERSE_ERRORS (traverse.errors): A list of links that could not be accessed or had an unknown status returned by the http server. If the owner of the document containing the link is know via a LINK REV="made" HREF="mailto:foo" in it and the MAIL_SYSTEM_ERROR_LOGGING was set true in userdefs.h or lynx.cfg (not recommended!!!), a message about the problem will be mailed to the owner as well. Files created during traversals if the -crawl switch is included with the -traversal switch: lnk########.dat Numbered output files containing the contents of traversed hypertext documents in text format. All hypertext links within the document have been stripped, and the URL and TITLE of the document are recorded as the first two lines, e.g., for the seqaxp.bio.caltech.edu home page the first two lines will be: THE_URL:http://seqaxp.bio.caltech.edu:8000/ THE_TITLE:SAF Web server home page The VMSIndex software is being adapted to use this information to extract the corresponding URL and TITLE for use in indexing the lnk########.dat files, e.g.: $ build_index - /url=(text="THE_URL:") - /topic=(text="THE_TITLE:",EXCLUDE) - /output=INDEX_NAME - lnk*.dat A clever person should be able to figure out a way to index the lnk########.dat files on Unix as well. If you want the hypertext links in the document to be numbered, include the -number_links switch. By default, this will cause the list of References (URLs for the numbered links) to be appended as well. If you want numbered links but not the References list, include the -nolist switch as well. Note that any client-side image MAP pseudo documents that were "traversed" will not have lnk########.dat output files created for them, but output files will be created for "real" documents that were traversed based on the HREFs of the MAP's AREA tags. This functionality is still under development. Feedback and suggestions are welcome. PK0]פ docs/SOCKETSHR.announcenu[LYNX SUPPORT FOR SOCKETSHR/NETLIB 28-AUG-1996 --------------------------------- What is SocketShr? ------------------ SOCKETSHR is Eckhart Meyer's socket library interface to the MadGoat NETLIB package, which provides a vendor-independent interface to the VMS TCP/IP transports. Using this, the same image will run over any of the available packages, including UCX, Multinet, CMU, Pathway access and TCPWARE. SocketShr and NETLIB are separately available libraries that MUST be installed before LYNX can use them. How to get NETLIB and SOCKETSHR ------------------------------- FTP: ftp://ftp.kcl.ac.uk/default/socketshr.* ftp://ftp.wku.edu/fileserv/socketshr.zip ftp://ftp.spc.edu/macro32/savesets/socketshr.zip ftp://ftp.kcl.ac.uk/madgoat/netlib.* ftp://ftp.wku.edu/madgoat/netlib017.zip ftp://ftp.spc.edu/macro32/savesets/netlib017.zip By E-Mail: send the following commands in a mail message: SEND SOCKETSHR.PACKAGE SEND NETLIB.PACKAGE To: vmsserv @ kcl.ac.uk Other server's may also contain these packages. NETLIB is copyright of MadGoat Software; SOCKETSHR is copyright of Eckhart meyer. Preliminary Setup of SOCKETSHR ------------------------------ Once SOCKETSHR has been installed, TWO logical names should be defined: SOCKETSHR Point to the appropriate shareable image SOCKETSHR_LIBRARY Point to the directory containing SOCKETSHR.H and IOCTL.H Both should be defined /system /exec Building LYNX ------------- Run the BUILD.COM procedures and select the SOCKETSHR_TCP option. This will build an image that will run over the SOCKETSHR/NETLIB routines. Andy Harper Kings College London A.Harper@bay.cc.kcl.ac.uk PK0]Vwwdocs/CHANGES2.6nu[--- Rename of Lynx2-5FM and release as Lynx2-6 (02-Sep-1996) --- ============================================================================== 09-02-96 ---- Release of Lynx2-6 ---- * More expansions of the online 'h'elp files. - FM * Updated the PROBLEMS file. - FM 09-01-96 * More expansions of the online 'h'elp files. - FM * Tweaks of list handling. - FM * Miscellaneous code cleanups and annotations. - FM 08-31-96 * Further updates and expansions of the online 'h'elp files. - FM * Tweaks of alignment handling with bad HTML. - FM * Added JIS X 0201 Japanese Kana string support. - TA & FM 08-30-96 * Further updates and expansions of the online 'h'elp files. - FM * Typo fixes in the help and doc files. - LWV * Tweaks of ENCTYPE handling for FORM submissions. - FM 08-29-96 * Today's distribution is a pre-release of v2.6. The projected official release date is 09-02-96. * Tweaks of numeric character reference handling. - FM * Typo fix in LYShowInfo.c. - IC 08-28-96 * Added handling of ENCTYPE="application/sgml-form-urlencoded" in FORMs as a directive to use semi-colons instead of ampersands as name=value separators, and to indicate that as the Content-Type for POSTs. - FM * Convert ampersands in addresses and link names, and angle-brackets in link names, to SGML entities when creating bookmarks and showinfo ('=') link 'l'ist, client-side-image-map, and history list text/html streams or temporary files. - FM * More SGML compliance mods for the handling of attribute values which represent URLs or URL components. - FM * Tweaks of form INPUT, TEXTAREA, SELECT and OPTION handling. - FM * Check EAGAIN on socket connect or select attempts for all platforms and flavors. - FM * Include both and in tcp.h for AIX. * Adding warning and info in the INSTALLATION file and userdefs.h on how to cope with telnetd environment variable spamming for anonymous accounts running Lynx captively. - FM 08-24-96 * Enhancements of the History List handling. Show each link's actual address in addition to the titles, since the actual addresses can't be determined via showinfo or the 'l'ist display, and links in the History List derived from searches can have the same titles but different searchparts or hidden content appended. If a link in the History List is activated, is still cached, has POST content, and ALWAYS_RESUBMIT_POSTS was configured off (as recommended) and wasn't toggled on via -resubmit_posts, prompt the user whether to resubmit the form (versus retrieve the cached rendition from the previous submission). We don't bother prompting on PREV_DOC ("back") fetches, and still resubmit forms with POST content whenever their submit buttons are activated, i.e., regardless of whether ALWAYS_RESUBMIT_POSTS has been configured or toggled on. - FM * If a user attempts to add a bookmark while viewing a document returned via a form submission with POST content, and it contains links, offer the current link with it's link name for editing. Otherwise, display a statusline message that documents from forms with POST content cannot be saved as bookmarks. - FM 08-23-96 * Added UP_HALF and DOWN_HALF commands, mapped by default to '(' and ')', for going back or forward half a page in the document. These are complementary to UP_TWO and DOWN_TWO, for going back or forward two lines (remember to use the 'K'eymap command for a list of all of the keystroke command bindings currently in effect, since they may have been changed via lynx.cfg from the defaults described in the online 'H'elp). - FM * Made the Control-A and Control-E keys default synonyms for HOME and END, complementary to their use for going to the beginning or end of the line when using the line editor. - FM * Don't lose track of source versus present mode on returns from temporary menu files to documents derived from forms with method POST. - FM * Ugh, I had deleted one too many lines from HTTP.c when stripping out my SSL hooks for the distribution copy (no wonder the Authorization mods worked fine for me but nobody else 8-). - FM 08-22-96 * Added handling of named entities and numeric character references in the values of most of the non-URL attributes (we don't waste overhead doing that for the values of simple attributes, like ALIGN, which have designated strings). - FM 08-21-96 * Safely handle named entities and numeric character references in the values of BASE, LINK, HREF, SRC, ACTION, DATA, CODEBASE and CODE attributes, and in the URL field for the CONTENT of META with a "Refresh" HTTP-EQUIV or NAME. They are converted in relation to the "ISO Latin 1" Character Set array regardless of the selected Character Set (except that nbsp and shy remain 160 and 173), then 8-bit translations are hex escaped (as they should have been in the markup 8-), and ESC is hex escaped or omitted depending on whether a CJK character set has been selected. There's no way to do it such that the resolved URL always will be valid no matter what yoyos or CGI scripts put in document instances, but this strategy maximizes the chances while making sure no "dangerous" characters, based on the selected Character Set, are ever sent to the screen (it used to be HyperText Markup Language, not HyperGraphic Markup Language 8-)- FM * Allow Control-G or a zero-length username or password to act as a cancel of the request (and restoration of the current document) when an http server invokes prompting for Authorization. - FM * When using a proxy server, report the target host instead of the proxy in prompts for Authorization. - FM * Show MIME types of files, if known, whenever a download offer is forced, regardless of why it was forced (i.e, not only for mismatches between the document's charset and the selected character set). - FM 08-20-96 * Yet more tweaks of MIME header parsing. - FM 08-19-96 * Enhancements of the news gateway. - FM * Tweaks of Content-Type and charset handling. - FM * Tweaks of MIME header parsing. - FM 08-18-96 * Tweaks of the news gateway and its documentation. - FM 08-17-96 * Added overt (rational 8-) handling of all status codes that might be returned (appropriately or inappropriately 8-) from HTTP/1.1 http servers, and massively annotated the code in HTTP.c. - FM * Added parsing in HTMIME.c, and at least trace mode reporting, for all http server reply and entity headers as in the 08-12-96 HTTP/1.1 draft. We should not get many of them, unless we declare ourselves as an HTTP/1.1 client and send the appropriate request headers, but they're all available now for use as more HTTP/1.1 features are added. - FM 08-16-96 * Added handling of "Pragma: no-cache" or "Cache-Control: no-cache" headers from http servers, and polished up the code for handling them via META directives. - FM 08-15-96 * Modified form handling so that Lynx always resubmits forms if their method is POST, even if their content was not changed, when their submit buttons or submitting text input are activated. Changed the ALWAYS_RESUBMIT_FORMS compilation and configuration definitions, and -resubmit_forms command line toggle, to ALWAYS_RESUBMIT_POSTS, and -resubmit_posts. When FALSE, you still get the previously returned document from a POSTed form if that document had links which you activated, and then go back with the PREV_DOC command or via the history list. If set TRUE, the form will be resubmitted under those circumstances as well. Documents returned by forms with method GET still require use of the RESUBMIT command to resubmit if the forms' content was not changed, and forms with a mailto action still always mail the content on activation of the submit button or submitting text input (no document is returned, so the PREV_DOC command and history list behaviors are irrelevant). - FM * Use space to plus conversions for values of submitted form content (Ugh, Lynx has been using %20 all these years! It worked because they are unescaped to space, anyway. 8-). - FM * Polished up and massively annotated the redirection handling code. If a user approves redirection of a form with POST content, it will not be freed and the submission will not be converted to a contentless GET request unless the status was 303 (See Other). For 300 (Multiple Choices), the returned document is offered, which should include links with descriptions of their media types. The returned document (if any) is now displayed for any redirection status code if no Location: header was present, and for unknown 3xx codes (i.e., greater than 305). If Lynx gets an inappropriate 304 (Not Modified), it switches to HEAD mode and displays the status line, and anything else returned by the server, as text/plain. A 301 (Moved Permanently) will be treated as 302 (Moved Temporarily) for form submissions with POST content. Otherwise, Lynx will use the new URL for the remainder of the current session (users will have to do a 'r'emove and 'a'dd for their bookmarks themselves, for now). A 305 (Use Proxy) will not be honored if Lynx is already using a proxy, and instead the returned document will be displayed. The limit on serial redirections was dropped from the current 10 to 5, as recommended in the August 10, 1996 HTTP/1.1 draft. - FM 08-13-96 * Mods to accommodate the HTTP/1.1 300 - 305 Redirection status codes, and to require user confirmation for any redirection of POST content. - FM * Tweaks of OBJECT handling. - FM 08-12-96 * Implemented all aspects of OBJECT that make sense for a text client. Will descend though nested OBJECTs. Can be used for presenting PRE formatted character-cell versions of images, and appears to handle all likely uses of the SHAPES and USEMAP attributes in OBJECTs. The pseudo-ALTs for links to non-script DATA values (i.e, the for-GUI sources) when offered as links (e.g., in clickable_images mode), if not a markup-specified string (e.g., based on a TITLE attribute), are (IMAGE) or (OBJECT), based on whether the nature of the source can be inferred from the context, or an explicit TYPE attribute in the OBJECT start tag. The use of parens instead of square-brackets indicates that the links are for OBJECTs as opposed to IMGs. - FM * Tweaks of SELECT and OPTION handling. - FM 08-09-96 * Lots more stuff added to the online help files. - FM * Added state code in SGML.c to avoid getting tripped up by any single or double quotes in CJK escape sequences that are within single or double quoted attribute values. - TA * Restrict resetting the Kanji code flag on white space to Japanese (i.e., not also Chinese, Taipai, or Korean). - TA * Added handling of EPLF lines (with local time) for the FTP gateway. - D. J. Bernstein (djb@koobera.math.uic.edu) 08-08-96 * Added code for handling captured OBJECT content with the SHAPES attribute equivalently to our handling of FIG, and with USEMAP and/or ISMAP content equivalently to our handling of IMG. * Added code for capturing potentially nested container elements that require pre-processing, e.g., OBJECT, and for passing the processed markup back to the SGML parser to be inserted within the ongoing HTML stream. * Added CHECK_EAGAIN Makefile definition for non-SVR4 Unix flavors which might need it for socket connect() and select() calls. - FM * Tweaks of keyboard input with slang when LYCursesON is FALSE. - FM 08-06-96 * Terminate and start a new Accept: header line if the current one will exceed 1 KB (shouldn't be necessary, but otherwise the long lines cause an error for WebSitePro and crash Netscape servers, and perhaps have adversed effects on some other http servers with ill designed code for content negotiation). - FM * Give temporary files suffixes matched to the Content-Type for all flavors of Unix and for VMS, not just for NeXT. - FM * Tweak of Location: header parsing in HTTP.c (trim all lead spaces). - FM 08-05-96 * More help and documentation updates. - FM 08-04-96 * Updated the online help files. - FM 08-03-96 * Mods of "user (A)gent" 'o'ption handling. Also added a "useragent" -restriction, included in the defaults for anonymous accounts. See the "Lynx options menu" section of the "Lynx Users Guide" via the online 'h'elp for more information. - FM * Tweaks of messaging for unsupported URLs. - FM * Tweaks of interrupt handling on VMS. - FM 08-02-96 * Added handling of Refresh in META tags. The URL is presented as a link pointed to by a "REFRESH(n sec):" label, where "n" is the seconds parameter from the META tag, and you must activate it yourself, which should enable people using Lynx via a braille interface to examine the initial document before it is refreshed. The META format is: where "n" can be "0" or a positive integer, and the "; URL=url" field is optional, defaulting to the document's own address. Netscape's docs say that "url" should be a complete URL, but their client doesn't require it, and so it's users don't reliably use complete URLs. Lynx therefore resolves "url" versus the document's own address if it is not complete. - FM 08-01-96 * Added handling of ENCTYPE="text/plain" for FORMs with a mailto ACTION. The name=value pairs are not hex escaped, and physical newlines instead of '&' separate the pairs, so that the content is readable directly. - FM * Added SUBJECT attribute as synonym for TITLE in FORMs (Some clients are using it instead of TITLE for mailto ACTIONs, ugh!). - FM * Tweaks of DEL, S, STRIKE, and INS handling. - FM * Handle any newline characters in quoted INPUT values. - FM * Added news-ncurses and news-slang Makefile targets, and tweaks of headers for sony_news. - Makoto MATSUSHITA (matusita@ics.es.osaka-u.ac.jp) 07-30-96 * Finished and incorporated lynx_url_support.html in the online help, and updated lynx_help_main.html. - FM * Tweaks of ID attribute handling. - FM * Tweaks of the gopher gateway. - FM * Updated IBMPC-charsets.announce. - MB 07-26-96 * Set the default anonymous account restrictions if Lynx is invoked in the account pointed to by ANONYMOUS_USER, or with the -anonymous switch, before processing any additional command line restrictions, so that any greater restrictions will not drop back to the compilation defaults. Note that the full set of -validate restrictions always are enforced for that switch, i.e., no matter what other switches or compilation options are used, and whether or not the account is anonymous. - FM * Implemented handling of the ANONYMOUS_USER definition on VMS (equivalently to it's implementation on Unix). - FM * Tweaks of mailto URL handling and setting of the default subject via TITLE attributes. - FM * Tweak of the news gateway's handling of the author (From:) field. - FM 07-25-96 * If a server returns redirection without a complete URL indicated, resolve it relative to the original request instead of issuing an error message (this is incorrect behavior, but that's another trashed standard, and Lynx may as well handle the situation as standard-less clients do). - FM * Move the NO_JUMPFILE and JUMP_PROMPT definitions to LYMessages_en.h - FM * Added code for selective disabling of goto by scheme in anonymous accounts, along lines of patch from Doug Lawson (dlawson@epfl2.epflbalto.org). - FM * Ignore any viewer mappings for text/html or text/plain in mailcap files. - FM 07-22-96 * Updated ptx target and added ptx-slang. - Alan Coopersmith (alanc@CSUA.Berkeley.EDU) * Added all the new elements and attributes from the July 12 HTML 3.2/Cougar DTD, and implemented the new IMG TITLE attribute for use with USEMAP. * Added a -startfile_ok switch for allowing a non-http startfile or homepage with -validate, and restored the behavior of not allowing *any* non-http URLs by default. 07-19-96 * Treat PLAIN and TYPE="plain" as equivalent in UL tags. - FM * Fixed the mispositioning of thinsp in HTMLDTD.c. - FM 07-18-96 * Moved the statusline prompt, message, and warning string definitions out of userdefs.h into an LYMessages_en.h header. See the comments in userdefs.h and LYMessages_en.h for more information. - FM * Removed the -lc from the LIBS= list of the snake3 and snake3-slang targets, added a description of the HP/UX 10.10 select() problems and reported (but not yet satisfactory) workarounds in the PROBLEMS file, and a note in the Makefile to read the PROBLEMS file. - FM 07-17-96 * Numerous typecasts added for optimized compilations. - FM * Tweaks for ISC. - WS * Changed make to $(MAKE) and -g to -O for Unix targets (may need tweaking for some flavors 8-). - FM * Added news target for SONY NEWS-OS 4.2.1R based on patch from Kazuya 'Sharl' Masuda (masuda@sp.hudson.co.jp) and TA. - FM * Fixed typo in LYList.c from yesterday's mods. - FM 07-16-96 * Plugged memory leaks associated with temporary file names. - FM * Finally figured out what was creating orphan child anchors, and plugged that memory leak in HTAnchor_delete(). - FM * Replace with for SCO in tcp.h. - BL * Mods to avoid warning about redefinition of signal when building on VMS with old versions of SOCKETSHR (irrelevant, but might worry people who don't know that the warning can be ignored). - FM 07-15-96 * Plugged various memory leaks in FORM handling code. - FM 07-13-96 * Add the startfile, and homepage if different, to the 'g'oto recall buffer so that they are available for editing in addition to any overtly entered 'g'oto URLs. - FM * Changed TRUSTED_URL to ALWAYS_TRUSTED_EXEC for clarity, and plugged memory leaks and some security holes in that code. - FM * Fixed typo in code for handling Z compressed files. - FM 07-12-96 * Added handling of   ( ), and handling of   as  ,   as  , – as – or &endash;, — as — or &emdash;, and ™ as ™ (treated as ® ®), based on the Cougar DTD. - FM * Increased the line buffer size in HTLoadHTTP() and limited the deflt string length in HTPrompt() to avoid possibilities of buffer overruns. - FM 07-11-96 * Block access to file: URLs via network served files or bookmarks in addition to 'g'oto entries when -restrictions=file_url is set (one of the default restrictions for -anonymous). - FM * Extended compressed file handling to the ftp gateway and local files. If you ACTIVATE the link instead of overtly invoking a 'd'ownload, and the path with the gz or Z stripped maps to a displayable Content-Type or one for which you have a viewer or helper app, the file will be treated as if it had a Content-Encoding: header indicating the compression (i.e., uncompressed and displayed or passed to the viewer or helper app). - FM * Mods to send http servers an Accept-Encoding: header indicating gzip and compress, and to block inclusion of our new, internal www/compressed MIME type in the Accept: header list. - FM * Changed the names of the lex_buffer and lex_lines globals to HTlex_buffer and HTlex_lines in case name conflicts are causing segmentation faults on linux for long usernames in authorization requests, and changed all malloc()'s to calloc()'s in that code in case there's an initialization glitch I don't yet see. - FM 07-09-96 * Use the username and password of an -auth= command line argument only for the first realm that requests authorization, so they don't preclude access to other realms later in any interactive session that might have a different username and/or password, and handle inclusion of only a username or only a password in the -auth= argument. - FM * Tweaks of memory leak plugs in authorization handling functions (hopefully now avoiding segmentation faults on linux 8-). - FM * Include -lc in the first position of the LIBS= list for snake3 targets. - Donald S. Teiser , especially . (9) Please report bugs, unexpected behavior, etc. to . Suggestions for improvement would be welcome, as well as contributed translation tables (for stuff that is not available at ftp://dkuug.dk or ftp://ftp.unicode.org). KW 1997-11-06 PK0][_HHdocs/TCPWARE.announcenu[ 03-Jun-1994 The bug associated with using non-blocking socket handling with TCPWare's UCX emulation has been traced by Bernie Votz of Process Software to their TCPDRIVER.EXE, and has been fixed. The kit is on FTP.PROCESS.COM and is called DRIVERS_V405B.INC (it is only valid for TCPware for OpenVMS Version 4.0-5, which is the current version at the time of this announcement). The fix will be included in the next TCPWare upgrade. If you have problems, contact: Bernie Volz Process Software Corporation VOLZ@PROCESS.COM If you have an old version of TCPWare, and no current Process Software support, modify [.WWW.Library.VMS]libmake.com to include NO_IOCTL in the $ cc := cc/define=(...) list. You will not be able to interrupt stalled connects (i.e., you'll have to wait for those to time out), but you still will we able to interrupt long or stalled document transfers via the 'z' command. To build for TCPWare, enter @BUILD TCPWARE or just @BUILD and then answer the prompt with the appropriate number for that TCPIP package. Fote ========================================================================= Foteos Macrides Worcester Foundation for Experimental Biology MACRIDES@SCI.WFEB.EDU 222 Maple Avenue, Shrewsbury, MA 01545 ========================================================================= PK0]docs/djgpp.keynu[ DJGPP Keyhandler Keymaps Control_A 0x001 Control_B 0x002 Control_C 0x003 Control_D 0x004 Control_E 0x005 Control_F 0x006 Control_G 0x007 BackSpace 0x008 Control_H 0x008 Tab 0x009 Control_I 0x009 LineFeed 0x00a Control_J 0x00a Control_K 0x00b Control_L 0x00c Return 0x00d Control_M 0x00d Control_N 0x00e Control_O 0x00f Control_P 0x010 Control_Q 0x011 Control_R 0x012 Control_S 0x013 Control_T 0x014 Control_U 0x015 Control_V 0x016 Control_W 0x017 Control_X 0x018 Control_Y 0x019 Control_Z 0x01a Control_LBracket 0x01b Escape 0x01b Control_BackSlash 0x01c Control_RBracket 0x01d Control_Caret 0x01e Control_Underscore 0x01f Space 0x020 ExclamationPoint 0x021 DoubleQuote 0x022 Hash 0x023 Dollar 0x024 Percent 0x025 Ampersand 0x026 Quote 0x027 LParen 0x028 RParen 0x029 Star 0x02a Plus 0x02b Comma 0x02c Dash 0x02d Period 0x02e Slash 0x02f Colon 0x03a SemiColon 0x03b LAngle 0x03c Equals 0x03d RAngle 0x03e QuestionMark 0x03f At 0x040 LBracket 0x05b BackSlash 0x05c RBracket 0x05d Caret 0x05e UnderScore 0x05f BackQuote 0x060 LBrace 0x07b Pipe 0x07c RBrace 0x07d Tilde 0x07e Control_Backspace 0x07f BackTab 0x10f Alt_Q 0x110 Alt_W 0x111 Alt_E 0x112 Alt_R 0x113 Alt_T 0x114 Alt_Y 0x115 Alt_U 0x116 Alt_I 0x117 Alt_O 0x118 Alt_P 0x119 Alt_LBracket 0x11a Alt_RBracket 0x11b Alt_Return 0x11c Alt_A 0x11e Alt_S 0x11f Alt_D 0x120 Alt_F 0x121 Alt_G 0x122 Alt_H 0x123 Alt_J 0x124 Alt_K 0x125 Alt_L 0x126 Alt_Semicolon 0x127 Alt_Quote 0x128 Alt_Backquote 0x129 Alt_Backslash 0x12b Alt_Z 0x12c Alt_X 0x12d Alt_C 0x12e Alt_V 0x12f Alt_B 0x130 Alt_N 0x131 Alt_M 0x132 Alt_Comma 0x133 Alt_Period 0x134 Alt_Slash 0x135 Alt_KPStar 0x137 F2 0x13c F3 0x13d F4 0x13e F5 0x13f F6 0x140 F7 0x141 F8 0x142 F9 0x143 F10 0x144 Alt_KPMinus 0x14a Center 0x14c Alt_KPPlus 0x14e Shift_F1 0x154 Shift_F2 0x155 Shift_F3 0x156 Shift_F4 0x157 Shift_F5 0x158 Shift_F6 0x159 Shift_F7 0x15a Shift_F8 0x15b Shift_F9 0x15c Shift_F10 0x15d Control_F1 0x15e Control_F2 0x15f Control_F3 0x160 Control_F4 0x161 Control_F5 0x162 Control_F6 0x163 Control_F7 0x164 Control_F8 0x165 Control_F9 0x166 Control_F10 0x167 Alt_F1 0x168 Alt_F2 0x169 Alt_F3 0x16a Alt_F4 0x16b Alt_F5 0x16c Alt_F6 0x16d Alt_F7 0x16e Alt_F8 0x16f Alt_F9 0x170 Alt_F10 0x171 Control_Print 0x172 Control_Left 0x173 Control_Right 0x174 Control_End 0x175 Control_PageDown 0x176 Control_Home 0x177 Alt_1 0x178 Alt_2 0x179 Alt_3 0x17a Alt_4 0x17b Alt_5 0x17c Alt_6 0x17d Alt_7 0x17e Alt_8 0x17f Alt_9 0x180 Alt_0 0x181 Alt_Dash 0x182 Alt_Equals 0x183 Control_PageUp 0x184 F11 0x185 F12 0x186 Shift_F11 0x187 Shift_F12 0x188 Control_F11 0x189 Control_F12 0x18a Alt_F11 0x18b Alt_F12 0x18c Control_Up 0x18d Control_KPDash 0x18e Control_Center 0x18f Control_KPPlus 0x190 Control_Down 0x191 Control_Insert 0x192 Control_Delete 0x193 Control_KPSlash 0x195 Control_KPStar 0x196 Alt_EHome 0x197 Alt_EUp 0x198 Alt_EPageUp 0x199 Alt_ELeft 0x19b Alt_ERight 0x19d Alt_EEnd 0x19f Alt_EDown 0x1a0 Alt_EPageDown 0x1a1 Alt_EInsert 0x1a2 Alt_EDelete 0x1a3 Alt_KPSlash 0x1a4 Alt_Tab 0x1a5 Alt_Enter 0x1a6 Alt_Escape 0x1a7 Control_At 0x1a8 Alt_Backspace 0x1a9 Control_ELeft 0x273 Control_ERight 0x274 Control_EEnd 0x275 Control_EPageDown 0x276 Control_EHome 0x277 Control_EPageUp 0x284 Control_EUp 0x28d Control_EDown 0x291 Control_EInsert 0x292 Control_EDelete 0x293 PK0]:j44docs/README.rootcertsnu[ DOS/Windows-oriented notes on Root Certificates To use certificates or a cert bundle within an SSL enabled application such as lynx you must place your certificate files into a known directory, and set the environment variables to a proper value (e.g. in CONFIG.SYS file). set SSL_CERT_DIR=x:/usr/local/ssl/certs set SSL_CERT_FILE=x:/usr/local/ssl/cert.pem (See "What are root certificates" below.) Q. Why would I want to install openssl.exe? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ openssl.exe is used to manage certificates. (See "What are root certificates" below.) Q. How to install openssl.exe? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Put openssl.exe in a directory in your PATH and the DLLs to a directory in your LIBPATH. Copy conf\openssl.cnf.demoCA to a directory of your choice, rename it to openssl.conf and set the environment variable OPENSSL_CONF by putting SET OPENSSL_CONF=\openssl.cnf into CONFIG.SYS. Q. Why is this document so paranoid? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you want to use OpenSSL, then probably your Internet transactions have *real* monetary value embedded in them. And as usual, the security is as good as the weakest link. This document unravels only the tip of the iceberg of what can go wrong with improperly established "secure" connections. And given the monetary value involved, "bad guys" have a high incentive to exploit the weakest links. As experience shows, do not underestimate the intelligence of bad guys... Really, with security, a little knowledge is a dangerous thing; one can suspect that many people, if they really understood the trust structures associated with SSL, would be rather careful about checking the details of certificates. Q. What are root certificates? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Making a secure connection is like sending your valuables (for storage or consumption) to somebody who agreed to be at a prearranged place. To guard the valuables on the way there, you can ask for a police escort; this is what https:// connections are about. However, it does not make any sense to have an escort if the goods are transfered to a random person who happens to be at this place; one needs to certify the identity of the receiver as well. The certification process is a chain; when site A wants to certify that it is actually what it claims, it actually says "Check this certificate with site B"; to proceed, one needs to certify that site B is what it claims, so B may redirect to site C etc. For this process to stop, some sites claim "You must know my certificate, check it yourself". These certificates are "root certificates"; one cannot verify such a site unless one has the certificate for the "end of its certification chain". If you don't have the relevant root certificate in your local certificates file, it means that you don't trust anyone to vouch for the authenticity of the site. So one should have a collection of known certificates from several well-known sites known as "Root Certification Authorities". Most sites for large-scale businesses have certificates which will eventually resolve to these places. Such certicates represent people like Verisign that are in the business of confirming the identity of servers, etc. Additionally, since having yourself certified through another site costs, some sites avoid this cost via presenting "end-of-chain certificates". One should have a way to obtain these certificates via other means than insecure Internet connection (e.g., one can walk into the office and copy the certificate file to a floppy). These are so-called "Self-signed certificates"; they are "root certificates" as well. The locally-installed securely obtained copies of such certificates are referred to as "local certificates". (See 'What is "Snake Oil Ltd."' below.) If you are presented with a locally-unresolvable root certificate, and you *believe* that you are really talking to the site, and not someone in between (who is either completely simulating the site or relaying your requests onto the real site - called a "man in the middle" attack), you will still have an encrypted connection. Otherwise, you should act as though the site was an impostor, unless and until you manage to get a root certificate from a trustworthy source, and that root certificate represents someone that you would trust to have vetted the site you want to connect to. Local certificates are stored in SSL_CERT_FILE (this "cert bundle", usually named cert.pem, contains several signatures for "Root Certification Authorities") and SSL_CERT_DIR (which has a signature per file, and usually contain local copies of self-signed certificates). There are three crucial considerations to be added to this picture: a) While there are ways to ensure that the receivers are who they claim, there is absolutely no technological way to verify how *trustworthy* the receiving party is. It does not make sense to secure-send your valuables to a certified receiver if this receiver is a crook (or will just keep them later in a publicly accessible place). b) "VeriSign Syndrome". For the above scheme of "a chain of trust" to work, the "Root Certification Authorities" should be *very* trustworthy high-integrity entities. Unfortunately, there are certain doubts that this is so. E.g., fall 2003, VeriSign started an attack on DNS scheme which could disrupt the whole architecture of Internet (hijacking *all* unclaimed Internet addresses and redirecting them to a promotional site; google for VeriSign DNS hijack). One major company even issued a Microsoft certificate to a company other than Microsoft, and there had to be a Windows critical update to block that certificate. c) Keep in mind that the "big 2 browsers" are adding an increasing number of root certificates, and most users fail to realise that they are putting a trust in the supply chain for the browser to give them the certificates of reliable organisations (the browser suppliers could make bad choices, or the browser could have been hacked before you got it). Incidentally, standard browsers come with certificates representing very different levels of identity verification, but most people accept all of those supplied with the big 2 as equally valid. Q. How to obtain root certificates? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Certificate files, such as cert.pem, are security critical; you have to trust whoever supplies it to you; all your certification process is no more trustworthy than the site you downloaded cert.pem from. So you shouldn't just accept any offer. One way is to copy them from a machine which already obtained them in a secure way. Another one is to extract them from a web browser which was itself obtained in a secure way (see "How to extract certificates from Internet Explorer" below). If anything else fails, obtaining a privately-generated bundle from third-parties, such as http://www.kfu.com/~nsayer/encryption/ca-bundle.crt.text is *not* much better than no certificates at all, but may avoid some warnings from applications. One of the places which has a bundle is the mod_ssl site. Q. Should you trust this distribution system? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ It is very hard to imagine a situation when the answer is different from "Absolutely not!". Indeed, obtaining the certificates is only half of the problem. The certificates are going to be checked by the SSL library. Can you trust these executables (DLLs)? Did you obtain the library via a secure connection? Are you sure that the place you obtained it from has reasonable security practice, so that the archive could not be tampered with? The latter place most probably did not build the DLLs themselves; chances are they just store what a fourth-party supplied them. Was *that* file transfer done via secure channels? Can you trust this fourth-party so that it did not insert Trojans? Chances are that all of these questions are answered "No". There are still major problems with bootstrapping security via the Internet... What about the application which uses these DLLs? Do you have any reason to trust it? What about the OS itself? Did it come from a trustworthy source via trustworthy channels? Are you sure it was not tampered with? Q. How to compile and link with OpenSSL libraries? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Put the files from include and lib to your emx directory, or directories on C_INCLUDE_PATH and LIBRARY_PATH. Note that openssl should become a subdirectory of your include directory. If you need .lib files you can create them using emxomf. The supplied library files link against the new renamed dlls open_ssl and cryptsll. See the doc directory for some information and visit http://www.columbia.edu/~ariel/ssleay/ for more infos. Q. Why do you need your own keys and certificates? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ There are several situations: having a server which accepts secure connections; authenticating yourself to a server by means other than login/password, sending S-Mime crypto-mail, authenticating from a client browser to a server. In each of these situations one needs keys. The following sites may be useful: http://www.pseudonym.org/ssl/ssl_cook.html#environment http://the.earth.li/~sgtatham/putty/0.53b/htmldoc/Chapter8.html#8.2 Q. How to generate your own keys and certificates? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ There are many ways. A good solution is to use sslRexx. It provides everything you need. PuTTYgen is a key generator that will work. Below is a short description of how I made my own Certification Authority, a Server Key for Apache and a client Key/Certificate for me, signed by my own CA. Q. Howto: Root CA (needed to self-sign all certificates) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Generate a CA-Key and store it in sub-directory private: openssl genrsa -des3 -out private/MyOwnCA.pem 2048 Make a selfsigned certificate based on above key. openssl req -new -x509 -days 730 -key private/CAkey.pem -out CAcert.pem This certificate will expire in 2 years. Optional: generate text output of this certificate: openssl x509 -in ./CAcert.pem -text > CAcert.txt Now you have a key and certificate for your own CA which can be used to sign user and server keys. The CAcert is also needed to configure Apache and Netscape. You can/should give away the CA certificate but never give the CA key to anybody. Q. Howto: Your Client Certificate/Key ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Generate a private key ---------------------- openssl genrsa -des3 -out hrom-key.pem 2048 Create a signing request (same command again) ------------------------ openssl req -new -key hrom-key.pem -out hrom-req.pem Let the CA sign it (same command again) ------------------ openssl ca -in hrom-req.pem -out hrom-cert.pem -outdir MyOwnCA/newcerts After you get back the certificate from the CA, combine it with your private key and store the result as p12 file. This file can be imported into your browser. The browser will use this file to present to a server requiring it for access. openssl pkcs12 -export -name Hromadka -in hrom-cert.pem -inkey hrom-key.pem -out hrom.p12 Security Notes: Never give your private key to a CA, they only need the signing request. Never give away your p12 file. Always secure your private keys with a passphrase. Q. How to use c_rehash? ~~~~~~~~~~~~~~~~~~~~~~ One needs a working port of Perl and cp.exe to run this. Set OPENSSL to the full name of openssl executable. One may also need to change some ':' to $Config{path_sep}. c_rehash finds certs from enviroment variables and allows them to be recognized by openssl. Q. How to extract certificates from Internet Explorer? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ To make your own file of certificates, go to the "Tools/Internet Options/Content/Certificates/Trusted Root Certificates" section of IE. Select all the certificates, then "export" to a file. It will be saved as a PKCS#7 file, with suffix ".p7b". You can call it "ca_bundle.p7b". Then use openssl to convert it with the command: "openssl pkcs7 -inform DER -in ca_bundle.p7b -print_certs -text -out cert.pem". Ask your system administrator to put the file "cert.pem" in the openssl directory and c_rehash it. Then lynx can check the certificates against the set of certificates that you (or Microsoft) trusts, and you won't get the warning message any more. Q. How to install a self-signed certificate? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When you would like to trust a self-signed (non-commercial) certificate you will need to get hold of the actual file. If it's a cert local to your network you can ask the sysadmin to make it available for download as a link on a webpage. If such file is not human-readable it's probably DER formatted and will need to be converted to PEM format to allow openssl to use it. To convert DER formatted certificates into something openssl can deal with: Save the cert as site_name.crt in a directory. In that directory, type: openssl x509 -inform DER -in site_name.crt -outform PEM -out site_name.pem You can now copy this individual cert into the directory for that and hash the cert by running c_rehash. A complete discussion of this procedure for unix is in the document README.sslcerts. PK0]-K1zzdocs/win-386.announcenu[Ports have been added for Win32 (95/NT) and 386 DOS computers with a packet driver. I created four new defines to accomplish this. _WINDOWS Defined for Win32 specific code (Mostly TCP related) DJGPP Defined for 386 specific code (Mostly TCP related) DOSPATH Defined for any DOS'ish computer NOSIGHUP Defined for computers not supporting sighup signal calls. To make the Win32 version you need Borland C++ 4.52 or complete compatable and the win32.zip package unziped into the lynx directory. This code expects you to have BC make in your path at the console prompt and also to be able to compile from the console as well. I can provide an IDE if needed but did not want to force on into the standard Lynx package. Text mode compiling is much faster anyhow (IMHO). The current default configuration is to have the Character Translation code linked in. For this to be successful you need to go into src\chrtrans and run makew32. After that you can come back to the Lynx root and run make -f makefile.w32. The DJGPP version is a little screwy. You need DJGPP 2.0, the djgpp.zip package unziped into the lynx directory and some paitence. I kludged it to compile with long filenames under Win95 so some fooling around may be required. To compile, run djgpp.bat that was extracted from the zip file. There is currently a problem with compiling HTML.c and I have contacted the author of DJGPP for help with getting this port further. Wayne Buttles lynx-port@fdisk.com Win32 port was further extended by Hiroyuki Senshu ftp://crab.it.osha.sut.ac.jp/pub/Win32/develope/senshu/Lynx/ Most changes are ifdef'd #define _WIN_CC= .... for Windows C Compiler #define CJK_EX .... CJK EXtension #define SH_EX .... Senshu Hiroyuki EXtension #define WIN_EX .... Windows EXtension Lynx now builds with C++ Builder, Borland C++, Visual C++, and Cygwin. PK0]V6mmlynx.hlpnu[1 LYNX 2 Name lynx - a general purpose distributed information browser for the World Wide Web 2 Synopsis lynx [options] [optional paths or URLs] lynx [options] [path or URL] -get_data data -- lynx [options] [path or URL] -post_data data -- Use "lynx -help" to display a complete list of current options. 2 Description Lynx is a fully-featured World Wide Web (WWW) client for users running cursor-addressable, character-cell display devices (e.g., vt100 terminals, vt100 emulators running on Windows 95/NT/XP/7/8 or any POSIX platform, or any other "curses-oriented" display). It will display hypertext markup language (HTML) documents containing links to files residing on the local system, as well as files residing on remote systems running Gopher, HTTP, FTP, WAIS, and NNTP servers. Current versions of Lynx run on Unix, VMS, Windows 95/NT/XP/7/8, DOS DJGPP and OS/2. Lynx can be used to access information on the World Wide Web, or to build information systems intended primarily for local access. For example, Lynx has been used to build several Campus Wide Information Systems (CWIS). In addition, Lynx can be used to build systems isolated within a single LAN. 2 Options At start up, Lynx will load any local file or remote URL specified at the command line. For help with URLs, press "?" or "H" while running Lynx. Then follow the link titled, "Help on URLs." If more than one local file or remote URL is listed on the command line, Lynx will open only the last interactively. All of the names (local files and remote URLs) are added to the G)oto history. Lynx uses only long option names. Option names can begin with double dash "--" as well, underscores and dashes can be intermixed in option names (in the reference below, options are shown with one dash "-" before them, and with underscores "_"). Lynx provides many command-line options. Some options require a value (string, number or keyword). These are noted in the reference below. The other options set boolean values in the program. There are three types of boolean options: set, unset and toggle. If no option value is given, these have the obvious meaning: set (to true), unset (to false), or toggle (between true/false). For any of these, an explicit value can be given in different forms to allow for operating system constraints, e.g., -center:off -center=off -center- Lynx recognizes "1", "+", "on" and "true" for true values, and "0", "-", "off" and "false" for false values. Other option-values are ignored. The default boolean, number and string option values that are compiled into Lynx are displayed in the help-message provided by lynx -help. Some of those may differ according to how Lynx was built; see the help message itself for these values. The -help option is processed in the third pass of options-processing, so any option which sets a value, as well as runtime configuration values are reflected in the help-message. - If the argument is only "-", then Lynx expects to receive the arguments from the standard input. This is to allow for the potentially very long command line that can be associated with the -get_data or -post_data arguments (see below). It can also be used to avoid having sensitive information in the invoking command line (which would be visible to other processes on most systems), especially when the -auth or -pauth options are used. -accept_all_cookies accept all cookies. -anonymous apply restrictions for anonymous account, see also -restrictions. -assume_charset=MIMEname charset for documents that do not specify it. -assume_local_charset=MIMEname charset assumed for local files, i.e., files which Lynx creates such as internal pages for the options menu. -assume_unrec_charset=MIMEname use this instead of unrecognized charsets. -auth=ID:PASSWD set authorization ID and password for protected documents at startup. Be sure to protect any script files which use this switch. -base prepend a request URL comment and BASE tag to text/html outputs for -source dumps. -bibhost=URL specify a local bibp server (default http://bibhost/). -blink forces high intensity background colors for color mode, if available and supported by the terminal. This applies to the slang library (for a few terminal emulators), or to OS/2 EMX with ncurses. -book use the bookmark page as the startfile. The default or command line startfile is still set for the Main screen command, and will be used if the bookmark page is unavailable or blank. -buried_news toggles scanning of news articles for buried references, and converts them to news links. Not recommended because email addresses enclosed in angle brackets will be converted to false news links, and uuencoded messages can be trashed. -cache=NUMBER set the NUMBER of documents cached in memory. The default is 10. -case enable case-sensitive string searching. -center Toggle center alignment in HTML TABLE. -cfg=FILENAME specifies a Lynx configuration file other than the default lynx.cfg. -child exit on left-arrow in startfile, and disable save to disk and associated print/mail options. -child_relaxed exit on left-arrow in startfile, but allow save to disk and associated print/mail options. -cmd_log=FILENAME write keystroke commands and related information to the specified file. -cmd_script=FILENAME read keystroke commands from the specified file. You can use the data written using the -cmd_log option. Lynx will ignore other information which the command-logging may have written to the logfile. Each line of the command script contains either a comment beginning with "#", or a keyword: exit causes the script to stop, and forces Lynx to exit immediately. key the character value, in printable form. Cursor and other special keys are given as names, e.g., "Down Arrow". Printable 7-bit ASCII codes are given as-is, and hexadecimal values represent other 8-bit codes. set followed by a "name=value" allows one to override values set in the lynx.cfg or .lynxrc files. Lynx tries the cfg-file setting first. -collapse_br_tags toggles collapsing of BR tags. -color forces color mode on, if available. Default color control sequences which work for many terminal types are assumed if the terminal capability description does not specify how to handle color. Lynx needs to be compiled with the slang library for this flag, it is equivalent to setting the COLORTERM environment variable. (If color support is instead provided by a color- capable curses library like ncurses, Lynx relies completely on the terminal description to determine whether color mode is possible, and this flag is not needed and thus unavailable.) A saved show_color=always setting found in a .lynxrc file at startup has the same effect. A saved show_color=never found in .lynxrc on startup is overridden by this flag. -connect_timeout=N Sets the connection timeout, where N is given in seconds. -cookie_file=FILENAME specifies a file to use to read cookies. If none is specified, the default value is ~/.lynx_cookies for most systems, but ~/cookies for MS-DOS. -cookie_save_file=FILENAME specifies a file to use to store cookies. If none is specified, the value given by -cookie_file is used. -cookies toggles handling of Set-Cookie headers. -core toggles forced core dumps on fatal errors. Turn this option off to ask Lynx to force a core dump if a fatal error occurs. -crawl with -traversal, output each page to a file. with -dump, format output as with -traversal, but to the standard output. -curses_pads toggles the use of curses "pad" feature which supports left/right scrolling of the display. The feature is normally available for curses configurations, but inactive. To activate it, use the "|" character or the LINEWRAP_TOGGLE command. Toggling this option makes the feature altogether unavailable. -debug_partial separate incremental display stages with MessageSecs delay -default_colors toggles the default-colors feature which is normally set in the lynx.cfg file. -delay add DebugSecs delay after each progress-message -display=DISPLAY set the display variable for X rexec-ed programs. -display_charset=MIMEname set the charset for the terminal output. -dont_wrap_pre inhibit wrapping of text when -dump'ing and -crawl'ing, mark wrapped lines of
 in interactive session.

       -dump  dumps  the  formatted  output  of  the default document or those
              specified on  the  command  line  to  standard  output.   Unlike
              interactive mode, all documents are processed.  This can be used
              in the following way:

                  lynx -dump http://www.subir.com/lynx.html

              Files specified on the command line are  formatted  as  HTML  if
              their  names  end  with one of the standard web suffixes such as
              ".htm" or ".html".  Use the -force_html option to  format  files
              whose names do not follow this convention.

       -editor=EDITOR
              enable  external  editing, using the specified EDITOR.  (vi, ed,
              emacs, etc.)

       -emacskeys
              enable emacs-like key movement.

       -enable_scrollback
              toggles compatibility with  communication  programs'  scrollback
              keys (may be incompatible with some curses packages).

       -error_file=FILE
              define a file where Lynx will report HTTP access codes.

       -exec  enable local program execution (normally not configured).

       -fileversions
              include all versions of files in local VMS directory listings.

       -find_leaks
              toggle memory leak-checking.  Normally this is not compiled-into
              your executable, but when it  is,  it  can  be  disabled  for  a
              session.

       -force_empty_hrefless_a
              force  HREF-less "A" elements to be empty (close them as soon as
              they are seen).

       -force_html
              forces the first document to be interpreted as HTML.

              This is most useful  when  processing  files  specified  on  the
              command line which have an unrecognized suffix (or the suffix is
              associated with a non-HTML type, such as ".txt" for  plain  text
              files).

              Lynx recognizes these file suffixes as HTML:

                  ".ht3",
                  ".htm",
                  ".html3",
                  ".html",
                  ".htmlx",
                  ".php3",
                  ".php",
                  ".phtml",
                  ".sht", and
                  ".shtml".

       -force_secure
              toggles forcing of the secure flag for SSL cookies.

       -forms_options
              toggles whether the Options Menu is key-based or form-based.

       -from  toggles transmissions of From headers.

       -ftp   disable ftp access.

       -get_data
              properly  formatted  data  for  a  get form are read in from the
              standard input and passed to the form.  Input is terminated by a
              line that starts with "---".

              Lynx  issues  an  HTTP  GET, sending the form to the path or URL
              given on the command-line and prints the response of the server.
              If  no  path  or URL is given, Lynx sends the form to the start-
              page.

       -head  send a HEAD request for the mime headers.

       -help  print the Lynx command syntax usage message, and exit.

       -hiddenlinks=[option]
              control the display of hidden links.

              merge
                 hidden links show up as bracketed numbers  and  are  numbered
                 together with other links in the sequence of their occurrence
                 in the document.

              listonly
                 hidden links are shown only on  L)ist  screens  and  listings
                 generated  by  -dump  or  from  the  P)rint  menu, but appear
                 separately at the end of those lists.  This  is  the  default
                 behavior.

              ignore
                 hidden links do not appear even in listings.

       -historical
              toggles use of ">" or "-->" as a terminator for comments.

       -homepage=URL
              set homepage separate from start page.

       -image_links
              toggles inclusion of links for all images.

       -index=URL
              set the default index file to the specified URL.

       -ismap toggles  inclusion  of  ISMAP  links  when  client-side MAPs are
              present.

       -justify
              do justification of text.

       -link=NUMBER
              starting count for lnk#.dat files produced by -crawl.

       -list_inline
              for -dump, show the links inline with the text.

       -listonly
              for -dump, show only the list of links.

       -localhost
              disable URLs that point to remote hosts.

       -locexec
              enable local program execution from local files  only  (if  Lynx
              was compiled with local execution enabled).

       -lss=FILENAME
              specify   filename   containing  color-style  information.   The
              default is lynx.lss.  If you give an empty filename, Lynx uses a
              built-in  monochrome  scheme  which imitates the non-color-style
              configuration.

       -mime_header
              prints the MIME header of a  fetched  document  along  with  its
              source.

       -minimal
              toggles minimal versus valid comment parsing.

       -nested_tables
              toggles nested-tables logic (for debugging).

       -newschunksize=NUMBER
              number of articles in chunked news listings.

       -newsmaxchunk=NUMBER
              maximum news articles in listings before chunking.

       -nobold
              disable bold video-attribute.

       -nobrowse
              disable directory browsing.

       -nocc  disable Cc: prompts for self copies of mailings.  Note that this
              does not disable any CCs which are incorporated within a  mailto
              URL or form ACTION.

       -nocolor
              force  color  mode off, overriding terminal capabilities and any
              -color flags, COLORTERM variable, and saved .lynxrc settings.

       -noexec
              disable local program execution.  (DEFAULT)

       -nofilereferer
              disable transmissions of Referer headers for file URLs.

       -nolist
              disable the link list feature in dumps.

       -nolog disable mailing of error messages to document owners.

       -nomargins
              disable left/right margins in the default style sheet.

       -nomore
              disable -more- string in statusline messages.

       -nonrestarting_sigwinch
              This flag is not available on all  systems,  Lynx  needs  to  be
              compiled  with  HAVE_SIGACTION defined.  If available, this flag
              may cause Lynx to react more immediately to window changes  when
              run within an xterm.

       -nonumbers
              disable    link-    and    field-numbering.     This   overrides
              -number_fields and -number_links.

       -nopause
              disable forced pauses for statusline messages.

       -noprint
              disable most print functions.

       -noredir
              prevents automatic redirection and prints a message with a  link
              to the new URL.

       -noreferer
              disable transmissions of Referer headers.

       -noreverse
              disable reverse video-attribute.

       -nosocks
              disable SOCKS proxy usage by a SOCKSified Lynx.

       -nostatus
              disable the retrieval status messages.

       -notitle
              disable title and blank line from top of page.

       -nounderline
              disable underline video-attribute.

       -number_fields
              force numbering of links as well as form input fields

       -number_links
              force numbering of links.

       -partial
              toggles display partial pages while loading.

       -partial_thres=NUMBER
              number  of  lines  to  render  before  repainting  display  with
              partial-display logic

       -passive_ftp
              toggles passive ftp connections.

       -pauth=ID:PASSWD
              set authorization ID and password for a protected  proxy  server
              at  startup.  Be sure to protect any script files which use this
              switch.

       -popup toggles handling  of  single-choice  SELECT  options  via  popup
              windows or as lists of radio buttons.

       -post_data
              properly  formatted  data  for  a post form are read in from the
              standard input and passed to the form.  Input is terminated by a
              line that starts with "---".

              Lynx  issues  an  HTTP POST, sending the form to the path or URL
              given on the command-line and prints the response of the server.
              If  no  path  or URL is given, Lynx sends the form to the start-
              page.

       -preparsed
              show HTML  source  preparsed  and  reformatted  when  used  with
              -source or in source view.

       -prettysrc
              show HTML source view with lexical elements and tags in color.

       -print enable print functions.  (default)

       -pseudo_inlines
              toggles pseudo-ALTs for inline images with no ALT string.

       -raw   toggles  default  setting of 8-bit character translations or CJK
              mode for the startup character set.

       -realm restricts access to URLs in the starting realm.

       -read_timeout=N
              Sets the read-timeout, where N is given in seconds.

       -reload
              flushes the cache on a proxy server  (only  the  first  document
              given on the command-line is affected).

       -restrictions=[option][,option][,option]...
              allows  a  list  of services to be disabled selectively.  Dashes
              and  underscores  in  option  names  can  be  intermixed.    The
              following list is printed if no options are specified.

              all
                 restricts all options listed below.

              bookmark
                 disallow changing the location of the bookmark file.

              bookmark_exec
                 disallow execution links via the bookmark file.

              change_exec_perms
                 disallow  changing the eXecute permission on files (but still
                 allow it for  directories)  when  local  file  management  is
                 enabled.

              default
                 same  as  command  line  option -anonymous.  Disables default
                 services for anonymous users.  Set to all restricted,  except
                 for:  inside_telnet, outside_telnet, inside_ftp, outside_ftp,
                 inside_rlogin,  outside_rlogin,  inside_news,   outside_news,
                 telnet_port, jump, mail, print, exec, and goto.  The settings
                 for these,  as  well  as  additional  goto  restrictions  for
                 specific  URL schemes that are also applied, are derived from
                 definitions within userdefs.h.

              dired_support
                 disallow local file management.

              disk_save
                 disallow saving to disk in the download and print menus.

              dotfiles
                 disallow access to, or creation of, hidden (dot) files.

              download
                 disallow some downloaders in  the  download  menu  (does  not
                 imply disk_save restriction).

              editor
                 disallow external editing.

              exec
                 disable execution scripts.

              exec_frozen
                 disallow the user from changing the local execution option.

              externals
                 disallow  some  "EXTERNAL" configuration lines if support for
                 passing  URLs  to  external  applications  (with  the  EXTERN
                 command) is compiled in.

              file_url
                 disallow  using  G)oto,  served  links or bookmarks for file:
                 URLs.

              goto
                 disable the "g" (goto) command.

              inside_ftp
                 disallow ftps for people coming from inside your domain (utmp
                 required for selectivity).

              inside_news
                 disallow  USENET  news  posting for people coming from inside
                 your domain (utmp required for selectivity).

              inside_rlogin
                 disallow rlogins for people coming from  inside  your  domain
                 (utmp required for selectivity).

              inside_telnet
                 disallow  telnets  for  people coming from inside your domain
                 (utmp required for selectivity).

              jump
                 disable the "j" (jump) command.

              multibook
                 disallow multiple bookmarks.

              mail
                 disallow mail.

              news_post
                 disallow USENET News posting.

              options_save
                 disallow saving options in .lynxrc.

              outside_ftp
                 disallow ftps for people  coming  from  outside  your  domain
                 (utmp required for selectivity).

              outside_news
                 disallow  USENET  news  reading and posting for people coming
                 from outside your domain  (utmp  required  for  selectivity).
                 This  restriction  applies to "news", "nntp", "newspost", and
                 "newsreply"  URLs,  but  not  to  "snews",  "snewspost",   or
                 "snewsreply" in case they are supported.

              outside_rlogin
                 disallow  rlogins  for people coming from outside your domain
                 (utmp required for selectivity).

              outside_telnet
                 disallow telnets for people coming from outside  your  domain
                 (utmp required for selectivity).

              print
                 disallow most print options.

              shell
                 disallow shell escapes and lynxexec or lynxprog G)oto's.

              suspend
                 disallow Unix Control-Z suspends with escape to shell.

              telnet_port
                 disallow specifying a port in telnet G)oto's.

              useragent
                 disallow modifications of the User-Agent header.

       -resubmit_posts
              toggles  forced  resubmissions  (no-cache)  of forms with method
              POST when the  documents  they  returned  are  sought  with  the
              PREV_DOC command or from the History List.

       -rlogin
              disable recognition of rlogin commands.

       -scrollbar
              toggles showing scrollbar.

       -scrollbar_arrow
              toggles showing arrows at ends of the scrollbar.

       -selective
              require .www_browsable files to browse directories.

       -session=FILENAME
              resumes from specified file on startup and saves session to that
              file on exit.

       -sessionin=FILENAME
              resumes session from specified file.

       -sessionout=FILENAME
              saves session to specified file.

       -short_url
              show very long URLs in the status line with "..."  to  represent
              the portion which cannot be displayed.  The beginning and end of
              the URL are displayed, rather than suppressing the end.

       -show_cfg
              Print the configuration settings, e.g., as read from "lynx.cfg",
              and exit.

       -show_cursor
              If  enabled  the  cursor  will  not  be hidden in the right hand
              corner but will instead  be  positioned  at  the  start  of  the
              currently selected link.  Show cursor is the default for systems
              without FANCY_CURSES capabilities.   The  default  configuration
              can  be  changed  in  userdefs.h  or lynx.cfg.  The command line
              switch toggles the default.

       -show_rate
              If enabled the transfer  rate  is  shown  in  bytes/second.   If
              disabled,  no  transfer  rate  is  shown.   Use  lynx.cfg or the
              options menu to select KB/second and/or ETA.

       -soft_dquotes
              toggles emulation of the  old  Netscape  and  Mosaic  bug  which
              treated ">" as a co-terminator for double-quotes and tags.

       -source
              works  the  same  as  dump  but  outputs  HTML source instead of
              formatted text.  For example

                  lynx -source . >foo.html

              generates  HTML  source  listing  the  files  in   the   current
              directory.   Each  file  is  marked  by  an HREF relative to the
              parent directory.  Add a  trailing  slash  to  make  the  HREF's
              relative to the current directory:

                  lynx -source ./ >foo.html

       -stack_dump
              disable SIGINT cleanup handler

       -startfile_ok
              allow non-http startfile and homepage with -validate.

       -stderr
              When  dumping  a  document using -dump or -source, Lynx normally
              does not display alert (error) messages  that  you  see  on  the
              screen  in the status line.  Use the -stderr option to tell Lynx
              to write these messages to the standard error.

       -stdin read the startfile from standard input (UNIX only).

       -syslog=text
              information for syslog call.

       -syslog_urls
              log requested URLs with syslog.

       -tagsoup
              initialize parser, using Tag Soup DTD rather than SortaSGML.

       -telnet
              disable recognition of telnet commands.

       -term=TERM
              tell Lynx what terminal type to assume it is talking to.   (This
              may  be  useful  for  remote  execution, when, for example, Lynx
              connects to a remote TCP/IP port that starts a script  that,  in
              turn, starts another Lynx process.)

       -timeout=N
              For  win32,  sets  the network read-timeout, where N is given in
              seconds.

       -tlog  toggles between using a Lynx Trace  Log  and  stderr  for  trace
              output from the session.

       -tna   turns on "Textfields Need Activation" mode.

       -trace turns  on  Lynx trace mode.  Destination of trace output depends
              on -tlog.

       -trace_mask=value
              turn on optional traces, which may result in  very  large  trace
              files.  Logically OR the values to combine options:

              1  SGML character parsing states

              2  color-style

              4  TRST (table layout)

              8  configuration  (lynx.cfg,  .lynxrc, .lynx-keymaps, mime.types
                 and mailcap contents)

              16 binary string copy/append, used in form data construction.

              32 cookies

              64 character sets

              128
                 GridText parsing

              256
                 timing

       -traversal
              traverse all http links derived from startfile.  When used  with
              -crawl,  each link that begins with the same string as startfile
              is output to a file, intended for indexing.

              See CRAWL.announce for more information.

       -trim_blank_lines
              toggles trimming of trailing blank lines as well as the  related
              trimming of blank lines while collapsing BR tags.

       -trim_input_fields
              trim input text/textarea fields in forms.

       -underline_links
              toggles use of underline/bold attribute for links.

       -underscore
              toggles use of _underline_ format in dumps.

       -unique_urls
              check  for duplicate link numbers in each page and corresponding
              lists, and reuse the original link number.

       -use_mouse
              turn on mouse support, if available.  Clicking  the  left  mouse
              button  on a link traverses it.  Clicking the right mouse button
              pops back.  Click on the top line to scroll up.   Click  on  the
              bottom  line to scroll down.  The first few positions in the top
              and bottom line may invoke additional functions.  Lynx  must  be
              compiled  with  ncurses  or  slang  to support this feature.  If
              ncurses is used, clicking the middle  mouse  button  pops  up  a
              simple  menu.  Mouse clicks may only work reliably while Lynx is
              idle waiting for input.

       -useragent=Name
              set alternate Lynx User-Agent header.

       -validate
              accept only  http  URLs  (for  validation).   Complete  security
              restrictions also are implemented.

       -verbose
              toggle  [LINK],  [IMAGE] and [INLINE] comments with filenames of
              these images.

       -version
              print version information, and exit.

       -vikeys
              enable vi-like key movement.

       -wdebug
              enable Waterloo tcp/ip packet debug (print to  watt  debugfile).
              This  applies  only  to  DOS  versions  compiled  with WATTCP or
              WATT-32.

       -width=NUMBER
              number of columns for formatting of dumps, default is 80.   This
              is  limited  by  the  number of columns that Lynx could display,
              typically 1024 (the MAX_LINE symbol).

       -with_backspaces
              emit backspaces in output if -dump'ing or -crawl'ing  (like  man
              does)

       -xhtml_parsing
              tells Lynx that it can ignore certain tags which have no content
              in an XHTML 1.0 document.  For example "

" will be discarded. 2 Commands More than one key can be mapped to a given command. Here are some of the most useful: * Use Up arrow and Down arrow to scroll through hypertext links. * Right arrow or Return will follow a highlighted hypertext link. * Left Arrow or "u" will retreat from a link. * Type "H", "?", or F1 for online help and descriptions of key-stroke commands. * Type "k" or "K" for a list of the current key-stroke command mappings. If the same command is mapped to the same letter differing only by upper/lowercase only the lowercase mapping is shown. * Type Delete to view history list. 2 Environment In addition to various "standard" environment variables such as HOME, PATH, USER, DISPLAY, TMPDIR, etc, Lynx utilizes several Lynx-specific environment variables, if they exist. Others may be created or modified by Lynx to pass data to an external program, or for other reasons. These are listed separately below. See also the sections on SIMULATED CGI SUPPORT and NATIVE LANGUAGE SUPPORT, below. Note: Not all environment variables apply to all types of platforms supported by Lynx, though most do. Feedback on platform dependencies is solicited. Environment Variables Used By Lynx: COLORTERM If set, color capability for the terminal is forced on at startup time. The actual value assigned to the variable is ignored. This variable is only meaningful if Lynx was built using the slang screen-handling library. LYNX_CFG This variable, if set, will override the default location and name of the global configuration file (normally, lynx.cfg) that was defined by the LYNX_CFG_FILE constant in the userdefs.h file, during installation. See the userdefs.h file for more information. LYNX_CFG_PATH If set, this variable overrides the compiled-in search-list of directories used to find the configuration files, e.g., lynx.cfg and lynx.lss. The list is delimited with ":" (or ";" for Windows) like the PATH environment variable. LYNX_HELPFILE If set, this variable overrides the compiled-in URL and configuration file URL for the Lynx help file. LYNX_LOCALEDIR If set, this variable overrides the compiled-in location of the locale directory which contains native language (NLS) message text. LYNX_LSS This variable, if set, specifies the location of the default Lynx character style sheet file. [Currently only meaningful if Lynx was built using curses color style support.] LYNX_SAVE_SPACE This variable, if set, will override the default path prefix for files saved to disk that is defined in the lynx.cfg SAVE_SPACE: statement. See the lynx.cfg file for more information. LYNX_TEMP_SPACE This variable, if set, will override the default path prefix for temporary files that was defined during installation, as well as any value that may be assigned to the TMPDIR variable. MAIL This variable specifies the default inbox Lynx will check for new mail, if such checking is enabled in the lynx.cfg file. NEWS_ORGANIZATION This variable, if set, provides the string used in the Organization: header of USENET news postings. It will override the setting of the ORGANIZATION environment variable, if it is also set (and, on UNIX, the contents of an /etc/organization file, if present). NNTPSERVER If set, this variable specifies the default NNTP server that will be used for USENET news reading and posting with Lynx, via news: URL's. ORGANIZATION This variable, if set, provides the string used in the Organization: header of USENET news postings. On UNIX, it will override the contents of an /etc/organization file, if present. PROTOCOL_proxy Lynx supports the use of proxy servers that can act as firewall gateways and caching servers. They are preferable to the older gateway servers (see WWW_access_GATEWAY, below). Each protocol used by Lynx, (http, ftp, gopher, etc), can be mapped separately by setting environment variables of the form PROTOCOL_proxy. Protocols are indicated in a URI by the name before ":", e.g., "http" in "http://some.server.dom:port/" for HTML. Depending on your system configuration and supported protocols, the environment variables recognized by lynx may include cso_proxy finger_proxy ftp_proxy gopher_proxy https_proxy http_proxy newspost_proxy newsreply_proxy news_proxy nntp_proxy no_proxy snewspost_proxy snewsreply_proxy snews_proxy wais_proxy See Lynx Users Guide for additional details and examples. SSL_CERT_DIR Set to the directory containing trusted certificates. SSL_CERT_FILE Set to the full path and filename for your file of trusted certificates. WWW_access_GATEWAY Lynx still supports use of gateway servers, with the servers specified via "WWW_access_GATEWAY" variables (where "access" is lower case and can be "http", "ftp", "gopher" or "wais"). However most gateway servers have been discontinued. Note that you do not include a terminal "/" for gateways, but do for proxies specified by PROTOCOL_proxy environment variables. See Lynx Users Guide for details. WWW_HOME This variable, if set, will override the default startup URL specified in any of the Lynx configuration files. Environment Variables Set or Modified By Lynx: LYNX_PRINT_DATE This variable is set by the Lynx p(rint) function, to the Date: string seen in the document's "Information about" page (= cmd), if any. It is created for use by an external program, as defined in a lynx.cfg PRINTER: definition statement. If the field does not exist for the document, the variable is set to a null string under UNIX, or "No Date" under VMS. LYNX_PRINT_LASTMOD This variable is set by the Lynx p(rint) function, to the Last Mod: string seen in the document's "Information about" page (= cmd), if any. It is created for use by an external program, as defined in a lynx.cfg PRINTER: definition statement. If the field does not exist for the document, the variable is set to a null string under UNIX, or "No LastMod" under VMS. LYNX_PRINT_TITLE This variable is set by the Lynx p(rint) function, to the Linkname: string seen in the document's "Information about" page (= cmd), if any. It is created for use by an external program, as defined in a lynx.cfg PRINTER: definition statement. If the field does not exist for the document, the variable is set to a null string under UNIX, or "No Title" under VMS. LYNX_PRINT_URL This variable is set by the Lynx p(rint) function, to the URL: string seen in the document's "Information about" page (= cmd), if any. It is created for use by an external program, as defined in a lynx.cfg PRINTER: definition statement. If the field does not exist for the document, the variable is set to a null string under UNIX, or "No URL" under VMS. LYNX_TRACE If set, causes Lynx to write a trace file as if the -trace option were supplied. LYNX_TRACE_FILE If set, overrides the compiled-in name of the trace file, which is either Lynx.trace or LY-TRACE.LOG (the latter on the DOS/Windows platforms). The trace file is in either case relative to the home directory. LYNX_VERSION This variable is always set by Lynx, and may be used by an external program to determine if it was invoked by Lynx. See also the comments in the distribution's sample mailcap file, for notes on usage in such a file. TERM Normally, this variable is used by Lynx to determine the terminal type being used to invoke Lynx. If, however, it is unset at startup time (or has the value "unknown"), or if the -term command- line option is used (see OPTIONS section above), Lynx will set or modify its value to the user specified terminal type (for the Lynx execution environment). Note: If set/modified by Lynx, the values of the LINES and/or COLUMNS environment variables may also be changed. 2 Simulated Cgi Support If built with the cgi-links option enabled, Lynx allows access to a cgi script directly without the need for an http daemon. When executing such "lynxcgi scripts" (if enabled), the following variables may be set for simulating a CGI environment: CONTENT_LENGTH CONTENT_TYPE DOCUMENT_ROOT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_LANGUAGE HTTP_USER_AGENT PATH_INFO PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_HOST REQUEST_METHOD SERVER_SOFTWARE Other environment variables are not inherited by the script, unless they are provided via a LYNXCGI_ENVIRONMENT statement in the configuration file. See the lynx.cfg file, and the (draft) CGI 1.1 Specification for the definition and usage of these variables. The CGI Specification, and other associated documentation, should be consulted for general information on CGI script programming. 2 Native Language Support If configured and installed with Native Language Support, Lynx will display status and other messages in your local language. See the file ABOUT_NLS in the source distribution, or at your local GNU site, for more information about internationalization. The following environment variables may be used to alter default settings: LANG This variable, if set, will override the default message language. It is an ISO 639 two-letter code identifying the language. Language codes are NOT the same as the country codes given in ISO 3166. LANGUAGE This variable, if set, will override the default message language. This is a GNU extension that has higher priority for setting the message catalog than LANG or LC_ALL. LC_ALL and LC_MESSAGES These variables, if set, specify the notion of native language formatting style. They are POSIXly correct. LINGUAS This variable, if set prior to configuration, limits the installed languages to specific values. It is a space-separated list of two-letter codes. Currently, it is hard-coded to a wish list. NLSPATH This variable, if set, is used as the path prefix for message catalogs. 2 Notes This is the Lynx v2.8.9 Release; development is in progress for 2.9.0. If you wish to contribute to the further development of Lynx, subscribe to our mailing list. Send email to with "subscribe lynx-dev" as the only line in the body of your message. Send bug reports, comments, suggestions to after subscribing. Unsubscribe by sending email to with "unsubscribe lynx-dev" as the only line in the body of your message. Do not send the unsubscribe message to the lynx-dev list, itself. 2 See Also catgets(3), curses(3), environ(7), execve(2), ftp(1), gettext(GNU), localeconv(3), ncurses(3), setlocale(3), slang(?), termcap(5), terminfo(5), wget(GNU) Note that man page availability and section numbering is somewhat platform dependent, and may vary from the above references. A section shown as (GNU), is intended to denote that the topic may be available via an info page, instead of a man page (i.e., try "info subject", rather than "man subject"). A section shown as (?) denotes that documentation on the topic exists, but is not part of an established documentation retrieval system (see the distribution files associated with the topic, or contact your System Administrator for further information). 2 Acknowledgments Lynx has incorporated code from a variety of sources along the way. The earliest versions of Lynx included code from Earl Fogel of Comput- ing Services at the University of Saskatchewan, who implemented HYPER- REZ in the Unix environment. HYPERREZ was developed by Niel Larson of Think.com and served as the model for the early versions of Lynx. Those versions also incorporated libraries from the Unix Gopher clients developed at the University of Minnesota, and the later versions of Lynx rely on the WWW client library code developed by Tim Berners-Lee and the WWW community. Also a special thanks to Foteos Macrides who ported much of Lynx to VMS and did or organized most of its development since the departures of Lou Montulli and Garrett Blythe from the Uni- versity of Kansas in the summer of 1994 through the release of v2.7.2, and to everyone on the net who has contributed to Lynx's development either directly (through patches, comments or bug reports) or indirect- ly (through inspiration and development of other systems). 2 Authors Lou Montulli, Garrett Blythe, Craig Lavender, Michael Grobe, Charles Rezac Academic Computing Services University of Kansas Lawrence, Kansas 66047 Foteos Macrides Worcester Foundation for Biomedical Research Shrewsbury, Massachusetts 01545 Thomas E. Dickey PK0]Պ"samples/mime.typesnu[# example mime.types file. # see the NCSA X Mosaic documentation at # http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/extension-map.html # for more details # [Lynx uses mime.types mapping for ftp and local files only, # http server does specify MIME type in the Content-Type header]. application/postscript ai eps ps application/rtf rtf application/x-tex tex application/x-texinfo texinfo texi application/x-troff t tr roff audio/basic au snd audio/x-aiff aif aiff aifc audio/x-wav wav image/gif gif image/ief ief image/jpeg jpeg jpg jpe image/tiff tiff tif image/x-xwindowdump xwd text/html html text/plain txt c cc h video/mpeg mpeg mpg mpe video/quicktime qt mov video/x-msvideo avi video/x-sgi-movie movie PK0]&|99samples/lynx_bookmarks.htmnu[ Bookmark file You can delete links by the 'R' key

  1. Lynx homepage
  2. Lynx Browser for Windows 9x/NT/2000/XP
  3. Lynx for DOS 386 and Win32
  4. Lynx Help for Beginners
  5. HTML Authoring and Accessibility Resources for Lynx
  6. La page navigateur LYNX
  7. Current Lynx Release PK0]| samples/blue-background.lssnu[# From: Sergey Svishchev # Notes: # I use this in OS/2 VIO window, and occasionally on Linux console. # Setting the normal and default types lets us keep (almost) the same colors # whether the terminal's default colors are white-on-black or black-on-white. # It is not exact since the default "white" is not necessarily the same color # as the ANSI lightgray, but is as close as we can get in a standard way. # # If you really want the terminal's default colors, and if lynx is built using # ncurses' default-color support, remove these two lines: normal: normal: lightgray: blue default: normal: white: blue # Normal type styles correspond to HTML tags. # # The next line (beginning with "em") means: use bold if mono, otherwise # brightblue on em: bold: brightgreen: blue strong: bold: brightred: blue b: bold: white: blue i: bold: yellow: blue alink: reverse: white: cyan a: bold: cyan: blue img: dim: gray: blue status: reverse: white: green fig: normal: gray: blue caption: reverse: brown: blue hr: normal: yellow: blue blockquote: normal: brightblue: blue #ul:normal: brown:blue address: normal: magenta: blue #title: normal:magenta:blue tt: dim: gray: blue h1: bold: yellow: blue label: normal: magenta: blue value: normal: green: blue q: normal: yellow: magenta small: dim: gray: blue big: bold: yellow: blue sup: bold: yellow: blue sub: dim: gray: blue # glitch fixes area: normal: lightgray: blue body: normal: lightgray: blue br: normal: lightgray: blue center: normal: lightgray: blue center.header: normal: lightgray: blue div: normal: lightgray: blue font: normal: lightgray: blue font.letter: normal: lightgray: blue h2: normal: lightgray: blue h3: normal: lightgray: blue h4: normal: lightgray: blue h5: normal: lightgray: blue h6: normal: lightgray: blue head: normal: lightgray: blue link: normal: lightgray: blue map: normal: lightgray: blue meta: normal: lightgray: blue p: normal: lightgray: blue table: normal: lightgray: blue td: normal: lightgray: blue tr: normal: lightgray: blue title: normal: lightgray: blue form: normal: lightgray: blue input: normal: lightgray: blue input.submit: normal: cyan: blue select: normal: lightgray: blue option: normal: lightgray: blue pre: normal: lightgray: blue dd: normal: lightgray: blue dt: normal: lightgray: blue ul: normal: lightgray: blue li: normal: lightgray: blue base: normal: lightgray: blue iframe: normal: lightgray: blue cite: normal: yellow: blue span.htmlsrc_comment:normal: green: blue span.htmlsrc_tag:normal: brightgreen: blue span.htmlsrc_attrib:normal: brightcyan: blue span.htmlsrc_attrval:normal: white: blue span.htmlsrc_abracket:normal: brightgreen: blue span.htmlsrc_entity:normal: white: blue ##span.htmlsrc_href: ##span.htmlsrc_entire: span.htmlsrc_badseq:normal: red: blue span.htmlsrc_badtag:normal: red: blue span.htmlsrc_badattr:normal: red: blue span.htmlsrc_sgmlspecial:normal: yellow: blue PK0]$$samples/mailto-form.plnu[#! /usr/bin/perl -w # Some scripts for handling mailto URLs within lynx via an interactive form # # Warning: this is a quick demo, to show what kinds of things are possible # by hooking some external commands into lynx. Use at your own risk. # # Requirements: # # - Perl and CGI.pm. # - A "sendmail" command for actually sending mail (if you need some # other interface, change the code below in sub sendit appropriately). # - Lynx compiled with support for lynxcgi, that means EXEC_CGI must have # been defined at compilation, usually done with # ./configure --enable-cgi-links # - Lynx must have support for CERN-style rules as of 2.8.3, which must # not have been disabled at compilation (it is enabled by default). # # Instructions: # (This is for people without lynxcgi experience; if you are already # use lynxcgi, you don't have to follow everything literally, use # common sense for picking appropriate file locations in your situation.) # # - Make a subdirectory 'lynxcgi' under you home directory, i.e. # mkdir ~/lynxcgi # - Put this three script file mailto-form.pl there and make it # executable. For example, # cp mailto-form.pl ~/lynxcgi # chmod a+x ~/lynxcgi/mailto-form.pl # - Edit mailto-form.pl (THIS FILE), there are some strings that # that need to be changed, see ### Configurable variables ### # below. # - Allow lynx to execute lynxcgi files in that directory, for example, # put in your lynx.cfg file: # TRUSTED_LYNXCGI:/home/myhomedir/lynxcgi/mailto-form.pl # where is a real TAB character and you have to put the real # location of your directory in place of "myhomedir", of course. # The '~' abbreviation cannot be used. # You could also just enable execution of all lynxcgi scripts, by # not having any TRUSTED_LYNXCGI options in lynx.cfg at all, but # that can't be recommended. # - Tell lynx to actually use the lynxcgi scripts for mailto URLs. # There are two variants: # a) Redirect "mailto" # Requires patched lynx, currently not yet in the developent code. # Use the following two lines in the file that is configured as # RULESFILE in lynxcfg: # PermitRedirection mailto:* # Redirect mailto:* lynxcgi:/home/myhomedir/lynxcgi/mailto-form.pl?from=myname@myhost&to=* # You can also put them directly in lynx.cfg, prefixing each with # "RULE:". Replace ""myhomedir", "myname", and "myhost" with your # correct values, of course. # b) Redirect "xmailto" # Requires defining a fake proxy before starting lynx, like # export xmailto_proxy=dummy # or for csh: setenv xmailto_proxy dummy # Requires that you change "mailto" to "xmailto" each time you want # to activate a mailto link. This can be done conveniently with # a few keys: 'E', ^A, 'x', Enter. # Use the following two lines in the file that is configured as # RULESFILE in lynxcfg: # PermitRedirection xmailto:* # Redirect xmailto:* lynxcgi:/home/myhomedir/lynxcgi/mailto-form.pl?from=myname@myhost&to=* # You can also put them directly in lynx.cfg, prefixing each with # "RULE:". Replace ""myhomedir", "myname", and "myhost" with your # correct values, of course. # # Limitations: # # - Only applies to mailto URLs that appear as links or are entered at # a 'g'oto prompt. Does not apply to other ways of sending mail, like # the 'c' (COMMENT) key, mailto as a FORM action, or mailing a file # from the 'P'rinting Options screen. # - Nothing is done for charset labelling, content-transfer-encoding # of non-ASCII characters, and other MIME niceties. # # Klaus Weide 20000712 ######################################################################## ########## Configurable variables ###################################### $SENDMAIL = '/usr/sbin/sendmail'; # The location of your sendmail binary $SELFURL = 'lynxcgi:/home/lynxdev/lynxcgi/mailto-form.pl'; # Where this script lives in URL space $SEND_TOKEN = '/vJhOp6eQ'; # When found in the PATH_INFO part of the URL, # this causes the script to actually send mail # by calling $SENDMAIL instead of just throwing # up a form. CHANGE IT! And don't tell anyone! # Treat it like a password. # Must start with '/', probably should have only # alphanumeric ASCII characters. ## Also, make sure the first line of this script points ## to your PERL binary ########## Nothing else to change - I hope ############################# ######################################################################## use CGI; $|=1; ### Upcase first character ##sub ucfirst { ## s/^./\U$1/; ##} # If there are multiple occurrences of the same thing, how to join them # into one string %joiner = (from => ', ', to => ', ', cc => ', ', subject => '; ', body => "\n\n" ); sub joiner { my ($key) = @_; if ($joiner{$key}) { $joiner{$key}; } else { " "; } } # Here we check whether this script is called for actual sending, rather # than form generation. If so, all the rest is handled by sub sendit, below. $pathinfo = $ENV{'PATH_INFO'}; if (defined($pathinfo) && $pathinfo eq $SEND_TOKEN) { $q = new CGI; print $q->header('text/plain'); sendit(); exit; } $method = $ENV{'REQUEST_METHOD'}; $querystring = $ENV{'QUERY_STRING'}; if ($querystring) { if ($method && $method eq "POST" && $ENV{'CONTENT_LENGTH'}) { $querystring =~ s/((^|\&)to=[^?&]*)\?/$1&/; $q0 = new CGI; $q = new CGI($querystring); @fields = $q0->param(); foreach $key (@fields) { @vals = $q0->param($key); # print "Content-type: text/html\n\n"; # print "Appending $key to \$q...\n"; $q->append($key, @vals); # print "

    Current Values in \$q0

    \n"; # print $q0->dump; # print "

    Current Values in \$q

    \n"; # print $q->dump; } } else { $querystring =~ s/((^|\&)to=[^?&]*)\?/$1&/; $q = new CGI($querystring); } } else { $q = new CGI; } print $q->header; $long_title = $ENV{'QUERY_STRING'}; $long_title =~ s/^from=([^&]*)\&to=//; $long_title = "someone" unless $long_title; $long_title = "Compose mail for $long_title"; if (length($long_title) > 72) { $title = substr($long_title,0,72) . "..."; } else { $title = $long_title; } $long_title =~ s/&/&/g; $long_title =~ s/start_html($title), "\n", $q->h1($long_title), "\n", $q->start_form(-method=>'POST', -action => $SELFURL . $SEND_TOKEN), "\n"; print "\n"; @fields = $q->param(); foreach $key (@fields) { @vals = $q->param($key); if (scalar(@vals) != 1) { print "multiple values " . scalar(@vals) ." for $key!\n"; $q->param($key, join (joiner($key), @vals)); } } foreach $key (@fields) { $_ = lc($key); if ($_ ne $key) { print "noncanonical case for $key!\n"; $val=$q->param($key); $q->delete($key); if (!$q->param($_)) { $q->param($_, $val); } else { $q->param($_, $q->param($_) . joiner($_) . "$val"); } } } foreach $key ('from', 'to', 'cc', 'subject') { print $q->Tr, $q->td(ucfirst($key) . ":"), $q->td($q->textfield(-name=>$key, -size=>60, -default=>$q->param($key))), "\n"; $q->delete($key); } # Also pass on any unrecognized header fields that were specified. # This may not be a good idea for general use! # At least some dangerous header fields may have to be suppressed. @keys = $q->param(); if (scalar(@keys) > (($q->param('body')) ? 1 : 0)) { print "
    Additional headers:\n"; foreach $key ($q->param()) { if ($key ne 'body') { print $q->Tr, $q->td(ucfirst($key) . ":"), $q->td($q->textfield(-name=>$key, -size=>60, -default=>$q->param($key))), "\n"; } } } print "
    \n"; print $q->textarea(-name=>'body', -default=>$q->param('body')), "\n"; print "
    \n\n
    ", "\n", $q->submit(-value=>"Send the message"), "\n", $q->endform, "\n"; print "\n"; exit; # This is for header field values. sub sanitize_field_value { my($val) = @_; $val =~ s/\0/./g; $val =~ s/\r\n/\n/g; $val =~ s/\r/\n/g; $val =~ s/\n*$//g; $val =~ s/\n+/\n/g; $val =~ s/\n(\S)/\n\t$1/g; $val; } sub sendit { open (MAIL, "| $SENDMAIL -t -oi -v") || die ("$0: Can't run sendmail: $!\n"); @fields = $q->param(); foreach $key (@fields) { @vals = $q->param($key); if (scalar(@vals) != 1) { print "multiple values " . scalar(@vals) ." for $key!\n"; $q->param($key, join (joiner($key), @vals)); } } foreach $key (@fields) { if ($key ne 'body') { if ($key =~ /[^A-Za-z0-9_-]/) { print "$0: Ignoring malformed header field named '$key'!\n"; next; } print MAIL ucfirst($key) . ": " . sanitize_field_value($q->param($key)) . "\n" or die ("$0: Feeding header to sendmail failed: $!\n"); } } print MAIL "\n" or die ("$0: Ending header for sendmail failed: $!\n"); print MAIL $q->param('body'), "\n" or die ("$0: Feeding body to sendmail failed: $!\n"); close(MAIL) or warn $! ? "Error closing pipe to sendmail: $!" : ($? & 127) ? ("Sendmail killed by signal " . ($? & 127) . ($? & 127) ? ", core dumped" : "") : "Return value " . ($? >> 8) . " from sendmail"; } PK0]Ssamples/jumps.htmnu[ Jumps file
    ?
    This Shortcut List
    g
    Google
    nf
    newsforge
    sf
    sourceforge
    PK0]-Esamples/home.htmnu[ :: hello ::
    Lynx browser...

     

    ...for quicker & saver browsing...

    Light-height, fast and secure text browser.

    PK0]0yӉsamples/jumpsVMS.htmlnu[ Shortcut List

    Shortcut List

    Following is a list of shortcut names and the target links associated with them. In Lynx, pressing J followed by one of these shortcut names will jump you directly to the link. This list will expand over time.

    Name   Link

    ?
    This Shortcut List
    freenets
    FreeNets around the World
    genhelp
    GCG GenHelp
    genman
    GCG GenManual
    home
    WFEB Home Page
    mail
    Read and/or send mail
    multinet
    MultiNet Help
    news
    Read and Send News
    swing
    SWING File/Directory Manager
    swinghelp
    SWING Help
    vmshelp
    VMS Help
    who
    Find out who is online now
    PK0]VBBsamples/mild-colors.lssnu[# From: Vlad Harchev # Setting the normal and default types lets us keep (almost) the same colors # whether the terminal's default colors are white-on-black or black-on-white. # It is not exact since the default "white" is not necessarily the same color # as the ANSI lightgray, but is as close as we can get in a standard way. # # If you really want the terminal's default colors, and if lynx is built using # ncurses' default-color support, remove these two lines: normal: normal: lightgray:black default: normal: white:black # Notes: # better for eyes - it sets black background with mild colors that # have approximately the same intensity. # # grey normal text on black background with green links and brightgreen # highlighted links. em: bold: cyan strong: bold: cyan dt: bold: cyan var: bold: cyan samp: bold: cyan b: bold: cyan i: bold: cyan alink: reverse: brightgreen: black a: bold: green img: dim: cyan: black status: reverse: cyan: black fig: normal: gray caption: reverse: cyan hr: normal: gray blockquote: normal: cyan: black address: normal: cyan title: normal: cyan: black tt: normal: white: black h1: bold: cyan: black label: normal: cyan value: normal: cyan q: normal: cyan small: dim: cyan big: bold: cyan sup: bold: cyan sub: dim: cyan code: normal: cyan span.htmlsrc_comment:normal:white span.htmlsrc_tag:normal:cyan ##the following makes no difference (except increasing the speed) since tag ##is already in cyan. #span.htmlsrc_attrib:normal:cyan #span.htmlsrc_attrval:normal:magenta span.htmlsrc_abracket:normal:cyan span.htmlsrc_entity:normal:white ##span.htmlsrc_href: ##span.htmlsrc_entire: span.htmlsrc_badseq:normal:red span.htmlsrc_badtag:normal:red span.htmlsrc_badattr:normal:red span.htmlsrc_sgmlspecial:normal:yellow PK0]a w66samples/lynx.iconu[00&h(0` ʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwwttttttttttttKtKtttttttttttK#t####KttttKtttt##t#K##t#KttttKtt#t#KKt#t##ttKttKKttttt#K#tttttttt#t##t####KttttttKt##ttttK###KK#tttttKtt#Kt#ttttK##tK#K#tKttttttKKtt##tttK#tttK#ttttt#ttKtt#t#ttt###KKKtK#ttKt#t####t####ttt#ttK#t##K#K###t#KttK#t#R#K###R###Ktt###t#tKt######KtttKKtttt#t#ttttK#t#tttt##tttt##ttt#K##t##tttt#K#ttt#t##tttK##K#ttttt#K#tt#t##tttt#t#ttttKttt#ttt###tKttK###ttKt#tttt#t#t#ttttKtttKttt#tt#t#t#ttttttt#tt#ttt###t#tKtttK###tKKttt###t#KKKKt#K###tttttttttKKKK#K#ttttttttKKK##ttttttKtKKKtttttt##t?( @ʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___www***********************************************************?PK0].;?samples/mailcapnu[# Copyright (c) 1991 Bell Communications Research, Inc. (Bellcore) # # Permission to use, copy, modify, and distribute this material # for any purpose and without fee is hereby granted, provided # that the above copyright notice and this permission notice # appear in all copies, and that the name of Bellcore not be # used in advertising or publicity pertaining to this # material without the specific, prior written permission # of an authorized representative of Bellcore. BELLCORE # MAKES NO REPRESENTATIONS ABOUT THE ACCURACY OR SUITABILITY # OF THIS MATERIAL FOR ANY PURPOSE. IT IS PROVIDED "AS IS", # WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. # # Prototype Mailcap file # Note that support for text & multipart are "built in" to metamail, # as are rudimentary support for message, and application. # However, any of these may be overridden in mailcap. # # Note that users may override or extend this with a .mailcap # file in their own directory. However, there is NO NEED # for them to copy entries from this file, as metamail will # pick up entries from both the system and personal mailcap files. # # NOTE: This file has been heavily modified for use as an example # configuration file for Lynx # In the samples given test=test -n "$DISPLAY" is used to # determine if the current session is X capable by checking # for the existence of a DISPLAY environment variable. # Lynx actually uses a getenv() call for DISPLAY (DECW$DISPLAY # on VMS) when it encounters test=test -n "$DISPLAY" or # test=test -z "$DISPLAY" in a viewer assignment, instead of # spawning to execute "test" via a system() call, i.e., those # two strings, respectively, are handled equivalently to the # :XWINDOWS and :NON_XWINDOWS flags for VIEWER: assignments # in lynx.cfg. Any system without the DISPLAY (or DECW$DISPLAY) # environment variable will be assumed to be Non-X. # You can append a ';' followed by "q=#.#", e.g., ; q=0.002 # to set the quality parameter for the Content-Type, which can be # included in the Accept: header Lynx sends to http servers (the # default quality value is 1.0, and Lynx appends the parameter # to the Content-Type only if the value is less than 1.0). # You can append a ';' followed by "mxb=#", e.g., ; mxb=1000000 # to set the maxbytes parameter for the Content-Type, which can be # included in the Accept: header Lynx sends to http servers (the # default maxbytes value is 0, meaning no maximum, and Lynx appends # the parameter to the Content-Type only if the value exceeds 0). # The following line is for sites where xv understands jpeg but xloadimage # is preferred. # # the test line specifies that this viewer should only be used if # the display variable is set. image/jpeg; xv %s; test=test -n "$DISPLAY" # The following sends all other image subtypes to xloadimage #image/*; xloadimage %s; ; test=test -n "$DISPLAY" # The following sends all other image subtypes to xv image/*; xv %s; ; test=test -n "$DISPLAY" # If you have an interactive Postscript interpreter, you should think carefully # before replacing lpr with it in the following line, because PostScript # can be an enormous security hole. It is RELATIVELY harmless # when sent to the printer... # This one is for NON-X #application/postscript; lpr %s \; echo SENT FILE TO PRINTER; ;test=test -z "$DISPLAY" # This one is for X. It's already the default via src/HTInit.c. #application/postscript; ghostview %s; ; test=test -n "$DISPLAY" # The following should be commented out if you do NOT have safe-tcl # and should be uncommented if you DO have safe-tcl #application/safe-tcl; swish -safe -messaging -f %s # A common problem with the mailcap mechanism is getting differential # behavior from different programs. This problem is compounded by the fact # that some programs, notably Mosaic, do not implement the "test" clause in # mailcap files. If you are using Lynx and X Mosaic together you should # place all X-centric entries before non-X entries. X Mosaic will use # whichever entry is defined first so further entries will be ignored. # # Lynx exports the environment variable LYNX_VERSION, so it can be tested # by scripts to determine if Lynx is running or not. However, the string # test=test -n "$LYNX_VERSION" # is handled simply as a flag which yields success when Lynx encounters it # in the mailcap file (i.e., Lynx does not bother to execute "test" via a # system() call to find out if it's running, because it obviously is). # Inclusion of the string for that test can be used to prevent other # software which reads the mailcap file from acting on assignments intended # only for Lynx. The string # test=test -z "$LYNX_VERSION" # similarly is treated by Lynx simply as a flag which yields failure. PK0]K:unsamples/installdirs.htmlnu[ File Management Install Targets

    Install Target directories

    PK0]isamples/lynx-keymapsnu[# $LynxId: lynx-keymaps,v 1.7 2013/10/13 20:40:00 tom Exp $ # # This is a sample key sequence definition file. It is used by Lynx when # built with ncurses or slang, to augment the definitions from your terminal's # termcap or terminfo description. # (Lynx implements this mechanism only if USE_KEYMAPS is defined during # compilation, which has nothing to do with the KEYMAP directives in lynx.cfg, # see source file LYCurses.h.) # Lines that start with a '#' are comment lines. Blank lines are ignored. # The 'setkey' function may be used in two ways: # # 1. setkey ESC-SEQUENCE KEYSYM # 2. setkey ESC-SEQUENCE KEYSYM_NAME # # where KEYSYM is an integer. A keysym is essentially with the lynx.cfg # file calls a 'keystroke', but I think that keysym is a more appropriate # name. The keysym is an integer and may be expressed in various ways: # # as a decimal integer: 97 # hexadecimal: 0x61 # Octal: 0141 # as an ASCII character: 'a' # # Some keysyms may be expressed symbolically as a keysym name using the # second form. The currently recognized symbolic names are: # # UPARROW # DNARROW # RTARROW # LTARROW # PGDOWN # PGUP # HOME # END # F1 # F2 # F3 # F4 # F5 # F6 # F7 # F8 # F9 # F10 # F11 # F12 # DO_KEY # FIND_KEY # SELECT_KEY # INSERT_KEY # REMOVE_KEY # DO_NOTHING # # It does not matter if your keyboard does not have some of the keys # implied by the above names. The fact is that lynx uses these keys as an # an intermediate representation. # # The ESC-SEQUENCE should be enclosed in double quotes. The '^' character # is special and indicates a control character, e.g., ^K is Ctrl-K. An ESC # character (ascii 27) may be represented as ^[. As an example, many # terminals have arrow keys that emit 'ESC [ A' for the UP arrow. This may # be represented as the escape sequence "^[[A". The default keymapping is # given below: # setkey "\033[A" UPARROW setkey "\033OA" UPARROW setkey "\033[B" DNARROW setkey "\033OB" DNARROW setkey "\033[C" RTARROW setkey "\033OC" RTARROW setkey "\033[D" LTARROW setkey "\033OD" LTARROW setkey "\033[1~" FIND_KEY setkey "\033[2~" INSERT_KEY setkey "\033[3~" REMOVE_KEY setkey "\033[4~" SELECT_KEY setkey "\033[5~" PGUP setkey "\033[6~" PGDOWN setkey "\033[8~" END setkey "\033[7~" HOME setkey "\033[28~" F1 setkey "\033[29~" DO_KEY # # All other keys map to themselves, e.g, # setkey "a" 'a' # # Now suppose that your terminal produces different escape sequences for # HOME and END. In particular, suppose that the home key produces 'ESC [ # H' and that the end key produces 'ESC [ K'. Then these may be defined to # map to lynx HOME and END keys via # setkey "^[[H" HOME setkey "^[[K" END # # Similarly, we may map emacs-like sequences to these functions: # setkey "^[<" HOME setkey "^[>" END # # Note that it may be impossible to map several sequences to the same # keysym (NCURSES only?), in that case the mapping occurring last wins. # # The following maps a sequence commonly used for Shift+Tab to the # corresponding code. It should not be needed if the terminfo file # has the correct info for kcbt. # setkey "^[[Z" 0x10F # # Other special escapes: # \a bell # \b backspace # \f form-feed # \n newline (line-feed) # \r carriage-return # \t tab # \v vertical tab # \ octal number, up to 3 digits, e.g., "\033". # \d decimal number, up to 3 digits, e.g., "\d99" # \x hexadecimal number, up to 2 digits, e.g., "\xFF" # # For Unix-systems (which have termcap or terminfo) you may also use symbols # that refer to the termcap/terminfo, by referencing the name bracketed by # "^(" and ")", e.g., setkey "^(cuu1)" UPARROW setkey "^(up)" UPARROW # # The following extension, introduced after lynx2.8.2, allows to force # recognition of meta (ESC) prefixes - especially useful with the # "Bash-like" lineeditor binding. Its use is unnecessary in most # cases if Lynx was built with ncurses, but is probably necessary for # all keys that should recognize ESC as a prefix if Lynx was built with # slang. # # setkey ESC-SEQUENCE Meta-LETTER # setkey ESC-SEQUENCE Meta-KEYSYM # setkey ESC-SEQUENCE Meta-KEYSYM_NAME # # for example #setkey "\033b" Meta-b #setkey "\033e" Meta-'e' #setkey "\033\033[28~" Meta-F1 # # The following extensions, introduced after lynx2.8.2, allow mapping # escape sequences directly to key commands (lynxactioncodes). # # setkey ESC-SEQUENCE LAC:LYNX_ACTION # setkey ESC-SEQUENCE LAC:LYNX_ACTION:LYNX_EDITACTION # # where LYNX_ACTION is a key command specified as for lynx.cfg KEYMAP # options and as listed on the KEYMAP ('K') screen, and LYNX_EDITACTION # is a line-editor action specified as for KEYMAP and as listed in Line # Editor help pages. Using this form makes remapping according to user # preference with KEYMAP impossible, and should thus be used sparingly # (in general, use KEYMAP with PASS instead, if the goal is to force # recognition of a key in form text fields). For example: # #setkey "\033e" LAC:EDITTEXTAREA:PASS PK0]0asamples/bright-blue.lssnu[# From: Ilya Zakharevich # # Colors: black, red, green, brown, blue, magenta, cyan, # lightgray, gray, brightred, brightgreen, yellow, brightblue, # brightmagenta, brightcyan, white. # # On some terminals combination of background and foreground of different # brightness is not supported. # # Normal type styles correspond to HTML tags. # # default should be the *last* line normal: normal: brightcyan: blue default: normal: brightcyan: blue # match "link": input: normal: green textarea: normal: white: cyan input.type.submit:normal: blue: black # type-less input is the same as type=text (similar to textarea) input.type.: normal: white: cyan input.type.text:normal: white: cyan input.type.password:normal: white: cyan input.type.file:normal: brightred: cyan # Shows gray on black?! edit.current:normal: yellow: lightgray #edit.current:normal:yellow:white edit.active:normal: black: white edit.active.marked:normal: white: black edit.prompt:normal: white: gray edit.prompt.marked:normal: black: white edit.active.arrow:normal: red: white edit.prompt.arrow:normal: red: gray edit.active.pad:normal: red: lightgray edit.prompt.pad:normal: white: black option:normal: red: black #alink:normal:red:green scroll.arrow: bold: white: default scroll.noarrow: normal: black: default scroll.bar: bold: white #scroll.back:reverse:green:red status: reverse: yellow: black h1: bold: yellow: black em: bold: white title: normal: magenta: black i: bold: white table: normal: white blockquote: normal: white menu.bg: normal: black: lightgray menu.frame: normal: black: lightgray menu.entry: normal: white: gray menu.n: normal: white: gray menu.active: normal: white: black menu.sb: normal: brightred: lightgray forwbackw.arrow:bold: red: default hot.paste: normal: brightred: gray # FIXME: what are these? em.a: reverse: black: blue em.b: reverse: white: black font.letter: normal: default: black link.blue: bold: white: brightblue link.blue.prev: bold: yellow: brightblue li.blue: bold: blue: black link.blue.next: bold: blue: black INCLUDE:lynx.lss # default should be the *last* line #?default: normal: brightcyan: blue PK0]M5ѐsamples/lynx.comnu[$ ! LYNX.COM $ ! sets up lynx as a command so that it will accept command line arguments $ ! It is assumed that this file is located in the same place as the LYNX $ ! Image. If it is not then you must change the lynx symbol. $ ! Written by Danny Mayer, Digital Equipment Corporation $ ! $ ! $ THIS_PATH = F$PARSE(F$ENV("PROCEDURE"),,,"DEVICE") + - F$PARSE(F$ENV("PROCEDURE"),,,"DIRECTORY") $ alpha = F$GETSYI("HW_MODEL") .GT. 1023 $ ! $ CPU := VAX $ IF alpha THEN CPU :== AXP $ lynx:==$'THIS_PATH'lynx_'CPU'.exe $! $! fill in another gateway if you wish $! $define "WWW_wais_GATEWAY" "http://www.w3.org:8001" $! $! fill in your NNTP news server here $! $ !define "NNTPSERVER" "news" $ ! $ ! Set up the Proxy Information Here $ ! $ ! no_proxy environmental variable $ ! The no_proxy environmental variable is checked to get the list of $ ! of hosts for which the proxy server is not consulted. $ ! NOTE: THE no_proxy VARIABLE MUST BE IN LOWER CASE. On VMS systems $ ! this is accomplished by defining a logical name in double-quotes. $ ! $ ! The no_proxy environmental variable is a comma-separated or $ ! space-separated list of machine or domain names, with optional $ ! :port part. If no :port part is present, it applies to all ports $ ! on that domain. $ ! $ ! Example: $ ! define "no_proxy" "cern.ch,some.domain:8001" $ ! $ ! $ define "no_proxy" "yourorg.com" ! Use only for outside of yourorg $ ! $ ! proxy server environmental variables $ ! In Lynx, each protocol needs an environmental variable defined for $ ! it in order for it to use a proxy server set up for that protocol. $ ! The proxy environmental variable is of the form: $ ! protocol_proxy where protocol is the protocol name part of the URL, $ ! for example: http or ftp. NOTE: the protocol server proxy variable $ ! MUST BE IN LOWER CASE. $ ! Example: $ ! define "http_proxy" "http://your_proxy.yourorg:8080/" $ ! $ Proxy_Server = "http://your_proxy.yourorg:8080/" $ define "http_proxy" "''Proxy_Server'" $ define "ftp_proxy" "''Proxy_Server'" $ define "gopher_proxy" "''Proxy_Server'" $ define "news_proxy" "''Proxy_Server'" $ define "wais_proxy" "''Proxy_Server'" $ ! PK0])samples/oldlynxnuȯ#!/bin/sh # invoke lynx built with color-style, overriding the color options to use the # non-color-style scheme -TD my_cfg=${TMPDIR:-/tmp}/lynxcfg$$ my_lss=${TMPDIR:-/tmp}/lynxlss$$ trap "rm -f $my_lss $my_cfg" 0 1 2 5 15 echo >$my_lss rm -f "$my_cfg" echo "DEFAULT_COLORS:off" >>$my_cfg if test -n "$LYNX_CFG" ; then echo "include:$LYNX_CFG" >>$my_cfg fi echo "COLOR_STYLE:" >>$my_cfg echo "NESTED_TABLES:off" >>$my_cfg LYNX_CFG=$my_cfg export LYNX_CFG LYNX_LSS=$my_lss export LYNX_LSS ${LYNX_PROG-lynx} "$@" PK0]2^^samples/keepviewernuȯ#!/bin/sh # This script can be invoked as a wrapper for an external viewer by lynx, e.g., # given this line in lynx.cfg # XLOADIMAGE_COMMAND:keepviewer xli %s & # it will invoke xli on a hardlink to the file (which is assumed to be in the # temporary directory created by lynx), and clean up when the viewer exits. # # Parameters: # $1 is viewer # $2 is filename if test $# = 2 ; then chmod 600 $2 myfile=`echo $2 | sed -e 's@\(.*/tmp/\)\([^/]*/\)\?\(.*\)@\1my\3@'` ln $2 $myfile || exit 1 trap "rm -f $myfile" 0 1 2 5 15 eval $1 $myfile else echo "Usage: keepviewer " exit 1 fi PK0]3samples/lynx-demo.cfgnu[# $LynxId: lynx-demo.cfg,v 1.6 2018/07/08 15:22:44 tom Exp $ # vile:cfgmode # From: claudio santambrogio STARTFILE:file://localhost/~/home.htm HELPFILE:file://localhost/~/help/lynx_help_main.html.gz DEFAULT_INDEX_FILE:https://lynx.invisible-island.net/ CHARACTER_SET:cp850 ASSUME_CHARSET:utf-8 FORCE_SSL_COOKIES_SECURE:TRUE COOKIE_REJECT_DOMAINS:ad.doubleclick.net PERSISTENT_COOKIES:TRUE COOKIE_FILE:~/.lynx_cookies COOKIE_SAVE_FILE:~/.lynx_cookies DEFAULT_CACHE_SIZE:100 DEFAULT_VIRTUAL_MEMORY_SIZE:5120000 SOURCE_CACHE:memory DEFAULT_USER_MODE:INTERMEDIATE VERBOSE_IMAGES:FALSE MAKE_PSEUDO_ALTS_FOR_INLINES:FALSE MINIMAL_COMMENTS:TRUE COLOR:0:lightgray:black COLOR:1:red:black COLOR:2:yellow:blue COLOR:4:green:black COLOR:5:brown:black COLOR:6:brightred:black 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: PK0]hsamples/lynxdumpnuȯ#!/bin/sh # lynx -dump w/o numbers : ${TMPDIR-/tmp} : ${HOME-`pwd`} oldmask=`umask` umask 077 MYTMP=$TMPDIR/mytmp$$ mkdir $MYTMP || exit 1 trap 'cd /; rm -rf $MYTMP' 0 1 2 5 15 if test $HOME/.lynxrc ; then cp $HOME/.lynxrc $MYTMP/.lynxrc fi echo 'keypad_mode=NUMBERS_AS_ARROWS' >> $MYTMP/.lynxrc HOME=$MYTMP; export HOME umask $oldmask lynx -justify -dump -force_html -with_backspaces -nolist $* PK0]2qO  samples/midnight.lssnu[# From: claudio santambrogio em:bold:green:blue strong:bold:red:blue b:bold:white:blue i:bold:yellow:blue alink:reverse:brightgreen:blue a:bold:cyan:blue img:dim:gray:blue status:reverse:brightblue:blue forwbackw.arrow:bold:brightblue:blue alert:bold:red:blue fig:normal:gray:blue caption:reverse:brown:blue hr:normal:yellow:blue blockquote:normal:brightblue:blue #ul:normal:brown:blue address:normal:magenta:blue title:normal:grey:blue tt:dim:gray:blue h1:bold:brightblue:blue label:normal:magenta:blue value:normal:green:blue high:bold:brightmagenta:blue q:normal:yellow:magenta small:dim:gray:blue big:bold:yellow:blue sup:bold:yellow:blue sub:dim:gray:blue lh:bold:yellow:magenta area:normal:default:blue body:normal:default:blue br:normal:default:blue center:normal:default:blue center.header:normal:default:blue div:normal:default:blue font:normal:default:blue font.letter:normal:default:blue h2:normal:default:blue h3:normal:default:blue h4:normal:default:blue h5:normal:default:blue h6:normal:default:blue head:normal:default:blue link:normal:default:blue map:normal:default:blue meta:normal:default:blue p:normal:default:blue table:normal:default:blue td:normal:default:blue tr:normal:default:blue title:normal:default:blue form:normal:default:blue input:normal:default:blue input.submit:normal:cyan:blue select:normal:default:blue option:normal:default:blue pre:normal:default:blue dd:normal:default:blue dt:normal:default:blue ul:normal:default:blue li:normal:default:blue base:normal:default:blue iframe:normal:red:blue cite:normal:yellow:blue span.htmlsrc_comment:normal:green:blue span.htmlsrc_tag:normal:brightgreen:blue span.htmlsrc_attrib:normal:cyan:blue span.htmlsrc_attrval:normal:white:blue span.htmlsrc_abracket:normal:brightgreen:blue span.htmlsrc_entity:normal:white:blue ##span.htmlsrc_href: ##span.htmlsrc_entire: span.htmlsrc_badseq:normal:red:blue span.htmlsrc_badtag:normal:red:blue span.htmlsrc_badattr:normal:red:blue span.htmlsrc_sgmlspecial:normal:yellow:blue normal:normal:default:bluePK0]g~{ samples/lynx.lssnu[# Setting the normal and default types lets us keep (almost) the same colors # whether the terminal's default colors are white-on-black or black-on-white. # It is not exact since the default "white" is not necessarily the same color # as the ANSI lightgray, but is as close as we can get in a standard way. # # If you really want the terminal's default colors, and if lynx is built using # ncurses' default-color support, remove these two lines: normal: normal: lightgray:black default: normal: white:black # Normal type styles correspond to HTML tags. # # The next line (beginning with "em") means: use bold if mono, otherwise # brightblue on em: bold: brightblue strong: bold: brightred b: bold: red i: bold: brightblue a: bold: green img: dim: brown fig: normal: gray caption: reverse: brown hr: normal: yellow blockquote: normal: brightblue ul: normal: brown address: normal: magenta title: normal: magenta tt: dim: brightmagenta: black h1: bold: yellow: blue label: normal: magenta q: normal: yellow: magenta small: dim: default big: bold: yellow sup: bold: yellow sub: dim: gray li: normal: magenta code: normal: cyan cite: normal: cyan table: normal: brightcyan tr: bold: brown td: normal: default br: normal: default # Special styles - not corresponding directly to HTML tags # alert - status bar, when message begins "Alert". # alink - active link # normal - default attributes # status - status bar # whereis - whereis search target # #normal:normal:default:blue alink: reverse: yellow: black status: reverse: yellow: blue alert: bold: yellow: red whereis: reverse+underline: magenta: cyan # currently not used #value:normal:green menu.bg: normal: black: lightgray menu.frame: normal: black: lightgray menu.entry: normal: lightgray: black menu.n: normal: red: gray menu.active: normal: yellow: black menu.sb: normal: brightred: lightgray forwbackw.arrow:reverse hot.paste: normal: brightred: gray # Styles with classes -
      etc. ul.red: underline: brightred ul.blue: bold: brightblue li.red: reverse: red: yellow li.blue: bold: blue strong.a: bold: black: red em.a: reverse: black: blue strong.b: bold: white: red em.b: reverse: white: blue strong.debug: reverse: green font.letter: normal: white: blue input.submit: normal: cyan tr.baone: bold: yellow tr.batwo: bold: green tr.bathree: bold: red # # Special handling for link. link: normal: white link.green: bold: brightgreen link.red: bold: black: red link.blue: bold: white: blue link.toc: bold: black: white # Special cases for link - the rel or title is appended after the class. # link.red.next: bold: red link.red.prev: bold: yellow: red link.blue.prev: bold: yellow: blue link.blue.next: bold: blue link.green.toc: bold: white: green # # Define styles that will be used when syntax highlighting is requested # (commandline option -prettysrc). span.htmlsrc_comment:normal: white span.htmlsrc_tag:normal: white #If you don't like that the tag name and attribute name are displayed #in different colors, comment the following line. span.htmlsrc_attrib:normal: cyan span.htmlsrc_attrval:normal: magenta span.htmlsrc_abracket:normal: white span.htmlsrc_entity:normal: white ##span.htmlsrc_href: ##span.htmlsrc_entire: span.htmlsrc_badseq:normal: red span.htmlsrc_badtag:normal: red span.htmlsrc_badattr:normal: red span.htmlsrc_sgmlspecial:normal: yellow PK0]uFFsamples/opaque.lssnu[# From: claudio santambrogio em:bold:cyan strong:bold:cyan dt:bold:cyan var:bold:cyan samp:bold:cyan b:bold:cyan i:bold:cyan alink:reverse:brightgreen:red a:bold:green img:dim:cyan:default status:reverse:cyan:default fig:normal:gray caption:reverse:cyan hr:normal:gray blockquote:normal:cyan:default address:normal:cyan title:normal:cyan:default tt:normal:white:default h1:bold:cyan:default label:normal:cyan value:normal:cyan high:bold:cyan q:normal:cyan small:dim:cyan big:bold:cyan sup:bold:cyan sub:dim:cyan lh:bold:cyan code:normal:cyan alert:bold:red normal:normal:brown:black span.htmlsrc_comment:normal:white span.htmlsrc_tag:normal:cyan ##the following makes no difference (except increasing the speed) since tag ##is already in cyan. #span.htmlsrc_attrib:normal:cyan #span.htmlsrc_attrval:normal:magenta span.htmlsrc_abracket:normal:cyan span.htmlsrc_entity:normal:green ##span.htmlsrc_href: ##span.htmlsrc_entire: span.htmlsrc_badseq:normal:red span.htmlsrc_badtag:normal:red span.htmlsrc_badattr:normal:red span.htmlsrc_sgmlspecial:normal:yellow PK0]AYsamples/cernrules.txtnu[# This files contains examples and an explanation for the RULESFILE / RULE # feature. # # Rules for Lynx are experimental. They provide a rudimentary capability # for URL rejection and substitution based on string matching. # Most users and most installations will not need this feature, it is here # in case you find it useful. Note that this may change or go away in # future releases of Lynx; if you find it useful, consider describing your # use of it in a message to . # # Syntax: # ======= # Summary of common forms: # # Fail URL1 # Map URL1 URL2 [CONDITION] # Pass URL1 [URL2] [CONDITION] # Redirect URL1 URL2 [CONDITION] # RedirectPerm URL1 URL2 [CONDITION] # UseProxy URL1 PROXYURL [CONDITION] # UseProxy URL1 "none" [CONDITION] # # Alert URL1 MESSAGE [CONDITION] # AlwaysAlert URL1 MESSAGE [CONDITION] # UserMsg URL1 MESSAGE [CONDITION] # InfoMsg URL1 MESSAGE [CONDITION] # Progress URL1 MESSAGE [CONDITION] # # As you may have guessed, comments are introduced by a '#' character. # Rules have the general form # Operator Operand1 [Operand2] [CONDITION] # with words separated by whitespace. Words containing space can be quoted # with "double quotes". Although normally this should not be necessary # necessary for URLs, it has to be used for MESSAGE Operands in Alert etc. # See below for an explanation of the optional CONDITION. # # Recognized operators are # # Fail URL1 # Reject access to this URL, stop processing further rules. # # Map URL1 URL2 # Change the current URL to URL2, then continue processing. # # Pass URL1 [URL2] # Accept this URL and stop processing further rules; if URL2 # is given, apply this as the last mapping. # See the next item for reasons why you generally don't want to "pass" # a changed URL. # # RedirectTemp URL1 URL2 # RedirectPerm URL1 URL2 # Redirect [STATUS] URL1 URL2 # Stop processing further rules and redirect to URL2, just as if lynx had # received a HTTP redirection with URL2 as the new location. This means that # URL2 is subject to any applicable permission checking, if it passes a new # request will be issued (which may result in a new round of rules checking, # with a new "current URL") or the new URL might be taken from the cache, and, # after successful loading, lynx's idea of what the loaded document's URL is # will be fully updated. All this does not happen if you just "pass" a changed # URL (or let it fall through), so this is generally the preferred way for # substituting URLs. # If the RedirectPerm variant is used, or if the optional word is supplied and # is either "permanent" or "301", act as if lynx had received a permanent # redirection (with HTTP status 301). In most cases this will not make a # noticeable difference. Lynx may cache the location in a special way for 301 # redirections, so that the redirection is followed immediately the next time # the same original URL is accessed, without re-checking of rules. Therefore # the permanent variant should never be used if the desired outcome of rules # processing depends on variable conditions (see CONDITIONS below) or on # setting a special flag (see next item). # # PermitRedirection URL1 # Mark following redirection as permitted, and continue processing. Some # redirection locations are normally not allowed, because permitting them in a # response from an arbitrary remote server would open a security hole, and # others are not allowed if certain restrictions options are in effect. Among # redirection locations normally always forbidden are lynxprog: and lynxexec: # schemes. With "default" anonymous restrictions in effect, many URL schemes # are disallowed if the user would not be allowed to use them with 'g'oto. # This rule allows to override the permission checking if rules processing ends # with a Redirect (including the RedirectPerm or RedirectTemp forms). It is # ignored otherwise, in particular, it does not influence acceptance if rules # processing ends with a "Pass" and a real redirection is received in the # subsequent HTTP request. If redirections are chained, it only applies to the # redirection that ends the same rules cycle. Note that the new URL is still # subject to other permission checks that are not specific to redirections; but # using this rule may still weaken the expected effect of -anonymous, # -validate, -realm, and other restriction options, including TRUSTED_EXEC and # similar in lynx.cfg, so be careful where you redirect to if restrictions are # important! # # UseProxy URL1 PROXYURL # Stop processing further rules, and force access through the proxy given by # PROXYURL. PROXYURL should have the same form as required for foo_proxy # environment variables and lynx.cfg options, i.e., (unless you are trying to # do something unusual) "http://some.proxy-server.dom:port/". This rule # overrides any use of a proxy (or external gateway) that might otherwise apply # because of environment variables or lynx.cfg options, it also overrides any # "no_proxy" settings. # # UseProxy URL1 none # Mark request as NOT using any proxy (or external gateway), and continue # processing(!). For a request marked this way, any subsequent UseProxy # rule with a PROXYURL will be ignored, and any use of a proxy (or external # gateway) that might otherwise apply because of environment variables or # lynx.cfg options will be overridden. Note that the marking will not # survive a Redirect rule (since that will result, if successful, in a # new request). # # Alert URL1 MESSAGE # AlwaysAlert URL1 MESSAGE # UserMsg URL1 MESSAGE # InfoMsg URL1 MESSAGE # Progress URL1 MESSAGE # These produce various kinds of statusline messages, differing in whether # a pause is enforced and in its duration, immediately when the rule is # applied. AlwaysAlert shows the message text even in non-interactive mode # (-dump, -source, etc.). Rule processing continues after the message is # shown. As usual, these rules only apply if URL1 matches. MESSAGE is # the text to be displayed, it can contain one occurrence of "%s" which # will be replaced by the current URL, literal '%' characters should be # doubled as "%%". # # Rules are processed sequentially first to last for each request, a rule # applies if the current URL matches URL1. The current URL is initally the # URL for the resource the user is trying to access, but may change as the # result of applied Map rules. case-sensitive (!) string comparison is used, # in addition URL1 can contain one '*' which is interpreted as a wildcard # matching 0 or more characters. So if for example # "http://example.com/dir/doc.html" is requested, it would match any of # the following: # Pass http:* # Pass http://example.com/*.html # Pass http://example.com/* # Pass http://example* # Pass http://*/doc.html # but not: # Pass http://example/* # Pass http://Example.COM/dir/doc.html # Pass http://Example.COM/* # # If a URL2 is given and also contains a '*', that character will be # replaced by whatever matched in URL1. Processing stops with the # first matching "Fail" or "Pass" or when the end of the rules is reached. # If the end is reached without a "Fail" or "Pass", the URL is allowed # (equivalent to a final "Pass *"). # # The requested URL will have been transformed to Lynx's normal # representation. This means that local file resources should be # expected in the form "file://localhost/", # not in the machine's native representation for filenames. # # Anyone with experience configuring the venerable CERN httpd server will # recognize some of the syntax - in fact, the code implementing rules goes # back to a common ancestor. But note the differences: all URLs and URL- # patterns here have to be given as absolute URLs, even for local files. # (Absolute URLs don't imply proxying.) # # CONDITIONS # ---------- # All rules mentioned can be followed by an optional CONDITION, which can # be used to further restrict when the rule should be applied (in addition # to the match on URL1). A CONDITION takes one of the forms # "if" CONDITIONFLAG # "unless" CONDITIONFLAG # and currently two condition flags are recognized: # "userspecified" (or abbreviated "userspec") # "redirected" # To explain these, first some terms need to be defined. A "request" # is... # # A user action (like following a link, or entering a 'g'oto URL) can either be # rejected immediately (for example, because of restrictions in effect, or # because of invalid input), or can generate a "request". For the purpose of # this discussion, a "request" is the sequence of processing done by lynx, # which might ultimately lead to an actual network request and loading and # display of data; a request can also result in rejection (for example, some # restrictions are checked at this stage), or in a redirection. A redirection # in turn can be rejected (which makes the request fail), or can automatically # generate a new request. A "request chain" is the sequence of one or more # requests triggered by the same user event that are chained together by # redirections. # For each request, some URL schemes are handled (or rejected) specially, see # Limitation 1 below, the others are passed to the generic access code. Rules # processing occurs at the beginning of the generic access code, before a # request is dispatched to the scheme-specific protocol module (but after # checking whether the request can be satisfied by re-displaying an already # cached document). # With these definitions, the meaning of the possible CONDITIONFLAGS: # # if redirected # The rule applies if the current request results from a redirection; # whether that was a real HTTP redirection or one generated by a rule # in the previous request makes no difference. In other words, the # condition is true if the current request is not the first one in the # request chain. # # if userspecified # The rule applies if the initial URL of the request chain was specified # by the user. Lynx marks a request as "user specified" for URLs that # come from 'g'oto prompts, as well as for following links in a bookmark # or Jump file and some other special (lynx-generated) pages that may # contain URLs that were typed in by the user. # Note that this is not a property of the request, but of the whole request # chain (based on where the first request's URL came from). The current # URL may differ from what the user typed # - because of initial fixups, including conversion of Guess-URLs and file # paths to full URLs, # - because of Map rules applied, and/or # - because of a previous redirection. # So to make reasonably sure a suspicious or potentially dangerous URL has # been entered by the user, i.e. is not a link or external redirection # location that cannot be trusted, a combination of "userspecified" and # "redirected" flags should be used, for example # Fail URL1 unless userspecified # Fail URL1 if redirected # ... # # CAVEAT # ====== # First, to squash any false expectations, an example for what NOT TO DO. # It might be expected that a rule like # Fail file://localhost/etc/passwd # <- DON'T RELY ON THIS # could be used to prevent access to the file "/etc/passwd". This might # fool a naive user, but the more sophisticated user could still gain # access, by experimenting with other forms like (@@@ untested) # "file:///etc/passwd" or "/etc//passwd" # or "/etc/p%61asswd" or "/etc/passwd?" or "/etc/passwd#X" and so on. # There are many URL forms for accessing the same resource, and Lynx # just doesn't guarantee that URLs for the same resource will look the # same way. # # The same reservation applies to any attempts to block access to unwanted # sites and so on. This isn't the right place for implementing it. # (Lynx has a number of mechanisms documented elsewhere to restrict access, # see the INSTALLATION file, lynx.cfg, lynx -help, lynx -restrictions.) # # Some more useful applications: # # 1. Disabling URLs by access scheme # ---------------------------------- # Fail gopher:* # Fail finger:* # Fail lynxcgi:* # Fail LYNXIMGMAP:* # This should work (but no guarantees) because Lynx canonicalizes # the case of recognized access schemes and does not interpret # %-escaping in the scheme part (@@@ always?) # # Note that for many access schemes Lynx already has mechanisms to # restrict access (see lynx.cfg, -help, -restrictions, etc.), others # have to be specifically enabled. Those mechanisms should be used # in preference. # Note especially Limitation 1 below. # This can be used for the remaining cases, or in addition by the # more paranoid. Note that disabling "file:*" will also make many # of the special pages generated by lynx as temporary files (INFO, # history, ...) inaccessible, on the other hand it doesn't prevent # _writing_ of various temp files - probably not what you want. # # You could also direct access for a scheme to a brief text explaining # why it's not available: # Redirect news:* http://localhost/texts/newsserver-is-broken.html # # 2. Preventing accidental access # ------------------------------- # If there is a page or site you don't want to access for whatever # reason (say there's a link to it that crashes Lynx [don't forget to # report a bug], or if that starts sending you a 5 Mb file you don't # want, or you just don't like the people...), you can prevent yourself # from accidentally accessing it: # Fail http://bad.site.com/* # # 3. Compressed files # ------------------- # You have downloaded a bunch of HTML documents, and compressed them # to save space. Then you discover that links between the files don't # work, because they all use the names of the uncompressed files. The # following kind of rule will alow you to navigate, invisibly accessing # the compressed files: # Map file://localhost/somedir/*.html file://localhost/somedir/*.html.gz # or, perhaps better: # Redirect file://localhost/somedir/*.html file://localhost/somedir/*.html.gz # # 4. Use local copies # ------------------- # You have downloaded a tree of HTML documents, but there are many links # between them that still point to the remote location. You want to access # the local copies instead, after all that's why you downloaded them. You # could start editing the HTML, but the following might be simpler: # Map http://remote.com/docs/*.html file://localhost/home/me/docs/*.html # Or even combine this with compressing the files: # Map http://remote.com/docs/*.html file://localhost/home/me/docs/*.html.gz # # Again, replacing the "Map" with "Redirect" is probably better - it will # allow you to see the _real_ location on the lynx INFO screen or in the # HISTORY list, will avoid duplicates in the cache if the same document is # loaded with two different URLs, and may allow you to 'e'dit the local # from within lynx if you feel like it. # # 5. Broken links etc. # -------------------- # A user has moved from http://www.siteA.com/~jdoe to http://siteB.org/john, # or http://www.provider.com/company/ has moved to their own server # http://www.company.com, but there are still links to the old location # all over the place; they now are broken or lead to a stupid "this page # has moved, please update your bookmarks. Refresh in 5 seconds" page # which you're tired of seeing. This will not fix your bookmarks, and # it will let you see the outdated URLs for longer (Limitation 3 below), # but for a quick fix: # Redirect http://www.siteA.com/~jdoe/* http://siteB.org/john/* # Redirect http://www.provider.com/company/* http://www.company.com/* # # You could use "Map" instead of "Redirect", but this would let you see the # outdated URLs for longer and even bookmark them, and you are likely to # create invalid links if not all documents from a site are mapped # (Limitation 3). # # 6. DNS troubles # --------------- # A special case of broken links. If a site is inaccessible because the # name cannot be resolved (your or their name server is broken, or the # name registry once again made a mistake, or they really didn't pay in # time...) but you still somehow know the address; or if name lookups are # just too slow: # Map http://www.somesite.com/* http://10.1.2.3/* # (You could do the equivalent more cleanly by adding an entry to the hosts # file, if you have access to it.) # # Or, if a name resolves to several addresses of which one is down, and the # DNS hasn't caught up: # Map http://www.w3.org/* http://www12.w3.org/* # # Note that this can break access to some name-based virtually hosted sites. # # In this case use of "Map" is probably preferred over "Redirect", as long # as the URL on the left side contains the real and preferred hostname or # the problem is only temporary. # # 7. Avoid redirections # --------------------- # Some sites have a habit to provide links that don't go to the destination # directly but always force redirection via some intermediate URL. The # delay imposed by this, especially for users with slower connections and # for overloaded servers, can be avoided if the intermediate URLs always # follow some simple pattern: we can then anticipate the redirect that will # inevitably follow and generate it internally. For example, # Redirect http://lwn.net/cgi-bin/vr/* http://* # # Warning: The page authors may not like this circumvention. Often the # redirection is wanted by them to track access, sometimes in connection # with cookies. Some sites may employ mechanisms that defeat the shortcut. # It is your responsibility to decide whether use of this feature is # acceptable. (But note that the same effect can be achieved anyway for # any link by editing the URL, e.g. with the ELGOTO ('E') key in Lynx, so # a shortcut like this does not create some new kind of intrusion.) # # 8. Detailed proxy selection # --------------------------- # Basic use for this one should be obvious, if you have a need for it. # It simply allows selecting use (or non-use) of proxies on a more detailed # level than the traditional _proxy and no_proxy variables, as well # as using different proxies for different sites. # For example, to request access through an anonymizing proxy for all pages # on a "suspicious" site: # UseProxy http://suspicious.site/* http://anonymyzing.proxy.dom/ # (as long as all URLs really have a matching form, not some alternative # like or !) # # To access some site through a local squid proxy, running on the same host # as lynx, except for some image types (say because you rarely access images # with lynx anyway, and if you do, you don't want them cached by the proxy): # UseProxy http://some.site/*.gif none # UseProxy http://some.site/*.jpg none # UseProxy http://some.site/* http://localhost:3128/ # Note that order is important here. # # To exempt a local address from all proxying: # UseProxy http://local.site/* none # # Note however that for some purposes the "no_proxy" setting may be better # suited than "UseProxy ... none", because of its different matching logic # (see comments in lynx.cfg). # # 9. Invent your own scheme # ------------------------- # Suppose you want to teach lynx to handle a completely new URL scheme. # If what's required for the new scheme is already available in lynx in # _some_ way, this may be possible with some inventive use of rules. # As an example, let's assume you want to introduce a simple "man:" scheme # for showing manual pages, so (for a Unix-like system, at least) "man:lynx" # would display the same help information as the "man lynx" command and so # on (we ignore section numbers etc. for simplicity here). # First, since lynx doesn't know anything about a "man:" scheme, it will # normally reject any such URLs at an early stage. However, a trick exists # to bypass that hurdle: define a man_proxy environment variable *outside of # lynx, before starting lynx* (it won't work in lynx.cfg), the actual value # is unimportant and won't actually be used. For example, in your shell: # export man_proxy=X # # If you already have some kind of HTTP-accessible man gateway available, # the task then probably just amounts to transforming the URL into the right # form. For one such gateway (in this case, a CGI script running on the # local machine), the rule # Redirect man:* http://localhost/cgi-bin/dwww?type=runman&location=*/ # or, alternatively, # UseProxy man:* none # Map man:* http://localhost/cgi-bin/dwww?type=runman&location=*/ # does it, for other setups the right-hand side just has to be modified # appropriately. The "UseProxy" is to make sure the bogus man_proxy gets # ignored. # # If no CGI-like access is available, you might want to invoke your system's # man command directly for a man: URL. Here is some discussion of how this # could be done, and why ultimately you may not want to do it; this is also # an opportunity to show examples for how some of the rules and conditions # can be used that haven't been discussed in detail elsewhere. # Lynx provides the lynxexec: (and the similar lynxprog:) scheme for running # (nearly) arbitrary commands locally. At the heart of employing it for # man: would be a rule like this: # Redirect man:* "lynxexec:/usr/bin/man *" # (It is a peculiarity of this scheme that the literal space and quoting # are necessary here. Also note that Map cannot be used here instead of # Redirect, since lynxexec, as a special kind of URL, needs to be handled # "early" in a request.) # Of course, execution of arbitrary commands is a potentially dangerous # thing. lynxexec has to be specifically enabled at compile time and in # lynx.cfg (or with command line options), and there are various levels # of control, too much to go into here. It is assumed in the following that # lynxexec has been enabled to the degree necessary (allow /usr/bin/man # execution) but hopefully not too much. # What needs to be prevented is that allowing local execution of the man # command might unintentionally open up unwanted execution of other commands, # possibly by some trick that could be exploited. For example, redirecting # man:* as above, the URL "man:lynx;rm -r *" could result in the command # "man lynx;rm -r *" executed by the system, with obvious disastrous results. # (This particular example won't actually work, for several reasons; but # for the purpose of discussion let's assume it did, there may be similar # ones that do.) # Because of such dangers, redirection to a lynxexec: is normally never # accepted by lynx. We need at least a PermitRedirection rule to override # this protective limitation: # PermitRedirection man:* # Redirect man:* "lynxexec:/usr/bin/man *" # But now we have potentially opened up local execution more than is # acceptable via the man: scheme, so this needs to be examined. # There are two aspects to security here: (1) restricting the user, and (2) # protecting the user. The first could also be phrased as protecting the # system from the user; the second as preventing lynx (and the system) from # doing things the user doesn't really want. Aspect (1) is very important # for setups providing anonymous guest accounts and similarly restricted # environments. (Otherwise shell access is normally allowed, and trying to # protect the system in lynx would be rather pointless.) As far as access # to some URLs is concerned, the difference can be characterized in terms of # which sources of URLs are trusted enough to allow access: for (1), only # links occurring in a limited number of documents are trusted enough for # some (or all) URLs, user input at 'g'oto prompts and the like is not (if # not completely disabled). For (2) and assuming a user with normal shell # privileges, the user may be trusted enough to accept any URL explicitly # entered, but URLs from arbitrary external sources are not - someone might # try to use them to trick the user (by following an innocent-looking link) # or lynx (by following a redirection) into doing something undesirable. # # In the following we are concerned with (2); it is assumed that providers # of anonymous accounts would not want to follow this path, and would have # no need for additional schemes that imply local execution anyway. (For # one thing, with the man example they would have to carefully check that # users cannot break out of the man command to a local shell prompt.) # # Getting back to the example, it was already mentioned that lynx does not # allow redirections to lynxexec. In fact this continues to be disallowed # for real redirection received from HTTP servers. But we have introduced # a new man: scheme, and the lynx code that does the redirection checking # doesn't know anything about special considerations for man: URLs, so # an external HTTP server might send a redirection message with "Location: # man:", which lynx would allow, and which would in turn be # redirected by our rule to "lynxexec:/usr/bin/man ". Unless # we are 100% sure that either this can never happen or that the lynxexec # URL resulting from this can have no harmful effect, this needs to be # prevented. It can be done by checking for the "redirected" condition, # either by putting something like (the first line is of course optional) # Alert man:* "Redirection to man: not allowed" if redirected # Fail man:* if redirected # somewhere before the Redirect rule, or, reversing the logic, by adding # a condition to the redirection rules, i.e. they become # PermitRedirection man:* unless redirected # Redirect man:* "lynxexec:/usr/bin/man *" unless redirected # (actually, putting the condition on either one of the rules would be # sufficient). The second variant assumes that the attempted access to # man: via redirection will ultimately fail because there is no other way # to handle such URLs. # # The above should take care of rejecting man: URLs from redirections, but # what about regular links in HTML (like )? As long as # it can be assumed that the user will always inspect each and every link # before following it, and never follow a link that can have harmful effect, # no further restrictions are necessary. But this is a very big assumption, # unrealistic except perhaps in some single-user setups where the user is # is identical with the rule writer. So normally most links have to be # regarded as suspect, and only URLs entered by the user can be accepted: # Alert man:* "Redirection to man: not allowed" if redirected # Fail man:* if redirected # Alert man:* "Link to man: not allowed" unless userspecified # Fail man:* unless userspecified # # With these restrictions we have limited the ways our new man: scheme can # be used rather severely, to the point where its usefulness is questionable. # In addition to 'g'oto prompts, it may work in Jump files; also, should # links to man: appear in HTML text, the user could retype them # manually or use the ELGOTO ('E') command with some trivial editing (like # adding a space) to "confirm" the URL. Even if the precautions outlined # above are followed: THIS TEXT DOES NOT IMPLY ANY PROMISE THAT, BY FOLLOWING # THE EXAMPLES, LYNX WILL BE SAFE. On the other hand, some of the precautions # *may* not be necessary: it is possible that careful use of TRUSTED_EXEC # options in lynx.cfg could offer enough protection while making the new # scheme more useful. # # If all this seems a bit too scary, that's intentional; it should be noted # that these considerations are not in general necessary for "harmless" URL # schemes, but appropriate for this "extreme" example. One last remark # regarding the hypothetical man scheme: instead of implementing it through # "lynxexec:" or "lynxprog:", it would be somewhat safer to use "lynxcgi:" # instead if it is supported. A simple lynxcgi script would have to write # the man page to stdout (either converted to text/html or as plain text, # preceded by an appropriate Content-Type header line), and all necessary # checking for special shell characters would be done within the script - # lynx does not use the system() function to run the script. # # Other Limitations # ================= # First, see CAVEAT above. There are other limitations: # # 1. Applicable URL schemes # ------------------------- # Rules processing does not apply to all URL schemes. Some are # handled differently from the generic access code, therefore rules # for such URLs will never be "seen". This limitation applies at # least to lynxexec:, lynxprog:, mailto:, LYNXHIST:, LYNXMESSAGES:, # LYNXCFG:, and LYNXCOMPILEOPTS: URLs. You shouldn't be tempted # to try to redirect most of these schemes anyway, but this also # makes it impossible to disable them with "Fail" rules. # # Also, a scheme has to be known to Lynx in order to get as far as # applying rules - you cannot just define your own new foobar: scheme # and then map it to something here, but see Application 9, above, # for a workaround. # # 2. No re-checking # ----------------- # When a URL is mapped to a different one, the new URL is not checked # again for compliance with most restrictions established by -anonymous, # -restrictions, lynx.cfg and so on. This can be regarded as a feature: # it allows specific exceptions. Of course it means that users for # whom any restrictions must be enforced cannot have write access to a # personal rules file, but that should be obvious anyway! # This limitation does not applies if "Redirect" is used, in that case # the new URL will always be re-examined. # # 3. Mappings are invisible # ------------------------- # Changing the URL with "Map" or "Pass" rules will in general not be # visible to the user, because it happens at a late stage of processing # a request (similar to directing a request through a proxy). One # can think of two kinds of URL for every resource: a "Document URL" as # the user sees it (on INFO page, history list, status line, etc.), and # a "physical URL" used for the actual access. Rules change only the # physical URL. This is different from the effect of HTTP redirection. # Often this is bad, sometimes it may be desirable. # # Changing the URL can create broken links if a document has relative URLs, # since they are taken to be relative to the "Document URL" (if no BASE tag # is present) when the HTML is parsed. # # This limitation does not apply if "Redirect" is used - the new location # will be visible to the user, and will be used by lynx for resolving # relative URLs within the document. # # 4. Interaction with proxying # ---------------------------- # Rules processing is done after most other access checks, but before # proxy (and gateway) settings are examined. A "Fail" rule works # as expected, but when the URL has been mapped to a different one, # the subsequent proxy checking can get confused. If it decides that # access is through a proxy or gateway, it will generally use the # original URL to construct the "physical" URL, effectively overriding # the mapping rules. If the mapping is to a different access scheme # or hostname, proxy checking could also be fooled to use a proxy when # it shouldn't, to not use one when it should, or (if different proxies # are used for different schemes) to use the wrong proxy. So "just # don't do that"; in some cases setting the no_proxy variable will help. # Example 3 happens to work nicely if there is a http_proxy but no # ftp_proxy. # # This limitation does not come into play if a "UseProxy" rule is applied, # in either of its two forms: with a PROXYURL, proxying is fully under # the control of the rules author, and with "none", subsequent proxy # and gateway checking is completely disabled. It is therefore a good # idea to combine any "Map" and "Pass" rules that might result in passing # the changed URL with explicit "UseProxy" rules, if the rules file is # expected to be used together with proxying; or else always use "Redirect" # instead of simple passing. # # 5. Case-sensitive matching # -------------------------- # The matching logic is generic string-based. It doesn't know anything # about URL syntax, and so it cannot know in which parts of a URL case # matters and where it doesn't. As a result, all comparisons are case- # sensitive. If (a limited number of) case variations of a URL need # to be dealt with, several rules can be used instead of one. # In particular, this makes "UseProxy ... none" in some ways more limited # than a no_proxy setting. # # 6. Redirection differences # -------------------------- # For some URLs lynx does never check after a request whether a redirection # occurs; that makes the "Redirect" rule useless for such URLs (in addition # to those mentioned under limitation 1.). Some of them are some gopher # types, telnet: and similar in most situations, newspost: and similar, # lynxcgi:, and some other private types. Trying to redirect these will # make access fail. You probable don't want to change such URLs anyway, # but if you feel you must, try using "Map" and "Pass" instead. # # The -noredir command line option only applies for real HTTP redirection # responses, Redirect rules are still applied. Also for certain other # command line options (-mime_header, -head) and command keys (HEAD) lynx # shows the redirection message (or part of it) in case of a real HTTP # redirection, instead of following the redirection. Here, too, a Redirect # rule remains effective (there is no redirection message to show, after all). # # 7. URLs required # ---------------- # Full absolute URLs (modulo possible "*" matching wildcards) are required # in rules. Strings like "www.somewhere.com" or "/some/dir/some.file" or # "www.somewhere.com/some/dir/some.file" are not URLs. Lynx may accept # them as user input, as abbreviated forms for URLs; but by the time the # rules get checked, those have been converted to full URLs, if they can # be recognized. This also means that rules cannot influence which strings # typed at a 'g'oto prompt are recognized for URLs - rules processing kicks # in later. PK0] ffsamples/jumpsUnix.htmlnu[ Shortcut List

      Shortcut List

      This is a sample jumps file created in the early days of Lynx: you should use it as a template, replacing with your own choices. See Users Guide for details of how the `j' command works.

      *** IMPORTANT *** If you want to use `?' with `j' to recall your own list of abbreviations, you must make sure you always have the correct URL corresponding to `?' below: otherwise, Lynx may display an incorrect list with misleading results.

      *** ALSO *** The entries must be in alphabetic order, with `?' first: otherwise, Lynx may not be able to find them all.

      Name   Link

      ?
      This Shortcut List
      agreement
      Chebucto FreeNet User Agreement
      board
      MetroCAN Board of Directors
      browser
      Personal File Browser
      docteam
      Documentation Team Work Area
      events
      Search all event schedules by time and keyword
      files
      Personal File Browser
      forward
      Forward your mail
      freenets
      FreeNets around the World
      help
      Help Desk
      home
      Chebucto FreeNet Home Page
      info
      Finding Information
      ip
      Information Providers Commitee
      lists
      Mailing Lists and Archives
      mail
      Read and/or send mail
      metrocan
      Metro*CAN Society
      new
      What's New
      news
      Read and Send News
      newsgroups
      List Global Newsgroups
      password
      Change your password
      people
      Find other people
      profile
      Update your personal profile
      quota
      View your disk usage and quota
      recent
      Recently Changed Documents on CFN
      register
      New User Registration
      search
      Search every document on CFN by keyword.
      technical
      Metro*CAN Technical Committee
      terminal
      Set your terminal type
      volunteer
      Volunteer with CFN
      who
      Find out who is online now
      xsearch
      Search every document on CFN by keyword.
      PK0]3199'lynx_help/keystrokes/bookmark_help.htmlnu[ Lynx Bookmark Help Summary

      Bookmark files

      Lynx stores Bookmark files on your local machine. You can update these from within Lynx, or with a text editor:

      Updating within Lynx

      • The append feature, invoked by pressing an “a” while viewing a document will add the current document or the currently highlighted link to your default Bookmark file, or to one you select if multiple bookmarks are enabled.
      • The remove feature, invoked by pressing an “r” when a Bookmark file is being displayed, will remove the currently highlighted link.
      • You may set and modify the paths and names of your Bookmark files and enable or disable multiple bookmarks in the Options Menu.

      Updating with a text editor

      Lynx stores its bookmarks as an HTML file, using an unordered list (UL and LI tags). It expects the list items to be one per line, without wrapping.

      PK0]GD?0?0%lynx_help/keystrokes/follow_help.htmlnu[ Help on the Follow link (or page) number feature

      Overview

      If a user has set one of these modes, (as the default or for the current session via the Options menu) then hypertext links (and form fields, depending on the keypad mode) are prefixed with numbers in square brackets:

      • Keypad mode to Links are numbered, or
      • Form fields are numbered, or
      • Links and form fields are numbered

      Entering a keyboard or keypad number is treated as an F_LINK_NUM command, and should invoke the Follow link (or goto link or page) number: statusline prompt for a potentially multiple digit number corresponding to an indicated link number.

      Zero and other digits

      The prompt can be invoked via typing a zero (0), but it will not be treated as the lead digit for the number entry, whereas digits 1 through 9 both invoke the prompt and are treated as the first digit.

      In Form fields are numbered or Links and form fields are numbered mode, if the number corresponds to a form field you will be positioned on that field, but if it is a submit button it will not be ACTIVATE-ed.

      If the user has set Keypad mode to Numbers act as arrows, then only a zero digit will be treated as an F_LINK_NUM command for invoking the Follow link (or goto link or page) number: prompt.

      Suffixes

      After accepting a number at the prompt, Lynx accepts an optional suffix:

      RETURN (activate)
      Without a suffix, e.g., If RETURN is pressed to terminate the number entry (e.g., 123) and it corresponds to a hypertext link, Lynx will retrieve the document for that link as if you had paged or used other navigation commands to make it the current link and then ACTIVATE-ed it.
      g (go)

      If the number entered at the prompt has a “g” suffix (e.g., 123g), then Lynx will make the link corresponding to that number the current link, paging as appropriate if the link does not appear in the currently displayed page. The “g” suffix is inferred (need not be entered) for form fields in Form fields are numbered or Links and form fields are numbered mode.

      p (page)

      Alternatively, if the number is given a “p” suffix (e.g., 123p), Lynx will make the page corresponding to that number the currently displayed page, and the first link on that page, if any, the current link. The “g” and “p” suffixes thus convert the Follow link (or goto link or page) number: feature to an advanced navigation aid.

      + or - (jump)

      Finally, a user may add a + or - suffix to a number command to indicate jumping forward or back relative to the current link or page. For example, typing 1g+ followed by RETURN will move the current link to the next numbered link, skipping any intervening pages or unnumbered links; 1g- goes to the preceding numbered link. On a page without links, 3g+ goes to the 3rd link following the page. 5p+ skips ahead 5 pages, and so on. You can also enter 5+ or 5-, which will activate the 5th link ahead/behind where you are currently positioned. Note that typing 1g+ is different from typing a down arrow in that 1g+ skips pages containing no links, or intervening non-numbered links, such as form fields when form fields are not numbered. It also differs from the <tab> command in that 1g+ does not skip over whole textareas, unless form fields are not numbered.

      NOTE: 1+g 1-g 1+p 1-p are all recognized as equivalent to 1g+ 1g- 1p+ 1p- . Any other (mistyped) characters end the formula: e.g. 1gh+ is treated as 1g.

      Specifics for Form Fields

      Numbers are associated with form fields only when

      • Form fields are numbered or
      • Links and form fields are numbered mode has been selected.

      If you have selected Numbers act as arrows or Links are numbered mode, you can seek form fields in the document via WHEREIS searches for strings in their displayed values. If they are INPUT or TEXTAREA fields with no values as yet, you can use two or more underscores as the search string, because underscores are used as placeholders for form fields in the displayed document.

      When you have invoked a popup window for a list of OPTIONs in a form's SELECT block:

      • each OPTION is associated with a number, and that number will be displayed in Form fields are numbered or Links and form fields are numbered mode.
      • In any keypad mode, the F_LINK_NUM (“0”) command will invoke a Select option (or page) number: prompt, and you can enter a number, and optionally a “g” or “p” suffix, to select or seek an OPTION in that list.
      • If only a number is entered at the prompt, the corresponding OPTION will be selected and the popup will be retracted.
      • If the “g” suffix is included, then you will be positioned on the corresponding OPTION in the list, paging through the list if necessary, but it will not be treated as selected unless you enter the ACTIVATE (RETURN or right-arrow) command when positioned on the OPTION.
      • For purposes of paging (e.g., in conjunction with the “p” suffix), a page is defined as the number of OPTIONs displayed within the vertical dimension of the popup window.
      • Finally, the + and - suffixes can be used to move forward or back from the current option or page in a popup menu, similarly to the way they are used for links.

      For example, while viewing a popup window, the user can type 3p+ and RETURN to skip ahead 3 pages, and 50g- will move the current selection back 50 options. This will work whether or not keypad mode is Form fields are numbered or Links and form fields are numbered since options are numbered internally. If form field numbering is turned off, the option numbers will not appear on screen, but the user can still navigate using these commands.

      Hidden Links

      HTML can be structured so that it includes hidden links, i.e., without a visible link name intended for ACTIVATE-ing the link. Such links may be created, for example, by

      • making an IMG element the sole content of an Anchor element, and including an ALT="" attribute name/value pair to suppress access to the link when the browser does not have support for image handling available.
      • having truly empty Anchor content, in cases for which the value of an Anchor's HREF attribute is intended as a navigation aid for robots (typically indexers) and not as content for a browser's rendition of the document.
      • using the -ismap command line switch, which makes Lynx additionally treat a link to a server-side image maps as hidden if there also is a client-side map for the same image.
      • bad HTML, which may produce hidden links.

      Hidden links differ from Anchors that have only a NAME or ID attribute name/value pair (intended as positioning targets from other links which do have HREF attributes and values that include a fragment).

      Lynx respects instructions for hidden links and normally does not include them in the rendition of the document. However, if the command line switch -hiddenlinks=merge is used, such links will still be numbered in sequence with other links which are not hidden, and if Links are numbered mode is also on, link numbers will appear for them in the displayed text (except for links to image maps which are hidden because of -ismap). If -hiddenlinks=listonly or -hiddenlinks=ignore is in effect, hidden links will not be shown in the text even in links are numbered mode. Not using a -hiddenlinks flag at all is equivalent to -hiddenlinks=listonly.

      Navigating to Hidden Links

      If a document includes hidden links, they will be reported, with appropriate labeling, in the menus created for the LIST (“l”) or ADDRLIST (“A”) commands, unless -hiddenlinks=ignore is used. They can then be ACTIVATE-ed via those menus.

      If a link was hidden because of an ALT attribute in an IMG element, it will be converted to a visible link whenever the IMAGE_TOGGLE (“*”) command is used to create links for SRC attribute values of IMG elements, because this indicates that the user does have some form of image handling enabled via a helper application, or wishes to download files for subsequent use with a graphic browser or other suitable software.

      HTML forms may have fields with a HIDDEN attribute, indicating that a name/value pair for the fields should be included in the content submitted for the form, but the value should not be displayed in the rendered form. Lynx respects this attribute as well, and neither displays the HIDDEN field, nor assigns it a number for the F_LINK_NUM (“0”) command and Form fields are numbered or Links and form fields are numbered keypad mode handling, nor includes an entry for it in the menus created for the LIST (“l”) or ADDRLIST (“A”) commands. However, the HIDDEN name/value pairs are included in any displays of submitted form content in the Information about the current document that is invoked by the INFO (“=”) command.

      PK0]Ϧ(lynx_help/keystrokes/keystroke_help.htmlnu[ Help on Lynx Keystroke Commands

      Overview

      Lynx recognizes many single-character commands. This is an overview to their default bindings, with links to more detailed documentation.

      Movement

             Down arrow     - Highlight next topic
             Up arrow       - Highlight previous topic
             Right arrow,   - Jump to highlighted topic
             Return, Enter  - Follow selected link
             Left arrow     - Return to previous topic
      

      Scrolling

             +              - Scroll down to next page (Page-Down)
             -              - Scroll up to previous page (Page-Up)
             SPACE          - Scroll down to next page (Page-Down)
             b              - Scroll up to previous page (Page-Up)
             CTRL-A         - Go to first page of the current document (Home)
             CTRL-E         - Go to last page of the current document (End)
             CTRL-B         - Scroll up to previous page (Page-Up)
             CTRL-F         - Scroll down to next page (Page-Down)
             CTRL-N         - Go forward two lines in the current document
             CTRL-P         - Go back two lines in the current document
             )              - Go forward half a page in the current document
             (              - Go back half a page in the current document
             ^              - Go to the first link on the current line
             $              - Go to the last link on the current line
             <              - Go to the previous link in the current column
             >              - Go to the next link in the current column
             #              - Go to Toolbar or Banner in the current document
      

      Dired

             c              - Create a new file
             d              - Download selected file
             e              - Edit selected file
             f              - Show a full menu of options for current file
             m              - Modify the name or location of selected file
             r              - Remove selected file
             t              - Tag highlighted file
             u              - Upload a file into the current directory
      

      Other

             ? (or h)       - Help (this screen)
             a              - Add the current link to a bookmark file
             c              - Send a comment to the document owner
             d              - Download the current link
             e              - Edit the current file
             E              - Edit the current link's URL (or ACTION) and
                              use that as a goto URL.
             g              - Goto a user specified URL or file
             G              - Edit the current document's URL and use that
                              as a goto URL.
             i              - Show an index of documents
             j              - Execute a jump operation
             k              - Show list of actual key mappings
             l              - List references (links) in current document
             m              - Return to main screen
             o              - Set your options
             p              - Print to a file, mail, printers, or other
             q              - Quit (Capital “Q” for quick quit)
             /              - Search for a string within the current document
             s              - Enter a search string for an external search
             n              - Go to the next search string
             N              - Go to the previous search string
             v              - View a bookmark file
             V              - Go to the Visited Links Page
             x              - Force submission of form or link with no-cache
             z              - Cancel transfer in progress
             [backspace]    - Go to the History Page
             =              - Show info about current document, URL and link
             \              - Toggle document source/rendered view
             !              - Spawn your default shell
             '              - Toggle "historical" vs minimal or valid comment
                              parsing
             _              - Clear all authorization info for this session
             `              - Toggle minimal or valid comment parsing
             *              - Toggle image_links mode on and off
             @              - Toggle raw 8-bit translations or CJK mode
                              on or off
             .              - Run external program on the current link.
             ,              - Run external program on the current document.
             {              - Shift the screen left.
             }              - Shift the screen right.
             |              - Toggle line-wrap mode.  When line-wrap is
                              off, you may use { and } to shift the screen
                              left/right.  The screen width is set to 999.
             ~              - Toggle parsing of nested tables (experimental).
             [              - Toggle pseudo_inlines mode on and off
             ]              - Send a HEAD request for the current doc or link
             "              - Toggle valid or "soft" double-quote parsing
             CTRL-R         - Reload current file and refresh the screen
             CTRL-L         - Refresh the screen
      
             CTRL-V         - Outside of a text input line or field,
                              switch to alternative parsing of HTML.
                            - In a form text input field,
                              CTRL-V prompts for a key command (allows
                              escaping from the field).
      
                              Note that on most UNIX hosts, CTRL-V is bound
                              via stty to the lnext (literal-next) code but
                              the exact behavior of that is implementation
                              specific.  On Solaris you must type CTRL-V
                              twice to use it, since it quotes the following
                              keystroke.
      
             CTRL-U         - Inside text input line or field,
                              erase input line (more input line commands)
                            - Outside of text input or field,
                              undo returning to previous topic.
      
             CTRL-G         - Cancel input or transfer
      
             CTRL-T         - Toggle trace mode on and off
             ;              - View the Lynx Trace Log for the current session
             CTRL-K         - Invoke the Cookie Jar Page
             CTRL-X         - Invoke the Cache Jar Page
             numbers        - Invoke the prompt
                                Follow link (or goto link or page) number:
                              or the
                                Select option (or page) number:
                              prompt
      
      PK0]!uu%lynx_help/keystrokes/option_help.htmlnu[ Form-based Options Menu : Help

      Options Menu

      The Options Menu allows you to set and modify many Lynx features.
      Lynx's Options Menu is grouped visually (by skipping a line) into sections. This description follows the same arrangement. Some options appear on the screen only if they have been compiled in or chosen in lynx.cfg.

      General Preferences

      User Mode

      Novice: Shows 2 extra lines of help at the bottom of the screen for beginners.
      Intermediate (normal): Normal status-line messages appear.
      Advanced: The URL is shown on the status line.

      Editor

      This is the editor to be invoked when editing browsable files, sending mail or comments, or filling form's textarea (multiline input field). The full pathname of the editor command should be specified when possible. It is assumed the text editor supports the same character set you have for "display character set" in Lynx.

      Type of Search

      This allows you to tell Lynx whether to search the current document ignoring case (case insensistive) or not.

      Security and Privacy

      Cookies

      This can be set to accept or reject all cookies or to ask each time. See the Users Guide for details of cookie usage.

      Invalid-Cookie Prompting

      This allows you to tell how to handle invalid cookies:

      • prompt normally to prompt for each cookie
      • force yes-response to reply "yes" to each prompt
      • force no-response to reply "no" to each prompt.

      SSL Prompting

      This allows you to tell how to handle errors detected in SSL connections:

      • prompt normally to prompt for each cookie
      • force yes-response to reply "yes" to each prompt
      • force no-response to reply "no" to each prompt.

      Keyboard Input

      Keypad mode

      This gives the choice between navigating with the keypad (as arrows; see Lynx Navigation) and having every link numbered (numbered links) so that the links may be selected by numbers instead of moving to them with the arrow keys. You can also number form fields.

      Emacs keys

      If set to “ON” then the CTRL-P, CTRL-N, CTRL-F and CTRL-B keys will be mapped to up-arrow, down-arrow, right-arrow and left-arrow respectively. Otherwise, they remain mapped to their configured bindings (normally UP_TWO lines, DOWN_TWO lines, NEXT_PAGE and PREV_PAGE respectively).

      Note: setting emacs keys does not affect the line-editor bindings.

      VI keys

      If set to “ON” then the lowercase h, j, k and l keys will be mapped to left-arrow, down-arrow, up-arrow and right-arrow respectively.

      The uppercase H, J, K, and L keys remain mapped to their configured bindings (normally HELP, JUMP, KEYMAP and LIST, respectively).

      Note: setting vi keys does not affect the line-editor bindings.

      Line edit style

      This allows you to set alternate key bindings for the built-in line editor, if Alternate Bindings have been installed. Otherwise, Lynx uses the Default Binding.

      Display and Character Set

      Use locale-based character set

      This option allows you to request lynx to obtain a MIME name from the operating system which corresponds to your locale setting. If successful, it overrides the normal setting of the display character set.

      Use HTML5 charset replacements

      This option allows lynx to treat pages with ISO-8859-1 (Latin1) or ASCII encoding as if they were Windows 1252. That allows a few punctuation characters to be shown.

      Display Character set

      This allows you to set up the default character set for your specific terminal. The display character set provides a mapping from the character encodings of viewed documents and from HTML entities into viewable characters. It should be set according to your terminal's character set so that characters other than 7-bit ASCII can be displayed correctly, using approximations if necessary, try the test here.

      This changes the handling of documents which do not explicitly specify a charset. Normally Lynx assumes that 8-bit characters in those documents are encoded according to iso-8859-1 (the official default for HTTP protocol). Unfortunately, many non-English web pages forget to include proper charset info; this option helps you browse those broken pages if you know somehow what the charset is. When the value given here or by an -assume_charset command-line flag is in effect, Lynx will treat documents as if they were encoded accordingly. Option is active when “Raw 8-bit or CJK Mode” is OFF.

      Raw 8-bit or CJK mode

      This is set automatically, but can be toggled manually in certain cases: it toggles whether 8-bit characters are assumed to correspond with the display character set and therefore are processed without translation via the chartrans conversion tables. ON by default when the display character set is one of the Asian (CJK) sets and the 8-bit characters are Kanji multibytes. OFF for the other display character sets, but can be turned ON when the document's charset is unknown (e.g., is not ISO-8859-1 and no charset parameter was specified in a reply header from an HTTP server to indicate what it is), but you have no better idea than viewing it as from display character set (see “assumed document character set” for best choice). Should be OFF when an Asian (CJK) set is selected but the document is ISO-8859-1 or another “assumed document character set”. The setting can also be toggled via the RAW_TOGGLE command, normally mapped to “@”, and at startup via the -raw switch.

      X DISPLAY variable

      This option is only relevant to X Window users. It specifies the DISPLAY (Unix) or DECW$DISPLAY (VMS) variable. It is picked up automatically from the environment if it has been previously set.

      Document Appearance

      Show color

      This will be present if color support is available.

      • If set to ON or ALWAYS, color mode will be forced on if possible. If (n)curses color support is available but cannot be used for the current terminal type, selecting ON is rejected with a message.
      • If set to OFF or NEVER, color mode will be turned off.
      • ALWAYS and NEVER are not offered in anonymous accounts. If saved to a “.lynxrc” file in non-anonymous accounts, ALWAYS will cause Lynx to set color mode on at startup if supported.

      If Lynx is built with slang, this is equivalent to having included the -color command line switch or having the COLORTERM environment variable set. If color support is provided by curses or ncurses, this is equivalent to the default behavior of using color when the terminal type supports it. If (n)curses color support is available but cannot be used for the current terminal type, the preference can still be saved but will have no effect.

      A saved value of NEVER will cause Lynx to assume a monochrome terminal at start-up. It is similar to the -nocolor switch, but (when the slang library is used) can be overridden with the -color switch. If the setting is OFF or ON when the current options are saved to a “.lynxrc” file, the default start-up behavior is retained, such that color mode will be turned on at startup only if the terminal info indicates that you have a color-capable terminal, or (when slang is used) if forced on via the -color switch or COLORTERM variable. This default behavior always is used in anonymous accounts, or if the “option”_save restriction is set explicitly. If for any reason the start-up color mode is incorrect for your terminal, set it appropriately on or off via this option.

      Color style

      At startup, Lynx identifies the available color-style configuration files in the same directory as its default ".lss" file. At runtime, you can switch between these files using this options-menu feature.

      Default colors

      Depending on the default foreground and background colors which your terminal uses, some color-styles would look better if Lynx did not use those in combination with the style for the background. Use this option to enable/disable the default-color feature.

      Show cursor for current link or option

      Lynx normally hides the cursor by positioning it to the right and if possible the very bottom of the screen, so that the current link or OPTION is indicated solely by its highlighting or color. If show cursor is set to ON, the cursor will be positioned at the left of the current link or OPTION. This is helpful when Lynx is being used with a speech or braille interface. It is also useful for sighted users when the terminal cannot distinguish the character attributes used to distinguish the current link or OPTION from the others in the display.

      Underline links

      Use underline-attribute rather than bold for links.

      Show scrollbar

      This allows you to enable (show) or disable (hide) the scrollbar on the right-margin of the display. This feature is available with ncurses or slang libraries.

      Pop-ups for select fields

      Lynx normally uses a pop-up window for the OPTIONs in form SELECT fields when the field does not have the MULTIPLE attribute specified, and thus only one OPTION can be selected. The use of pop-up windows can be disabled by changing this setting to OFF, in which case the OPTIONs will be rendered as a list of radio buttons. Note that if the SELECT field does have the MULTIPLE attribute specified, the OPTIONs always are rendered as a list of checkboxes.

      HTML error recovery

      Lynx often has to deal with invalid HTML markup. It always tries to recover from errors, but there is no universally correct way for doing this. As a result, there are two parsing modes: "SortaSGML" attempts to enforce valid nesting of most tags at an earlier stage of processing, while "TagSoup" relies more on the HTML rendering stage to mimic the behavior of some other browsers. You can also switch between these modes with the CTRL-V key, and the default can be changed in lynx.cfg or with the -tagsoup command line switch.

      The "SortaSGML" mode will often appear to be more strict, and makes some errors apparent that are otherwise unnoticeable. One particular difference is the handling of block elements or <li>..</li> inside <a HREF="some.url">..</a>. Invalid nesting like this may turn anchors into hidden links which cannot be easily followed, this is avoided in "TagSoup" mode. See the help on following links by number for more information on hidden links. Often pages may be more readable in "TagSoup" mode, but sometimes the opposite is true. Most documents with valid HTML, and documents with only minor errors, should be rendered the same way in both modes.

      If you are curious about what goes on behind the scenes, but find that the information from the -trace switch is just too much, Lynx can be started with the -preparsed switch; going into SOURCE mode (“\” key) and toggling the parsing mode (with CTRL-V) should then show some of the differences.

      Bad HTML messages

      Suppress or redirect Lynx's messages about "Bad HTML":

      Ignore
      do not warn; no details are written to the trace-file.
      Add to trace-file
      add the detailed warning message to the trace-file.
      Add to LYNXMESSAGES
      add the detailed warning message to the message page at "LYNXMESSAGES:".
      Warn, point to trace-file
      show a warning message on the status line; the complete message is written to the trace-file.

      Show Images

      This option combines the effects of the “*” & “[” keys as follows:

           ignore all images which lack an ALT= text string,
           show labels, e.g. [INLINE] — see “Verbose Images” below — ,
           use links for every image, enabling downloading.
      

      This option setting cannot be saved between sessions. See Users Guide & lynx.cfg for more details.

      Verbose Images

      This allows you to replace [LINK], [INLINE] and [IMAGE] — for images without ALT — with filenames: this can be helpful by revealing which images are important & which are merely decoration, e.g. button.gif, line.gif. See Users Guide & lynx.cfg for more details.

      Headers Transferred to Remote Servers

      Personal Mail Address

      You may set your mail address here so that when mailing messages to other people or mailing files to yourself, your email address can be automatically filled in. Your email address will also be sent to HTTP servers in a “from:” field.

      Personal mail name

      This mail name will be included as the "X-Personal_Name" field in any mail or comments that you send if that header has not been disabled via the NO_ANONYMOUS_EMAIL definition in lynx.cfg.

      Password for anonymous ftp

      If this is blank, Lynx will use your personal mail address as the anonymous ftp password. Though that is the convention, some users prefer to use some other string which provides less information. If the given value lacks a "@", Lynx also will use your computer's hostname as part of the password. If both this field and the personal mail address are blank, Lynx will use your $USER environment variable, or "WWWuser" if even the environment variable is unset.

      Preferred media type

      When doing a GET, lynx lists the MIME types which it knows how to present (the "Accept:" string). Depending on your system configuration, the mime.types or other data given by the GLOBAL_EXTENSION_MAP may include many entries that lynx really does not handle. Use this option to select one of the built-in subsets of the MIME types that lynx could list in the Accept.

      Accept lynx's internal types
      list only the types that are compiled into lynx.
      Also accept lynx.cfg's types
      lists types defined in lynx.cfg, e.g., the VIEWER and Cern RULE or RULESFILE settings.
      Also accept user's types
      lists types from the PERSONAL_EXTENSION_MAP setting in lynx.cfg
      Also accept system's types
      lists types from the GLOBAL_EXTENSION_MAP setting in lynx.cfg
      Accept all types
      adds the types that are in lynx's built-in tables for external programs that may be used to present a document.

      Preferred encoding

      When doing a GET, lynx tells what types of compressed data it can decompress (the "Accept-Encoding:" string). This is determined by compiled-in support for decompression or external decompression programs. Use this option to select none, one or all of the supported decompression types.

      Preferred Document Charset

      The character set you prefer if sets in addition to ISO-8859-1 and US-ASCII are available from servers. Use MIME notation (e.g., ISO-8859-2) and do not include ISO-8859-1 or US-ASCII, since those values are always assumed by default. Can be a comma-separated list, which may be interpreted by servers as descending order of preferences; you can make your order of preference explicit by using “q factors” as defined by the HTTP protocol, for servers which understand it: e.g., iso-8859-5, utf-8;q=0.8.

      Preferred Document Language

      The language you prefer if multi-language files are available from servers. Use RFC 1766 tags, e.g., “en” English, “fr” French. Can be a comma-separated list, and you can use “q factors” (see previous help item): e.g., da, en-gb;q=0.8, en;q=0.7 .

      Send User-Agent header

      This controls whether the user-agent string will be sent.

      User Agent header

      The header string which Lynx sends to servers to indicate the User-Agent is displayed here. Changes may be disallowed via the -restrictions switch. Otherwise, the header can be changed temporarily to e.g., L_y_n_x/2.8.3 for access to sites which discriminate against Lynx based on checks for the presence of “Lynx” in the header. If changed during a Lynx session, the default User-Agent header can be restored by deleting the modified string in the Options Menu. Whenever the User-Agent header is changed, the current document is reloaded, with the no-cache flags set, on exit from Options Menu. Changes of the header are not saved in the .lynxrc file.

      Caveat: Netscape Communications Corp. (for example) claimed that false transmissions of “Mozilla” as the User-Agent are a copyright infringement, which would be prosecuted. The Options Menu issues a warning about possible copyright infringement whenever the header is changed to one which does not include Lynx or lynx.

      Listing and Accessing Files

      Use Passive FTP

      This allows you to change whether Lynx uses passive ftp connections.

      FTP sort criteria

      This allows you to specify how files will be sorted within FTP listings. The current options include “By Filename”, “By Size”, “By Type”, “By Date”.

      List directory style

      Applies to Directory Editing. Files and directories can be presented in the following ways:

      Mixed style: Files and directories are listed together in alphabetical order.
      Directories first: Files and directories are separated into 2 alphabetical lists: directories are listed first.
      Files first: Files and directories are separated into 2 alphabetical lists: files are listed first.

      Local directory sort order

      Lynx also allows you to sort by the file attributes:

      By name
      by filename (the default)
      By size
      by file size, in descending order
      By date
      by file modification time, in descending order
      By mode
      by file protection
      By type
      by filename suffix, e.g., the text beginning with “.”
      By user
      by file owner's user-id
      By group
      by file owner's group-id

      Show dot files

      If display/creation of hidden (dot) files/directories is enabled, you can turn the feature on or off via this setting.

      Pause when showing message

      If set to "off", this overrides the INFOSECS setting in lynx.cfg, to eliminate pauses when displaying informational messages, like the "-nopause" command line option.

      Execution links

      If set to “ALWAYS ON”, Lynx will locally execute commands contained inside any links. This can be HIGHLY DANGEROUS, so it is recommended that they remain “ALWAYS OFF” or “FOR LOCAL FILES ONLY”.

      Show transfer rate

      This allows you to select the way in which Lynx shows its progress in downloading large pages. It displays its progress in the status line. These are the available selections:

      • Do not show rate
      • Local directory sort order
      • Show dot files
      • Execution links
      • Pause when showing message
      • Show transfer rate

      Multi-bookmarks

      Manage multiple bookmark files:

      • When OFF, the default bookmark file is used for the “v”iew-bookmarks and “a”dd-bookmark link commands.
      • If set to STANDARD, a menu of available bookmarks is always invoked when you seek to view a bookmark file or add a link, and you select the bookmark file by its letter token in that menu.
      • If set to ADVANCED, you are instead prompted for the letter of the desired bookmark file, but can enter “=” to invoke the STANDARD selection menu, or RETURN for the default bookmark file.

      Bookmark file

      Manage the default bookmark file:

      • If non-empty and multi-bookmarks is OFF, it specifies your default “Bookmark file”.
      • If multi-bookmarks is STANDARD or ADVANCED, entering “B” will invoke a menu in which you can specify filepaths and descriptions of up to 26 bookmark files.

      The filepaths must be from your home directory and begin with “./” if subdirectories are included (e.g., “./BM/lynx_bookmarks.html”).

      Lynx will create bookmark files when you first “a”dd a link, but any subdirectories in the filepath must already exist.

      Auto Session

      Lynx can save and restore useful information about your browsing history. Use this setting to enable or disable the feature.

      Session file

      Define the file name where lynx will store user sessions. This setting is used only when Auto Session is enabled.

      Visited Pages

      This allows you to change the appearance of the Visited Links Page Normally it shows a list, in reverse order of the pages visited. The popup menu allows you these choices:

      By First Visit: The default appearance, shows the pages based on when they were first visited. The list is shown in reverse order, to make the current page (usually) at the top of the list.
      By First Visit Reversed The default appearance, shows the pages based on when they were first visited. The list is shown in order, to make the current page (usually) at the bottom of the list.
      As Visit Tree Combines the first/last visited information, showing the list in order of the first visit, but using the indentation level of the page immediately previous to determine indentation of new entries. That gives a clue to the order of visiting pages when moving around in the History or Visited Pages lists.
      By Last Visit The default appearance, shows the pages based on when they were last visited. The list is shown in reverse order, to make the current page (usually) at the top of the list.
      By Last Visit Reversed The default appearance, shows the pages based on when they were last visited. The list is shown in order, to make the current page (usually) at the bottom of the list.
      PK0]{-{-,lynx_help/keystrokes/bashlike_edit_help.htmlnu[ Lynx Line Editor Bash-Like Key Binding

      Overview

      Lynx invokes a built-in Line Editor for entering strings in response to prompts, in forms, and for email messages if an external editor has not been defined. Alternative key bindings are normally available (unless Lynx was configured with --disable-alt-bindings). If available, they may be selected via the “o”ptions menu, or by editing lineedit_mode in the “.lynxrc” file.

      You can always see the current set of key-bindings in Lynx by opening the special URL LYNXEDITMAP:. This page is provided for those not using Lynx.

      Note: setting emacs/vi keys ON has no direct effect on line-editor bindings.

      Bash-like bindings

      This is the Bash-like Binding keymap.

           ENTER  Input complete        -  Enter, RETURN
           TAB    Completion / Next     -  TAB, Do (see note 2)
           ABORT  Cancel / Undo Change  -  Ctrl-g, Ctrl-_
           ERASE  Erase the line        -  M-k, Ctrl-x k
      
           BACK   Cursor back     char  -  Left-Arrow,  Ctrl-b
           FORW   Cursor forward  char  -  Right-Arrow, Ctrl-f
           BACKW  Cursor back     word  -  M-b, Ctrl-r
           FORWW  Cursor forward  word  -  M-f, Ctrl-s (see note 5)
           BOL    Go to begin of  line  -  Ctrl-a, Home, Find
           EOL    Go to end   of  line  -  Ctrl-e, End,  Select (see note 4)
      
           DELP   Delete prev     char  -  Backspace
           DELN   Delete next     char  -  Ctrl-d, Delete, Remove (see note 1)
           DELPW  Delete prev     word  -  Ctrl-w, M-Backspace, M-Delete (see note 3)
           DELNW  Delete next     word  -  M-d
           DELBL  Delete to beg of line -  Ctrl-u
           DELEL  Delete to end of line -  Ctrl-k (see note 4)
      
           UPPER  Upper case the line   -  M-u
           LOWER  Lower case the line   -  M-l
      
           LKCMD  Invoke cmd prompt     -  Ctrl-v [FORM] (see note 6)
           SWMAP  Switch input keymap   -  Ctrl-^ (if compiled in)
      
      Special commands for use in textarea fields [FORM]:
      
           PASS!  Textarea external edit  - Ctrl-e Ctrl-e, Ctrl-x e (see note 4)
           PASS!  Insert file in textarea - Ctrl-x i
           PASS!  Grow textarea           - Ctrl-x g
      

      Try it yourself

      Here is a little textarea for practice:

      Emacs-like commands

          TPOS    Transpose characters                   -  Ctrl-t
          SETMARK Set mark at current position in line   -  Ctrl-@
          XPMARK  Exchange current position with mark    -  Ctrl-x Ctrl-x
          KILLREG Kill region between mark and position  -  Ctrl-x Ctrl-w (see note 3)
          YANK    Insert text last killed (with KILLREG) -  Ctrl-y
      

      Special keys

      See the Lynx Line Editor page for an explanation of terminology and key-names.

      Notes

      1. "next" means the character "under" a box or underline style cursor; it means "to the immediate right of" an I-beam (between characters) type cursor.
      2. For entering strings in response to prompts (that is, when not editing form text fields), some keys have different actions: TAB tries to complete input based on previous response; Up-Arrow and Down-Arrow may offer previous response and next response, respectively, from recall buffer for some prompts.
      3. Ctrl-w can only be used for editing functions if its default KEYMAP to REFRESH is changed. This can be done in the lynx.cfg file, for example with the line "KEYMAP:^W:DO_NOTHING". This also applies for other keys: as long as the key's action is mapped to REFRESH, either with an explicit KEYMAP in lynx.cfg or by default, the key's Line Editor binding is disabled.
      4. These keys invoke special behavior when pressed twice in a row: Ctrl-e Ctrl-e calls the external editor for changing the text in a textarea (if available). Ctrl-k Ctrl-k will move to the next link, so that all lines in a textarea can be conveniently cleared by repeating Ctrl-k.
      5. Key is likely unavailable for Lynx, because it is interpreted by operating system, comm program, or curses library, or swallowed as part of escape sequence recognition. Binding is provided for the benefit of those where this does not apply.
      6. where [FORM] is marked, indicates that the binding is effective only in form text fields. It is ignored by Line Editor elsewhere.

      When a text input field, including a textarea line, is selected, the Line Editor functions get a first grab at the keys entered. If a key has no function defined in the Line Editor binding, it can either be ignored, or passed on for normal key command handling, where modifiers like Ctrl-x or Meta currently have no effect (see the Key Map Page accessible with the key K for current information).

      Additional details

      Here are some additional details on other keys, for the curious (very much subject to change)

      Normal key action when used in form fields, subject to remapping
      with KEYMAP: [FORM (except Up-Arrow, Down-Arrow)]
                  Ctrl-l (see note 3)
                  Ctrl-o, Ctrl-z, Ctrl-\, Ctrl-] (see note 5)
                  Ctrl-n [emacskey], Ctrl-p [emacskey]
                  Up-Arrow, Down-Arrow (see note 2)
                  Page-Up, Page-Down, F1, Back-Tab
      
      Normal key command with Meta modifier ignored when used in form fields,
      subject to remapping with KEYMAP: [FORM (except Up-Arrow, Down-Arrow)]
                  M-Ctrl-l (see note 3) M-Ctrl-o [!],
                  M-Ctrl-z, M-Ctrl-\, M-Ctrl-] (see note 5)
                  M-Ctrl-u, M-/, M-n
                  M-Up-Arrow [!], M-Down-Arrow [!] (see note 2)
                  M-Page-Up [!], M-Page-Down [!], M-Home, M-End
      
      Passed as specific command:
                              lynx action    duplicates by default
                              -----------    ---------------------
                  M-Ctrl-d    NEXT_LINK      Down-Arrow
                  M-Ctrl-e    EDITTEXTAREA   Ctrl-e Ctrl-e
                  M-Ctrl-k    LPOS_NEXT_LINK (none, Down-Arrow suggested)
                  M-e         EDITTEXTAREA   Ctrl-e Ctrl-e
                  M-g         GROWTEXTAREA   (none, Ctrl-v $ suggested?)
                  M-i         INSERTFILE     (none, Ctrl-v # suggested?)
                  M-<        HOME           M-Home
                  M->        END            M-End
                  M-F1        DWIMHELP       F1
                  M-Find      WHEREIS        Ctrl-v /
                  M-Select    NEXT           Ctrl-v n
      
      Duplicates function of other key(s):
                              edit action    duplicates
                              -----------    ----------
                  M-Ctrl-b    BACKW          M-b, Ctrl-r
                  M-Ctrl-f    FORWW          M-f
                  M-Ctrl-n    FORWW          M-f
                  M-Ctrl-p    BACKW          M-b, Ctrl-r
                  M-Ctrl-r    BACKW          M-b, Ctrl-r
                  M-a         BOL            Ctrl-a, Home, ...
      
      Modifier ignored, and duplicates function of other key(s):
                              edit action    duplicates
                              -----------    ----------
                  M-Ctrl-a    BOL            Ctrl-a, Home, ...
                  M-Ctrl-g    ABORT          Ctrl-g, ...
                  M-TAB       TAB            Ctrl-i [!]
                  M-Ctrl-j    ENTER          Ctrl-m, Ctrl-j, Enter / RETURN
                  M-RETURN    ENTER          Ctrl-m, Ctrl-j, Enter / RETURN
                  M-Ctrl-y    YANK           Ctrl-y [!]
                  M-Ctrl-^    SWMAP          Ctrl-^ [!] (if compiled in)
             M-Right-Arrow    FORW           Right-Arrow [!], Ctrl-f
              M-Left-Arrow    BACK           Left-Arrow [!],  Ctrl-b
                  M-Do        TAB            Ctrl-i [!]
      
      Key completely ignored:
                  Ctrl-q, Insert
                  M-Ctrl-q, M-Ctrl-s, M-Ctrl-t, M-Ctrl-v, M-ESC (see note 5)
                  M-Ctrl-@, M-Ctrl-_, M-Remove, M-Insert [!]
      
      Meta + other (mostly, printable character) keys:
                    Modifier ignored, or sequence swallowed (see note 5).
                  M-@, M-E...M-Z, M-\, M-^, M-_ attempt to interpret
                    as 7-bit escape representation for character in 8-bit
                    control (C1) range if appropriate according to
                    Display Character Set.
      
      [emacskey] Normal key action subject to emacs_keys setting.
      
      [!] Action of key with Meta modifier follows action of key without
          Meta.  If you manage to enter the Meta key while Line-Editor
          Binding is not set to Bash-Like, and the unmodified binding
          is different from that listed here, M-<key> will act
          like <key>.
      
      PK0]kQ %lynx_help/keystrokes/cookie_help.htmlnu[ Help on the Cookie Jar Page

      Overview

      Lynx's Cookie Jar Page displays all of the unexpired cookies you have accumulated in the hypothetical Cookie Jar. The cookies are obtained via Set-Cookie MIME headers in replies from http servers, and are used for State Management across successive requests to the servers.

      The cookies are listed by domain (server's Fully Qualified Domain Name, or site-identifying portion of the FQDN), and in order of decreasing specificity (number of slash-separated symbolic elements in the path attribute of the cookie). When Lynx sends requests to an http server whose address tail-matches a domain in the Cookie Jar, all its cookies with a path which head-matches the path in the URL for that request are included as a Cookie MIME header. The “allow” setting for accepting cookies from each domain (always, never, or via prompt) also is indicated in the listing.

      Cookie Details Shown

      The listing also shows the port (normally 80) of the URL for the request which caused the cookie to be sent, and whether the secure flag is set for the cookie, in which case it will be sent only via secure connections (presently, only SSL). The Maximum Gobble Date, i.e., when the cookie is intended to expire, also is indicated. Also, a server may change the expiration date, or cause the cookie to be deleted, in its replies to subsequent requests from Lynx. If the server included any explanatory comments in its Set-Cookie MIME headers, those also are displayed in the listing.

      Removing Cookies

      The domain=value pairs, and each cookie's name=value, are links in the listing. Activating a domain=value link will invoke a prompt asking whether all cookies in that domain should be Gobbled (deleted from the Cookie Jar), and/or whether the domain entry should be Gobbled if all of its cookies have been Gobbled, or whether to change the “allow” setting for that domain. Activating a cookie's name=value link will cause that particular cookie to be Gobbled. You will be prompted for confirmations of deletions, to avoid any accidental Gobbling.

      PK0]?%} &lynx_help/keystrokes/test_display.htmlnu[ Quick test for identifying display character set

      Overview

      Display a test-page for common problems with Lynx's display character set and/or locale problems.

      Configuration

      If you see several letters instead of a single – your promised display charset does not support this character so "7 bit approximation" is in effect. If you see any single letter which is unexpected, you have incorrect Lynx settings.

      Press “o” for Options menu and change "Display character set".
      Try again if necessary.

      When you are satisfied save your changes in Options menu, thanks.

      Test-screen

      This is only a quick test to see obvious problems.

      
      0x00A9    ©           # COPYRIGHT SIGN
      
      0x00C7    Ç           # LATIN CAPITAL LETTER C WITH CEDILLA
      
      0x00DC    Ü           # LATIN CAPITAL LETTER U WITH DIAERESIS
      
      0x00D1    Ñ           # LATIN CAPITAL LETTER N WITH TILDE
      
      0x0107    ć           # LATIN SMALL LETTER C WITH ACUTE
      0x0108    Ĉ           # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
      0x010C    Č           # LATIN CAPITAL LETTER C WITH CARON
      
      0x03BB    λ           # GREEK SMALL LETTER LAMDA
      
      0x041B    Л           # CYRILLIC CAPITAL LETTER EL
      0x042E    Ю           # CYRILLIC CAPITAL LETTER YU
      0x043B    л           # CYRILLIC SMALL LETTER EL
      0x044E    ю           # CYRILLIC SMALL LETTER YU
      
      0x2026    …           # HORIZONTAL ELLIPSIS
      0x2122    ™           # TRADE MARK SIGN
      
      0x255D    ╝           # BOX DRAWINGS DOUBLE UP AND LEFT
      0x255E    ╞           # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
      
      0xFB01    fi           # LATIN SMALL LIGATURE FI
      
      PK0]K!DEE#lynx_help/keystrokes/edit_help.htmlnu[ Lynx Line Editor Default Key Binding

      Overview

      Lynx invokes a built-in Line Editor for entering strings in response to prompts, in forms, and for email messages if an external editor has not been defined. Alternative key bindings are normally available (unless Lynx was configured with --disable-alt-bindings). If available, they may be selected via the “o”ptions menu, or by editing lineedit_mode in the “.lynxrc” file.

      Two such alternative key bindings, which may be available on your system, are the

      You can always see the current set of key-bindings in Lynx by opening the special URL LYNXEDITMAP:. This page is provided for those not using Lynx.

      Note: setting emacs/vi keys ON has no effect on line-editor bindings.

      Regular Keymap

      This is the Default Binding keymap:

           ENTER  Input complete        -  RETURN
           TAB    Input complete        -  TAB, Do
           ABORT  Input cancelled       -  Ctrl-G, Ctrl-O, (Ctrl-C on some systems)
           ERASE  Erase the line        -  Ctrl-U
      
           BACK   Cursor back     char  -  Left-Arrow
           FORW   Cursor forward  char  -  Right-Arrow
           BACKW  Cursor back     word  -  Ctrl-P
           FORWW  Cursor forward  word  -  Ctrl-N
           BOL    Go to begin of  line  -  Ctrl-A, Home, Find
           EOL    Go to end   of  line  -  Ctrl-E, End,  Select
      
           DELP   Delete prev     char  -  Backspace, Delete, Remove
           DELN   Delete next     char  -  Ctrl-D, Ctrl-R (see note 1)
           DELPW  Delete prev     word  -  Ctrl-B
           DELNW  Delete next     word  -  Ctrl-F
           DELEL  Delete to end of line -  Ctrl-_
      
           UPPER  Upper case the line   -  Ctrl-T
           LOWER  Lower case the line   -  Ctrl-K
      
           LKCMD  Invoke cmd prompt     -  Ctrl-V (in form text fields, only) (see note 2)
           SWMAP  Switch input keymap   -  Ctrl-^ (if compiled in)
      

      Editing Keymap

      These are special commands for use only in textarea fields (see note 3):

                Textarea external edit  - Ctrl-X e
                Insert file in textarea - Ctrl-X i
                Grow textarea           - Ctrl-X g
      

      Emacs-like commands

          TPOS    Transpose characters                   -  Ctrl-t
          SETMARK Set mark at current position in line   -  Ctrl-@
          XPMARK  Exchange current position with mark    -  Ctrl-x Ctrl-x
          KILLREG Kill region between mark and position  -  Ctrl-x Ctrl-w (see note 3)
          YANK    Insert text last killed (with KILLREG) -  Ctrl-y
      

      Try it yourself

      Here is a little textarea for practice:

      Special keys

      Ctrl-key means Control+key. Ctrl-x key means first Control+x, then key. M-key means Meta+key, where Meta is a modifier that can be entered in a variety of ways:

      • First ESC, then the key. This does not work with all systems or on all connections, and if it does may not work for some keys (because the ESC character is also part of code sequences for "normal" function keys).
      • Alt+key. This works if the terminal, console, or comm program is set up to interpret Alt as a modifier to send ESC. The Linux console acts like that by default for most keys; Kermit can be set up to do it, xterm can be for some keys, and so on. But the same caveats as for the previous item apply. This Alt mapping may also be possible, independent of the ESC character, for some keys in Lynx for DOS/i386 or for Win32.
      • Ctrl-x key. Actually, currently the same internal table is used for Meta and the Ctrl-x prefix. Therefore all M-key combinations can also be typed as Ctrl-x key, and vice versa.

      A few key names may be less familiar now than when Lynx was first written: Find, Select and Remove. The XTerm FAQ shows some typical keypad layouts of emulators for VT220 and other DEC terminals.

      The VT220 did not have a “backspace” key but Lynx's default bindings mention it. Both ASCII BS (backspace) and DEL are bound by default to the same functions. DEL (occasionally referred to as RUBOUT) is not the same as Delete: the former is a single character while the latter is usually a sequence of characters.

      Notes

      1. "next" means the character "under" a box or underline style cursor; it means "to the immediate right of" an I-beam (between characters) type cursor.
      2. Follow Ctrl-V with any recognized key command, to "escape" from a text input field.
      3. For other key combinations using Ctrl-X as a prefix key, see the Help page for the Bash-Like Binding.
      PK0]!x!!$lynx_help/keystrokes/other_help.htmlnu[ Help on Miscellaneous Lynx Commands

      Summary of Commands

             a      - Places the link that you are currently positioned
                      on into a personal bookmark file.
      
             c      - Allows you to send a mail message to the owner
                      or maintainer of the data that you are currently
                      viewing.  In the case that no owner is known,
                      you cannot send a comment.
      
             d      - Downloads the file pointed to by the current link
                      and displays an option menu allowing the file to
                      be saved or transferred by configurable options.
                      Can also be used when positioned on a form SUBMIT
                      button to download the reply to a form submission.
      
             e      - Allows you to edit the current document if it is a
                      local file.
      
             E      - Allows you to edit the current link's URL (or ACTION) and
                      use that as a goto URL.
      
             g      - Allows you to enter any URL or filename that
                      you wish to view, and then goto it.
      
             G      - Allows you to edit the current document's URL and use that
                      as a goto URL.
      
           ? or H   - Hypertext help to explain how to navigate in
                      Lynx and use its features.
      
             i      - Shows an index of files or subjects,
                      which may be changed in lynx.cfg.
      
             j      - Allows you to enter a short name to goto an URL,
                      if a jumps file has been defined.  Press "?"
                      and ENTER to see the list of defined jump commands.
      
             k      - Shows a list of key mappings.  Keys remapped in
                      "lynx.cfg" show up in this list.
      
             l      - Brings up a list of references (links) in the current
                      document, which can be used for rapid access to the
                      links in large documents.
      
             m      - Returns to the first screen and empties the
                      history stack.
      
             p      - Brings up a list of print commands.
      
             o      - Brings up a list of settable options.
      
             q      - Quits Lynx. (“Q” quits without asking)
      
             /      - Search for a string of characters in the current document
                      (case insensitive or case sensitive
                      depending on the options set).
      
             s      - Search through an external searchable indexed document.
      
             n      - Move to the next instance of a search string if you
                      have searched previously.
      
             v      - View a Bookmark file.
      
             V      - Go to the Visited Links Page
      
             x      - Force submission of form or link with no-cache.
      
             z      - Abort a network transfer in progress.  If any partial
                      data has been transferred it will be displayed.
      
        <backspace> - displays the History Page.
      
             =      - Show information about the file and link that you
                      are currently viewing.
      
             \      - Toggles between viewing the HTML source of a
                      document and the rendered version of the document.
      
             !      - Spawns your default operating system shell.
      
             '      - Toggles "historical" vs minimal or valid comment parsing.
                      When historical, any close-angle-bracket will be treated
                      as a comment terminator, emulating the parsing bug in old
                      versions of Mosaic and Netscape, rather than validly
                      requiring pairs of two successive dashes to delimit
                      comments within the angle-brackets.
      
             _      - Clears all authorization info for the current session.  Can
                      be used when leaving one's terminal without ending the Lynx
                      session, to guard against someone else retrieving protected
                      documents with previously entered username/password info.
                      Note that any protected documents that are still in cache
                      can still be accessed.
      
             `      - Toggles minimal or valid comment parsing.  When minimal, any
                      two successive dashes followed by a close-angle-bracket will
                      be treated as a comment terminator, emulating the parsing bug
                      in Netscape v2.0.  If historical comment parsing is set, that
                      will override minimal or valid comment parsing.
      
             *      - Toggles image_links mode on and off.  When on, links will
                      be created for all images, including inlines.
      
             @      - Toggles raw 8-bit translations or CJK mode on and off, only
                      for documents which does not specify character set explicitly.
                      Should be on when the document's charset matches the
                      display character set, and otherwise off so that 8-bit
                      characters will be translated by Lynx with respect to the
                      Assumed document charset, using approximations if necessary
                      (see options).
      
             [      - Toggles pseudo_inlines mode on and off.  When on, inline
                      images which have no ALT string specified will have an
                      "[INLINE]" pseudo-ALT string inserted in the Lynx display.
                      When off, they will be treated as having ALT="" (i.e.,
                      they will be ignored).  If image_links mode is toggled on,
                      the pseudo-ALT strings will be restored, to serve as links
                      to the inline images' sources.
      
             ]      - Sends a HEAD request for the current document or link.  It
                      applies only to documents or links (or form submit buttons)
                      of http servers.  A statusline message will notify you if
                      the context for this command was inappropriate.  The HEAD
                      requests always are sent to the http server, i.e., Lynx
                      does not retrieve any previous server replies from its
                      cache.  Note that for form submissions, http servers vary
                      in whether they will treat HEAD requests as valid and return
                      the CGI script's headers, or treat it as invalid and return
                      an error message.
      
             "      - Toggles valid or "soft" double-quote parsing.  When soft,
                      a close-angle-bracket will serve as both a close-double-
                      quote and close-tag, emulating the parsing bug in old
                      versions of Mosaic and Netscape.
      
           CTRL-R   - Reloads the current document and resets the display.
      
           CTRL-V   - Switches to an alternative way of parsing HTML documents.
                      This may help to get a more readable rendering of some
                      documents with invalidly placed HTML tags, more details.
      
           CTRL-W   - Resets or cleans up the display.
      
           CTRL-U   - Clears text from an input field or prompt.
      
           CTRL-G   - Cancels any input prompt, mail message or data transfer.
      
           CTRL-T   - Toggles trace mode on and off.
      
             ;      - Views the Lynx Trace Log for the current session.
      
           CTRL-K   - Invokes the Cookie Jar Page.
      
           numbers  - Lynx offers other, advanced navigation features when
                      numbers are used to invoke the
                        Follow link (or goto link or page) number: or
                        Select option (or page) number:
                      prompts.
      
      PK0]Mh6+lynx_help/keystrokes/gopher_types_help.htmlnu[ Listing of Gopher types

      Listing of Gopher types

      (FILE)
      An ASCII file
      (DIR)
      A directory listing
      (CSO)
      The Computing Services Organizations nameserver interface
      (BIN)
      A binary file with one of the following meanings
      • A Binary file with PC extensions
      • A Binary file with UNIX extensions
      (HQX)
      A Macintosh file that has been BinHexed
      (?)
      A searchable database
      (IMG)
      An unknown image type
      You must have an X terminal to view images
      (GIF)
      An image in Graphics Interchange Format
      You must have an X terminal to view images
      (HTML)
      A World Wide Web hypertext file
      (TEL)
      The link will open a connection to another host using telnet
      (3270)
      The link will open a connection to another host using tn3270
      (UKN)
      An unknown or unsupported type
      PK0]7d1BB$lynx_help/keystrokes/print_help.htmlnu[ Lynx Print Help and Configuration Summary

      Overview

      After entering the p command you will be presented with a list of print options. In all cases the file will be printed in ASCII format with the hypertext links removed. The number of options depends on the level of printing that your system allows.

      Print-command Options

      The following print options may be available:

      Print to a local file:
      This allows you to save the current file as ASCII text to your local disk. You will be asked for a path and filename to save the file to. If no path is given, the file will be saved to the directory that you were in when you began Lynx.
      Print to the screen:
      This option simply scrolls the entire document up the screen and is intended for those who wish to capture the document with their terminal.
      Mail the file to yourself:
      This option allows you to mail the file, in ASCII form, to any valid e-mail address.
      Custom print options:
      Any number of custom print options may be defined in lynx.cfg.
      PK0]A 'lynx_help/keystrokes/movement_help.htmlnu[ Help on Lynx Movement commands

      Overview

      These are the Lynx keystroke-movement commands which are usable in all non-editing contexts, for traversing links.

              Down arrow,    -  Move to the next hypertext link,
              TAB               or scroll down if there are no more
                                links on the page to move to.
      
              Up arrow       -  Move to the previous hypertext link,
                                or scroll up if there are no links
                                above the current one, and there are
                                previous pages to move to.
      
              Right arrow,   -  select the link that the cursor is
              Return, Enter     positioned on.
      
              Left arrow     -  Retreat from a link.  Go back to the
                                previous topic.
      

      Notes

      1. If VI Keys are enabled from the options menu or from the .lynxrc file, lowercase h,j,k,l will move left, down, up, and right, respectively.
      2. If Emacs Keys are enabled from the options menu or from the .lynxrc file, Ctrl-B, Ctrl-N, Ctrl-P, Ctrl-F will move left, down, up, and right, respectively.
      3. If the Num Lock on your keyboard is on, Lynx will translate the numbers of your keypad into movement commands. The translation corresponds with the labels on numeric keypad, but can be used from the main keyboard. It is as follows.
                           9  - page up
                           8  - up arrow
                7 8 9      7  - moves to the top of a document
                 \|/       6  - right arrow
              4 - 5 - 6    5  - nothing
                 /|\       4  - left arrow
                1 2 3      3  - page down
                           2  - down arrow
                           1  - moves to the end of a document
      
      PK0] %^%^&lynx_help/keystrokes/environments.htmlnu[ Help on Lynx's Environment variables

      Environment Variables

             In addition to various  “standard”  environment  variables
             such as HOME, PATH, USER, DISPLAY, TMPDIR, etc, Lynx utilizes
             several Lynx-specific environment variables, if they exist.
      
             Others may be created or modified by Lynx to pass data to
             an external program, or for other reasons.  These are
             listed separately below.
      
             See also the sections on Simulated CGI Support and
             Native Language Support, below.
      
             Note:  Not all environment variables apply to all types of
             platforms supported by Lynx, though most do.  Feedback on
             platform dependencies is solicited.  See also win32/dos specific
             variables.
      

      Variables Used By Lynx

             COLORTERM
                                 If set, color capability for the terminal
                                 is forced on at startup time. The actual
                                 value assigned to the variable is ignored.
                                 This variable is only meaningful if Lynx
                                 was built using the slang screen-handling
                                 library.
      
             LYNX_CFG
                                 This variable, if set,  will  override
                                 the  default  location and name of the
                                 global configuration  file  (normally,
                                 lynx.cfg)  that  was  defined  by  the
                                 LYNX_CFG_FILE    constant    in    the
                                 userdefs.h  file, during installation.
                                 See  the  userdefs.h  file  for   more
                                 information.
      
             LYNX_HELPFILE
                                 If set, this  variable  overrides  the
                                 compiled-in URL and configuration file
                                 URL for the Lynx help file.
      
             LYNX_LOCALEDIR
                                 If  set,  this  variable overrides the
                                 compiled-in  location  of  the  locale
                                 directory  which  contains native lan-
                                 guage (NLS) message text.
      
             LYNX_LSS
                                 This  variable,  if set, specifies the
                                 location of the default Lynx character
                                 style  sheet  file.   [Currently  only
                                 meaningful if  Lynx  was  built  using
                                 experimental color style support.]
      
             LYNX_SAVE_SPACE
                                 This  variable,  if set, will override
                                 the  default  path  prefix  for  files
                                 saved  to  disk that is defined in the
                                 lynx.cfg SAVE_SPACE:  statement.   See
                                 the lynx.cfg file for more information.
      
             LYNX_TEMP_SPACE
                                 This variable, if set,  will  override
                                 the  default path prefix for temporary
                                 files that was defined during installation,
                                 as well as any value that may
                                 be assigned to the TMPDIR variable.
      
             LYNX_TRACE
                                 If  set,  causes Lynx to write a trace
                                 file as if the -trace option were sup-
                                 plied.
      
             LYNX_TRACE_FILE
                                 If set, overrides the compiled-in name
                                 of the trace  file,  which  is  either
                                 Lynx.trace or LY-TRACE.LOG (the latter
                                 on the DOS platform).  The trace  file
                                 is in either case relative to the home
                                 directory.
      
             MAIL
                                 This variable  specifies  the  default
                                 inbox Lynx will check for new mail, if
                                 such  checking  is  enabled   in   the
                                 lynx.cfg file.
      
             NEWS_ORGANIZATION
                                 This  variable,  if  set, provides the
                                 string  used  in   the   Organization:
                                 header of USENET news postings.  It will
                                 override the setting of the ORGANIZATION
                                 environment  variable, if it is also set
                                 (and, on  UNIX, the contents of an
                                  /etc/organization file, if present).
      
             NNTPSERVER
                                 If set, this  variable  specifies  the
                                 default  NNTP server that will be used
                                 for USENET news  reading  and  posting
                                 with Lynx, via news: URL's.
      
             ORGANIZATION
                                 This  variable,  if  set, provides the
                                 string  used  in   the   Organization:
                                 header  of  USENET  news postings.  On
                                 UNIX, it will override the contents of
                                 an /etc/organization file, if present.
      
             PROTOCOL_proxy
                                 Lynx supports the use of proxy servers
                                 that  can act as firewall gateways and
                                 caching servers.  They are  preferable
                                 to  the  older  gateway  servers  (see
                                 WWW_access_GATEWAY, below).
                                 Each protocol used by Lynx (http, ftp,
                                 gopher, etc), can be mapped separately
                                 by setting environment variables of
                                 the form PROTOCOL_proxy (literally:
                                 http_proxy, ftp_proxy, gopher_proxy,
                                 etc), to “http://some.server.dom:port/”.
                                 See Proxy details and examples.
      
             WWW_access_GATEWAY
                                 Lynx still  supports  use  of  gateway
                                 servers,  with  the  servers specified
                                 via   “WWW_access_GATEWAY”   variables
                                 (where  “access” is lower case and can
                                 be “http”, “ftp”, “gopher” or “wais”),
                                 however most gateway servers have been
                                 discontinued.  Note that  you  do  not
                                 include  a  terminal “/” for gateways,
                                 but do for proxies specified by PROTOCOL_proxy
                                 environment variables.  See Proxy details.
      
             WWW_HOME
                                 This  variable,  if set, will override
                                 the default startup URL  specified  in
                                 any of the Lynx configuration files.
      

      Variables Set or Modified By Lynx

             LYNX_PRINT_DATE     This  variable  is  set  by  the  Lynx
                                 p(rint) function, to the “Date:”  string
                                 seen  in  the  document's “Information
                                 about” page (= cmd), if  any.   It  is
                                 created  for  use  by an external program,
                                 as  defined   in   a   lynx.cfg
                                 PRINTER: definition statement.  If the
                                 field does not exist for the document,
                                 the  variable  is set to a null string
                                 under UNIX, or “No Date” under VMS.
      
             LYNX_PRINT_LASTMOD  This  variable  is  set  by  the  Lynx
                                 p(rint)  function,  to  the  Last Mod:
                                 string seen in the document's  “Information
                                 about”  page  (= cmd), if any.
                                 It is created for use by  an  external
                                 program,  as  defined  in  a  lynx.cfg
                                 PRINTER: definition statement.  If the
                                 field does not exist for the document,
                                 the variable is set to a  null  string
                                 under UNIX, or “No LastMod” under VMS.
      
             LYNX_PRINT_TITLE    This  variable  is  set  by  the  Lynx
                                 p(rint)  function,  to  the  Linkname:
                                 string seen in the document's  “Information
                                 about”  page  (= cmd), if any.
                                 It is created for use by  an  external
                                 program,  as  defined  in  a  lynx.cfg
                                 PRINTER: definition statement.  If the
                                 field does not exist for the document,
                                 the variable is set to a  null  string
                                 under UNIX, or “No Title” under VMS.
      
             LYNX_PRINT_URL      This  variable  is  set  by  the  Lynx
                                 p(rint) function, to the  URL:  string
                                 seen  in  the  document's “Information
                                 about” page (= cmd), if  any.   It  is
                                 created  for  use  by an external program,
                                 as  defined   in   a   lynx.cfg
                                 PRINTER: definition statement.  If the
                                 field does not exist for the document,
                                 the  variable  is set to a null string
                                 under UNIX, or “No URL” under VMS.
      
             LYNX_VERSION        This variable is always set  by  Lynx,
                                 and may be used by an external program
                                 to determine  if  it  was  invoked  by
                                 Lynx.   See  also  the comments in the
                                 distribution's  sample  mailcap  file,
                                 for notes on usage in such a file.
      
             SSL_CERT_DIR        Set to the directory containing trusted
                                 certificates.
      
             SSL_CERT_FILE       Set to the full path and filename  for
                                 your file of trusted certificates.
      
             TERM                Normally,  this  variable  is  used by
                                 Lynx to determine  the  terminal  type
                                 being  used  to invoke Lynx.  If, however,
                                 it is unset at startup time  (or
                                 has  the  value  “unknown”), or if the
                                 -term  command-line option is used,
                                 Lynx will set or modify its value
                                 to the user specified  terminal type
                                 (for the Lynx execution   environment).
                                 Note: If set/modified by Lynx, the values of
                                 the LINES and/or  COLUMNS  environment
                                 variables may also be changed.
      

      Simulated CGI Support

      If built with the cgi-links option enabled, Lynx allows access to a cgi script directly without the need for an http daemon.

      When executing such “lynxcgi scripts” (if enabled), the following variables may be set for simulating a CGI environment:

             CONTENT_LENGTH
      
             CONTENT_TYPE
      
             DOCUMENT_ROOT
      
             HTTP_ACCEPT_CHARSET
      
             HTTP_ACCEPT_LANGUAGE
      
             HTTP_USER_AGENT
      
             PATH_INFO
      
             PATH_TRANSLATED
      
             QUERY_STRING
      
             REMOTE_ADDR
      
             REMOTE_HOST
      
             REQUEST_METHOD
      
             SERVER_SOFTWARE
      

      Other environment variables are not inherited by the script, unless they are provided via a LYNXCGI_ENVIRONMENT statement in the configuration file. See the lynx.cfg file, and the (draft) CGI 1.1 Specification <http://Web.Golux.Com/coar/cgi/draft-coar-cgi-v11-00.txt> for the definition and usage of these variables.

      The CGI Specification, and other associated documentation, should be consulted for general information on CGI script programming.

      Native Language Support

      If configured and installed with Native Language Support, Lynx will display status and other messages in your local language. See the file ABOUT_NLS in the source distribution, or at your local GNU site, for more information about internationalization.

      The following environment variables may be used to alter default settings:

             LANG                This variable, if set,  will  override
                                 the  default  message language.  It is
                                 an ISO 639 two-letter code identifying
                                 the  language.  Language codes are NOT
                                 the same as the country codes given in
                                 ISO 3166.
      
             LANGUAGE            This  variable,  if set, will override
                                 the default message language.  This is a
                                 GNU extension that has higher priority for
                                 setting the message catalog than LANG or
                                 LC_ALL.
      
             LC_ALL              and
      
             LC_MESSAGES         These  variables,  if set, specify the
                                 notion of native  language  formatting
                                 style.  They are POSIXly correct.
      
             LINGUAS             This variable, if set prior to configuration,
                                 limits the installed languages to specific values.
                                 It is a space-separated list of two-letter codes.
                                 Currently, it is hard-coded to a wish list.
      
             NLSPATH             This variable, if set, is used as  the
                                 path prefix for message catalogs.
      

      Proxy details and examples

      To set your site's NTTP server as the default host for news reading and posting via Lynx, set the environment variable NNTPSERVER so that it points to its Internet address. The variable “NNTPSERVER” is used to specify the host which will be used as the default for news URLs.

      UNIX
      setenv NNTPSERVER "news.server.dom"
      
      VMS
      define/system NNTPSERVER "news.server.dom"
      

      Lynx still supports use of gateway servers, with the servers specified via the variables “WWW_access_GATEWAY”, where “access” is lower case and can be “http”, “ftp”, “gopher” or “wais”. Most of the gateway servers have been discontinued, but “http://www.w3.org:8001” is available for wais searches (note that you do not include a terminal “/” for gateways, but do for proxies; see below).

      Lynx version 2.2 and beyond supports the use of proxy servers that can act as firewall gateways and caching servers. They are preferable to the older gateway servers. Each protocol used by Lynx can be mapped separately using PROTOCOL_proxy environment variables as shown below:

      UNIX
      setenv http_proxy         "http://some.server.dom:port/"
      setenv https_proxy        "http://some.server.dom:port/"
      setenv ftp_proxy          "http://some.server.dom:port/"
      setenv gopher_proxy       "http://some.server.dom:port/"
      setenv news_proxy         "http://some.server.dom:port/"
      setenv newspost_proxy     "http://some.server.dom:port/"
      setenv newsreply_proxy    "http://some.server.dom:port/"
      setenv snews_proxy        "http://some.server.dom:port/"
      setenv snewspost_proxy    "http://some.server.dom:port/"
      setenv snewsreply_proxy   "http://some.server.dom:port/"
      setenv nntp_proxy         "http://some.server.dom:port/"
      setenv wais_proxy         "http://some.server.dom:port/"
      setenv finger_proxy       "http://some.server.dom:port/"
      setenv cso_proxy          "http://some.server.dom:port/"
      
      VMS
      define "http_proxy"       "http://some.server.dom:port/"
      define "https_proxy"      "http://some.server.dom:port/"
      define "ftp_proxy"        "http://some.server.dom:port/"
      define "gopher_proxy"     "http://some.server.dom:port/"
      define "news_proxy"       "http://some.server.dom:port/"
      define "newspost_proxy"   "http://some.server.dom:port/"
      define "newsreply_proxy"  "http://some.server.dom:port/"
      define "snews_proxy"      "http://some.server.dom:port/"
      define "snewspost_proxy"  "http://some.server.dom:port/"
      define "snewsreply_proxy" "http://some.server.dom:port/"
      define "nntp_proxy"       "http://some.server.dom:port/"
      define "wais_proxy"       "http://some.server.dom:port/"
      define "finger_proxy"     "http://some.server.dom:port/"
      define "cso_proxy"        "http://some.server.dom:port/"
      

      (Encase *BOTH* strings in double-quotes to maintain lower case for the PROTOCOL_proxy variable and for the http access type; include /system if you want proxying for all clients on your system.)

      If you wish to override the use of a proxy server for specific hosts or entire domains you may use the “no_proxy” environment variable. The no_proxy variable can be a comma-separated list of strings defining no-proxy zones in the DNS domain name space. If a tail substring of the domain-path for a host matches one of these strings, transactions with that node will not be proxied. Here is an example use of “no_proxy”:

      UNIX
      setenv no_proxy "host.domain.dom, domain1.dom, domain2"
      
      VMS
      define "no_proxy" "host.domain.dom, domain1.dom, domain2"
      

      You can include a port number in the no_proxy list to override use of a proxy server for the host accessed via that port, but not via other ports. For example, if you use “host.domain.dom:119” and/or “host.domain.dom:210”, then news (port 119) URLs and/or any wais (port 210) searches on that host would be excluded, but http, ftp, and gopher services (if normally proxied) would still be included, as would any news or wais services on other hosts.

      Warning: Note that setting “il” as an entry in this list will block proxying for the .mil domain as well as the .il domain. If the entry is “.il” this will not happen.

      If you wish to override the use of a proxy server completely (i.e., globally override any existing proxy variables), set the value of “no_proxy” to “*”. This is the only allowed use of * in no_proxy.

      Note that Lynx treats file URLs on the local host as requests for direct access to the file, and does not attempt ftp if that fails. It treats both ftp URLs and file URLs on remote hosts as ftp URLs, and does not attempt direct file access for either. If ftp URLs are being proxied, file URLs on a remote host will be converted to ftp URLs before submission by Lynx to the proxy server, so no special procedure for inducing the proxy server to handle them is required. Other WWW clients may require that the http server's configuration file have “Map file:* ftp:*” in it to perform that conversion.

      If you have not set NNTPSERVER, proxy or no_proxy environment variables you can set them at run time via the configuration file lynx.cfg (this will not override external settings).

      Win32 (95/NT) and 386 DOS

      (adapted from “readme.txt” by Wayne Buttles
      and “readme.dos” by Doug Kaufman)

      Here are some environment variables that should be set, usually in a batch file that runs the Lynx executable. Make sure that you have enough room left in your environment. You may need to change your “SHELL=” setting in config.sys. In addition, Lynx looks for a “SHELL” environment variable when shelling to DOS. If you wish to preserve the environment space when shelling, put a line like this in your AUTOEXEC.BAT file also “SET SHELL=C:\COMMAND.COM /E:2048”. It should match CONFIG.SYS.

          HOME         Where to keep the bookmark file and personal config files.
          TEMP or TMP  Bookmarks are kept here with no HOME.  Temp files here.
          USER         Set to your login name
          LYNX_CFG     Set to the full path and filename for lynx.cfg
      

      386 version only:

          WATTCP.CFG   Set to the full path for the WATTCP.CFG directory
      

      (Depending on how you compiled libtcp.a, you may have to use WATCONF.)

      Define these in your batch file for running Lynx. For example, if your application line is “D:\win32\lynx.bat”, lynx.bat for Win32 may look like:

              @ECHO OFF
              set home=d:\win32
              set temp=d:\tmp
              set lynx_cfg=d:\win32\lynx.cfg
              d:\win32\lynx.exe %1 %2 %3 %4 %5
      

      In lynx_386, a typical batch file might look like:

              @echo off
              set HOME=f:/lynx2-8
              set USER=your_login_name
              set LYNX_CFG=%HOME%/lynx.cfg
              set WATTCP.CFG=%HOME%
              f:\lynx2-8\lynx %1 %2 %3 %4 %5 %6 %7 %8 %9
      

      You will also need to make sure that the WATTCP.CFG file has the correct information for IP number, Gateway, Netmask, and Domain Name Server. This can also be automated in the batch file.

      PK0]12$lynx_help/keystrokes/xterm_help.htmlnu[ X Terminal Help

      X Terminal Help

      An X terminal is an electronic display terminal that communicates with a host computer system using the X Window protocol developed at the Massachusetts Institute of Technology.

      The X Window protocol allows a program running on the host computer system to display both formatted text and graphics on the X terminal. Since the X Window protocol is defined to work over any TCP/IP network, X terminals connected to the Internet can be connected to hosts located anywhere on the Internet.

      Personal computers (including both PCs and Macintoshes) can execute programs, usually called X servers, that make them act like X Window terminals and are frequently used as X terminals.

      Notes

      Terminology
      The terminology used to describe processes associated with X terminals can be confusing. An X terminal is also known as an "X display server," and the program running on the host computer is usually known as the "X client."
      PK0] KG(lynx_help/keystrokes/scrolling_help.htmlnu[ Lynx Scrolling/Paging Help Summary

      Overview

      This gives an overview and some details on Lynx's scrolling/paging commands. A diagram shows keypad shortcuts.

      Paging shortcuts

         + (or SPACE,   - If the bottom of the screen informs you
            or CTRL-F)    that there is “more” to see, you may
                          move to the next page (Page-Down).
      
         - (or b,       - If you have moved down in a document, this
            or CTRL-B)    will bring you back up one page (Page-Up).
      

      Keypad shortcuts

      Lynx can use the digits 0-9 as movement shortcuts. They are designed to work best when the Num Lock on your keyboard is on, so that Lynx can translate the numbers of your keypad into movement commands:

                           9  - page up
                           8  - up arrow
                7 8 9      7  - moves to the top of a document
                 \|/       6  - right arrow
              4 - 5 - 6    5  - nothing
                 /|\       4  - left arrow
                1 2 3      3  - page down
                           2  - down arrow
                           1  - moves to the end of a document
      

      Control-characters

         CTRL-A (or Find)    - This Control key, and Function key synonym,
                               brings you back to the first page of the
                               current document (Home).
      
         CTRL-E (or Select)  - This Control key, and Function key synonym,
                               takes you to the last page of the current
                               document (End).
      
         CTRL-N (or Remove)  - This Control key, and Function key synonym,
                               moves you forward two lines in the current
                               document (Down-Two).
      
         CTRL-P (or Insert)  - This Control key, and Function key synonym,
                               moves you back two lines in the current
                               document (Up-Two).
      

      Ordinary characters

         )                   - Moves you forward half a page in the current
                               document (Down-Half).
      
         (                   - Moves you back half a page in the current
                               document (Up-Half).
      
         ^                   - Go to the first link on the current line.
      
         $                   - Go to the last link on the current line.
      
         <                   - Go to the previous link in the current column.
      
         >                   - Go to the next link in the current column.
      
         #                   - Jumps you to the pseudo Toolbar or Banner if
                               present in the current document.  Use left-arrow
                               to return from there to your previous position
                               in the document.
      
      PK0]pK  &lynx_help/keystrokes/history_help.htmlnu[ Help on the History Page

      Overview

      Lynx's History Page displays all of the links that you have traveled through to reach your current point, including any temporary menu or list files that included links, bookmark files, and any documents associated with POST content. If you entered a document and then left it by using the left-arrow key, it will not be in the history stack. If you entered a document and left it by selecting another link within that document, it will be in the history stack.

      Navigation

      You may select any link on the History Page to review a document that you have previously visited. That link, and any subsequent to it, will not be removed from the history stack if you return to it via the History Page. You thus should use a History Page link, rather than the left-arrow key, if you wish to review previous documents without needing to remember and repeat the series of selections for reaching your currently displayed document.

      Upon using left-arrow in the document selected via the History Page, you will be returned to the document from which you initially went to the History Page.

      If a previously visited link has been removed from the history stack, and it was not a temporary menu or list file, bookmark file, or document associated with POST content, it can still be selected conveniently via the Visited Links Page. The latter also will include links which were “d”ownloaded or passed to a helper application, and thus were not included in the history stack.

      PK0]d2bN $lynx_help/keystrokes/dired_help.htmlnu[ Lynx Dired-mode Key Bindings

      Overview

      Lynx changes into Dired mode when you use a URL of the type file://localhost/path/.

      Dired Key bindings

      While in Dired mode, some keys are remapped to do the following functions:

      
          C)reate       - Create a new, empty file in the current
                          directory.  You will be prompted to enter
                          a name for the file.
      
          F)ull menu    - Show a full menu of commands for currently
                          selected file or directory.
      
          M)odify       - Modify the name or location of selection.  If
                          multiple files have been selected, you will
                          only be able to change the location.  Choose
                          between changing the name or location and then
                          enter a new filename or path.
      
          R)emove       - Delete currently selected files.
      
          T)ag          - Tag the highlighted file.  Multiple files may
                          be tagged and all other commands except "Create"
                          will be performed on tagged files instead of the
                          one highlighted.  Press “t” again to untag
                          a file.
      
          U)pload       - Upload a file to the current directory using
                          one of the options listed in the upload screen.
      

      Other Key bindings

      Some other keys useful in Dired mode:

          D)ownload     - Download selection using options listed in
                          the download options screen.
      
          E)dit         - Spawn the editor defined in the Options Menu
                          and load selection for editing.
      

      Notes

      Dired mode must be activated at compile time. Otherwise, the above commands will not be available and Lynx will treat a directory listing as an HTML file.

      PK0]a] ] &lynx_help/keystrokes/visited_help.htmlnu[ Help on the Visited Links Page

      Overview

      Lynx's Visited Links Page displays all of the links that you have traveled through during the current Lynx session, except for any temporary menu or list files, bookmark files, or any documents associated with POST content. The VLINKS keystroke command for invoking this page normally is mapped to uppercase “V”. The list of Visited Links is normally in order of recency (most recently visited links first), without repetitions in the list if a link was visited more than once during the session (unless the URLs differ due to appended fragments), and is supplementary to the History Page.

      Navigation

      You may select any link on the Visited Links Page to retrieve a document that you had previously visited, or you can use this list to save such links in your bookmark files, or to Download them.

      In contrast to the History Page, the Visited Links Page includes any links which were retrieved for “d”ownloading or were passed to helper applications, i.e., not just the links that were rendered and displayed by Lynx, itself.

      Configuration

      You may change the appearance of the Visited Links Page via a popup menu on that page (which also appears on the Options Menu). The menu allows you to choose whether to view the list ordered by the first or last visit, forward or reversed – or a mixture (a tree structure).

      PK0]>$$'lynx_help/keystrokes/alt_edit_help.htmlnu[ Lynx Line Editor Alternative Key Binding

      Overview

      Lynx invokes a built-in Line Editor for entering strings in response to prompts, in forms, and for email messages if an external editor has not been defined. Additional alternative key-bindings can be offered by configuring with --enable-alt-bindings or by adding them in LYEditmap.c before compiling Lynx. If available, they may be selected via the “o”ptions menu, or by editing lineedit_mode in the “.lynxrc” file.

      Note: setting emacs/vi keys ON has no direct effect on line-editor bindings.

      Table of key-bindings

      This is the Alternative Binding keymap.

           ENTER  Input complete        -  RETURN
           TAB    Input complete        -  TAB, Do
           ABORT  Input cancelled       -  Ctrl-G, Ctrl-O, (Ctrl-C on some systems)
           ERASE  Erase the line        -  Ctrl-U
      
           BACK   Cursor back     char  -  Left-Arrow,  Ctrl-B
           FORW   Cursor forward  char  -  Right-Arrow, Ctrl-F
           BACKW  Cursor back     word  -  Ctrl-P
           FORWW  Cursor forward  word  -  Ctrl-N
           BOL    Go to begin of  line  -  Ctrl-A, Home, Find
           EOL    Go to end   of  line  -  Ctrl-E, End,  Select
      
           DELP   Delete prev     char  -  Backspace, Delete, Remove
           DELN   Delete next     char  -  Ctrl-D (see note 1)
           DELPW  Delete prev     word  -  Ctrl-R
           DELNW  Delete next     word  -  Ctrl-T
           DELEL  Delete to end of line -  Ctrl-K
      
           UPPER  Upper case the line   -  Ctrl-^
           LOWER  Lower case the line   -  Ctrl-_
      
           LKCMD  Invoke cmd prompt     -  Ctrl-V (in form text fields, only) (see note 2)
      
      Special commands for use only in textarea fields (see note 3):
      
                Textarea external edit  - Ctrl-X e
                Insert file in textarea - Ctrl-X i
                Grow textarea           - Ctrl-X g
      

      Emacs-like commands

          TPOS    Transpose characters                   -  Ctrl-t
          SETMARK Set mark at current position in line   -  Ctrl-@
          XPMARK  Exchange current position with mark    -  Ctrl-x Ctrl-x
          KILLREG Kill region between mark and position  -  Ctrl-x Ctrl-w (see note 3)
          YANK    Insert text last killed (with KILLREG) -  Ctrl-y
      

      Try it yourself

      Here is a little textarea for practice:

      Special keys

      See the Lynx Line Editor page for an explanation of terminology and key-names.

      Notes

      1. "next" means the character "under" a box or underline style cursor; it means "to the immediate right of" an I-beam (between characters) type cursor.
      2. Follow Ctrl-V with any recognized key command, to "escape" from a text input field.
      3. For other key combinations using Ctrl-X as a prefix key, see the Help page for the Bash-Like Binding.
      PK0]|9lynx_help/lynx_help_main.htmlnu[ The Lynx Help Page – quick-links and detailed documentation

      Lynx help files (usually in your local directories):

      These Lynx documents are part of your local configuration:

      Other sources of Lynx help:

      The Lynx configuration guide may also be local.

      World Wide Web Consortium documents:

      Help with HTML:

      HTML validation services:

      Other browsing software:

      • GNU wget — powerful & flexible non-interactive downloader
      • Pavuk — powerful & an even more-featured downloader
      • cURL — non-interactive downloader which supports HTTPS
      • snarf — small simple 1-file non-interactive downloader

      Historical interest

      Search engines:

      These work with Lynx as of 2014/01/10:

      PK0]jlynx_help/lynx_url_support.htmlnu[ URL Schemes Supported in Lynx

      [http, https | telnet, tn3270, rlogin | gopher | file | ftp | wais | news, nntp, snews | newspost, newsreply, snewspost, snewsreply | mailto | finger | cso | bibp | lynxexec, lynxprog | lynxcgi| NcFTP | internal]

      URL Schemes Supported in Lynx

      Lynx handles a number of URL types, that are enumerated below. For more details about URLs (Uniform Resource Locators) see RFC1738:

      Lynx resolves partial or relative URLs in documents with respect to the BASE if one was specified, otherwise with respect to the document's absolute URL, using the rules described in RFC1808:

      and in subsequent drafts of the IETF:

      When entering a URL on the command line to be used as the startfile, or at the prompt for a “g”oto entry, a partial host field can be used and the scheme field can be omitted if the scheme and fully qualified domain name can be constructed internally by using the URL_DOMAIN_PREFIXES and URL_DOMAIN_SUFFIXES definitions in the Lynx configuration file. See the explanation of those definitions and their use in your lynx.cfg.

      For example, wfbr will be treated as http://www.wfbr.edu/, and wfbr/dir/lynx will be treated as http://www.wfbr.edu/dir/lynx, but gopher.wfbr.edu/11/_fileserv/_lynx will be treated as gopher://gopher.wfbr.edu/11/_fileserv/_lynx.

      For files or directories on the local host, a tilde (~) is expanded to the path of the account's login directory, e.g., ~/foo will be expanded to file://localhost/your/login/directory/foo. The tilde expansion is done homologously on Unix and VMS.

      On VMS, Lynx also will expand any file or directory spec recognizable to DCL into a valid URL, e.g., [] will be expanded to file://localhost/current/default/directory.

      These expansions are SOLELY for startfile or “g”oto entries! Any partial or relative URLs within HTML documents are resolved according to the rules specified in RFC1808 and subsequent IETF drafts.


      The http and https URLs:

      Lynx handles http URLs exactly as specified in RFC1738. The format is:

            http://host:port/path?searchpart#fragment
      

      where :port is optional and defaults to :80, /path if present is a slash-separated series of symbolic elements, and ?searchpart if present is the query for an ISINDEX search or the content of a FORM with METHOD="GET". The #fragment field if present indicates a location in the document to seek for display, based on a NAME-ed anchor or an ID attribute within the document, and is technically an instruction rather than part of the URL. Lynx will treat ID attributes as NAME-ed anchors for all tags in the BODY of a document which can correspond to positions in the rendering of the document.

      The https URL has the same format, but the default port is :443.

      Lynx relies for https support on external libraries (OpenSSL or GnuTLS) whose capabilities have evolved over time. In turn, those libraries may depend upon external resources for verifying SSL certificates. For instance, certification revocation may be provided via the Online Certificate Status Protocol (OCSP) which is an external service. Without this facility, Lynx may not warn about websites using revoked SSL certificates.


      The telnet, tn3270, and rlogin URLs:

      A telnet URL generally results in Lynx spawning a telnet session. Lynx implements the complete telnet URL scheme, i.e.:

            telnet://user:password@host:port
      

      The user and/or :password fields may be omitted, and the @ should be omitted if neither is present. The port defaults to :23 when omitted in the URL.

      A tn3270 or rlogin URL is specified equivalently, and similarly spawns a tn3270 or rlogin session. The actual behavior is dependent on the TCP-IP software installed on the local and target hosts.

      It is unwise to include the :password field except for URLs which point to anonymous or other public access accounts, and for most TCP-IP software you will be prompted for a password whether or not one was included in the URL.


      The gopher URL:

      The gopher URL takes the form:

            gopher://host:port/gopher-path
      

      where :port is optional and defaults to :70, and the /gopher-path is opaque (not fully equivalent to the slash-separated series of symbolic elements of http paths) as explained in RFC1738. Typically, the gopher-path consists of a gophertype indicating the file or service type (e.g., 0 or I for plain text or an image, respectively, 7 for a search, or 1 for a directory), followed by a platform-specific selector. Any reserved characters in the selector should be hex escaped (%hh), including slashes, although hex escaping of slashes is not required by Lynx in gopher URLs.

      Lynx does not overtly support the gopher+ protocol, and does not represent itself as gopher+ capable when communicating with gopher servers. Lynx might transmit any (hex-escaped-tab-separated) extended gopher+ fields in a URL if an author included them in a document, but is likely to mishandle what the gopher server returns in such cases, and would not generate and transmit them itself. For pre-formed URLs to submit gopher searches, it may be better to use a ? rather than hex-escaped tab (%09) as the separator for the searchpart in the selector, e.g.:
      gopher://gopher.wfbr.edu/77/_shell/search.shell%20/_shell/walker?lynx* Lynx will handle the %09 if you use that instead of ?, but other WWW clients may mishandle it.

      For the gophertype which signifies HTML (h), if the selector begins with GET%20/ Lynx will convert the gopher URL to an http URL, e.g.:

      gopher://www.wfbr.edu:80/hGET%20/
      

      will become:

      http://www.wfbr.edu/
      

      The port field will be retained if it is not :80, and will default to :70 if it was defaulted originally. These conventions were adopted during development of the University of Minnesota gopher software to facilitate the offering of links to MIME-capable http servers in the listings returned by gopher servers, but should be considered Lynxisms and UMN Gopherisms.


      The file URL:

      The file URL is used to retrieve files or generate a directory listing on the local host. The host field can be localhost or a domain name for the local host:

      file://localhost/path
      

      If you do not use localhost or a domain name for the local host, Lynx will substitute ftp:// for file:// and treat it as an ftp URL.

      The /path is treated as originating at the root, unless you include a tilde (~), e.g.:

            file://localhost/~/foo   will be converted to:
            file://localhost/your/login/directory/foo
      

      The latter feature is a Lynxism, is done homologously on Unix and VMS, and should be used ONLY in local documents intended for Lynx.

      On VMS, the first element of the path, if not a tilde, is assumed to be a device, e.g.:

            file://localhost/www_root/directory/filename.suffix
      

      should be used for: www_root:[directory]filename.suffix
      If you are unsure how to specify a file URL in local documents on VMS, invoke Lynx with the desired file or directory as the startfile using any spec acceptable to DCL, and then use the showinfo command (=) to see the file URL which Lynx created for it.


      The ftp URL:

      The ftp URL has the general format:

            ftp://host:port/path;type=[D,I, or A]
            ftp://username@host:port/path;type=[D,I, or A]
      

      The default port is :21 and the default username is anonymous. If username is included, Lynx will prompt you for the password. For anonymous ftp, Lynx uses your personal_mail_address (user@host) as the password if it has been defined via the “o”ptions menu. Otherwise, Lynx uses the dummy password WWWUser. (A password can also be embedded in the URL, by replacing username with username:password. This is strongly discouraged for “real” passwords that must be kept secret, since URLs with the completely unencrypted password may show up on the screen, in HISTORY and LIST pages etc., and may even become visible to remote sites for example through Referer headers.) Do not include the @ if neither username nor :password is included.

      The ;type= parameter can be used with value D, I, or A to force handling of the URL as, respectively, a directory listing, binary file, or ASCII file. The Lynx ftp gateway normally determines this itself, but the parameter can be used if the internal procedure draws an incorrect inference about the nature of the ftp URL.

      The /path is treated according to RFC1738 for VMS and VM/CMS ftp servers. The lead slash (/) is treated purely as a separator, not as a designator for the root, and the path string if present is treated as in or under the login directory. For VMS ftp servers, if you wish to have the first element treated as a device rather than file or subdirectory name, begin it with a hex-escaped slash (%2f), e.g.:

            ftp://user@myhost/%2fsys$common/syshlp
      

      can be used for a listing of sys$common:[syshlp]
      Also, on VM/CMS ftp servers, if the path string begins with vmsysu%3a it receives special handling as an SFS path, e.g.:

            ftp://ubvm.cc.buffalo.edu/vmsysu%3alistserv.webshare
      

      For Unix and Unix-emulation ftp servers, RFC1738 is not respected and the lead slash is treated as the root, i.e., the /path is handled equivalently to that in file URLs. The distinction is 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 path string treated as a file or path under the login directory, include a tilde (~) as for file URLs, e.g.:

            ftp://user@myhost/~
      

      The wais URL:

      The wais URL is used to retrieve resources using the Wide Area Information System protocol. The format is:

            wais://host:port/database
            wais://host:port/database?wais_query
            wais://host:port/database/wais_type/wais_path
      

      where :port defaults to :210

      Direct wais support is built into Lynx for VMS, and can be compiled into Lynx on Unix.

      If only a database is indicated in the URL, Lynx returns an ISINDEX cover page for searching that database, and will submit your search with the wais_query appended. Lynx will convert the server's reply into a hit list with URLs that include the wais_type and wais_path for retrieving items from the hit list.


      The news, nntp, and snews URLs:

      The news and nntp URLs are handled by Lynx as specified in RFC1738, but for compatibility with other clients, Lynx allows inclusion of host and port fields in news URLs, which properly should be used only in nntp and snews URLs. If not included in news URLs, Lynx will use the nntp server pointed to by the NNTPSERVER environment variable or configuration symbol (see lynx.cfg), with default port :119. A host field must be included in nntp URLs, and the port field is optional with the same default.

      If the URL requires authentication, Lynx will prompt you for the username and password. These are cached during a session, for reuse on the same host. If $HOME/.newsauth exists, Lynx initializes its cache from this file. The .newsauth file contents are one line per entry: hostname, password and username (in that order) separated by a space.

      The formats are:

            news:newsgroup (retrieves list of messages in newsgroup)
            news:messageID (retrieves the message)
            news:* (retrieves list of all available newsgroups)
            nntp://host:port/newsgroup
            nntp://host:port/messageID
            nntp://host:port/*
      

      (snews same as nntp, but the default port is :563)

      The messageID is the message's unique identifier, consisting of an identification string and the host of origin for the message (ident_string@origin_host).

      Lynx also supports wildcarding via an asterisk for listings of news hierarchies or sub-hierarchies, e.g.:

            news:comp.infosystems.*
            nntp://host:port/comp.infosystems.*
      

      (snews same as nntp, but the default port is :563)
      This is not in RFC1738 and may not be supported by all other clients.

      Lynx allows you both to reply to the author of a news message via email, and, if news posting has been enabled, to send a followup message to the newsgroup (see newspost, newsreply, snewspost, snewsreply).

      Lynx converts any strings in news messages which appear to be a URL with a supported scheme into a link for accessing that URL.

      Lynx also supports the newsgroup and message number URL scheme:

            news:newsgroup/startNo-endNo (lists message range in newsgroup)
            news:newsgroup/messageNo     (retrieves the message by number)
            nntp://host:port/newsgroup/startNo-endNo
            nntp://host:port/newsgroup/messageNo
      

      (snews same as nntp, but the default port is :563)
      Use of this scheme is not recommended, because the message numbers are specific to each nntp server, unlike the unique identifiers for news messages.


      The newspost, newsreply, snewspost, and snewsreply URLs:

      When Lynx receives group listings or articles via news, nntp or snews URLs, it also checks whether the nntp server supports posting from the Lynx user's site, and if so, includes links for posting new messages to that server, or for posting followups (replies) to previously posted messages. RFC1738, and IETF URL drafts through this release of Lynx, do not include any schemes for posting to news groups. Lynx has long supported newspost and newreply URL schemes for posting new messages or sending followups, respectively, to standard nntp servers, with default port :119. Lynx now also supports homologous snewspost and snewsreply URLs for use with SSL capable nntp servers.

      The formats are:

            newspost://host:port/newsgroup(s)  (post a new message)
            newsreply://host:port/newsgroup(s) (post a followup message)
      

      (snewspost and snewsreply have the same formats, but the default port is :563)

      If the host field is omitted, it defaults to that pointed to by the NNTPSERVER configuration or environmental variable. Inclusion of at least one newsgroup in the URL is required, and additional groups can be specified as a comma-separated list. Wildcarding of newsgroup names is not supported for these URLs. For newsreply and snewsreply URLs, if an external editor has been defined via the Options Menu, the user is offered an option to include the currently displayed document, which presumably is a news article with a followup link that was activated, and if confirmed, each line of that document is prefixed with a right-angle-bracket. The user is expected to edit such an inclusion so that only the passages relevant to the followup message are retained.

      These URLs can be used as command line startfiles (in which case, Lynx 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 mailto URLs, with the qualification that they presently are supported only by Lynx.


      The mailto URL:

      The mailto URL is used to provide links that when activated can be used to send a comment or the content of a FORM to an Internet email address (user@host). The format is:

            mailto:user@host
      

      The description of the mailto URL in RFC1738 has been interpreted by some as allowing only a single recipient, but Lynx invented the mailto URL, has always supported a series of user@host addresses as a comma-separated list, and still does. For compatibility with Explorer, Lynx also accepts a semi-colon-separated list.

      For compatibility with Netscape, Lynx parses any ?subject=The%20Subject appended to the URL, trims the URL at the ?, and uses the value as the default Subject: for the message or FORM content mailing. This is not recommended practice. The preferred way to indicate the default Subject: for a LINK or Anchor with a mailto HREF, or a FORM with a mailto ACTION, is via a TITLE attribute with the subject string as its value, e.g.:

            <LINK REV="made"
                  HREF="mailto:me@myhost,her@herhost" TITLE="The Subject">
      
            <A HREF="mailto:user@host" TITLE="The Subject">...</A>
      
            <FORM METHOD="post" ENCTYPE="text/plain"
                  ACTION="mailto:WebMaster@host" TITLE="The Subject">
             ...
            </FORM>
      

      Note that a TITLE attribute for FORM is now included in the HTML specifications. Some clients use a SUBJECT attribute for this purpose in FORM tags, and Lynx recognizes that as a synonym for TITLE.

      Lynx also will process any to=address(es), cc=address(es), keywords=word_list and/or body=message fields in ?searchpart tack-ons to mailto URLs. The to and/or cc values can be single addresses, or comma- or semi-colon-separated lists of addresses. All addresses, and any body values, will be offered for approval by the user before proceeding with a mailing. Any other name=value pairs in the ?searchpart will be ignored. Also, if the mailto URL is the ACTION for a FORM, any body in a ?searchpart tack-on will be ignored, because the body of the mailing must be constructed solely from the the FORM's content. Lynx expects multiple name=value pairs in a ?searchpart tack-on to be separated by ampersands, as in the original Netscape implementation, and in an equally ill-advised IETF draft of that implementation (draft-hoffman-mailto-url-03.txt). These should be represented as entities (&amp;) in the HTML markup. This functionality is generally desired, but the IETF backward compatibility principal normally would lead to a new scheme being used (e.g., mail:, or smtp:), rather than breaking mailto: implementations.

      If ENCTYPE="text/plain" is specified for a FORM with a mailto ACTION, Lynx will not hex escape the name=value pairs of the FORM's content, and will use physical newlines instead of “&” or “;” to separate the pairs, so that the content will be readable directly. Otherwise, Lynx will mail the content with the default:

            ENCTYPE="application/x-www-form-urlencoded" (“&” separates pairs)
      

      or:

            ENCTYPE="application/sgml-form-urlencoded" (“;” separates pairs)
      

      if the latter was indicated.

      Note that when mailing FORM content Lynx wraps any lines longer than 78 characters, to avoid buffer overflows in mail software and to ensure reliable transmission across gateways. If the ENCTYPE was not text/plain, any script which decodes the mailed content should ignore the physical newlines and recognize only hex escaped newline characters as intended to be present in the decoded content.

      If the mailto URL is not the ACTION for a FORM, and if an external editor has been defined via the Options Menu, the user is offered an option to include the currently displayed document. If this option is accepted, each line of that document is prefixed with a right-angle-bracket, and the prefixed inclusion should be trimmed by the user to just those passages relevant to the message which will be sent.


      The finger URL:

      Lynx has full support for the finger protocol, but a format for finger URLs has not yet been adopted by the IETF. The formats supported by Lynx therefore include every possibility not inconsistent with RFC1738, including:

            finger://host                         finger://@host
            finger://host/                        finger://@host/
            finger://host/%2fw                    finger://@host/w
            finger://host/w                       finger://host/w/
            finger://host/username[@host]         finger://username@host
            finger://host/username[@host]/        finger://username@host/
            finger://host/w/username[@host]       finger://username@host/w
            finger://host/%2fw%20username[@host]  finger://host/username[@host]/w
            finger://host/w/username
      

      Activating a finger URL will send a request to the finger server via port 79 on the host specified. You can include :79 in the URL, but no other value is allowed. The /w or /%2fw is used to request a full report for finger servers which support it, and is not case sensitive (i.e., can be /W or /%2fW). Any strings in the report which appear to be a URL with a supported scheme will be converted into a link for accessing that URL.

      An alternative way to access finger servers is via gopher URLs with port 79 and the plain text (0) gophertype specified:
      gopher://host:79/0
      Lynx will handle such URLs equivalently to overt finger URLs, including creation of links for any strings which appear to be supported URLs.


      The cso URL:

      The cso URL is intended to provide a gateway to CSO/PH (QI) servers. The requests are made on port 105 by default (:105), with the following overt cso URL format:

            cso://host
      

      You also can use a gopher URL format with port 105 and the CSO (2) gophertype specified:

            gopher://host:105/2
      

      Lynx will parse the stream returned by the server for the above URLs and create a FORM for submitting additional requests (searches) to the server. Any strings in the reports returned for these requests (searches) which appear to be a URL with a supported scheme will be converted into a link for accessing that URL.


      The bibp URL:

      Lynx provides built-in support for bibliographic protocol (BibP). BibP links are links to published works such as books or journal articles, without a predefined server. BibP links are intended for resolution by a local bibhost server (http://bibhost/) if it exists. Otherwise, resolution is performed by a document-specified server or a known global server.

      The lynxexec and lynxprog URLs:

      If execution of spawned commands has been enabled in your Lynx image, the lynxexec and lynxprog URLs can be used to execute arbitrary system commands or invoke system utilities. Any system command and associated switches or qualifiers can be used, with the syntax appropriate for a shell running Lynx on Unix, or for DCL on VMS, e.g.:

            lynxexec:dir/date/size foo:[blah] (VMS)
            lynxexec:ls -l /foo/blah          (Unix)
            lynxprog:news
      

      (Note, however, that restrictions on acceptable commands or utilities may be imposed by the system administrator.)

      You optionally can include //localhost/ in the URL, between the scheme field and the command, but that is always implied. The lynxexec and lynxprog URLs differ only in that with lynxexec you are prompted to enter RETURN before Lynx clears the screen and restores the previously displayed document, so that you can read any screen output generated by the spawned command, whereas no such pause is imposed upon exit from the utility invoked via lynxprog.

      These are Lynxisms and should be used only in local documents intended solely for Lynx.


      The lynxcgi URL:

      The lynxcgi URL is implemented only on Unix, can be used as the ACTION for a FORM, and if enabled in your Lynx image has the format:

            lynxcgi://localhost/path_to_CGI_script
      

      where //localhost is optional and always implied; the full path should be specified, as “~” is not recognized; if the script is in the directory Lynx was started from, the simple file name is adequate. The output of the script should be text/html and is rendered and displayed by Lynx. Restrictions on use of lynxcgi and on acceptable paths can be imposed in userdefs.h and lynx.cfg, qv.

      This is a Lynxism and should be used only in local documents intended solely for Lynx, or for limited local testing of CGI scripts without an http server.


      The NcFTP URL:

      Lynx recognizes the NcFTP-style ftp URL, e.g.,

              ftpHost:fileSpecification
      

      for example

      
              ftp.gnu.org:/pub/gnu
      
      

      The LYNXfoo internal URLs:

      Lynx uses a variety of private URL schemes for communication among its internal modules. They start with uppercase letters LYNX by convention, although, as input, URL schemes are recognized in a case-insensitive manner.

      As you discover what they are, and are tempted to use them externally in documents, you should resist that temptation:

      • There already is too much browser-specific markup around...
      • The schemes, or their meanings, may change between Lynx versions.
      • Even if a scheme stays the same, some aspect of its behavior may be modified without notice, or the context in which it is allowed may change.
      • If it does not work as expected when used outside of the intended purpose, do not expect anyone to "fix" it.

      For example, tempting though it might be, do not use these:

            Return to your <A HREF="LYNXHIST:0">Startfile</A>
            Review your <A HREF="LYNXKEYMAP:">Keymap</A>
      

      (No, they will not do any harm. Yes, they work. But do not rely on it.)

      If you must try one, the second is OK from the command line:

            lynx LYNXKEYMAP:
      

      But within Lynx, use the “K” keystroke command. Sometimes it may be convenient to use a private scheme with “g”oto, as in:

            g LYNXMESSAGES:
            g LYNXCOMPILEOPTS:
            g LYNXCFG:
      

      But again, there usually is a way in which those special pages are meant to be reached that is more convenient.

      PK0]orrlynx_help/Lynx_users_guide.htmlnu[ Lynx Users Guide v2.8.9

      Lynx Users Guide v2.8.9

      Lynx is a fully-featured World Wide Web (WWW) client for users running cursor-addressable, character-cell display devices (e.g., vt100 terminals, vt100 emulators running on PCs or Macs, or any other character-cell display). It will display Hypertext Markup Language (HTML) documents containing links to files on the local system, as well as files on remote systems running http, gopher, ftp, wais, nntp, finger, or cso/ph/qi servers, and services accessible via logins to telnet, tn3270 or rlogin accounts (see URL Schemes Supported by Lynx). Current versions of Lynx run on Unix, VMS, Windows3.x/9x/NT and later, 386DOS and OS/2 EMX.

      Lynx can be used to access information on the WWW, or to build information systems intended primarily for local access. For example, Lynx has been used to build several Campus Wide Information Systems (CWIS). In addition, Lynx can be used to build systems isolated within a single LAN.

      Table of Contents

      Lynx online help

      Online help is available while viewing any document. Press the “?” or “H” key (or the “h” key if vi-like key movement is not on) to see a list of help topics. See the section titled Navigating hypertext documents with Lynx for information on navigating through the help files.

      In addition, a summary description of all the Lynx keystroke commands and their key bindings is available by pressing the “K” key (or the “k” 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:”.

      [ToC]

      Viewing local files with Lynx

      Lynx can be started by entering the Lynx command along with the name of a file to display. For example these commands could all be used to display an arbitrary ASCII text or HTML file:

      UNIX
      lynx filename
      lynx /home/my-dir/filename
      lynx ~/filename
      VMS
      lynx filename
      lynx dua5:[my-directory]filename
      lynx /dua5/my-directory/filename
      lynx ~/filename
      lynx sys$login:filename
      lynx /sys$login/filename
      Win32/DOS
      lynx file:///filename
      lynx filename
      lynx c:/dir/filename
      lynx //n/dir/filename

      When executed, Lynx will clear the screen and display as much of the specified file as will fit on the screen. Pressing a down-arrow will bring up the next screen, and pressing an up-arrow will bring up the previous screen. If no file is specified at startup, a default file will be displayed, depending on settings e.g., in lynx.cfg.

      Lynx will display local files written in the HyperText Markup Language (HTML), if the file's name ends with the characters .html, .htm, .shtml, .htmlx, .html3, or .ht3. HTML is a file format that allows users to create a file that contains (among other things) hypertext links to other files. Several files linked together may be described as a hypertext document. If the filename does not have one of the suffixes mapped by Lynx to HTML, the -force_html command line option can be included to force treatment of the file as hypertext.

      When Lynx displays an HTML file, it shows links as "bold face" text, except for one link, which is shown as "highlighted" text. Whether "boldface" or "highlighted" text shows up as reverse video, boldface type, or a color change, etc. depends on the display device being used (and the way in which that device has been configured). Lynx has no control over the exact presentation of links.

      The one link displayed as "highlighted" text is the currently "selected" link. Lynx will display the file associated with the selected link when a right-arrow or a Return key is pressed. To select a particular link, press the up-arrow or down-arrow keys until the desired link becomes "highlighted," and then press the right-arrow or Return key to view the linked information. Information included in the HTML file tells Lynx where to find the linked file and what kind of server will provide it (i.e., HTTP, Gopher, etc.).

      Lynx renders HTML files and saves the rendition (and the source, if so configured in the lynx.cfg file) for initial display and should you select the link again. If you do select a link again and have reason to desire a new fetch and rendering of the file, use the NOCACHE command, normally mapped to “x” and “X”, instead of the right-arrow or Return key when positioned on the link. You also can force a new fetch and rendering of the currently displayed document via the RELOAD command, normally mapped to Control-R.

      When a binary file is encountered Lynx will ask the user if he/she wishes to download the file or cancel. If the user selects “D” for download, Lynx will transfer the file into a temporary location and present the user with a list of options. The only default option is Save to disk, which is disabled if Lynx is running in anonymous mode. Additional download methods may be defined in the lynx.cfg file. Programs like kermit, zmodem and FTP are some possible options.

      [ToC]

      Leaving Lynx

      To exit Lynx use the “q” command. You will be asked whether you really want to quit. Answering “y” will exit and “n” will return you to the current document. Use “Q” or Control-D to quit without verification.

      [ToC]

      Starting Lynx with a Remote File

      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 Lynx) without first viewing a local file, you must identify that file by using a Uniform Resource Locator (URL). URLs take the general form:

      PROTOCOL :// HOST / PATH

      where

      PROTOCOL

      identifies the communications protocol (scheme) used by the server that will provide the file. As mentioned earlier, Lynx (and any WWW client) can interact with a variety of servers, each with its own protocol.

      HOST

      is the Internet address of the computer system on which the server is running, and

      PATH

      is a scheme-specific field which for some schemes may correspond to a directory path and/or filename.

      Here are some sample URLs.

      HTTP (HyperText Transfer Protocol)
      https://invisible-island.net/lynx/
      Gopher
      gopher://gopher.micro.umn.edu/11/
      FTP (File Transfer Protocol)
      ftp://ftp2.cc.ukans.edu/pub/lynx/README
      WAIS (Wide Area Information Service protocol)
      wais://cnidr.org/directory-of-servers
      A URL may be specified to Lynx on the command line, as in:
      lynx http://kufacts.cc.ukans.edu/cwis/kufacts_start.html

      Lynx also will attempt to create a complete URL if you include adequate portions of it in the startfile argument. For example:

      1234.6789.1234.6789.1234.6789.1234.6789.1234.6789.1234.6789.1234.6789.1234.6789
                       wfbr          will be expanded to:
            http://www.wfbr.edu/     and:
                   ftp.more.net/pub  will be expanded to:
             ftp://ftp.more.net/pub
      

      See URL Schemes Supported by Lynx for more detailed information.

      [ToC]

      Starting Lynx with the WWW_HOME environment variable.

      You may also specify a starting file for Lynx using the WWW_HOME environment variable,

      UNIX
      ksh
      export WWW_HOME=http://www.w3.org/
      csh
      setenv WWW_HOME http://www.w3.org/
      VMS
      define "WWW_HOME" "http://www.w3.org/"
      win32
      WWW_HOME=http://www.w3.org/ [or in registry]

      Note that on VMS the double-quoting must be included to preserve casing.

      [ToC]

      Navigating hypertext documents with Lynx

      The process of moving within a hypertext web, selecting and displaying links is known as "navigation." With Lynx almost all navigation can be accomplished with the arrow keys and the numeric keypad.

                                             +-------+-------+-------+
                                             | TOP   |  /|\  | Page  |
                    arrow keys               | of    |   |   | UP    |
                                             | text 7|   |  8|      9|
                    +---------+              +-------+-------+-------+
                    | SELECT  |              |       |       |       |
                    | prev /|\|              | <---  |       |  ---> |
                    | link  | |              |      4|      5|      6|
          +---------+---------+---------+    +-------+-------+-------+
          |    BACK | SELECT  | DISPLAY |    | END   |   |   | Page  |
          |<-- prev | next  | | sel. -->|    | of    |   |   | DOWN  |
          |    doc. | link \|/| link    |    | text 1|  \|/ 2|      3|
          +---------+---------+---------+    +-------+-------+-------+
      

      There are also a few other keyboard commands to aid in navigation. The Control and Function keys used for navigation within the current document are described in Scrolling and Other useful commands.

      Some additional commands depend on the fact that Lynx keeps a list of each link you visited to reach the current document, called the History Page, and a list of all links visited during the current Lynx session, called the Visited Links Page.

      • The HISTORY keystroke command, normally mapped to Backspace or Delete, will show you the History Page of links leading to your access of the current document. Any of the previous documents shown in the list may be revisited by selecting them from the history screen.

      • The VLINKS keystroke command, normally mapped to uppercase “V”, will show the Visited Links Page, and you similarly can select links in that list.

      • The MAIN_MENU keystroke command, normally mapped to “m” and “M”, will take you back to the starting document unless you specified the -homepage=URL option at the command line.

      • Also, the LIST and ADDRLIST keystroke commands, normally mapped to “l” and “A” respectively, will create a compact lists of all the links in the current document, and they can be selected via those lists.

      The “i” key presents an index of documents. The default index offered contains many useful links, but can be changed in lynx.cfg or on the command line using the -index=URL switch.

      If you choose a link to a server with active access authorization, Lynx will automatically prompt for a username and a password. If you give the correct information, you will then be served the requested information. Lynx will automatically send your username and password to the same server if it is needed again.

      [ToC]

      Printing, Mailing, and Saving rendered files to disk.

      Rendered HTML documents, and plain text files, may be printed using the “p” command while viewing the document. After pressing the “p” key a menu of Print Options will be displayed. The menu will vary according to several factors. First, some sites set up special accounts to let users run Lynx to access local information systems. Typically these accounts require no passwords and do not require users to identify themselves. As a result such accounts are called "anonymous" accounts, and their users are considered "anonymous" users. In most configurations, all Lynx users (including anonymous users) are able to mail files to themselves and print the entire file to the screen.

      Additional print options are available for users who are using Lynx from their own accounts (that is, so-called "non-anonymous users"). In particular, the Save to a local file option allows you to save the document into a file on your disk space. Additional print options may also be available as configured in the lynx.cfg file.

      Some options, such as Save to a local file, involve prompting for an output filename. All output filename entries are saved in a circular buffer, and any previous entries can be retrieved for re-use by pressing the up-arrow or down-arrow keys at the prompt.

      Note that if you want exact copies of text files without any expansions of TAB characters to spaces you should use the Download options.

      [ToC]

      Viewing the HTML document source and editing documents

      When viewing HTML documents it is possible to retrieve and display the unrendered (i.e., the original HTML) source of the document by pressing the “\” (backslash) key. Lynx usually caches only the rendering of the document and does not keep the source (unless it is configured to do so in the lynx.cfg file), so to display the source unrendered, Lynx must reload it from the server or disk. When viewing unrendered documents you may print them as any normal document.

      Selecting the Print to a local file option from the Print Menu, makes it possible to save the source of the document to disk so that you may have a local copy of the document source, but it is better to Download the source.

      NOTE: When saving an HTML document it is important to name the document with a .html or .htm extension, if you want to read it with Lynx again later.

      Lynx can allow users to edit documents that reside on the local system. To enable editing, documents must be referenced using a "file:" URL or by specifying a plain filename on the command line as in the following two examples:

      Command
      lynx file://localhost/FULL/PATH/FILENAME
      lynx path/filename.html

      In addition, the user must also specify an editor in the Options Menu so that Lynx knows which editor to use. If the file is specified correctly and an editor is defined, then you may edit documents by using the “e” command. When the “e” command is entered your specified editor is spawned to edit the file. After changes are completed, exit your editor and you will return to Lynx. Lynx will reload and render the file so that changes can be immediately examined.

      [ToC]

      Downloading and Saving source files.

      If the DOWNLOAD keystroke command (“d” or “D”) is used when positioned on a link for an HTML, plain text, or binary file, Lynx will transfer the file, without rendering, into a temporary location and present the user with a list of options, just as it does when a link for a binary file of a type for which no viewer has been mapped is activated.

      There is a default Download option of Save to disk. This is disabled if Lynx is running in anonymous mode. Any number of download methods such as kermit and zmodem may be defined in addition to this default in the lynx.cfg file. Using the Save to disk option under the PRINT command after viewing the source of an HTML with the VIEW SOURCE (\) command will result in a file which differs from the original source in various ways such as tab characters expanded to spaces. Lynx formats the source presentation in this mode. On the other hand, if the DOWNLOAD command is used, the only change will be that Lynx optionally puts

      <!--X-URL: http://www.site.foo/path/to/file.html -->
      <BASE href="http://www.site.foo/path/to/file.html">

      at the start of the file so that relative URLs in the document will still work. Even this modification can be prevented by setting PREPEND_BASE_TO_SOURCE:FALSE in lynx.cfg.

      Some options, such as Save to disk, involve prompting for an output filename. All output filename entries are saved in a circular buffer, and any previous entries can be retrieved for re-use by pressing the up-arrow or down-arrow keys at the prompt.

      [ToC]

      Reloading files and refreshing the display

      The RELOAD (Control-R) command will reload and re-render the file that you are currently viewing. The REFRESH (Control-L or Control-W) command will refresh or wipe the screen to remove or correct any errors that may be caused by operating system or other messages.

      The NOCACHE (“x” or “X”) command can be used in lieu of ACTIVATE (Return or right-arrow) to request an uncached copy and new rendition for the current link, or resubmission of a FORM, if a cache from a previous request or submission exits. The request or submission will include Pragma: no-cache and Cache-Control: no-cache in its headers. Note that FORMs with POST content will be resubmitted regardless of whether the NOCACHE or ACTIVATE command is used (see Lynx and HTML Forms).

      [ToC]

      Two commands activate searching in Lynx: “/” and “s”.

      While viewing a normal document use the “/” command to find a word or phrase within the current document. The search type will depend on the search option setting in the Options Menu. The search options are case sensitive and case insensitive. These searches are entirely local to Lynx.

      Some documents are designated index documents by virtue of an ISINDEX element in their HEAD section. These documents can be used to retrieve additional information based on searches using words or phrases submitted to an index server. The Lynx statusline will indicate that you are viewing such a document, and if so, the “s” key will invoke a statusline prompt to enter a query string. The prompt can be specified via a PROMPT attribute in the ISINDEX element. Otherwise, Lynx will use an internally configured prompt. The address for submitting the search can be specified via an HREF or ACTION attribute. Otherwise, Lynx will use the current document's URL and append your query string as a ?searchpart (see Supported URLs).

      All search words or strings which you have entered during a Lynx session are saved in a circular buffer, and can be retrieved for re-use by pressing the up-arrow or down-arrow keys at the prompt for a search word or string. Also, you can use the “n”ext command to repeat a search with the last-entered search word or phrase, starting from the current position in the document. The word or phrase matches will be highlighted throughout the document, but such highlighting will not persist for new documents, or if the current document is reloaded. The search cycles to the top of the document if the word or phrase is not located below your current position.

      Although HTML Forms have largely replaced index documents for searches via http servers, they are still useful for performing searches directly via WAIS or Gopher servers in conjunction with the internal gateways for such servers. For example, an HTML index document can act as a cover page describing a WAIS database and how to formulate query strings for searching it, and include an element such as:

            <ISINDEX PROMPT="Enter WAIS query:"
                     HREF="wais://net.bio.net/biologists-addresses">
      

      for submitting a search of the Biologist's Addresses database directly to the net.bio.net WAIS server.

      [ToC]

      Lynx Options Menu

      The Lynx Options Menu may be accessed by pressing the “o” key. It allows you to change options at runtime, if you need to. Most changes are read from & saved to your .lynxrc file; those which are not are marked (!) in the form-based menu (as below). Many other options are stored in the lynx.cfg file.

      Lynx supports two styles of Options Menu, key-based & form-based. The form-based menu shown below is an HTML file generated at runtime, in which the user fills in choices as in any ordinary HTML form.

                          Options Menu (Lynx Version 2.8.9dev.15)
      
          Accept Changes - Reset Changes - Left Arrow cancels changes - HELP!
      
                               Save options to disk: [ ]
                      (options marked with (!) will not be saved)
      
        General Preferences
        User mode                        : [Advanced____]
        Editor                           : vile______________________________________
        Type of Search                   : [Case insensitive]
      
        Security and Privacy
        Cookies                          : [ask user__]
        Invalid-Cookie Prompting (!)     : [prompt normally___]
        SSL Prompting (!)                : [prompt normally___]
      
        Keyboard Input
        Keypad mode                      : [Numbers act as arrows_____________]
        Emacs keys                       : [OFF]
        VI keys                          : [OFF]
        Line edit style                  : [Bash-like Bindings]
      
        Display and Character Set
        Use locale-based character set   : [ON_]
        Use HTML5 charset replacements(!): [OFF]
        Display character set            : [UNICODE (UTF-8)________________]
        Assumed document character set(!): [iso-8859-1______]
        Raw 8-bit                        : [OFF]
        X Display                        : localhost:0.0_____________________________
      
        Document Appearance
        Show color                       : [ON____]
        Color style (!)                  : [lynx.lss___________]
        Default colors (!)               : [ON_]
        Show cursor                      : [OFF]
        Underline links (!)              : [OFF]
        Show scrollbar                   : [ON_]
        Popups for select fields         : [ON_]
        HTML error recovery              : [strict (SortaSGML mode)]
        Bad HTML messages (!)            : [Warn, point to trace-file]
        Show images                      : [ignore___]
        Verbose images                   : [OFF__________]
        Collapse BR tags (!)             : [OFF_____]
        Trim blank lines (!)             : [trim-lines]
      
        Headers Transferred to Remote Servers
        Personal mail address            : __________________________________________
        Personal name for mail           : __________________________________________
        Password for anonymous ftp       : __________________________________________
        Preferred media type (!)         : [Accept lynx's internal types]
        Preferred encoding (!)           : [All_____]
        Preferred document character set : _________________________________
        Preferred document language      : en_______________________________
        HTTP protocol (!)                : [HTTP 1.0]
        Send User-Agent header (!)       : [X]
        User-Agent header (!)            : Lynx/2.8.9rel.1 libwww-FM/2.14 SSL-MM/1.4.
      
        Listing and Accessing Files
        Use Passive FTP (!)              : [ON_]
        FTP sort criteria                : [By Date]
        Local directory sort criteria    : [Directories first]
        Local directory sort order       : [By Date_]
        Show dot files                   : [OFF]
        Pause when showing message (!)   : [ON_]
        Show transfer rate               : [Show KiB/sec (2-digits), ETA__]
      
        Special Files and Screens
        Multi-bookmarks                  : [ADVANCED]
        Review/edit Bookmarks files      : Goto multi-bookmark menu
        Auto Session (!)                 : [OFF]
        Session file (!)                 : __________________________________________
        Visited Pages                    : [By Last Visit Reversed_]
      
        View the file lynx.cfg.
      
      
              Accept Changes - Reset Changes - Left Arrow cancels changes
      
      

      The key-based menu depends on key-strokes to identify options which the user wants to change. It is compiled into Lynx and is accessed by setting FORMS_OPTIONS to TRUE in lynx.cfg.

                   Options Menu (Lynx Version 2.8.9dev.15)
      
           (E)ditor                     : emacs
           (D)ISPLAY variable           : aixtest.cc.ukans.edu:0.0
           mu(L)ti-bookmarks: OFF       B)ookmark file: lynx_bookmarks.html
           (F)TP sort criteria          : By Filename
           (P)ersonal mail address      : montulli@netscape.com
           (S)earching type             : CASE INSENSITIVE
           preferred document lan(G)uage: en
           preferred document c(H)arset : NONE
           display (C)haracter set      : Western (ISO-8859-1)
           raw 8-bit or CJK m(O)de      : ON      show color (&)  : OFF
           (V)I keys: OFF   e(M)acs keys: OFF     sho(W) dot files: OFF
           popups for selec(T) fields   : ON      show cursor (@) : OFF
           (K)eypad mode                : Numbers act as arrows
           li(N)e edit style            : Default Binding
           l(I)st directory style       : Mixed style
           (U)ser mode                  : Advanced      verbose images (!) : ON
           user (A)gent                 : [User-Agent header]
           local e(X)ecution links      : FOR LOCAL FILES ONLY
      

      An option can be changed by entering the capital letter or character in parentheses for the option you wish to change (e.g., “E” for Editor or “@” for show cursor). For fields where text must be entered, simply enter the text by typing on the keyboard. The Line Editor can be used to correct mistakes, and Control-U can be used to erase the line. When you are done entering a change press the Return key to get back to the Command? prompt.

      For fields where you must choose one of two choices, press any key to toggle the choices and press the Return key to finish the change.

      For fields where you potentially have more than two choices, popup windows may be evoked which function homologously to those for select fields in HTML Forms. The popup windows will be invoked only if you have popups for select fields set to ON (see below). Otherwise, your cursor will be positioned at the current choice, and you can press any key to cycle through the choices, then press the Return key to finish the change.

      When you are done changing options use the “r” command to return to Lynx or the “>” command to save the options to a .lynxrc file and return to Lynx.

      The following table describes the options available on the Options Menu:

      Assumed document character set

      This option changes the handling of documents which do not explicitly specify a charset. Normally Lynx assumes that 8-bit characters in those documents are encoded according to iso-8859-1 (the official default for the HTTP protocol). Unfortunately, many non-English web pages "forget" to include proper charset info; this option helps you to browse those broken pages if you know by some means what the charset is.

      When the value given here or by an -assume_charset command line flag is in effect, Lynx will treat documents as if they were encoded accordingly. This option active when “Raw 8-bit or CJK Mode” is OFF.

      Auto Session

      Lynx can save and restore useful information about your browsing history. Use this setting to enable or disable the feature.

      Bad HTML messages

      Suppress or redirect Lynx's messages about "Bad HTML":

      Ignore

      do not warn; no details are written to the trace-file.

      Add to trace-file

      add the detailed warning message to the trace-file.

      Add to LYNXMESSAGES

      add the detailed warning message to the message page at "LYNXMESSAGES:".

      Warn, point to trace-file

      show a warning message on the status line; the complete message is written to the trace-file.

      Bookmark file

      When multi-bookmarks is OFF, this is the filename and location of your default personal bookmark file. Enter “B” to modify the filename and/or location via the Line Editor. Bookmark files allow frequently traveled links to be stored in personal easy to access files.

      Using the “a”dd bookmark link command (see Lynx bookmarks) you may save any link that does not have associated POST content into a bookmark file. All bookmark files must be in or under your account's home directory. If the location specified does not begin with a dot-slash (./), its presence will still be assumed, and referenced to the home directory.

      When multi-bookmarks is STANDARD or ADVANCED, entering “B” will invoke a menu of up to 26 bookmark files (associated with the letters of the English alphabet), for editing their filenames and locations (filepath), and descriptions.

      Lynx will create bookmark files, if they do not already exist, when you first “a”dd a bookmark link to them. However, if you've specified a subdirectory (e.g., ./BM/lynx_bookmarks.html), that subdirectory must already exist. Note that on VMS you should use the URL syntax for the filepath (e.g., not [.BM]lynx_bookmarks.html).

      Collapse BR tags

      If Collapse BR tags is turned off, Lynx will not collapse serial BR tags. If turned on, i.e., “collapse”, two or more concurrent BRs will be collapsed into a single line break. Note that the valid way to insert extra blank lines in HTML is via a PRE block with only newlines in the block.

      Cookies

      This option allows you to tell how to handle cookies: ignore, prompt (ask user) or accept all.

      Display Character set

      This option allows you to set up the default character set for your specific terminal. The display character set provides a mapping from the character encodings of viewed documents and from HTML entities into viewable characters. It should be set according to your terminal's character set so that characters other than 7-bit ASCII can be displayed correctly, using approximations if necessary. You must have the selected character set installed on your terminal. (Since Lynx supports a wide range of platforms it may be useful to note that cpXXX codepages used within IBM PC computers, and windows-xxxx within native MS-Windows apps.)

      Editor

      The editor to be invoked when editing browsable files, when sending mail or comments, when preparing a news article for posting, and for external TEXTAREA editing. The full pathname of the editor command should be specified when possible.

      Emacs keys

      If set to ON then the CTRL-P, CTRL-N, CTRL-F, and CTRL-B keys will be mapped to up-arrow, down-arrow, right-arrow, and left-arrow, respectively. Otherwise, they remain mapped to their configured bindings (normally UP_TWO lines, DOWN_TWO lines, NEXT_PAGE, and PREV_PAGE, respectively).

      Note: this has no direct effect on the line-editor's key bindings.

      Execution links

      This deals with execution of local scripts or links. Local execution is activated when Lynx is first set up. If it has not been activated you will not see this option in the Options Menu.

      When a local execution script is encountered Lynx checks the users options to see whether the script can be executed. Users have the following options:

      Always off

      Local execution scripts will never be executed

      For Local files only

      Local execution scripts will only be executed if the script to be executed resides on the local machine, and is referenced by a URL that begins with file://localhost

      Always on

      All local execution scripts will be executed

      If the users options permit the script to be executed Lynx will spawn a shell and run the script. If the script cannot be executed Lynx will show the script within the Lynx window and inform the user that the script is not allowed to be executed and will ask the user to check his/her options.

      FTP sort criteria

      This option allows you to specify how files will be sorted within FTP listings. The current options include "By Filename", "By Size", "By Type", and "By Date".

      HTML error recovery

      Select the recovery mode used by Lynx.

      HTTP protocol

      Normally Lynx negotiates HTTP/1.0, because it does not support chunked transfer (a requirement for all HTTP/1.1 clients), although it supports several other features of HTTP/1.1. You may encounter a server which does not support HTTP/1.0 which can be used by switching to the later protocol.

      Invalid-Cookie Prompting

      This allows you to tell how to handle invalid cookies: prompt normally to prompt for each cookie, force yes-response to reply "yes" to each prompt, force no-response to reply "no" to each prompt.

      Keypad mode

      This option gives the choice among navigating with the arrow keys, or having every link numbered so that the links may be selected or made current by numbers as well as using the arrow keys, or having every link as well as every form field numbered so that they can be selected or sought by numbers. See the
        Follow link (or page) number: and
        Select option (or page) number:
      help for more information.

      Line edit style

      This option allows you to set alternative key bindings for the built-in line editor, if alternative line-edit bindings have been compiled in. Otherwise, Lynx uses the Default Binding.

      Local directory sort criteria

      This applies to directory editing. Files and directories can be presented in the following ways:

      Mixed style

      Files and directories are listed together in alphabetical order.

      Directories first

      Files and directories are separated into two alphabetical lists. Directories are listed first.

      Files first

      Files and directories are separated into two alphabetical lists. Files are listed first.

      Local directory sort order

      The Options Form also allows you to sort by the file attributes.

      By name

      by filename (the default)

      By size

      by file size, in descending order

      By date

      by file modification time, in descending order

      By mode

      by file protection

      By type

      by filename suffix, e.g., the text beginning with “.”

      By user

      by file owner's user-id

      By group

      by file owner's group-id

      Multi-bookmarks

      Lynx supports a default bookmark file, and up to 26 total bookmark files (see below). When multi-bookmarks is OFF, the default bookmark file is used for the “v”iew bookmarks and “a”dd bookmark link commands. If multi-bookmark support is available in your account, the setting can be changed to STANDARD or ADVANCED. In STANDARD mode, a menu of available bookmarks always is invoked when you seek to view a bookmark file or add a link, and you select the bookmark file by its letter token (see Bookmark file, below) in that menu. In ADVANCED mode, you instead are prompted for the letter of the desired bookmark file, but can enter “=” to invoke the STANDARD selection menu, or RETURN for the default bookmark file.

      Password for anonymous ftp

      If this is blank, Lynx will use your personal mail address as the anonymous ftp password. Though that is the convention, some users prefer to use some other string which provides less information. If the given value lacks a "@", Lynx also will use your computer's hostname as part of the password. If both this field and the personal mail address are blank, Lynx will use your $USER environment variable, or "WWWuser" if even the environment variable is unset.

      Pause when showing message

      If set to "off", this overrides the INFOSECS setting in lynx.cfg, to eliminate pauses when displaying informational messages, like the "-nopause" command line option.

      Personal mail address

      This mail address will be used to help you send files to yourself and will be included as the From: address in any mail or comments that you send. It will also be sent as the From: field in HTTP or HTTPS requests if inclusion of that header has been enabled via the NO_FROM_HEADER definition in lynx.cfg (the compilation default is not to send the header), or via the -from command line toggle.

      Personal mail name

      This mail name will be included as the "X-Personal_Name" field in any mail or comments that you send if that header has not been disabled via the NO_ANONYMOUS_EMAIL definition in lynx.cfg.

      Popups for select fields

      Lynx normally uses a popup window for the OPTIONs in form SELECT fields when the field does not have the MULTIPLE attribute specified, and thus only one OPTION can be selected. The use of popup windows can be disabled by changing this setting to OFF, in which case the OPTIONs will be rendered as a list of radio buttons. Note that if the SELECT field does have the MULTIPLE attribute specified, the OPTIONs always are rendered as a list of checkboxes.

      Preferred document language

      The language you prefer if multi-language files are available from servers. Use RFC 1766 abbreviations, e.g., en for English, fr for French, etc. Can be a comma-separated list, which may be interpreted by servers as descending order of preferences. You can also make your order of preference explicit by using q factors as defined by the HTTP protocol, for servers which understand it, for example: da, en-gb;q=0.8, en;q=0.7

      Preferred document charset

      The character set you prefer if sets in addition to ISO-8859-1 and US-ASCII are available from servers. Use MIME notation (e.g., ISO-8859-2) and do not include ISO-8859-1 or US-ASCII, since those values are always assumed by default. Can be a comma-separated list, which may be interpreted by servers as descending order of preferences. You can also make your order of preference explicit by using q factors as defined by the HTTP protocol, for servers which understand it, for example: iso-8859-5, utf-8;q=0.8

      Preferred encoding

      When doing a GET, lynx tells what types of compressed data it can decompress (the "Accept-Encoding:" string). This is determined by compiled-in support for decompression or external decompression programs. Use this option to select none, one or all of the supported decompression types.

      Preferred media type

      When doing a GET, lynx lists the MIME types which it knows how to present (the "Accept:" string). Depending on your system configuration, the mime.types or other data given by the GLOBAL_EXTENSION_MAP may include many entries that lynx really does not handle. Use this option to select one of the built-in subsets of the MIME types that lynx could list in the Accept.

      Accept lynx's internal types

      list only the types that are compiled into lynx.

      Also accept lynx.cfg's types

      lists types defined in lynx.cfg, e.g., the VIEWER and Cern RULE or RULESFILE settings.

      Also accept user's types

      lists types from the PERSONAL_EXTENSION_MAP setting in lynx.cfg

      Also accept system's types

      lists types from the GLOBAL_EXTENSION_MAP setting in lynx.cfg

      Accept all types

      adds the types that are in lynx's built-in tables for external programs that may be used to present a document.

      Raw 8-bit or CJK Mode

      Tells Lynx whether 8-bit characters are assumed to correspond with the display character set and therefore are processed without translation via the chartrans conversion tables:

      • Should be ON by default when the display character set is one of the Asian (CJK) sets and the 8-bit characters are Kanji multibytes.
      • Should be OFF for the other display character sets, but can be turned ON when the document's charset is unknown (e.g., is not ISO-8859-1 and no charset parameter was specified in a reply header from an HTTP server to indicate what it is) but you know by some means that you have the matching display character set selected.
      • Should be OFF when an Asian (CJK) set is selected but the document is ISO-8859-1 or another “assumed document character set”.

      The setting also can be toggled via the RAW_TOGGLE command, normally mapped to “@”, and at startup via the -raw switch.

      Send User-Agent header

      Controls whether the user-agent string will be sent.

      Session file

      Define the file name where lynx will store user sessions. This setting is used only when Auto Session is enabled.

      Show color

      This option will be present if color support is available. If set to ON or ALWAYS, color mode will be forced on if possible. If (n)curses color support is available but cannot be used for the current terminal type, selecting ON is rejected with a message. If set to OFF or NEVER, color mode will be turned off.

      ALWAYS and NEVER are not offered in anonymous accounts. If saved to a .lynxrc file in non-anonymous accounts, ALWAYS will cause Lynx to set color mode on at startup if supported. If Lynx is built with the slang library, this is equivalent to having included the -color command line switch or having the COLORTERM environment variable set. If color support is provided by curses or ncurses, this is equivalent to the default behavior of using color when the terminal type supports it. If (n)curses color support is available but cannot be used for the current terminal type, the preference can still be saved but will have no effect.

      A saved value of NEVER will cause Lynx to assume a monochrome terminal at startup. It is similar to the -nocolor switch, but (when the slang library is used) can be overridden with the -color switch.

      If the setting is OFF or ON when the current options are saved to a .lynxrc file, the default startup behavior is retained, such that color mode will be turned on at startup only if the terminal info indicates that you have a color-capable terminal, or (when the slang library is used) if forced on via the -color switch or COLORTERM variable. This default behavior always is used in anonymous accounts, or if the option_save restriction is set explicitly. If for any reason the startup color mode is incorrect for your terminal, set it appropriately on or off via this option.

      Show cursor

      Lynx normally hides the cursor by positioning it to the right and if possible the very bottom of the screen, so that the current link or OPTION is indicated solely by its highlighting or color. If show cursor is set to ON, the cursor will be positioned at the left of the current link or OPTION. This is helpful when Lynx is being used with a speech or braille interface. It also is useful for sighted users when the terminal cannot distinguish the character attributes used to distinguish the current link or OPTION from the others in the screen display.

      Show dot files

      If display/creation of hidden (dot) files/directories is enabled, you can turn the feature on or off via this setting.

      Show images

      This allows you to select the way in which Lynx shows image links. These are the available selections:

      • ignore to suppress the links altogether,
      • as labels to show the descriptive text for the link
      • as links, which allows you to use an external viewer

      Show scrollbar

      This allows you to enable (show) or disable (hide) the scrollbar on the right-margin of the display. This feature is available with ncurses or slang libraries.

      Show transfer rate

      This allows you to select the way in which Lynx shows its progress in downloading large pages. It displays its progress in the status line. These are the available selections:

      • Do not show rate
      • Local directory sort order
      • Show dot files
      • Execution links
      • Pause when showing message
      • Show transfer rate

      SSL Prompting

      This allows you to tell how to handle errors detected in SSL connections prompt normally to prompt for each cookie, force yes-response to reply "yes" to each prompt, force no-response to reply "no" to each prompt.

      Trim blank lines

      If Trim blank lines is turned off, Lynx will not trim trailing blank lines from the document. Also, Lynx will not collapse BR-tags onto the previous line when it happens to be empty as part of the Collapse BR tags feature.

      Type of Search

      Searching type has two possible values: CASE INSENSITIVE (default) and CASE SENSITIVE. The searching type effects inter-document searches only, and determines whether searches for words within documents will be done in a case-sensitive or case-insensitive manner.

      Use HTML5 charset replacements

      This option allows lynx to treat pages with ISO-8859-1 (Latin1) or ASCII encoding as if they were Windows 1252. That allows a few punctuation characters to be shown.

      Use locale-based character set

      This option allows you to request lynx to obtain a MIME name from the operating system which corresponds to your locale setting. If successful, it overrides the normal setting of the display character set.

      Underline links

      Use underline-attribute rather than bold for links.

      Use Passive FTP

      This allows you to change whether Lynx uses passive ftp connections.

      User Agent header

      The header string which Lynx sends to HTTP servers to indicate the User-Agent is displayed here. Changes may be disallowed via the -restrictions switch. Otherwise, the header can be changed temporarily to a string such as L_y_n_x/2.8.9 for access to sites which discriminate against Lynx based on checks for the presence of "Lynx" in the header. If the User-Agent header has been changed, it can be restored to the built-in default value by deleting the modified string in the Options Menu. Whenever the User-Agent header is changed, the current document is reloaded, with the no-cache flags set, on exit from the Options Menu. Changes of the header are not saved in the RC file.

      NOTE: Some sites may regard misrepresenting the browser as fraudulent deception, or as gaining unauthorized access, if it is used to circumvent blocking that was intentionally put in place. Some browser manufacturers may find the transmission of their product's name objectionable. If you change the User-Agent string, it is your responsibility. The Options Menu issues a reminder whenever the header is changed to one which does not include "Lynx" or "L_y_n_x".

      User Mode

      There are three possible choices: Novice, Intermediate, and Advanced.

      Novice

      In Novice mode two lines of help are displayed at the bottom of the screen.

      Intermediate

      Intermediate mode turns off the help lines.

      Advanced

      Advanced mode displays the URL of the currently selected link at the bottom of the screen.

      Verbose Images

      Controls whether or not Lynx replaces the [LINK], [INLINE] and [IMAGE] comments (for images without ALT) with filenames of these images. This is extremely useful because now we can determine immediately what images are just decorations (button.gif, line.gif) and what images are important. This setting can also be toggled on startup via the -verbose switch.

      VI keys

      If set to ON then the lowercase h, j, k, and l keys will be mapped to left, down, up, and right arrow, respectively. The uppercase H, J, K, and L keys remain mapped to their configured bindings (normally HELP, JUMP, KEYMAP, and LIST, respectively).

      Note: this has no effect on the line-editor's key bindings.

      Visited Pages

      Enable several different views of the visited links:

      By First Visit
      By First Visit Reversed
      As Visit Tree
      By Last Visit
      By Last Visit Reversed

      X Display

      This option is only relevant to X Window users. The DISPLAY (Unix) or DECW$DISPLAY (VMS) variable is picked up automatically from the environment if it has been previously set.

      [ToC]

      Comments and mailto: links

      At any time while viewing documents within Lynx, you may use the “c” command to send a mail message to the owner of the current document if the author of the document has specified ownership. (Note to authors: if you want to assign the ownership to your document, you need to add into HEAD section a LINK element with appropriate value for REV attribute. Two values are recognized: owner and made (these are case insensitive). For example,

      <HEAD>
          …
          <LINK REV="made" HREF="mailto:user@somedomain.com">
          …
      </HEAD>
      

      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 mailto: links will also allow you to send mail to other people. Using the mail features within Lynx is straightforward.

      Once you have decided to send a comment or have selected a mailto: link a new screen will appear showing you to whom you are sending the message. Lynx will ask for your name, your e-mail address, and the subject of the message. If you have filled in the "personal mail address" field in the Options Menu, your e-mail address will be filled in automatically. After entering the above information, if you have an editor defined in the Options Menu and you are not an anonymous user then your specified editor will be spawned for you so that you can enter your message. If you do not have an editor defined or you are an anonymous user, a simple line mode input scheme will allow you to enter your message.

      To finish sending the message, exit your spawned editor or, if you are using the simple line mode input scheme, type a “.” (period) on a line by itself. You will be asked a final time whether to send the message. If you press “y”, you will be prompted whether to append your signature file if one was defined in lynx.cfg and is accessible, and then the message will be sent, whereas if you press “n” the message will be deleted. Entering Control-G in response to any prompts also will cancel the mailing.

      [ToC]

      USENET News posting

      While reading news articles with Lynx you should see a link that says Reply to: user@host and, if the nntp server from which you received the article supports posting from your site, a link that says Followup to: newsgroup(s)

      Reply to user@host

      user@host will correspond to the mail address of the person who posted the news article. Selecting the link will allow you to send a message to the person who wrote the message you are currently viewing. You will be given the option of including the original message in your reply.

      Followup to newsgroup(s)

      Selecting this link will allow you to post back to the newsgroup that you are currently reading and any newsgroups to which the message was cross-posted. You will be given the option of including the original message in your reply. Once you have typed in your message, you will be asked for confirmation of whether to proceed with the posting, and whether to append your signature file if one was defined in lynx.cfg and is accessible. See Supported URLs for more information about the URL schemes for posting or sending followups (replies) to nntp servers with Lynx. [ToC]

      See also RFC 977.

      Lynx bookmarks

      Bookmarks are entries in your bookmark file, which record the URL of a document you may want to return to easily, with a name of your choice to identify the document. To use bookmarks you must first have specified a name for your bookmark file in lynx.cfg or via the Options Menu.

      To save a bookmark to the document you wish to place in the bookmark file press the “a” key and you will be asked:

      Save D)ocument or L)ink to bookmark file or C)ancel? (d,l,c):

      Answer “d” to save a link to the document you are currently viewing or “l” to save the link that is currently selected on the page. Selecting “c” will cancel without saving anything to your bookmark file.

      A bookmark file will be created in conjunction with acting on the “a”dd command if it does not already exist. Otherwise, the link will be added to the bottom of the pre-existing bookmark file. You must have created a bookmark file via the “a”dd command before you can view it.

      Use the “v” command to view the list of bookmarks you have saved. While viewing the bookmark list you may select a bookmark as you would any other link.

      You can remove a link from the bookmark list by pressing the “r” key when positioned on that link. You also can use a standard text editor (e.g., via the “e”dit command while viewing a bookmark file, if an external editor has been defined via the Options menu) to delete or re-order links in the bookmark file, or to modify a link name by editing the content of the Anchor element for the link, but you should not change the format within the line for the link, consisting of an LI element followed by the Anchor element, nor cause the line to become wrapped to a second line. You similarly can change the link destination by editing the double-quoted value for the HREF attribute in the Anchor start tag, but you should not otherwise change the spacing within the start tag, nor add other attributes. You can add a new link while editing by copying an existing line for a link, to ensure the proper format, and then modifying its HREF value and Anchor content, but you should not add any other HTML markup to the bookmark file. If the format and spacing (other than the Anchor content or HREF value) within lines is changed or other HTML markup is added, the “a”dd and “r”emove commands may not work properly.

      When multi-bookmarks (see Options Menu) is OFF, you will always view or add links to the default bookmark file. When it is STANDARD, a menu of up to 26 bookmark files will be invoked, and you select the bookmark file by entering its letter token. When it is ADVANCED, you will be prompted for the letter token, but can enter “=” to invoke the STANDARD selection menu, or RETURN for the default bookmark file. [ToC]

      Jump Command

      Similar to the bookmarks file is the jumps file: for an example, look in the samples subdirectory in the distribution package. To use the jumps command, create a jumps file with the same format as the sample file, but containing your own URLs & short-cut names. Once you have done that, typing “j” prompts you to enter a short-cut name, which will take you straight to the URL associated with the short-cut in the jumps file, much like using “g”. If you want to check which short-cuts are available, type “?” at the jump prompt for the full list.

      You can set up a jumps file which makes Lynx prompt for parameters, e.g., as part of a search. Do this by putting a "%s" marker in the URL at each point where you want Lynx to fill in text. When you activate the corresponding jump, Lynx will prompt you for the parameters, one by one.

      All jump short-cuts you have entered are saved in a circular buffer in the same way as with “g” and “/>” (search):

      previous entries can be retrieved with up-arrow or down-arrow.

      The jumps feature is especially useful for system administrators who have unsophisticated users to care for, but ordinary Lynx users who have a number of URLs they regularly visit while browsing may find using the jumps command speeds their movements.

      For more advice how to set up the jumps command on your system and how to define short-cut names, read lynx.cfg .

      [ToC]

      Directory Editing

      Lynx offers extended DIRED support on Unix (on VMS the more powerful CSwing program is recommended for character cell terminals, and can be offered via Lynx as a jump shortcut or execution link). When a local directory is accessed using a URL of the form file://localhost/path/, a new set of commands is available. With DIRED support you can create, edit, delete, copy, and move files on your local system. The commands available in DIRED mode are

      C)reate

      Type “c” to create a new file. New file will be empty.

      D)ownload

      Type “d” to download using one of the pre-defined options.

      E)dit

      Type “e” to spawn the editor defined in Options Menu and load a selected file for editing.

      F)ull Menu

      Type “f” to show full menu of options available for selection. Menu may vary according to type of file selected and compression facilities available.

      M)odify

      Type “m” to modify the name or location of file. Then type “n” to rename the file or “l” to move the file to a different location.

      R)emove

      Type “r” to remove the selected file or directory.

      T)ag

      Type “t” to tag highlighted file. Further operations will be performed on tagged files instead of highlighted ones.

      U)pload

      Type “u” to upload a file to the present directory. An uploading method must have been pre-defined in lynx.cfg .

      [ToC]

      Using Color & the Mouse

      A limited range of colors & mouse commands are available, if the user chooses: see lynx.cfg for details. [ToC]

      Scrolling and Other useful commands

      A summary of all the keystroke commands and their key bindings can be invoked via the KEYMAP command, normally mapped to “k” and “K”. The following describes some of the most commonly used commands.

      ^A

      Control-A jumps you to the beginning of the current document. It is a synonym for the Keypad Home key, and can be used also when Links are numbered mode is on. The Find Function key also is a synonym, and ideally the latter has been mapped to the Function key labeled Home if you are using an IBM Enhanced Keyboard.

      ^E

      Control-E jumps you to the end of the current document. It is a synonym for the Keypad End key, and can be used also when Links are numbered mode is on. The Select Function key also is a synonym, and ideally the latter has been mapped to the Function key labeled End if you are using an IBM Enhanced Keyboard.

      ^B

      Control-B normally jumps you to the previous page of the current document, and thus is a synonym for the Keypad and Function Page-Up keys. However, Control-B acts as right-arrow when emacs-like key movement is enabled (see Lynx Options Menu).

      ^F

      Control-F normally jumps you to the next page of the current document, and thus is a synonym for the Keypad and Function Page-Down keys. However, Control-F becomes right-arrow when emacs-like key movement is enabled.

      ^N

      Control-N normally jumps you forward two lines in the current document. The VT220 Remove Function key (labeled Delete on IBM Enhanced keyboards, and distinct from their Backspace key) is a synonym. Control-N becomes down-arrow when emacs-like key movement is enabled.

      ^P

      Control-P normally jumps you back two lines in the current document. The Insert Function key is a synonym. Control-P becomes up-arrow when emacs-like key movement is enabled.

      ^K

      Control-K invokes the Cookie Jar Page if it contains cookies.

      ^T

      Control-T toggles Lynx trace mode on and off. This is useful for diagnosing bad html. If you get a Bad HTML statusline message when loading a document, enter Control-T and then Control-R to reload the document in trace mode. You may then examine the Lynx Trace Log file with the ; command if enabled (see below), watch out especially for lines marked with a number of asterisks “*****”. You also can submit the document for validation via links in the online help menu. If you are able to diagnose the problem, send a message about it to the document's author.

      ^X

      Control-X invokes the Cache Jar Page if it contains cached documents.

      E

      The “E” command allows you to edit the URL (or ACTION) of the current link and then use that as a goto URL. Pressing the “E” command will bring up a prompt asking you to edit the current link's URL. If you do not modify it, or completely delete it, or enter Control-G, the command will be cancelled. Otherwise, the request for the “E”dited URL will be sent with method GET, and will be entered into the circular buffer for goto URLs so that it can be accessed for further modification via the “g” command. Note that lower case “e” invokes the external editor for the current document.

      g

      The “g” command allows any URL to be viewed. Pressing the “g” command will bring up a prompt asking for a URL. Type in the URL that you wish to view. All previously entered goto URLs are saved in a circular buffer, and can be accessed at the prompt by pressing the up-arrow or down-arrow keys.

      G

      The “G” command allows you to edit the URL of the current document and then use that as a goto URL. Pressing the “G” command will bring up a prompt asking you to edit the current document's URL. If you do not modify it, or completely delete it, or enter Control-G, the command will be cancelled. If the current document has POST content associated with it, an Alert will be issued. If you do edit that URL, and it does not simply involve a fragment change (for seeking a position in the current document), the modified URL will be submitted with method GET and no POST content. If a modification of the current document's URL results in a submission, that modified URL will be entered into the circular buffer for goto URLs, and can be accessed for further modification via the “g” command.

      z

      Lynx supports completely interruptible I/O processes. Press the “z” key at any time during a connect or transfer process and the process will be halted. If any data was transferred before the interrupt, it will be displayed.

      )

      The ) command jumps you forward half a page in the current document.

      (

      The ( command jumps you back half a page in the current document.

      #

      The “#” command jumps you to the pseudo Toolbar or Banner if present in the current document. Use left-arrow to return from there to your previous position in the document.

      !

      When “!” is pressed your default shell will be spawned. When you quit or exit the shell you will return to Lynx (usually exit under Unix and logout under VMS). This command is usually disabled for anonymous users. On VMS, “$” normally is a synonym.

      =

      The “=” command shows information about the current document and the currently selected link if there is one. The number of lines in the file, URL, title, owner, and type are shown.

      Normally the information is shown formatted (with margins) for readability. You can make Lynx show the URL wrapped without margins, e.g., making it convenient for select/paste, by doing this:

      • toggle line-wrapping off using “|
      • when line-wrapping is off, use the “=” command
      ;

      The ; command shows the Lynx Trace Log (Lynx.trace in the home directory) if one has been started for the current session. If a log has not been started, any trace messages will be sent to the screen (and will disturb the normal display) unless the system supports piping and that was used to redirect stderr messages to a file. The log is started when Lynx trace mode is turned on via the -trace command line switch, or via the Control-T toggle, if Lynx has been compiled to log the trace and other stderr messages by default. If not, ability to create a log can be toggled on with the -tlog switch. Note that this ability is probably disabled in anonymous or validation accounts.

      *

      The “*” command toggles image_links mode on and off. When on, links will be created for all images, including inline images. If you have an image viewer mapped to the image's MIME type, you can activate such links to view an inline image. You should normally have this mode toggled off.

      @

      The “@” command toggles raw 8-bit or CJK mode on and off. When on, the charset is assumed to match the selected character set and 8-bit characters are not reverse translated with respect to the ISO-8859-1 conversion tables.

      [

      The “[” command toggles pseudo_inlines mode on and off. When on, inline images which have no ALT string specified will have an [INLINE] pseudo-ALT string inserted in the Lynx display. When off, they will be treated as having ALT="" (i.e., they will be ignored). If image_links mode is toggled on, the pseudo-ALT strings will be restored, to serve as links to the inline images' sources.

      ]

      The “]” command is used to send HEAD requests for the current document or link. It applies only to documents or links (or form submit buttons) of http servers. A statusline message will notify you if the context for this command was inappropriate. The HEAD requests always are sent to the http server, i.e., Lynx does not retrieve any previous server replies from its cache. Note that for form submissions, http servers vary in whether they'll treat HEAD requests as valid and return the CGI script's headers, or treat it as invalid and return an error message.

      {

      If the line-wrapping margin is wider than the terminal's display, scroll left by half of the display's width.

      This feature is not available when Lynx is built using the slang library.

      |

      |” toggles Lynx line-wrapping on/off. Normally Lynx fits text onto the screen, wrapping lines. With this feature, Lynx provides the ability to eliminate line-wrapping (up to an internal line-limit of 1000 characters). Lynx uses the curses “pad” feature to support left/right scrolling. You can scroll left and right in the screen to view the wide lines.

      The popup menu for the command shows the other choices which extend the wrapping margin:

      /----------------------------------\
      | Try to fit screen width          |
      | No line wrap in columns          |
      | Wrap columns at screen width     |
      | Wrap columns at 3/4 screen width |
      | Wrap columns at 2/3 screen width |
      | Wrap columns at 1/2 screen width |
      | Wrap columns at 1/3 screen width |
      | Wrap columns at 1/4 screen width |
      \----------------------------------/
      

      This feature is not available when Lynx is built using the slang library.

      }

      If the line-wrapping margin is wider than the terminal's display, scroll right by half of the display's width.

      This feature is not available when Lynx is built using the slang library.

      numbers

      Lynx offers other, advanced navigation features when numbers are used to invoke the Follow Link (or goto link or page) number: or Select Pop-up Option Number: prompts.

      [ToC]

      Lynx and HTML Forms

      This section describes the Lynx Forms Interface. HTML gives document providers the ability to create on-line forms which may be filled out when the document is viewed. When a form is submitted the information on the form can be used to search a database or complete a survey.

      An HTML Form provides for the use of buttons to perform an action (such as submit), checkboxes, radio buttons or popups to select options from a list, and fields for entering text.

      Buttons:

      Buttons are displayed in the same way that Lynx displays links in a document. To "push" the button press the right-arrow or Return key. If it is a form submission button, you also can use the NOCACHE (“x”) or DOWNLOAD (“d”) keystroke commands to "push" the button (see below).

      Checkboxes and Radio buttons

      Checkboxes are displayed as square brackets: [ ] and radio buttons are displayed as parenthesis: ( ). When a box is checked or a button selected, an x appears in the brackets: [x] or an asterisk appears within the parenthesis: (*). To check a box or select a radio button press the right-arrow or Return key.

      Selection Fields

      Selection fields are displayed as brackets with the default option displayed between them: [default__]. To select an option press the right-arrow or Return key. A box with a border of asterisks (or line-drawing characters) will pop up with the list of possible options listed within the box. Use the up-arrow, down-arrow, page-up, page-down, and other navigation keys to move the cursor among options, and the right-arrow or Return key to select an option. You also can use the “/” and “n”ext searching commands for navigating to options which contain particular strings. NOTE that the popup menu feature can be disabled via compilation and/or configuration options, or via the Options Menu, in which case the selection field options will be converted to a list of radio buttons. The default setting for use of popups or radio button lists can be toggled via the -popup command line switch.

      Text Entry Fields

      Text entry (INPUT) fields are displayed as a row of underscores the length of the entry field: _______. You may enter text directly by typing at the keyboard. Use the Line Editor keys to correct errors. If you try to input more text than the field can hold, the line editor will not accept the additional characters. If you fill a text field the cursor will not move off the field but remain at the last field position. Use the up-arrow, and down-arrow, TAB or Return keys to move up, or down from the text entry field. NOTE, however, that Return also will submit the form if the text entry field is the only non-hidden field in the form. If "Textfields Need Activation" mode is turned on (with the -tna command-line option or in lynx.cfg), then text entry fields do not become active immediately upon being selected, as normally. Keystrokes have their normal command meaning unless the Line Editor gets activated with Return or Right Arrow. This mode can be used to avoid "getting stuck" in input fields, especially by users who rarely fill out forms.

      NOTE: If you have a text input field selected you will not have access to most of the Lynx keystroke commands, because they are interpreted by the Line Editor as either text entries or editing commands. Select a button or box when you want to use Lynx keystrokes; or prefix your keystroke with ^V to temporarily escape from line editing.

      Some flavors of UNIX, shells & terminal settings require that you enter ^V^Ve in order to start the external editor, as they also use ^V as default command-line quote key (called “lnext” in stty man pages and “stty -a” output); to avoid this, you can put “stty lnext undef” in your .cshrc file (or .profile or .bashrc, depending on what shell you use), or invoke Lynx with a wrapper script, e.g.

        #!/bin/sh
        stty lnext undef
        $HOME/bin/lynx "$@"
        stty lnext ^V
        exit

      NB when NOT in the Line Editor, ^V is by default bound to the command to switch between SortaSGML and TagSoup HTML parsing (i.e., SWITCH_DTD). To avoid confusion, either of these separate functions could be changed (mapped away) with a KEYMAP directive in lynx.cfg. For example,

        KEYMAP:^V:DO_NOTHING
        KEYMAP:#:SWITCH_DTD

      would map SWITCH_DTD away from ^V to #, while leaving its default Line Editor function as a command escape in place. On the other hand,

        KEYMAP:^V::NOP:1
        KEYMAP:^_::LKCMD:1

      would move ^V's Line Editor binding as command escape to ^_ for the first Line Edit style, letting ^V still act as SWITCH_DTD outside of text input fields.

      TEXTAREA Fields

      TEXTAREA fields are for most purposes handled as if they were a series of text entry (INPUT) fields for which successive lines imply a newline at the end of the preceding line. You enter text on each line to construct the overall message. Any blank lines at the bottom of the TEXTAREA field will be eliminated from the submission. The up-arrow, and down-arrow or Return keys move you to the preceding, or next line of the overall message, as for INPUT fields. The TAB key will move you down beyond the bottom of the TEXTAREA field, and Back Tab (if available, e.g., as Shift-Tab, and correctly mapped in the terminal description) will move backward to a link or field before the TEXTAREA.

      Editing TEXTAREA Fields and Special TEXTAREA Functions

      TEXTAREA fields can be edited using an external editor. The statusline should tell you when this is possible and what key to use, it might for example say

                (Textarea) Enter text. [ ..... ] (^Xe for editor).
      

      An external editor has to be defined, for example in the Options Menu, before you can start using this function.

      A key to invoke external TEXTAREA editing is normally provided by the Line-Editor Key Bindings. A KEYMAP directive in lynx.cfg can also be used to make a different key invoke external editing; it will then normally be necessary to prefix that key with ^V to "escape" from line-editing. Two variants exist,
        KEYMAP:e:EDITTEXTAREA
      or
        KEYMAP:e:DWIMEDIT
      (the first is only functional for TEXTAREA editing, while the second allows to use the same key for normal file editing as long as both functions do not conflict).

      Please see the note above for details about ^V behavior.

      You can also use two other special TEXTAREA functions. Again, these are already bound to key sequences in the Line-Editor Bindings, by default ^Xg and ^Xi. You can use different keys by adding KEYMAP bindings to your lynx.cfg file, e.g.

        KEYMAP:$:GROWTEXTAREA
        KEYMAP:#:INSERTFILE

      With these bindings, (in a TEXTAREA only) ^V$ would add 5 lines to the TEXTAREA and ^V# would prompt for the name of an existing file to be inserted into the TEXTAREA (above the cursorline). An automatic variation of GROWTEXTAREA is normally compiled in, so that hitting Enter with the cursor on the last line adds a new line to the TEXTAREA, with the cursor on it.

      If you have some single keys (or control keys) to spare that you do not need for their normal purposes, you can dedicate those keys to invoke the special functions (without requiring a prefix key). For example, to use the ^E key for the DWIMEDIT action, and the Insert key for the INSERTFILE action, use
        KEYMAP:^E:DWIMEDIT:PASS
        KEYMAP:0x10C:INSERTFILE:PASS
      (see lynx.cfg for other keystroke codes to use).

      Note that the default bindings that use ^X as a prefix key may also work by substituting the Escape key for ^X. If your keyboard has a modifier (Meta) key that gets transmitted as an ESC prefix, for example Alt, you can then even use Alt-e instead of ^Xe, Alt-g instead of ^Xg, and so on. But this does not work reliably everywhere (it depends on the way Lynx is compiled, including which libraries are used, and behavior of the connection and terminal type).

      In general, you can move around the form using the standard Lynx navigation keys. The up-arrow and down-arrow keys, respectively, select the previous or next field, box, or button. The TAB key selects the next field, box, or button.

      To submit the form press right-arrow or Return when positioned on the form's submit button. If you've submitted the form previously during the Lynx session, have not changed any of the form content, and the METHOD was GET, Lynx will retrieve from its cache what was returned from the previous submission. If you wish to resubmit that form to the server with the same content as previously, use the NOCACHE command (“x”) when positioned on the submit button. The right-arrow and Return keys also will invoke a no-cache resubmission if the reply from a form submission included a META element with a no-cache Pragma or Cache-Control directive:

            <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
            <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
      

      or the server sent a "Pragma" or "Cache-Control" MIME header with a no-cache directive.

      You also can use the DOWNLOAD (“d”) keystroke command when 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.

      Forms which have POST as the METHOD, or a mailto: URL as the ACTION, are always resubmitted, even if the content has not changed, when you activate the submit button. Lynx normally will not resubmit a form which has POST as the METHOD if the document returned by the form has links which you activated, and then you go back via the PREV_DOC (left-arrow) command or via the History Page. Lynx can be compiled so that it resubmits the form in those cases as well, and the default can be changed via lynx.cfg, and toggled via the -resubmit_posts command line switch.

      If the form has one text entry field and no other fields except, possibly, hidden INPUT fields not included in the display, then that field also serves as a submit button, and pressing right-arrow or Return on that field will invoke submission of the form. Be sure to use up-arrow, down-arrow or TAB to move off the text entry field, in such cases, if it is not your intention to submit the form (or to retrieve what was returned from an earlier submission if the content was not changed and the METHOD was GET).

      Forms can have multiple submit buttons, if they have been assigned NAMEs in the markup. In such cases, information about which one of the buttons was used to submit the form is included in the form content.

      Inlined images can be used as submit buttons in forms: If such buttons are assigned NAMEs in the markup, for graphic clients they can also serve as image maps, and the x,y coordinates of the graphic client's cursor position in the image when it was clicked are included in the form content. Since Lynx cannot inline the image, and the user could not have moved a cursor from the origin for the image, if no alternatives are made available in the markup Lynx sends a 0,0 coordinate pair in the form content.

      Document authors who use images as submit buttons, but have at least some concern for text clients and sight-challenged Webizens, should include VALUEs for the buttons in such markup. Lynx will then display the string assigned to the VALUE, as it would for a normal submit button.

      • Some document authors incorrectly use an ALT instead of VALUE attribute for this purpose. Lynx "cooperates" by treating ALT as a synonym for VALUE when present in an INPUT tag with TYPE="image".

      • If neither a VALUE nor an ALT attribute is present, Lynx displays "[IMAGE]-Submit" as the string for such buttons.

      • If clickable images is set, the "[IMAGE]" portion of the string is a link for the image, and the "Submit" portion is the button for submitting the form.

        Otherwise, the entire string is treated as a submit button. If a VALUE or ALT attribute is present and clickable images is set, Lynx prepends "[IMAGE]" as a link for the image, followed by “-” and then the attribute's value as the displayed string for the submit button.

      Early versions of Lynx would send a name=value pair instead of a 0,0 coordinate pair if a TYPE="image" submit button was NAME-ed, had a VALUE attribute in the INPUT tag, and was used to submit the form. The script which analyzes the form content thus could be made aware whether the submission was by a user with a graphic client and had image loading turned on, or by a user who did not see the image nor make a conscious choice within it. However, requests that this be included in HTML specifications consistently have fallen on deaf ears, and thus Lynx now "fakes" a 0,0 coordinate pair whether or not a VALUE or ALT attribute is present in the INPUT tag. Ideally, the script which analyzes the submitted content will treat the 0,0 coordinate pair as an indicator that the user did not see the image and make a conscious choice within it.

      Forms can have hidden INPUT fields, which are not displayed, but have NAMEs and VALUEs included in the content. These often are used to keep track of information across a series of related form submissions, but have the potential for including information about the user that might be considered to represent an invasion of privacy. NOTE, in this regard, that Lynx has implemented the HTML 3.0 DISABLED attribute for all of its form fields. These can be used to keep track of information across submissions, and to cast it unmodifiable in the current form, but keep the user aware that it will be included in the submission.

      Forms most commonly are submitted to http servers with the content encoded as ENCTYPE="application/x-www-form-urlencoded" 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 mailto 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 ENCTYPE="text/plain" in the form markup, so that the content will not be encoded, but remain readable as plain text.

      Lynx also supports ENCTYPE="application/sgml-form-urlencoded" for which all reserved characters in the content will be hex escaped, as with application/x-www-form-urlencoded, but semicolons (“;”) instead of ampersands (“&”) will be used as the separator for name=value pairs in the form content. The use of semicolons is preferred for forms with the GET METHOD, because the GET METHOD causes the encoded form content to be appended as a ?searchpart for the form's ACTION, and if such URLs are used in text/html documents or bookmark files without conversion of the ampersands to SGML character references (&amp; or &#38;), their being followed by form field NAMEs which might correspond to SGML entities could lead to corruption of the intended URL.

      NOTE, in this regard, that Lynx converts ampersands to &amp; when creating bookmarks, and thus the bookmark links will not be vulnerable to such corruptions. Also NOTE that Lynx allows you to save links in your bookmark file for documents returned by forms with the GET METHOD, and which thus have the content appended as a ?searchpart, but not if the METHOD was POST, because the content would be lost and the link thus would be invalid.

      Lynx supports ENCTYPE="multipart/form-data" for sending form content with name=value pairs encoded as multipart sections with individual MIME headers and boundaries. However, Lynx does not yet support INPUTs with TYPE="file" or TYPE="range" and will set the DISABLED attribute for all of the form's fields if any INPUTs with either of those two TYPEs are present, so that the form cannot be submitted. Otherwise, Lynx will submit the form with the multipart ENCTYPE.

      A Content-Disposition: file; filename=name.suffix header can be used by CGI scripts to set the suggested filename offered by Lynx for “d”ownload and “p”rint menu options to save or mail the body returned by the script following submission of a FORM. Otherwise, Lynx uses the last symbolic element in the path for the FORM's ACTION, which is normally the script, itself, or a PATH_INFO field, and thus might be misleading. This also can be done via a META element in any document:

            <META HTTP-EQUIV="Content-Disposition"
                  CONTENT="file; filename=name.suffix">
      

      [ToC]

      Lynx and HTML Images

      As a text browser, Lynx does not display images as such -- you need to define a viewer in lynx.cfg: see there -- , but users can choose a number of ways of showing their presence.

      There are 3 choices in lynx.cfg, with 2 corresponding keys:

           MAKE_LINKS_FOR_ALL_IMAGES        *  IMAGE_TOGGLE
           MAKE_PSEUDO_ALTS_FOR_INLINES     [  INLINE_TOGGLE
           VERBOSE_IMAGES                   no corresponding key
      

      You can also use the Options Menu, as outlined below:

           key  lynx.cfg       FM KM .lynxrc    variable in source
      
             *  MAKE_LINKS_     Y  N       N    clickable_images
             [  MAKE_PSEUDO_    Y  N       N    pseudo_inline_alts
                VERBOSE_        Y  Y       Y    verbose_img
      
      FM = Form-based Menu ; KM = Key-based Menu ;
      in  .lynxrc ,  VERBOSE_IMAGES  is called “verbose_images”:
      the other two cannot be saved between sessions.
      

      In the Form-based Menu, the 3-way “Show images” selection combines the effects of the “*” & “[” keys, as follows:

           Ignore      clickable_images = FALSE, pseudo_inline_alts = FALSE
           As labels   clickable_images = FALSE, pseudo_inline_alts = TRUE
           As links    clickable_images = TRUE,  pseudo_inline_alts = unchanged
      

      Lynx and HTML Tables

      HTML includes markup for creating tables structured as arrays of cells aligned by columns and rows on the displayed page.

      Lynx recognizes the TABLE element and all of its associated elements as described in RFC 1942 and will process any ID attributes in the start tags for handling as NAME-ed anchors, but does not create actual tables. Instead, it treats the TR start tag as a collapsible BR (line break), and inserts a collapsible space before the content of each TH and TD start tag. This generally makes all of the content of the table readable, preserves most of the intra-cell organization, and makes all of the links in the table accessible, but any information critically dependent on the column and row alignments intended for the table will be missed.

      If inherently tabular data must be presented with Lynx, one can use PRE formatted content, or, if the table includes markup not allowed for PRE content, construct the table using HTML Tabs. An example table using TAB elements is included in the test subdirectory of the Lynx distribution.

      Starting with version 2.8.3, Lynx renders some tables in tabular form. This tabular representation for simple tables (TRST) does not attempt to implement full support for any table model. Limitations are:

      • All data constituting a table row generally has to fit within the display width without inserting line breaks.
      • Cell contents have to be simple. In general, only inline markup is acceptable, no <P>, <BR> etc. (although <BR> may be ignored at the beginning of the first cell or at the end of the last cell of a row).
      • When tables are nested, only the innermost level is a candidate for tabular representation.
      • Most attributes are ignored, including borders, WIDTH, vertical alignment.

      Horizontal alignments (LEFT, CENTER, RIGHT), COLSPAN, and ROWSPAN are interpreted according to HTML 4.01. (ROWSPAN can only reserve empty space in subsequent rows, because of the limitations above.) When TRST fails because a table is not "simple" enough, the representation falls back to the minimal handling described earlier. Many (but, unfortunately, by no means all) tables that represent inherently tabular material will thus be shown with correct tabular formatting. Where table markup is used only for layout purposes (containing whole blocks of text and list within table cells) and not essential for understanding the textual contents, it remains basically ignored. Some more information on details is available in the file README.TRST of the source distribution.

      For tabular display of more complex tables, Lynx users can make use of external scripts or programs. The normal Lynx distribution currently does 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 DOWNLOADER, PRINTER, EXTERNAL, TRUSTED_LYNXCGI in lynx.cfg and lynxcgi: in Supported URLs for information on various ways for setting this up).

      [ToC]

      Lynx and HTML Tabs

      Lynx implements the HTML 3.0 TAB element only when LEFT alignment is in effect. If the alignment is CENTER or RIGHT (JUSTIFY is not yet implemented in Lynx, and is treated as a synonym for LEFT), or if the TAB element indicates a position to the left of the current position on the screen, it is treated as a collapsible space. For purposes of implementing TAB, Lynx treats en units as half a character cell width when specified by the INDENT attribute, and rounds up for odd values (e.g., a value of either 5 or 6 will be treated as three spaces, each the width of a character cell). See the example table using TAB elements in the test subdirectory of the Lynx distribution as a model for using this functionality.

      Note that this Users Guide and the Supported URLs page include TAB markup in a manner which degrades gracefully for WWW browsers which do not support it. Toggle to display of source and search for <tab to examine the use of TAB markup in these documents.

      [ToC]

      Lynx and HTML Frames

      Some implementations of HTML include markup, primarily designed for graphic clients, that is intended to create an array of simultaneously displayed, independently scrolling windows. Such windows have been termed frames.

      Lynx recognizes the Netscape and Microsoft Explorer FRAME, FRAMESET, and NOFRAMES elements, but is not capable of windowing to create the intended positioning of frames. Instead, Lynx creates labeled links to the frame sources, typically positioned in the upper left corner of the display, and renders the NOFRAMES section. If the document provider has disregard for text clients and sight-challenged Webizens, and thus does not include substantive content in the NOFRAMES section or a link in it to a document suitable for text clients, you can usually guess from the labeling of the frame links which one has the substantive material (if there is any), or you can try each of those links to see if anything worthwhile is returned.

      [ToC]

      Some sites -- in ignorance of Lynx capabilities -- may tell you (for example) "to view this page you need Netscape Navigator". You can simply ignore such warnings and access the frames via the Lynx-generated links as above.

      Lynx and HTML Banners

      Some implementations of HTML markup include provisions for creating a non-scrolling window to be positioned at the top of each page, containing links with brief, descriptive link names, analogous to a Windows toolbar. Such windows have been termed banners.

      Lynx recognizes and processes all of the HTML 3.0 REL attribute tokens in LINK elements for creating a banner, and a number of others which have subsequently been proposed. These banner tokens are Home, ToC, Contents, Index, Glossary, Copyright, Up, Next, Previous, Prev, Help, Search, Top, Origin, Navigator, Child, Disclaimer, Sibling, Parent, Author, Editor, Publisher, Trademark, Meta, URC, Hotlist, Begin, First, End, Last, Pointer, Translation, Definition, Chapter, Section, Subsection, Alternate, Documentation, Biblioentry, Bibliography, Start, Appendix, Bookmark and Banner. Any LINK elements with those tokens as the REL attribute value, and an HREF attribute value in the LINK, will invoke creation of a banner at the top of the first page, with the element's HREF as the link, and the token as the default link name. If a TITLE attribute is included in the LINK, its value will be used as the link name instead of the default. Bookmark and Banner are intended to be accompanied by a TITLE attribute, which in effect makes the namespace for REL banner tokens infinite.

      If the special token Help is used as the REL value and no HREF is included in the LINK, Lynx will use it own HELPFILE URL for that link. For the special token Home without an HREF, Lynx will use the default STARTFILE (i.e., derived from the configuration files or the WWW_HOME environment variable, not the command line startfile if one was used). However, if a -homepage=URL was specified on the command line, its URL will be used as the HREF. For the special token Index without an HREF, Lynx will use the DEFAULT_INDEX_FILE derived from the configuration files, or if an -index=URL was specified on the command line, its URL will be used as the HREF.

      Lynx does not waste screen real estate maintaining the banner at the top of every page, but the Lynx TOOLBAR keystroke command (“#”) will, any time it is pressed, position you on the banner so that any of its links can be activated, and pressing the left-arrow when in the banner will return you to where you were in the current document. The toolbar is indicated by a “#” preceding its first link when present on the screen, that is, when the first page of the document is being displayed. The availability of a toolbar is indicated by a “#” at the top, left-hand corner of the screen when the second or subsequent pages of the document are being displayed.

      Lynx also recognizes the HTML 3.0 BANNER container element, and will create a banner based on its content if one has not already been created based on LINK elements. Lynx treats the Microsoft MARQUEE element as a synonym for BANNER (i.e., presenting its markup as a static banner, without any horizontal scrolling of its content). Lynx does not prefix the BANNER or MARQUEE content with a “#” because the content need not be only a series of links with brief, descriptive links names, but does add a “#” at the top, left-hand corner of the screen when the content is not being displayed, to indicate its accessibility via the TOOLBAR keystroke command.

      [ToC]

      Lynx and HTML Footnotes

      Lynx implements the HTML 3.0 FN element similarly to a named Anchor within the current document, and assumes that the footnotes will be positioned at the bottom of the document. However, in contrast to named Anchors, the FN container element is treated as a block (i.e., as if a new paragraph were indicated whether or not that is indicated in its content) with greater than normal left and right margins, and the block will begin with a FOOTNOTE: label. For example, if the document contains:

              See the <A HREF="#fn1">footnote</A>.
      

      activating that link will take you to the labeled rendering of:

              <FN ID="fn1"><p>Lynx does not use popups for FN blocks.</p></FN>
      

      i.e., position it at the top of the page. Then, upon reading the footnote, you can return to your previous position in the document by pressing the left-arrow key. The content of an FN element can be any HTML markup that is valid in the BODY of the document.

      [ToC]

      Lynx and HTML Notes

      Lynx implements the HTML 3.0 NOTE element (Admonishment) as a labeled block, i.e., as if a new paragraph were indicated whether or not paragraphing markup is included in its content, with greater than normal left and right margins, and with the type of note indicated by an emphasized label based on the value of its CLASS or ROLE attribute. If no CLASS or ROLE attribute is included, the default label NOTE: will be used. Lynx recognizes the values caution and warning, for which, respectively, the labels CAUTION: or WARNING: will be used. The NOTE element can have an ID attribute, which will be treated as a named Anchor, as for HTML Footnotes, but the NOTE block need not be placed at the bottom of the document. The content of a NOTE block can be any HTML markup that is valid in the BODY of the document. This is an example:

            <NOTE CLASS="warning" ID="too-bad">
              <p>The W3C vendors did not retain NOTE in the HTML 3.2 draft.</p>
            </NOTE>
      

      It will degrade gracefully for WWW browsers which do not support NOTE, except for recognition of the ID attribute as a named Anchor.

      [ToC]

      Lynx and HTML Lists

      Lynx implements the HTML 3.0 list elements UL (Unordered List), OL (Ordered List), and DL (Definition List), and their associated attributes, and elements (LH, LI, DT, and DD) for the most part as described in that specification. The lists can be nested, yielding progressively greater indentation, up to six levels. The HTML 2.0 MENU and DIR elements both are treated as synonyms for UL with the PLAIN attribute (no bullets, see below). Note, thus, that neither DIR nor MENU yields a series of columns with 24-character spacing. A single nesting index is maintained, so that different types of List elements can be used for different levels within the nest. Also, the HTML 3.0 FIG, CAPTION and CREDIT elements are treated as valid within list blocks. They will be rendered with indentation appropriate for the current nesting depth, and the CAPTION or CREDIT elements will have a CAPTION: or CREDIT: label beginning the first line of their content. The content of any APPLET or OBJECT elements in the lists also will be indented appropriately for the current nesting depth, but those will not invoke line breaks unless indicated by their content, and it should not include markup which is inappropriate within the list.

      Lynx also supports the TYPE attribute for OL elements, which can have values of 1 for Arabic numbers, I or i for uppercase or lowercase Roman numerals, or A or a for uppercase or lowercase letters, that increment for successive LI elements in the list block. The CONTINUE attribute can be used to continue the ordering from the preceding list block when the nesting depth is changed.

      Lynx treats the OL attributes START and SEQNUM as synonyms for specifying the ordering value for the first LI element in the block. The values should be specified as Arabic numbers, but will be displayed as Arabic, Roman, or alphabetical depending on the TYPE for the block. The values can range from -29997 to the system's maximum positive integer for Arabic numbers. For Roman numerals, they can range from 1 (I or i) to 3000 (MMM or mmm.). For alphabetical orders, the values can range from 1 (A or a) to 18278 (ZZZ or zzz). If the CONTINUE attribute is used, you do not need to specify a START or SEQNUM attribute to extend the ordering from a previous block, and you can include a TYPE attribute to change among Arabic, Roman, or alphabetical ordering styles, or their casing, without disrupting the sequence. If you do not include a START, SEQNUM or CONTINUE attribute, the first LI element of each OL block will default to 1, and if you do not include a TYPE attribute, Lynx defaults to Arabic numbers.

      For UL blocks without the PLAIN attribute, Lynx uses *, +, o, #, @ and - as bullets to indicate, progressively, the depth within the six nesting levels.

      Lynx treats UL, OL, DIR, and MENU blocks as having the COMPACT attribute by default, i.e., single spaces between LH and LI elements within those blocks. For DL blocks, double spacing will be used to separate the DT and DD elements unless the COMPACT attribute has been specified.

      [ToC]

      Lynx and HTML Quotes

      The HTML 3.0 and later specifications provide for two classes of quotation in HTML documents. Block quotes, designated by the BLOCKQUOTE element (or its abbreviated synonym BQ in HTML 3.0), have implied paragraph breaks preceding and following the start and end tags for the block. Character level quotes, designated by the Q element, in contrast are simply directives in the markup to insert an appropriate quotation mark.

      Lynx renders block quotes with a greater than normal left and right indentation. Lynx does not support italics, and normally substitutes underlining, but does not underline block quotes so as not to obscure any explicit emphasis elements within the quotation. The BLOCKQUOTE or BQ block can include a CREDIT container element, whose content will be rendered as an implied new paragraph with a CREDIT: label at the beginning of its first line.

      Lynx respects nested Q start and end tags, and will use ASCII double-quotes (") versus grave accent (`) and apostrophe ('), respectively, for even versus odd depths in the nest.

      Any ID attributes in BLOCKQUOTE, BQ or Q elements can be the target of a hyperlink in the form URL#id. It is treated just like the NAME in Anchors.

      [ToC]

      Lynx and HTML Internationalization: 8bit, UNICODE, etc.

      Lynx has superior support for HTML 4.0/I18N internationalization issues. However, to see the characters other than 7bit properly you should set your display character set from Option Menu and save its value, this is a Frequently Asked Question. Fine-turning is also available from lynx.cfg

      [ToC]

      Lynx and Client-Side-Image-Maps

      HTML includes markup, designed primarily for graphic clients, that treats inlined images as maps, such that areas of the image within which a mouse cursor was positioned when the mouse was clicked can correspond to URLs which should be retrieved. The original implementations were based on the client sending an http server the x,y coordinates associated with the click, for handling by a script invoked by the server, and have been termed server-side-image-maps. Lynx has no rational way of coping with such a procedure, and thus simply sends a 0,0 coordinate pair, which some server scripts treat as an instruction to return a document suitable for a text client.

      Newer HTML markup provides bases for the client to determine the URLs associated with areas in the image map, and/or for a text client to process alternative markup and allow the user to make choices based on textual information. These have been termed client-side-image-maps.

      Lynx recognizes and processes the MAP container element and its AREA elements, and will create a menu of links for the HREF of each AREA when the link created for the IMG element with a USEMAP attribute is activated. The menu uses the ALT attributes of the AREA elements as the link names, or, if the document's author has disregard for text clients and sight-challenged Webizens, and thus did not include ALT attributes, Lynx uses the resolved URLs pointed to by the HREF attributes as the link names. Lynx uses the TITLE attribute of the IMG element, or the TITLE attribute of the MAP, if either was present in the markup, as the title and main header of the menu. Otherwise, it uses the ALT attribute of the IMG element. If neither TITLE nor ALT attributes were present in the markup, Lynx creates and uses a [USEMAP] pseudo-ALT. The MAPs need not be in the same document as the IMG elements. If not in the same document, Lynx will fetch the document which contains the referenced MAP, and locate it based on its NAME or ID attribute. All MAPs encountered in documents during a Lynx session are cached, so that they need not be retrieved repeatedly when referenced in different documents.

      If the IMG element also indicates a server-side-image-map via an ISMAP attribute, Lynx normally will create a link for that as well, using an [ISMAP] pseudo-ALT (followed by a hyphen to indicate its association with the client-side-image-map) rather than ignoring it, and will submit a 0,0 coordinate pair if that link is activated. Although, the client-side-image-map may be more useful for a client such as Lynx, because all of the URLs associated with the image map can be accessed, and their nature indicated via ALT attributes, Lynx-friendly sites can map 0,0 such that the server returns a for-text-client document homologous to the content of FIG elements (see below). Inclusion of such a link for submissions to the server can be disabled by default via the configuration file (lynx.cfg), and the default can be toggled via the -ismap command line switch.

      Lynx also recognizes the HTML 3.0 FIG and OVERLAY elements, and will handle them as intended for text clients. These are the ideal way to handle client-side-image-maps, because the FIG content provides complete alternative markup, rather than relying on the client to construct a relatively meager list of links with link names based on ALT strings.

      The presently experimental OBJECT element encompasses much of the functionality of the FIG element for client-side-image-maps. Lynx will render and display the content of OBJECT elements which have the SHAPES attribute equivalently to its handling of FIG. Lynx also handles OBJECT elements with the USEMAP and/or ISMAP attributes equivalently to its handling of IMG elements with client-side-image-maps and/or server-side-image-maps.

      [ToC]

      Lynx and Client-Side-Pull

      HTML includes provision for passing instructions to clients via directives in META elements, and one such instruction, via the token Refresh, should invoke reloading of the document, fetched from a server with the same URL or a new URL, at a specified number of seconds following receipt of the current document. This procedure has been termed client-side-pull. An example of such an element is:

            <META HTTP-EQUIV="Refresh" CONTENT="3; URL=http://host/path">
      

      which instructs a client to fetch the indicated URL in 3 seconds after receiving the current document. If the URL= field is omitted, the URL defaults to that of the current document. A no-cache directive is implied when the Refresh if for the same URL.

      Lynx recognizes and processes Refresh directives in META elements, but puts up a labeled link, typically in the upper left corner of the display, indicating the number of seconds intended before a refresh, and the URL for the refresh, instead of making the request automatically after the indicated number of seconds. This allows people using a braille interface any amount of time to examine the current document before activating the link for the next URL. In general, if the number of seconds indicated is short, the timing is not critical and you can activate the link whenever you like. If it is long (e.g., 60 seconds), a server process may be generating new documents or images at that interval, and you would be wasting bandwidth by activating the link at a shorter interval.

      [ToC]

      Lynx State Management (Me want cookie!)

      HTTP provides a means to carry state information across successive connections between a browser and an http server. Normally, http servers respond to each browser request without relating that request to previous or subsequent requests. Though the inclusion of INPUT fields with TYPE="hidden" can be used as a sort of state management by HTML Forms, a more general approach involves exchanges of MIME headers between the server and browser. When replying to a request, the server can send a Set-Cookie MIME header which contains information (cookies) relevant to the browser's request, and in subsequent requests the browser can send a Cookie MIME header with information derived from previously received cookies.

      State Management via cookie exchanges originally was implemented by Netscape, and such cookies are now designated as Version 0. A more elaborate format for cookies, designated as Version 1, was standardized by the IETF (Internet Engineering Task Force) as RFC 2109. Lynx supports both Version 0 and Version 1 cookie exchanges. This support can be disabled by default via the SET_COOKIES symbol in the compilation (userdefs.h) and/or run time (lynx.cfg) configuration files, and that default setting can be toggled via the -cookies command line switch. The SET_COOKIES symbol can be further modified by the ACCEPT_ALL_COOKIES mode. If ACCEPT_ALL_COOKIES is set TRUE, and SET_COOKIES is TRUE, Lynx will accept all cookies. Additionally, the cookies that are automatically accepted or rejected by Lynx can be further modified with the COOKIE_ACCEPT_DOMAINS and COOKIE_REJECT_DOMAINS options in your .lynxrc file, each of which is a comma-separated list of domains to perform the desired action. The domain listed in these options must be identical to the domain the cookie comes from, there is no wildcard matching. If a domain is specific in both COOKIE_ACCEPT_DOMAINS and COOKIE_REJECT_DOMAINS, rejection will take precedence.

      When cookie support is enabled, Set-Cookie MIME headers received from an http server invoke confirmation prompts with possible replies of “Y”es or “N”o for acceptance of the cookie, “A”lways to accept the cookie and to allow all subsequent cookies from that domain (server's Fully Qualified Domain Name, or site-identifying portion of the FQDN) without further confirmation prompts, or ne“V”er to never allow cookies from that domain to be accepted (silently ignore its Set-Cookie MIME headers). All unexpired cookies are held in a hypothetical Cookie Jar which can be examined via the COOKIE_JAR keystroke command, normally mapped to Ctrl-K, for invoking the Cookie Jar Page. If Lynx has been compiled with the --enable-persistent-cookies flag, then unexpired cookies will be stored between sessions in the filename set with the COOKIE_FILE option in your .lynxrc.

      A common use of cookies by http servers is simply to track the documents visited by individual users. Though this can be useful to the site's WebMaster for evaluating and improving the organization of links in the various documents of the site, if the user has configured Lynx to include a From MIME header with the user's email address in http requests, or has passed personal information to the server via a form submission, the tracking might be used to draw inferences, possibly incorrect, about that user, and may be considered by some as an invasion of privacy.

      An example of worthwhile State Management via cookies is the setting of personal preferences, typically via a form submission to the site, which will then apply to all documents visited at that site.

      If you accept cookies when accessing a site, but are given no indication about how they will be used in subsequent requests to that site, nor can infer how they will be used, you can Gobble (delete) the cookies and/or change the “allow” setting for its domain via the Cookie Jar Page.

      [ToC]

      Cached Documents

      A list of documents which are in lynx's internal cache is accessible through hypothetical Cache Jar which can be examined via the CACHE_JAR keystroke command, normally mapped to Ctrl-X.

      Entries in the Cache Jar are ordered from oldest (at the top) to newest. The user can easily access any document which is in the cache, especially those which may be soon removed due to configurable limits on the maximum number of cached documents, as well as the maxmimum amount of memory used by the cache.

      The structure of Cache Jar is simple:

      • Each entry starts with its ordinal number (within the session), recently added documents in cache have a smaller number than documents which are added before, and are positioned at the end of Cache Jar
      • Following its ordinal number is the document title, which is also a link. On activating this link, the user is prompted if they want to delete the document from Cache Jar. The document's address (also a link) follows the title. It is distinguished by a URL: label preceding the link. Activating this link, lynx displays the corresponding cached document.
      • Below each cached document URL lynx shows the document properties which include:
        • Lines,
        • Size,
        • File-Cache,
        • Content-Type,
        • Content-Language,
        • Content-Encoding,
        • Content-Location,
        • Subject,
        • Owner,
        • Date,
        • Expires,
        • Last-Modified,
        • ETag,
        • Server, and
        • Source-Cache-File.

      This feature can be enabled by default using the USE_CACHEJAR symbol in the compilation (userdefs.h), as well as enabled in lynx.cfg

      [ToC]

      Sessions

      Lynx's current state (all information about the user's current activity with lynx) is called a session. Sessions are useful in particular if you are in the middle of exploring something on the web and you were forced to stop abruptly, losing any trace of your current work.

      A session can be automatically restored as lynx starts after a clean exit. The session data is saved if lynx is invoked with the -session=FILENAME switch. The FILENAME is the name of the file where the session will be stored.

      There are also switches for only restoring: -sessionin=FILENAME and for only saving: -sessionout=FILENAME sesions:

      If you do not want to specify these options at each lynx startup, there is an option in lynx.cfg to enable automatic saving/restoring of session. To keep lynx startup/exit reasonable fast there is also an option in lynx.cfg specifying how much information about the current lynx session will be stored in file.

      The syntax of the session file is simple. You can use a text editor to modify, add new entries, or remove URLs you no longer want.

      [ToC]

      The Lynx command line

      A summary of the Lynx command line options (switches) is returned to stdout if Lynx is invoked with the -help switch. A description of the options also should be available via the system man (Unix) pages or help (VMS) libraries. On Win32, typing lynx -help in a DOS window should display similarly. The basic syntax of the Lynx command line can be represented as one of the following:

      Command
      lynx [options]
      lynx [options] startfile

      where

      startfile

      is the file or URL that Lynx will load at start-up.

      • If startfile is not specified, Lynx will use a default starting file and base directory determined during installation.
      • If a specified file is local (i.e., not a URL) Lynx displays that file and uses the directory in which that file resides as the base directory.
      • If a URL is specified, the file will be retrieved, and only the server base directory will be relevant to further accesses.
      • If more than one local file or remote URL is listed on the command line, Lynx will open only the last interactively. All of the names (local files and remote URLs) are added to the G)oto history.
      options

      Lynx uses only long option names. Option names can begin with double dash as well, underscores and dashes can be intermixed in option names (in the reference below options are with one dash before them and with underscores).

      Lynx provides many command-line options. Some options require a value (string, number or keyword). These are noted in the reference below. The other options set boolean values in the program. There are three types of boolean options: set, unset and toggle. If no option value is given, these have the obvious meaning: set (to true), unset (to false), or toggle (between true/false). For any of these, an explicit value can be given in different forms to allow for operating system constraints, e.g.,

      -center:off
      -center=off
      -center-
      

      Lynx recognizes "1", "+", "on" and "true" for true values, and "0", "-", "off" and "false" for false values. Other option-values are ignored.

      The default boolean, number and string option values that are compiled into lynx are displayed in the help-message provided by lynx -help. Some of those may differ according to how lynx was built; see the help message itself for these values. The -help option is processed before any option, including those that control reading from the lynx.cfg file. Therefore runtime configuration values are not reflected in the help-message.

      Capitalized items in the option summary indicate that a substitution must be made. These are the options:

      -

      If the argument is only “-” (dash), then Lynx expects to receive the arguments from stdin. This is to allow for the potentially very long command line that can be associated with the -get_data or -post_data arguments (see below). It can also be used to avoid having sensitive information in the invoking command line (which would be visible to other processes on most systems), especially when the -auth or -pauth options are used. On VMS, the dash must be encased in double-quotes ("-") and the keyboard input terminated with Control-Z or the command file input terminated by a line that begins with “$”. On Unix, the keyboard input terminator is Control-D. On Win32, [???].

      -accept_all_cookies

      accept all cookies.

      -anonymous

      apply restrictions appropriate for an anonymous account, see -restrictions below for some details.

      -assume_charset=MIMENAME

      charset for documents that do not specify it.

      -assume_local_charset=MIMENAME

      charset assumed for local files, i.e., files which lynx creates such as internal pages for the options menu.

      -assume_unrec_charset=MIMENAME

      use this instead of unrecognized charsets.

      -auth=ID:PW

      set authorization identifier and password for protected documents at startup. Be sure to protect any script files which use this switch.

      -base

      prepend a request URL comment and BASE tag to text/html outputs for -source dumps.

      -bibp=URL

      specify a local bibp server (default http://bibhost/).

      -blink

      forces high intensity background colors for color mode, if available and supported by the terminal. This applies to the slang library (for a few terminal emulators), or to OS/2 EMX with ncurses.

      -book

      use the bookmark page as the startfile. The default or command line startfile is still set for the Main screen command, and will be used if the bookmark page is unavailable or blank.

      -buried_news

      toggles scanning of news articles for buried references, and converts them to news links. Not recommended because email addresses enclosed in angle brackets will be converted to false news links, and uuencoded messages can be trashed.

      -cache=NUMBER

      set the NUMBER of documents cached in memory. The default is 10.

      -center

      Toggle center alignment in HTML TABLE.

      -case

      enable case-sensitive string searching.

      -cfg=FILENAME

      specifies a Lynx configuration file other than the default lynx.cfg.

      -child

      exit on left-arrow in startfile, and disable save to disk.

      -child_relaxed

      exit on left-arrow in startfile, but allow save to disk and associated print/mail options.

      -cmd_log=FILENAME

      write keystroke commands and related information to the specified file.

      -cmd_script=FILENAME

      read keystroke commands from the specified file. You can use the data written using the -cmd_log option. Lynx will ignore other information which the command-logging may have written to the log- file. Each line of the command script contains either a comment beginning with "#", or a keyword:

      exit

      causes the script to stop, and forces lynx to exit immediately.

      key

      the character value, in printable form. Cursor and other special keys are given as names, e.g., Down Arrow. Printable 7-bit ASCII codes are given as-is, and hexadecimal values represent other 8-bit codes.

      set

      followed by a "name=value" allows one to override values set in the lynx.cfg file.

      -color

      forces color mode on. This feature is only available if Lynx is built using the slang library. The slang library will send ANSI color sequences irregardless of the type of terminal which is being used.

      If color support is instead provided by a color-capable curses library such as ncurses, Lynx relies completely on the terminal description to determine whether color mode is possible, and this flag is not needed and thus unavailable.

      A saved show_color=always setting found in a .lynxrc file at startup has the same effect, but the setting read from .lynxrc on startup is overridden by this flag.

      -connect_timeout=N

      Sets the connection timeout, where N is given in seconds.

      -cookie_file=FILENAME

      specifies a file to use to read cookies. If none is specified, the default value is ~/.lynx_cookies for most systems, but ~/cookies for MS-DOS.

      -cookie_save_file=FILENAME

      specifies a file to use to store cookies. If none is specified, the value given by -cookie_file is used.

      -cookies

      toggles handling of Set-Cookie headers.

      -core

      toggles forced core dumps on fatal errors. (Unix only)

      -crawl

      with -traversal, output each page to a file.

      with -dump, format output as with -traversal, but to stdout.

      -curses_pads

      toggles the use of curses "pad" feature which supports left/right scrolling of the display.

      -debug_partial

      separate incremental display stages with MessageSecs delay

      -display=DISPLAY

      set the display variable for X rexe-ced programs.

      -display_charset=MIMEname

      set the charset for the terminal output.

      -dont_wrap_pre

      inhibit wrapping of text in <pre> when -dump'ing and -crawl'ing, mark wrapped lines in interactive session.

      -dump

      dumps the formatted output of the default document or one specified on the command line to standard out. This can be used in the following way:

      lynx -dump http://www.w3.org/

      -editor=EDITOR

      enable external editing using the specified EDITOR. (vi, ed, emacs, etc.)

      -emacskeys

      enable emacs-like key movement.

      -enable_scrollback

      toggles behavior compatible with the scrollback keys in some communications software (may be incompatible with some curses packages).

      -error_file=FILENAME

      the status code from the HTTP request is placed in this file.

      -exec

      enable local program execution (normally not configured).

      -fileversions

      include all versions of files in local VMS directory listings.

      -find_leaks

      toggles the memory leak checking off. Normally this is not compiled-into your executable, but when it is, it can be disabled for a session.

      -force_empty_hrefless_a

      force HREF-less “A” elements to be empty (close them as soon as they are seen).

      -force_html

      forces the first document to be interpreted as HTML.

      -force_secure

      toggles forcing of the secure flag for SSL cookies.

      -forms_options

      toggles whether the Options Menu is key-based or form-based.

      -from

      toggles transmissions of From headers to HTTP or HTTPS servers.

      -ftp

      disable ftp access.

      -get_data

      properly formatted data for a get form are read in from stdin and passed to the form. Input is terminated by a line that starts with “---”.

      -head

      send a HEAD request for the mime headers.

      -help

      print this Lynx command syntax usage message.

      -hiddenlinks=option

      control the display of hidden links. Option values are:

      merge

      hidden links show up as bracketed numbers and are numbered together with other links in the sequence of their occurrence in the document.

      listonly

      hidden links are shown only on List screens and listings generated by -dump or from the Print menu, but appear separately at the end of those lists. This is the default behavior.

      ignore

      hidden links do not appear even in listings.

      -historical

      toggles use of “>” or “-->” as a terminator for comments.

      -homepage=URL

      set homepage separate from start page. Will be used if a fetch of the start page fails or if it is a script which does not return a document, and as the URL for the “m”ain menu command.

      -image_links

      toggles inclusion of links for all images.

      -ismap

      toggles inclusion of ISMAP links when client-side MAPs are present.

      -index=URL

      set the default index file to the specified URL

      -justify

      do justification of text.

      -link=NUMBER

      starting count for lnk#.dat files produced by -crawl.

      -localhost

      disable URLs that point to remote hosts.

      -locexec

      enable local program execution from local files only (if lynx was compiled with local execution enabled).

      -lss=FILENAME

      specify filename containing color-style information. The default is lynx.lss.

      -mime_header

      include mime headers and force source dump.

      -minimal

      toggles minimal versus valid comment parsing. When minimal, any “-->” serves as a terminator for a comment element. When valid, pairs of “--” are treated as delimiters for series of comments within the overall comment element. If historical is set, that overrides minimal or valid comment parsing.

      -nested_tables

      toggles nested-tables logic (for debugging).

      -newschunksize=NUMBER

      number of articles in chunked news listings.

      -newsmaxchunk=NUMBER

      maximum news articles in listings before chunking.

      -nobold

      disable bold video-attribute.

      -nobrowse

      disable directory browsing.

      -nocc

      disable Cc: prompts for self copies of mailings. Note that this does not disable any CCs which are incorporated within a mailto URL or form ACTION.

      -nocolor

      force color mode off, overriding terminal capabilities and any -color flags, COLORTERM variable, and saved .lynxrc settings.

      -noexec

      disable local program execution. (DEFAULT)

      -nofilereferer

      disable transmissions of Referer headers for file URLs.

      -nolist

      disable the link list feature in dumps.

      -nolog

      disable mailing of error messages to document owners.

      -nomargins

      disable left/right margins in the default style sheet.

      -nomore

      disable -more- string in statusline messages.

      -nonrestarting_sigwinch

      make window size change handler non-restarting. This flag is not available on all systems, Lynx needs to be compiled with HAVE_SIGACTION defined. If available, this flag may cause Lynx to react more immediately to window changes when run within an xterm.

      -nopause

      disable forced pauses for statusline messages.

      -noprint

      disable most print functions.

      -noredir

      do not follow URL redirections

      -noreferer

      disable transmissions of Referer headers.

      -noreverse

      disable reverse video-attribute.

      -nosocks

      disable SOCKS proxy usage by a SOCKSified Lynx.

      -nostatus

      disable the retrieval status messages.

      -notitle

      disable title and blank line from top of page.

      -nounderline

      disable underline video-attribute.

      -number_fields

      force numbering of links as well as form input fields.

      -number_links

      force numbering of links.

      -partial

      toggles displaying of partial pages while loading.

      -partial_thres=NUMBER

      number of lines to render before repainting display with partial-display logic.

      -pauth=ID:PW

      set authorization identifier and password for a protected proxy server at startup. Be sure to protect any script files which use this switch.

      -popup

      toggles handling of single-choice SELECT options via popup windows or as lists of radio buttons. The default configuration can be changed in userdefs.h or lynx.cfg. It also can be set and saved via the “o”ptions menu. The command line switch toggles the default.

      -post_data

      properly formatted data for a post form are read in from stdin and passed to the form. Input is terminated by a line that starts with “---”.

      -preparsed

      show source preparsed and reformatted when used with -source or in source view (“\”). May be useful for debugging of broken HTML markup to visualize the difference between SortaSGML and TagSoup recovery modes, switched by “^V”.

      -prettysrc

      do syntax highlighting and hyperlink handling in source view.

      -print

      enable print functions. (default)

      -pseudo_inlines

      toggles pseudo-ALTs for inline images with no ALT string.

      -raw

      toggles default setting of 8-bit character translations or CJK mode for the startup character set.

      -realm

      restricts access to URLs in the starting realm.

      -reload

      flushes the cache on a proxy server (only the first document affected).

      -restrictions

      allows a list of services to be disabled selectively and takes the following form:

      lynx -restrictions=[option][,option][,option]...

      The list of recognized options is printed if none are specified.

      ?

      if used alone, lists restrictions in effect.

      all

      restricts all options listed below.

      bookmark

      disallow changing the location of the bookmark file.

      bookmark_exec

      disallow execution links via the bookmark file.

      change_exec_perms

      disallow changing the eXecute permission on files (but still allow it for directories) when local file management is enabled.

      chdir

      disallow command which changes Lynx's working directory.

      default

      same as command line option -anonymous. Set default restrictions for anonymous users. All specific services listed are always restricted, except for: inside_telnet, outside_telnet, inside_ftp, outside_ftp, inside_rlogin, outside_rlogin, inside_news, outside_news, telnet_port, jump, mail, print, exec, and goto. The settings for these, as well as additional goto restrictions for specific URL schemes that are also applied, are derived from definitions within userdefs.h.

      Note that this is the only option value that may have the effect of removing some restrictions, if they have been set by other options, namely for those services that are allowed by default according to userdefs.h. However, if the separate command line option form (-anonymous) is used, Lynx takes care to set the default restrictions before handling additional -restrictions= options (even if they precede the anonymous option), so that this cannot happen.

      dired_support

      disallow local file management.

      disk_save

      disallow saving to disk in the download and print menus.

      dotfiles

      disallow access to, or creation of, hidden (dot) files.

      download

      disallow some downloaders in the download menu. This does not imply the disk_save restriction. It also does not disable the DOWNLOAD command, and does not prevent "Download or Cancel" offers when a MIME type cannot otherwise be handled. Those are only disabled if additionally the disk_save restriction is in effect and no download methods are defined in a Lynx configuration file that are marked as "always ENABLED" (or, alternatively, if the -validate switch is used).

      editor

      disallow external editing.

      exec

      disable execution scripts.

      exec_frozen

      disallow the user from changing the local execution option.

      externals

      disallow some "EXTERNAL" configuration lines, if support for passing URLs to external applications (with the EXTERN_LINK or EXTERN_PAGE command) is compiled in.

      file_url

      disallow using G)oto, served links or bookmarks for file: URLs.

      goto

      disable the “g” (goto) command.

      inside_ftp

      disallow ftps for people coming from inside your domain.

      inside_news

      disallow USENET news reading and posting for people coming from inside you domain. This applies to "news", "nntp", "newspost", and "newsreply" URLs, but not to "snews", "snewspost", or "snewsreply" in case they are supported.

      inside_rlogin

      disallow rlogins for people coming from inside your domain.

      inside_telnet

      disallow telnets for people coming from inside your domain.

      jump

      disable the “j” (jump) command.

      lynxcgi

      disallow execution of Lynx CGI URLs.

      mail

      disallow mailing feature.

      multibook

      disallow multiple bookmarks.

      news_post

      disallow USENET News posting,

      options_save

      disallow saving options in .lynxrc.

      outside_ftp

      disallow ftps for people coming from outside your domain.

      outside_news

      disallow USENET news reading and posting for people coming from outside you domain. This applies to "news", "nntp", "newspost", and "newsreply" URLs, but not to "snews", "snewspost", or "snewsreply" in case they are supported.

      outside_rlogin

      disallow rlogins for people coming from outside your domain.

      outside_telnet

      disallow telnets for people coming from outside your domain.

      print

      disallow most print options.

      shell

      disallow shell escapes.

      suspend

      disallow Control-Z suspends with escape to shell on Unix.

      telnet_port

      disallow specifying a port in telnet G)oto's.

      useragent

      disallow modifications of the User-Agent header.

      -resubmit_posts

      toggles forced resubmissions (no-cache) of forms with method POST when the documents they returned are sought with the PREV_DOC (left-arrow) command or from the History Page.

      -rlogin

      disable recognition of rlogin commands.

      -scrollbar

      toggles showing scrollbar.

      -scrollbar_arrow

      toggles showing arrows at ends of the scrollbar.

      -selective

      require .www_browsable files to browse directories.

      -session=FILENAME

      resumes from specified file on startup and saves session to that file on exit.

      -sessionin=FILENAME

      resumes session from specified file.

      -sessionout=FILENAME

      saves session to specified file.

      -short_url

      show very long URLs in the status line with "..." to represent the portion which cannot be displayed. The beginning and end of the URL are displayed, rather than suppressing the end.

      -show_cursor

      If enabled the cursor will not be hidden in the right hand corner but will instead be positioned at the start of the currently selected link. Show cursor is the default for systems without FANCY_CURSES capabilities. The default configuration can be changed in userdefs.h or lynx.cfg. It also can be set and saved via the “o”ptions menu. The command line switch toggles the default.

      -show_rate

      If enabled the transfer rate is shown in bytes/second. If disabled, no transfer rate is shown. Use lynx.cfg or the options menu to select KiB/second and/or ETA.

      -soft_dquotes

      toggles emulation of the old Netscape and Mosaic bug which treated “>” as a co-terminator for double-quotes and tags.

      -source

      works the same as dump but outputs HTML source instead of formatted text. For example

      lynx -source . >foo.html
      

      generates HTML source listing the files in the current directory. Each file is marked by an HREF relative to the parent directory. Add a trailing slash to make the HREF's relative to the current directory:

      lynx -source ./ >foo.html
      
      -stack_dump

      disable SIGINT cleanup handler.

      -startfile_ok

      allow non-http startfile and homepage with -validate.

      -stderr

      When dumping a document using -dump or -source, Lynx normally does not display alert (error) messages that you see on the screen in the status line. Use the -stderr option to tell Lynx to write these messages to the standard error.

      -stdin

      read the startfile from standard input (UNIX only).

      -syslog=text

      information for syslog call.

      -syslog-urls

      log requested URLs with syslog.

      -tagsoup

      initialize DTD with "TagSoup" tables, more details.

      -telnet

      disable recognition of telnet commands.

      -term=TERM

      tell Lynx what terminal type to assume it is talking to. (This may be useful for remote execution, when, for example, Lynx connects to a remote TCP/IP port that starts a script that, in turn, starts another Lynx process.)

      -timeout=N

      For win32, sets the network read-timeout, where N is given in seconds.

      -tlog

      toggles use of a Lynx Trace Log for the session. The log is named Lynx.trace and is created in the home directory when Lynx trace mode is turned on via the -trace command line switch (see below), or via the TRACE_TOGGLE (Control-T) keystroke command. Once a log is started for the session, all trace and other stderr messages are written to the log. The contents of the log can be examined during the session via the TRACE_LOG (normally, “;”) keystroke command. If use of a Lynx Trace Log is turned off, any trace output will go to the standard error stream.

      -tna

      turns on "Textfields Need Activation" mode.

      -trace

      turns on Lynx trace mode. If a Lynx Trace Log (Lynx.trace in the home directory) has been started for the current session, all trace messages are written to that log, and can be examined during the session via the TRACE_LOG (normally, “;”) command. If no Trace Log file is in use, trace messages go to stderr.

      -trace_mask=value

      turn on optional traces, which may result in very large trace files. Logically OR the values to combine options:

      1

      SGML character parsing states

      2

      color-style

      4

      TRST (table layout)

      8

      config (lynx.cfg and .lynxrc contents)

      16

      binary string copy/append, used in form data construction.

      -traversal

      traverse all http links derived from startfile. When used with -crawl, each link that begins with the same string as startfile is output to a file, intended for indexing. See CRAWL.announce for more information.

      -trim_input_fields

      trim input text/textarea fields in forms.

      -underscore

      toggles use of _underline_ format in dumps.

      -use_mouse

      turn on mouse support, if available.

      -useragent=STRING

      set different Lynx User-Agent header. Lynx produces a warning on startup if the STRING does not contain "Lynx" or "L_y_n_x", see the note in the Options Menu section for rationale.

      -validate

      accept only http URLs (meant for validation).

      This flag implies security restrictions generally more severe than -anonymous: restriction options as for -restrictions=all, with the notable exception that goto remains enabled for http and https URLs; in addition, the PRINT and DOWNLOAD commands are completely disabled, and use of a Trace Log file is forced off.

      Any relaxing of restriction that might be implied by an also present (or implied) -anonymous flag is overridden, the only way to possibly relax some of the restrictions to the level applicable for "anononymous" accounts is with an explicit -restrictions=default.

      -verbose

      toggles [LINK], [IMAGE] and [INLINE] comments with filenames of these images.

      -version

      print version information.

      -vikeys

      enable vi-like key movement.

      -wdebug

      enable Waterloo tcp/ip packet debug (print to watt debugfile). This applies only to DOS versions compiled with WATTCP or WATT-32.

      -width=NUMBER

      number of columns for formatting of dumps, default is 80.

      -with_backspaces

      emit backspaces in output if -dumping or -crawling (like man does).

      No options are required, nor is a startfile argument required. White space can be used in place of equal sign separators (“=”) appearing in the option list above. It can not be used in place of the equal signs in forms like "-option=on" and "-option=off" for simple switches and toggles, for which "-option" alone (without a value) is valid.

      [ToC]

      Environment variables used by Lynx

      Lynx uses certain environment variables and sets a few of them. Please visit a separate page for this rather technical information.

      [ToC]

      Main configuration file lynx.cfg

      Lynx has several levels of customization: from the Options Menu (accessible on-line, and possibly stored in your local .lynxrc file), via command-line switches on startup (mainly for batch processing). The most important and numerous default settings are stored in the Lynx configuration file lynx.cfg.

      If you are on a UNIX system you should have appropriate permissions to make changes there or ask your system administrator to modify lynx.cfg for your needs. This file provides default settings for all accounts on your system. It may be copied to your shell account and included with -cfg command line switch or via an environment variable LYNX_CFG (if you have shell access). Starting with version 2.8.1 Lynx has an include facility so you can load the system-wide configuration file and easily add one or more settings from your local add-on configuration file. It is really cool to read lynx.cfg with its comments for hundreds of options, most of them commented out because they are built-in defaults. You may visit an index of options: by category or by alphabet.

      To view your current configuration derived from lynx.cfg and any included configuration files, press “g” and type in “lynxcfg:”. If you are using the forms-based Options Menu, you may press “o” for the Options Menu and follow the Check your lynx.cfg's link near the bottom.

      However, for those who have a restricted account many Lynx features may be disabled by the system administrator, you probably will not see your lynx.cfg.

      [ToC]

      Lynx development history

      Lynx grew out of efforts to build a campus-wide information system at The University of Kansas. The earliest versions of Lynx provided a user-friendly, distributed hypertext interface for users connected to multiuser (Unix and VMS) systems via curses-oriented display devices. A custom hypertext format was developed to support hypertext links to local files and files on remote Gopher servers. Using Gopher servers for distributed file service allowed information providers to publish information from a wide variety of platforms (including Unix, VMS, VM/CMS and Macintosh). In addition, Lynx became the most user-friendly Gopher client, although that was only an ancillary capability.

      This distributed approach let providers retain complete control over their information, but it made communication between users and providers somewhat more difficult. Following the lead of Neal Erdwien, of Kansas State University, the Lynx hypertext format was extended to include links for including ownership information with each file. This information made it possible for users running Lynx clients to send comments and suggestions via e-mail to the providers.

      This early version of Lynx was also augmented to support hypertext links to programs running on remote systems. It included the ability to open a Telnet connection, as well as the ability to start programs via rexec, inetd, or by direct socket connects. These capabilities were included to allow users to access databases or custom program interfaces.

      A subsequent version of Lynx incorporated the World Wide Web libraries to allow access to the full list of WWW servers, along with the option to build hypertext documents in HTML, rather than the native Lynx format. HTML has become far more widely used, and the native format has been phased out. With the addition of the WWW libraries, Lynx became a fully-featured WWW client, limited only by the display capabilities offered in the curses environment.

      Lynx was designed by Lou Montulli, Charles Rezac and Michael Grobe of Academic Computing Services at The University of Kansas. Lynx was implemented by Lou Montulli and maintained by Garrett Arch Blythe and Craig Lavender.

      Foteos Macrides and members of the lynx-dev list have developed and supported Lynx since release of v2.3 in May 1994.
      The Lynx2-3FM code set was released as v2.4 in June 1995.
      The Lynx2-4FM code set was released as v2.5 in May 1996.
      The Lynx2-5FM code set was released as v2.6 in September 1996.
      The Lynx2-6FM code set was released as v2.7 in February 1997.
      The v2-7FM code set was released as v2.7.1 in April 1997.
      The v2-7-1FM code set was released as v2.7.2 in January 1998.
      The 2.7.1 development set was released as v2.8 in March 1998.
      The 2.8 development set was released as v2.8.1 in October 1998.
      The 2.8.1 development set was released as v2.8.2 in June 1999.
      The 2.8.2 development set was released as v2.8.3 in April 2000.
      The 2.8.3 development set was released as v2.8.4 in July 2001.
      The 2.8.4 development set was released as v2.8.5 in February 2004.
      The 2.8.5 development set was released as v2.8.6 in October 2006.
      The 2.8.6 development set was released as v2.8.7 in July 2009.
      The 2.8.7 development set was released as v2.8.8 in February 2014.
      The 2.8.8 development set was released as v2.8.9 in July 2018.

      Since early 1997, the Lynx code has expanded into autoconfigure and PC versions. The branching of the Lynx source base from a single source into two sources (FM/Foteos Macrides and ac/autoconfigure) should be considered a healthy synergism among groups of computer professionals acting in their spare time out of a common goal.

      Lynx has incorporated code from a variety of sources along the way. The earliest versions of Lynx included code from Earl Fogel of Computing Services at the University of Saskatchewan, who implemented HYPERREZ in the Unix environment. Those versions also incorporated libraries from the Unix Gopher clients developed at the University of Minnesota, and the later versions of Lynx rely on the WWW client library code developed by Tim Berners-Lee (and others) and the WWW community.

      Contributors have generally been acknowledged in the CHANGES file. Earlier CHANGES file can be found in the docs/ subdirectory of this distribution.

      Information on obtaining the most current version of Lynx is available at the current distribution page.

      [ToC]

      PK0]EElynx_help/about_lynx.htmlnu[ About Lynx – Who, What, and When – Where it is now

      [ About Lynx-Dev | Lynx-Dev Archives ]

      About Lynx

      Lynx is a fully-featured World Wide Web (WWW) browser for users on Unix, VMS, and other platforms running cursor-addressable, character-cell terminals or emulators. That includes vt100 terminals, other character-cell displays, and vt100 emulators such as Kermit or Procomm running on PCs or Macs.

      For information on how to use Lynx see the Lynx User's Guide, or the Lynx help files.

      Credits and Copyright

      Lynx was a product of the Distributed Computing Group within Academic Computing Services of The University of Kansas.

      Lynx was originally developed by Lou Montulli, Michael Grobe, and Charles Rezac. Garrett Blythe created DosLynx and later joined the Lynx effort as well. Following the departures of Lou and Garrett for positions at Netscape in the summer of 1994, Craig Lavender provided support services for Lynx, and Ravikumar Kolli for DosLynx.

      Lynx is maintained and supported by members of the Internet community coordinated via the lynx-dev mailing list.

      Lynx is derived from material copyrighted by the University of Kansas. However most of the release (and corresponding copyright) is the work of developers on the lynx-dev mailing list. It is distributed without restrictions on usage or redistribution under the GNU General Public License (Version 2).

      Lynx was built over an early version of the Common Code Library developed by the CERN WWW Project. That code is copyrighted by CERN. Lynx contains other sections of code that are copyrighted by other institutions or individuals. The Lynx copyright does not override or invalidate those copyrights.

      Thanks to Tim Berners-Lee and the other CERN World Wide Web wizards for the WWW client library code and all of their other work on the WWW project, NCSA and the Mosaic developers, and to everyone out in netland who has contributed to Lynx's development either directly (through comments or bug reports) or indirectly (through inspiration and development of other systems).

      Also, special thanks go to Foteos Macrides who ported much of Lynx to VMS and did much of its development following Lou Montulli's and Garrett Blythe's departures from the University of Kansas, and to Earl Fogel of the University of Saskatchewan. Earl implemented the hypertext engine HYPERREZ in the Unix environment. HYPERREZ was developed by Niel Larson of Think.com and served as the model for the early versions of Lynx which did not use the WWW libraries and had their own hypertext format.

      Availability

      Information on obtaining the most current version of Lynx is available via the Lynx homepage.

      Mailing List

      We have a mailing list for Lynx development discussion. If you are interested in joining the list, follow this link. There also are links to archives in html format for this mailing list.

      PK0]hDlynx_help/help_files.txtnu[# $LynxId: help_files.txt,v 1.12 2012/01/31 10:52:22 tom Exp $ # # Format: # KEYWORD=.html # No space is allowed. # # Usage: # ... href="@KEYWORD@">whatever keyword says # ... href="@KEYWORD@#section>... # ... href="../@KEYWORD#section>... # # Help files which are used in Lynx's help directory. # Each filename has to end with '.html' otherwise install-help will fail. # ABOUT_LYNX=about_lynx.html ALT_EDIT_HELP=alt_edit_help.html BASHLIKE_EDIT_HELP=bashlike_edit_help.html BOOKMARK_HELP=bookmark_help.html COOKIE_HELP=cookie_help.html DIRED_HELP=dired_help.html EDIT_HELP=edit_help.html ENVIRONMENTS=environments.html FOLLOW_HELP=follow_help.html GOPHER_TYPES_HELP=gopher_types_help.html HISTORY_HELP=history_help.html KEYSTROKE_HELP=keystroke_help.html LYNX_HELP_MAIN=lynx_help_main.html LYNX_URL_SUPPORT=lynx_url_support.html LYNX_USERS_GUIDE=Lynx_users_guide.html MOVEMENT_HELP=movement_help.html OPTION_HELP=option_help.html OTHER_HELP=other_help.html PRINT_HELP=print_help.html SCROLLING_HELP=scrolling_help.html TEST_DISPLAY=test_display.html VISITED_HELP=visited_help.html XTERM_HELP=xterm_help.html LYNX_DEV=lynx-dev.html PK0]2Wuulynx_help/lynx-dev.htmlnu[ Lynx-Dev Discussion List

      [ Lynx-Dev Archive | About Lynx ]

      The Lynx Development Process

      Lynx is maintained and improved by an international co-operative of volunteers. Newcomers are welcome to join the group: you need not be a super programmer, but you should be prepared to listen and learn, as well as to contribute patches if you can. Since everyone is a volunteer, you will usually be expected to try to implement any suggestions you make.

      Lynx-Dev Discussion List

      The developers communicate through a mailing list — see below for details — which is open to interested users as well as programmers. Topics include fixing bugs, increasing Lynx's tools and powers, meeting the ever-changing demands of the Internet and porting Lynx to new systems.

      Anyone may read what has been said on the list by visiting the Archive.

      Development Versions of Lynx

      Besides releases, which are stable versions of Lynx which come out once or twice a year and can be obtained from the release site, there are development versions, which are experimental — though usually stable enough to use — and appear every few weeks, depending on current activity.

      You can find the latest development version of Lynx by visiting the development site.

      Subscribing to Lynx-Dev

      If you are interested in joining the Lynx mailing list, send e-mail to  lynx-dev-request@nongnu.org with "subscribe" as the subject line.

      You will need to answer one follow-up question to confirm you want to subscribe. Mailman will then enroll you and send all messages which you address to lynx-dev@nongnu.org to all subscribers; you will also receive all messages sent by other subscribers.

      Unsubscribing from Lynx-Dev

      To unsubscribe, send an e-mail to  lynx-dev-request@nongnu.org with "unsubscribe" as the subject line.

      Casual Inquiries

      Anyone may ask a question or offer a comment by sending e-mail to  the list. Since all subscribers are volunteers, you depend on their goodwill and will be more likely to get a response if you give the e-mail a meaningful “Subject” and include details of your version of Lynx, hardware and software. You can check the Archive to find any responses.

      Messages from non-subscribers are not immediately distributed to avoid spam. Usually, if your message appears genuine, it will be retrieved from the pile headed for the wastebasket within a day or so and distributed to the list. For best results, subscribe as described above.

      The Lynx-Dev Archive

      Messages posted to lynx-dev are archived in html format so that you can view them using Lynx: go to the Mail Archive.

      PK0]1|<6<6test/cp-1252a.htmlnu[ Character table for cp-1252

      cp-1252 table

      Description                                 Code            Entity name   
      ===================================         ============    ==============
      quotation mark                              &#34;  --> "     &quot;   --> "
      ampersand                                   &#38;  --> &     &amp;    --> &
      less-than sign                              &#60;  --> <     &lt;     --> <
      greater-than sign                           &#62;  --> >     &gt;     --> >
      
      Description                            Char Code            Entity name   
      ===================================    ==== ============    ==============
      euro sign                                  &128; --> €
      undefined                                  &129; --> 
      single low-9 quotation mark                &130; --> ‚
      latin small letter f with hook             &131; --> ƒ
      double low-9 quotation mark                &132; --> „
      horizontal ellipsis                        &133; --> …
      dagger                                     &134; --> †
      double dagger                              &135; --> ‡
      modifier letter circumflex accent          &136; --> ˆ
      per mille sign                             &137; --> ‰
      latin capital letter s with caron          &138; --> Š
      single left-pointing angle quote mark      &139; --> ‹
      latin capital ligature oe                  &140; --> Œ
      undefined                                  &141; --> 
      latin capital letter z with caron          &142; --> Ž
      undefined                                  &143; --> 
      
      undefined                                  &144; --> 
      left single quotation mark                 &145; --> ‘
      right single quotation mark                &146; --> ’
      left double quotation mark                 &147; --> “
      right double quotation mark                &148; --> ”
      bullet                                     &149; --> •
      en dash                                    &150; --> –
      em dash                                    &151; --> —
      small tilde                                &152; --> ˜
      trade mark sign                            &153; --> ™
      latin small letter s with caron            &154; --> š
      single right-pointing angle quote mark     &155; --> ›
      latin small ligature oe                    &156; --> œ
      undefined                                  &157; --> 
      latin small letter z with caron            &158; --> ž
      latin capital letter y with diaeresis      &159; --> Ÿ
      
      non-breaking space                         &#160; -->      &nbsp;   -->  
      inverted exclamation                       &#161; --> ¡    &iexcl;  --> ¡
      cent sign                                  &#162; --> ¢    &cent;   --> ¢
      pound sterling                             &#163; --> £    &pound;  --> £
      general currency sign                      &#164; --> ¤    &curren; --> ¤
      yen sign                                   &#165; --> ¥    &yen;    --> ¥
      broken vertical bar                        &#166; --> ¦    &brvbar; --> ¦
      section sign                               &#167; --> §    &sect;   --> §
      umlaut (dieresis)                          &#168; --> ¨    &uml;    --> ¨
      copyright                                  &#169; --> ©    &copy;   --> ©
      feminine ordinal                           &#170; --> ª    &ordf;   --> ª
      left angle quote, guillemotleft            &#171; --> «    &laquo;  --> «
      not sign                                   &#172; --> ¬    &not;    --> ¬
      soft hyphen                                &#173; --> ­    &shy;    --> ­
      registered trademark                       &#174; --> ®    &reg;    --> ®
      macron accent                              &#175; --> ¯    &macr;   --> ¯
      
      degree sign                                &#176; --> °    &deg;    --> °
      plus or minus                              &#177; --> ±    &plusmn; --> ±
      superscript two                            &#178; --> ²    &sup2;   --> ²
      superscript three                          &#179; --> ³    &sup3;   --> ³
      acute accent                               &#180; --> ´    &acute;  --> ´
      micro sign                                 &#181; --> µ    &micro;  --> µ
      paragraph sign                             &#182; --> ¶    &para;   --> ¶
      middle dot                                 &#183; --> ·    &middot; --> ·
      cedilla                                    &#184; --> ¸    &cedil;  --> ¸
      superscript one                            &#185; --> ¹    &sup1;   --> ¹
      masculine ordinal                          &#186; --> º    &ordm;   --> º
      right angle quote, guillemotright          &#187; --> »    &raquo;  --> »
      vulgar fraction one-quarter                &#188; --> ¼    &frac14; --> ¼
      vulgar fraction one-half                   &#189; --> ½    &frac12; --> ½
      vulgar fraction three-fourths              &#190; --> ¾    &frac34; --> ¾
      inverted question mark                     &#191; --> ¿    &iquest; --> ¿
      
      latin capital letter a with grave          &#192; --> À    &Agrave; --> À
      latin capital letter a with acute          &#193; --> Á    &Aacute; --> Á
      latin capital letter a with circumflex     &#194; --> Â    &Acirc;  --> Â
      latin capital letter a with tilde          &#195; --> Ã    &Atilde; --> Ã
      latin capital letter a with diaeresis      &#196; --> Ä    &Auml;   --> Ä
      latin capital letter a with ring above     &#197; --> Å    &Aring;  --> Å
      latin capital letter ae                    &#198; --> Æ    &AElig;  --> Æ
      latin capital letter c with cedilla        &#199; --> Ç    &Ccedil; --> Ç
      latin capital letter e with grave          &#200; --> È    &Egrave; --> È
      latin capital letter e with acute          &#201; --> É    &Eacute; --> É
      latin capital letter e with circumflex     &#202; --> Ê    &Ecirc;  --> Ê
      latin capital letter e with diaeresis      &#203; --> Ë    &Euml;   --> Ë
      latin capital letter i with grave          &#204; --> Ì    &Igrave; --> Ì
      latin capital letter i with acute          &#205; --> Í    &Iacute; --> Í
      latin capital letter i with circumflex     &#206; --> Î    &Icirc;  --> Î
      latin capital letter i with diaeresis      &#207; --> Ï    &Iuml;   --> Ï
      
      latin capital letter eth                   &#208; --> Ð    &ETH;    --> Ð
      latin capital letter n with tilde          &#209; --> Ñ    &Ntilde; --> Ñ
      latin capital letter o with grave          &#210; --> Ò    &Ograve; --> Ò
      latin capital letter o with acute          &#211; --> Ó    &Oacute; --> Ó
      latin capital letter o with circumflex     &#212; --> Ô    &Ocirc;  --> Ô
      latin capital letter o with tilde          &#213; --> Õ    &Otilde; --> Õ
      latin capital letter o with diaeresis      &#214; --> Ö    &Ouml;   --> Ö
      multiplication sign                        &#215; --> ×    &times;  --> ×
      latin capital letter o with stroke         &#216; --> Ø    &Oslash; --> Ø
      latin capital letter u with grave          &#217; --> Ù    &Ugrave; --> Ù
      latin capital letter u with acute          &#218; --> Ú    &Uacute; --> Ú
      latin capital letter u with circumflex     &#219; --> Û    &Ucirc;  --> Û
      latin capital letter u with diaeresis      &#220; --> Ü    &Uuml;   --> Ü
      latin capital letter y with acute          &#221; --> Ý    &Yacute; --> Ý
      latin capital letter thorn                 &#222; --> Þ    &THORN;  --> Þ
      latin small letter sharp s                 &#223; --> ß    &szlig;  --> ß
      
      latin small letter a with grave            &#224; --> à    &agrave; --> à
      latin small letter a with acute            &#225; --> á    &aacute; --> á
      latin small letter a with circumflex       &#226; --> â    &acirc;  --> â
      latin small letter a with tilde            &#227; --> ã    &atilde; --> ã
      latin small letter a with diaeresis        &#228; --> ä    &auml;   --> ä
      latin small letter a with ring above       &#229; --> å    &aring;  --> å
      latin small letter ae                      &#230; --> æ    &aelig;  --> æ
      latin small letter c with cedilla          &#231; --> ç    &ccedil; --> ç
      latin small letter e with grave            &#232; --> è    &egrave; --> è
      latin small letter e with acute            &#233; --> é    &eacute; --> é
      latin small letter e with circumflex       &#234; --> ê    &ecirc;  --> ê
      latin small letter e with diaeresis        &#235; --> ë    &euml;   --> ë
      latin small letter i with grave            &#236; --> ì    &igrave; --> ì
      latin small letter i with acute            &#237; --> í    &iacute; --> í
      latin small letter i with circumflex       &#238; --> î    &icirc;  --> î
      latin small letter i with diaeresis        &#239; --> ï    &iuml;   --> ï
      
      latin small letter eth                     &#240; --> ð    &eth;    --> ð
      latin small letter n with tilde            &#241; --> ñ    &ntilde; --> ñ
      latin small letter o with grave            &#242; --> ò    &ograve; --> ò
      latin small letter o with acute            &#243; --> ó    &oacute; --> ó
      latin small letter o with circumflex       &#244; --> ô    &ocirc;  --> ô
      latin small letter o with tilde            &#245; --> õ    &otilde; --> õ
      latin small letter o with diaeresis        &#246; --> ö    &ouml;   --> ö
      division sign                              &#247; --> ÷    &divide; --> ÷
      latin small letter o with stroke           &#248; --> ø    &oslash; --> ø
      latin small letter u with grave            &#249; --> ù    &ugrave; --> ù
      latin small letter u with acute            &#250; --> ú    &uacute; --> ú
      latin small letter u with circumflex       &#251; --> û    &ucirc;  --> û
      latin small letter u with diaeresis        &#252; --> ü    &uuml;   --> ü
      latin small letter y with acute            &#253; --> ý    &yacute; --> ý
      latin small letter thorn                   &#254; --> þ    &thorn;  --> þ
      latin small letter y with diaeresis   {}  {&#255;}-->{ÿ}  {&yuml;}  -->{ÿ}
      
      Some other characters of interest      Char Code            Entity name   
      ===================================    ==== ============    ==============
      capital AE diphthong (ligature)        N/A  &#198; --> Æ    &AElig;  --> Æ
      small ae diphthong (ligature)          N/A  &#230; --> æ    &aelig;  --> æ
      capital OE ligature                    N/A {&#338;}-->{Œ}  {&OElig;} -->{Œ}
      small oe ligature                      N/A {&#339;}-->{œ}  {&oelig;} -->{œ}
      copyright                              N/A  &#169; --> ©    &copy;   --> ©
      registered trademark                   N/A  &#174; --> ®    &reg;    --> ®
      trademark sign                         N/A  &#8482;--> ™   &trade;  --> ™
      em space                               N/A [&#8195;]->[ ] [&emsp;]  -->[ ]
      en space                               N/A [&#8194;]->[ ] [&ensp;]  -->[ ]
      1/3-em space                           N/A [&#8196;]->[ ] [&emsp13;] -->[ ]
      1/4-em space                           N/A [&#8197;]->[ ] [&emsp14;] -->[ ]
      thin space                             N/A [&#8201;]->[ ] [&thinsp;]-->[ ]
      hair space                             N/A [&#8202;]->[ ] [&hairsp;]-->[ ]
      em dash                                N/A [&#8212;]->[—] [&mdash;] -->[—]
      en dash                                N/A [&#8211;]->[–] [&ndash;] -->[–]
      
      
      PK0]test/quickbrown.htmlnu[ Markus Kuhn's quick-brown-fox UTF-8 demo
      Sentences that contain all letters commonly used in a language
      --------------------------------------------------------------
      
      Markus Kuhn <mkuhn@acm.org> -- 1998-11-30
      
      This file was UTF-8 encoded.
      
      
      German (de)
      -----------
      
        Falsches Üben von Xylophonmusik quält jeden größeren Zwerg
        (= Wrongful practicing of xylophone music tortures every larger dwarf)
      
        Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich
        (= Twelve boxing fighters hunted Eva across the dike of Sylt)
      
        Heizölrückstoßabdämpfung
        (= fuel oil recoil absorber) (jqvwxy missing, but all non-ASCII letters in one word)
      
      English (en)
      ------------
      
        The quick brown fox jumps over the lazy dog
      
      French (fr)
      -----------
      
        Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à
        côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce qui lui
        permet de penser à la cænogenèse de l'être dont il est question dans la
        cause ambiguë entendue à Moÿ, dans un capharnaüm qui, pense-t-il, diminue
        çà et là la qualité de son œuvre. 
      
        l'île exiguë
        Où l'obèse jury mûr
        Fête l'haï volapük,
        Âne ex aéquo au whist,
        Ôtez ce vœu déçu.
      
        Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en
        canoë au delà des îles, près du mälström où brûlent les novæ.
      
      Irish Gaelic (ga)
      -----------------
      
        D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh
      
      Icelandic (is)
      --------------
      
        Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa
      
        Sævör grét áðan því úlpan var ónýt
        (some ASCII letters missing)
      
      Hebrew (iw)
      -----------
      
        דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה?
      
      Polish (pl)
      -----------
      
        Pchnąć w tę łódź jeża lub ośm skrzyń fig
      
      Russian (ru)
      ------------
      
        В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!
        (= Would a citrus live in the bushes of south? Yes, but a only a fake!)
      
      
      Please let me know if you find others! Special thanks to the people
      from all over the world who contributed these sentences.
      
      
      See also: PK0] fgb%% test/c1.htmlnu[ Test of invalid NCRs 128-159

      Test of invalid NCRs 128-159

      Authoring tools on MS Windows, in particular MS FrontPage ("WYSIWYG" HTML editor), generate invalid Numerical Character References for characters commonly found in positions 128...159 (0x80...0x9f) in Windows fonts. Although these are valid codepoints for windows-1252 (and other windows-xxxx) charsets, valid NCRs always refer to the document character set in the SGML sense, not to the character encoding scheme (or charset). For HTML, the SGML document character set is fixed, it is always a subset of Unicode (or ISO 10646). In Unicode and its iso-8859-1 subset, values 128...159 are C1 control characters, they must not appear in HTML. Valid NCRs for the intended characters use Unicode values greater than 256.

      Lynx tries to interpret some of the invalid codes, by assuming that they are windows-1252 codepoints.

       
       
      You may want to press '\' to view the source of this test. 
       
      Code      invalid NCR     valid NCR, description 
              normal   in ALT  				 
                                   
      0x80    €	€ €	#EURO SIGN 
      0x81    	 	#NOT USED 
      0x82    ‚	‚ ‚	#SINGLE LOW-9 QUOTATION MARK 
      0x83    ƒ	ƒ ƒ	#LATIN SMALL LETTER F WITH HOOK 
      0x84    „	„ „	#DOUBLE LOW-9 QUOTATION MARK 
      0x85    …	… …	#HORIZONTAL ELLIPSIS 
      0x86    †	† †	#DAGGER 
      0x87    ‡	‡ ‡	#DOUBLE DAGGER 
      0x88    ˆ	ˆ ˆ	#MODIFIER LETTER CIRCUMFLEX ACCENT 
      0x89    ‰	‰ ‰	#PER MILLE SIGN 
      0x8a    Š	Š Š	#LATIN CAPITAL LETTER S WITH CARON 
      0x8b    ‹	‹ ‹	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK 
      0x8c    Œ	Œ Œ	#LATIN CAPITAL LIGATURE OE 
      0x8d    	 	#NOT USED 
      0x8e    Ž	Ž 	#NOT USED 
      0x8f    	 	#NOT USED 
      0x90    	 	#NOT USED 
      0x91    ‘	‘ ‘	#LEFT SINGLE QUOTATION MARK 
      0x92    ’	’ ’	#RIGHT SINGLE QUOTATION MARK 
      0x93    “	“ “	#LEFT DOUBLE QUOTATION MARK 
      0x94    ”	” ”	#RIGHT DOUBLE QUOTATION MARK 
      0x95    •	• •	#BULLET 
      0x96    –	– –	#EN DASH 
      0x97    —	— —	#EM DASH 
      0x98    ˜	˜ ˜	#SMALL TILDE 
      0x99    ™	™ ™	#TRADE MARK SIGN 
      0x9a    š	š š	#LATIN SMALL LETTER S WITH CARON 
      0x9b    ›	› ›	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 
      0x9c    œ	œ œ	#LATIN SMALL LIGATURE OE 
      0x9d    	 	#NOT USED 
      0x9e    ž	ž 	#NOT USED 
      0x9f    Ÿ	Ÿ Ÿ	#LATIN CAPITAL LETTER Y WITH DIAERESIS 
       
      
      PK0]+Ikktest/special_urls.htmlnu[ Lynx Special URLs

      Lynx Special URLs

      LYNXCFG:LYNXCFG (ok)
      LYNXCOMPILEOPTS:LYNXCOMPILEOPTS (ok)
      LYNXCOOKIE:LYNXCOOKIE is not allowed
      LYNXDIRED:LYNXDIRED is not allowed
      LYNXDOWNLOAD:LYNXDOWNLOAD is not allowed
      LYNXHIST:LYNXHIST is not allowed
      LYNXIMGMAP:LYNXIMGMAP is not allowed
      LYNXKEYMAP:LYNXKEYMAP (ok)
      LYNXMESSAGES:LYNXMESSAGES (ok)
      LYNXOPTIONS:LYNXOPTIONS (ok)
      LYNXPRINT:LYNXPRINT is not allowed
      PK0]:p, , test/spaces.htmlnu[ Test of some symbols You may press '\' to view the source of this test
      UNICODE NCR alt-NCR named alt-named

      0x2000 [ ] [ ] # EN QUAD
      0x2001 [ ] [ ] # EM QUAD
      0x2002 [ ] [ ] [ ] [ ] # EN SPACE
      0x2003 [ ] [ ] [ ] [ ] # EM SPACE
      0x2004 [ ] [ ] [ ] [ ] # THREE-PER-EM SPACE
      0x2005 [ ] [ ] [ ] [ ] # FOUR-PER-EM SPACE
      0x2007 [ ] [ ] [ ] [ ] # FIGURE SPACE
      0x2008 [ ] [ ] [ ] [ ] # PUNCTUATION SPACE
      0x2009 [ ] [ ] [ ] [ ] # THIN SPACE
      0x200A [ ] [ ] [ ] [ ] # HAIR SPACE
      0x200C [‌] [‌] [‌] [‌] # ZERO WIDTH NON-JOINER
      0x200D [‍] [‍] [‍] [‍] # ZERO WIDTH JOINER
      0x200E [‎] [‎] [‎] [‎] # LEFT-TO-RIGHT MARK
      0x200F [‏] [‏] [‏] [‏] # RIGHT-TO-LEFT MARK
      0x2010 [‐] [‐] [‐] [‐] # HYPHEN
      0x2013 [–] [–] [–] [–] # EN DASH
      0x2014 [—] [—] [—] [—] # EM DASH

PK0]G4=4=test/koi8-r.htmlnu[ Test of the KOI8-R symbols

    This table prepared from KOI8-R.TXT available at ftp.unicode.org

         ftp://ftp.unicode.org/MAPPINGS/VENDORS/MISC/KOI8-R.TXT
         (if doing ftp, try cd Public/MAPPINGS/VENDORS/MISC)


original comment:

#
#       Name:             KOI8-R (RFC1489) to Unicode
#       Unicode version:  3.0
#       Table version:    1.0
#       Table format:     Format A
#       Date:             18 August 1999
#       Authors:          Helmut Richter <richter@lrz.de>
#
#       Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
#
#       This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
#       No claims are made as to fitness for any particular purpose.  No
#       warranties of any kind are expressed or implied.  The recipient
#       agrees to determine applicability of information provided.  If this
#       file has been provided on optical media by Unicode, Inc., the sole
#       remedy for any claim will be exchange of defective media within 90
#       days of receipt.
#
#       Unicode, Inc. hereby grants the right to freely use the information
#       supplied in this file in the creation of products supporting the
#       Unicode Standard, and to make copies of this file in any form for
#       internal or external distribution as long as this notice remains
#       attached.
#
#       General notes:
#
#       This table contains the data the Unicode Consortium has on how
#       KOI8-R characters map into Unicode. The underlying document is the
#       mapping described in RFC 1489. No statements are made as to whether
#       this mapping is the same as the mapping defined as "Code Page 878"
#       with some vendors.
#
#       Format:  Three tab-separated columns
#                Column #1 is the KOI8-R code (in hex as 0xXX)
#                Column #2 is the Unicode (in hex as 0xXXXX)
#                Column #3 the Unicode name (follows a comment sign, '#')
#
#       The entries are in KOI8-R order.
#
#       Version history
#       1.0 version: created.
#
#       Any comments or problems, contact <errata@unicode.org>
#       Please note that <errata@unicode.org> is an archival address;
#       notices will be checked, but do not expect an immediate response.
#
0x00    0x0000 "�"	  # NULL
0x01    0x0001 ""	  # START OF HEADING
0x02    0x0002 ""	  # START OF TEXT
0x03    0x0003 ""	  # END OF TEXT
0x04    0x0004 ""	  # END OF TRANSMISSION
0x05    0x0005 ""	  # ENQUIRY
0x06    0x0006 ""	  # ACKNOWLEDGE
0x07    0x0007 ""	  # BELL
0x08    0x0008 ""	  # BACKSPACE
0x09    0x0009 "	"	  # HORIZONTAL TABULATION
0x0A    0x000A "
"	  # LINE FEED
0x0B    0x000B ""	  # VERTICAL TABULATION
0x0C    0x000C ""	  # FORM FEED
0x0D    0x000D "
"	  # CARRIAGE RETURN
0x0E    0x000E ""	  # SHIFT OUT
0x0F    0x000F ""	  # SHIFT IN
0x10    0x0010 ""	  # DATA LINK ESCAPE
0x11    0x0011 ""	  # DEVICE CONTROL ONE
0x12    0x0012 ""	  # DEVICE CONTROL TWO
0x13    0x0013 ""	  # DEVICE CONTROL THREE
0x14    0x0014 ""	  # DEVICE CONTROL FOUR
0x15    0x0015 ""	  # NEGATIVE ACKNOWLEDGE
0x16    0x0016 ""	  # SYNCHRONOUS IDLE
0x17    0x0017 ""	  # END OF TRANSMISSION BLOCK
0x18    0x0018 ""	  # CANCEL
0x19    0x0019 ""	  # END OF MEDIUM
0x1A    0x001A ""	  # SUBSTITUTE
0x1B    0x001B ""	  # ESCAPE
0x1C    0x001C ""	  # FILE SEPARATOR
0x1D    0x001D ""	  # GROUP SEPARATOR
0x1E    0x001E ""	  # RECORD SEPARATOR
0x1F    0x001F ""	  # UNIT SEPARATOR
0x20    0x0020 " "	  # SPACE
0x21    0x0021 "!"	  # EXCLAMATION MARK
0x22    0x0022 """	  # QUOTATION MARK
0x23    0x0023 "#"	  # NUMBER SIGN
0x24    0x0024 "$"	  # DOLLAR SIGN
0x25    0x0025 "%"	  # PERCENT SIGN
0x26    0x0026 "&"	  # AMPERSAND
0x27    0x0027 "'"	  # APOSTROPHE
0x28    0x0028 "("	  # LEFT PARENTHESIS
0x29    0x0029 ")"	  # RIGHT PARENTHESIS
0x2A    0x002A "*"	  # ASTERISK
0x2B    0x002B "+"	  # PLUS SIGN
0x2C    0x002C ","	  # COMMA
0x2D    0x002D "-"	  # HYPHEN-MINUS
0x2E    0x002E "."	  # FULL STOP
0x2F    0x002F "/"	  # SOLIDUS
0x30    0x0030 "0"	  # DIGIT ZERO
0x31    0x0031 "1"	  # DIGIT ONE
0x32    0x0032 "2"	  # DIGIT TWO
0x33    0x0033 "3"	  # DIGIT THREE
0x34    0x0034 "4"	  # DIGIT FOUR
0x35    0x0035 "5"	  # DIGIT FIVE
0x36    0x0036 "6"	  # DIGIT SIX
0x37    0x0037 "7"	  # DIGIT SEVEN
0x38    0x0038 "8"	  # DIGIT EIGHT
0x39    0x0039 "9"	  # DIGIT NINE
0x3A    0x003A ":"	  # COLON
0x3B    0x003B ";"	  # SEMICOLON
0x3C    0x003C "<"	  # LESS-THAN SIGN
0x3D    0x003D "="	  # EQUALS SIGN
0x3E    0x003E ">"	  # GREATER-THAN SIGN
0x3F    0x003F "?"	  # QUESTION MARK
0x40    0x0040 "@"	  # COMMERCIAL AT
0x41    0x0041 "A"	  # LATIN CAPITAL LETTER A
0x42    0x0042 "B"	  # LATIN CAPITAL LETTER B
0x43    0x0043 "C"	  # LATIN CAPITAL LETTER C
0x44    0x0044 "D"	  # LATIN CAPITAL LETTER D
0x45    0x0045 "E"	  # LATIN CAPITAL LETTER E
0x46    0x0046 "F"	  # LATIN CAPITAL LETTER F
0x47    0x0047 "G"	  # LATIN CAPITAL LETTER G
0x48    0x0048 "H"	  # LATIN CAPITAL LETTER H
0x49    0x0049 "I"	  # LATIN CAPITAL LETTER I
0x4A    0x004A "J"	  # LATIN CAPITAL LETTER J
0x4B    0x004B "K"	  # LATIN CAPITAL LETTER K
0x4C    0x004C "L"	  # LATIN CAPITAL LETTER L
0x4D    0x004D "M"	  # LATIN CAPITAL LETTER M
0x4E    0x004E "N"	  # LATIN CAPITAL LETTER N
0x4F    0x004F "O"	  # LATIN CAPITAL LETTER O
0x50    0x0050 "P"	  # LATIN CAPITAL LETTER P
0x51    0x0051 "Q"	  # LATIN CAPITAL LETTER Q
0x52    0x0052 "R"	  # LATIN CAPITAL LETTER R
0x53    0x0053 "S"	  # LATIN CAPITAL LETTER S
0x54    0x0054 "T"	  # LATIN CAPITAL LETTER T
0x55    0x0055 "U"	  # LATIN CAPITAL LETTER U
0x56    0x0056 "V"	  # LATIN CAPITAL LETTER V
0x57    0x0057 "W"	  # LATIN CAPITAL LETTER W
0x58    0x0058 "X"	  # LATIN CAPITAL LETTER X
0x59    0x0059 "Y"	  # LATIN CAPITAL LETTER Y
0x5A    0x005A "Z"	  # LATIN CAPITAL LETTER Z
0x5B    0x005B "["	  # LEFT SQUARE BRACKET
0x5C    0x005C "\"	  # REVERSE SOLIDUS
0x5D    0x005D "]"	  # RIGHT SQUARE BRACKET
0x5E    0x005E "^"	  # CIRCUMFLEX ACCENT
0x5F    0x005F "_"	  # LOW LINE
0x60    0x0060 "`"	  # GRAVE ACCENT
0x61    0x0061 "a"	  # LATIN SMALL LETTER A
0x62    0x0062 "b"	  # LATIN SMALL LETTER B
0x63    0x0063 "c"	  # LATIN SMALL LETTER C
0x64    0x0064 "d"	  # LATIN SMALL LETTER D
0x65    0x0065 "e"	  # LATIN SMALL LETTER E
0x66    0x0066 "f"	  # LATIN SMALL LETTER F
0x67    0x0067 "g"	  # LATIN SMALL LETTER G
0x68    0x0068 "h"	  # LATIN SMALL LETTER H
0x69    0x0069 "i"	  # LATIN SMALL LETTER I
0x6A    0x006A "j"	  # LATIN SMALL LETTER J
0x6B    0x006B "k"	  # LATIN SMALL LETTER K
0x6C    0x006C "l"	  # LATIN SMALL LETTER L
0x6D    0x006D "m"	  # LATIN SMALL LETTER M
0x6E    0x006E "n"	  # LATIN SMALL LETTER N
0x6F    0x006F "o"	  # LATIN SMALL LETTER O
0x70    0x0070 "p"	  # LATIN SMALL LETTER P
0x71    0x0071 "q"	  # LATIN SMALL LETTER Q
0x72    0x0072 "r"	  # LATIN SMALL LETTER R
0x73    0x0073 "s"	  # LATIN SMALL LETTER S
0x74    0x0074 "t"	  # LATIN SMALL LETTER T
0x75    0x0075 "u"	  # LATIN SMALL LETTER U
0x76    0x0076 "v"	  # LATIN SMALL LETTER V
0x77    0x0077 "w"	  # LATIN SMALL LETTER W
0x78    0x0078 "x"	  # LATIN SMALL LETTER X
0x79    0x0079 "y"	  # LATIN SMALL LETTER Y
0x7A    0x007A "z"	  # LATIN SMALL LETTER Z
0x7B    0x007B "{"	  # LEFT CURLY BRACKET
0x7C    0x007C "|"	  # VERTICAL LINE
0x7D    0x007D "}"	  # RIGHT CURLY BRACKET
0x7E    0x007E "~"	  # TILDE
0x7F    0x007F ""	  # DELETE
0x80    0x2500 "─"	  # BOX DRAWINGS LIGHT HORIZONTAL
0x81    0x2502 "│"	  # BOX DRAWINGS LIGHT VERTICAL
0x82    0x250C "┌"	  # BOX DRAWINGS LIGHT DOWN AND RIGHT
0x83    0x2510 "┐"	  # BOX DRAWINGS LIGHT DOWN AND LEFT
0x84    0x2514 "└"	  # BOX DRAWINGS LIGHT UP AND RIGHT
0x85    0x2518 "┘"	  # BOX DRAWINGS LIGHT UP AND LEFT
0x86    0x251C "├"	  # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0x87    0x2524 "┤"	  # BOX DRAWINGS LIGHT VERTICAL AND LEFT
0x88    0x252C "┬"	  # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0x89    0x2534 "┴"	  # BOX DRAWINGS LIGHT UP AND HORIZONTAL
0x8A    0x253C "┼"	  # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0x8B    0x2580 "▀"	  # UPPER HALF BLOCK
0x8C    0x2584 "▄"	  # LOWER HALF BLOCK
0x8D    0x2588 "█"	  # FULL BLOCK
0x8E    0x258C "▌"	  # LEFT HALF BLOCK
0x8F    0x2590 "▐"	  # RIGHT HALF BLOCK
0x90    0x2591 "░"	  # LIGHT SHADE
0x91    0x2592 "▒"	  # MEDIUM SHADE
0x92    0x2593 "▓"	  # DARK SHADE
0x93    0x2320 "⌠"	  # TOP HALF INTEGRAL
0x94    0x25A0 "■"	  # BLACK SQUARE
0x95    0x2219 "∙"	  # BULLET OPERATOR
0x96    0x221A "√"	  # SQUARE ROOT
0x97    0x2248 "≈"	  # ALMOST EQUAL TO
0x98    0x2264 "≤"	  # LESS-THAN OR EQUAL TO
0x99    0x2265 "≥"	  # GREATER-THAN OR EQUAL TO
0x9A    0x00A0 " "	  # NO-BREAK SPACE
0x9B    0x2321 "⌡"	  # BOTTOM HALF INTEGRAL
0x9C    0x00B0 "°"	  # DEGREE SIGN
0x9D    0x00B2 "²"	  # SUPERSCRIPT TWO
0x9E    0x00B7 "·"	  # MIDDLE DOT
0x9F    0x00F7 "÷"	  # DIVISION SIGN
0xA0    0x2550 "═"	  # BOX DRAWINGS DOUBLE HORIZONTAL
0xA1    0x2551 "║"	  # BOX DRAWINGS DOUBLE VERTICAL
0xA2    0x2552 "╒"	  # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xA3    0x0451 "ё"	  # CYRILLIC SMALL LETTER IO
0xA4    0x2553 "╓"	  # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xA5    0x2554 "╔"	  # BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xA6    0x2555 "╕"	  # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xA7    0x2556 "╖"	  # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xA8    0x2557 "╗"	  # BOX DRAWINGS DOUBLE DOWN AND LEFT
0xA9    0x2558 "╘"	  # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xAA    0x2559 "╙"	  # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xAB    0x255A "╚"	  # BOX DRAWINGS DOUBLE UP AND RIGHT
0xAC    0x255B "╛"	  # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xAD    0x255C "╜"	  # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xAE    0x255D "╝"	  # BOX DRAWINGS DOUBLE UP AND LEFT
0xAF    0x255E "╞"	  # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xB0    0x255F "╟"	  # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xB1    0x2560 "╠"	  # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xB2    0x2561 "╡"	  # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xB3    0x0401 "Ё"	  # CYRILLIC CAPITAL LETTER IO
0xB4    0x2562 "╢"	  # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xB5    0x2563 "╣"	  # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xB6    0x2564 "╤"	  # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xB7    0x2565 "╥"	  # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xB8    0x2566 "╦"	  # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xB9    0x2567 "╧"	  # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xBA    0x2568 "╨"	  # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xBB    0x2569 "╩"	  # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xBC    0x256A "╪"	  # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xBD    0x256B "╫"	  # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xBE    0x256C "╬"	  # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xBF    0x00A9 "©"	  # COPYRIGHT SIGN
0xC0    0x044E "ю"	  # CYRILLIC SMALL LETTER YU
0xC1    0x0430 "а"	  # CYRILLIC SMALL LETTER A
0xC2    0x0431 "б"	  # CYRILLIC SMALL LETTER BE
0xC3    0x0446 "ц"	  # CYRILLIC SMALL LETTER TSE
0xC4    0x0434 "д"	  # CYRILLIC SMALL LETTER DE
0xC5    0x0435 "е"	  # CYRILLIC SMALL LETTER IE
0xC6    0x0444 "ф"	  # CYRILLIC SMALL LETTER EF
0xC7    0x0433 "г"	  # CYRILLIC SMALL LETTER GHE
0xC8    0x0445 "х"	  # CYRILLIC SMALL LETTER HA
0xC9    0x0438 "и"	  # CYRILLIC SMALL LETTER I
0xCA    0x0439 "й"	  # CYRILLIC SMALL LETTER SHORT I
0xCB    0x043A "к"	  # CYRILLIC SMALL LETTER KA
0xCC    0x043B "л"	  # CYRILLIC SMALL LETTER EL
0xCD    0x043C "м"	  # CYRILLIC SMALL LETTER EM
0xCE    0x043D "н"	  # CYRILLIC SMALL LETTER EN
0xCF    0x043E "о"	  # CYRILLIC SMALL LETTER O
0xD0    0x043F "п"	  # CYRILLIC SMALL LETTER PE
0xD1    0x044F "я"	  # CYRILLIC SMALL LETTER YA
0xD2    0x0440 "р"	  # CYRILLIC SMALL LETTER ER
0xD3    0x0441 "с"	  # CYRILLIC SMALL LETTER ES
0xD4    0x0442 "т"	  # CYRILLIC SMALL LETTER TE
0xD5    0x0443 "у"	  # CYRILLIC SMALL LETTER U
0xD6    0x0436 "ж"	  # CYRILLIC SMALL LETTER ZHE
0xD7    0x0432 "в"	  # CYRILLIC SMALL LETTER VE
0xD8    0x044C "ь"	  # CYRILLIC SMALL LETTER SOFT SIGN
0xD9    0x044B "ы"	  # CYRILLIC SMALL LETTER YERU
0xDA    0x0437 "з"	  # CYRILLIC SMALL LETTER ZE
0xDB    0x0448 "ш"	  # CYRILLIC SMALL LETTER SHA
0xDC    0x044D "э"	  # CYRILLIC SMALL LETTER E
0xDD    0x0449 "щ"	  # CYRILLIC SMALL LETTER SHCHA
0xDE    0x0447 "ч"	  # CYRILLIC SMALL LETTER CHE
0xDF    0x044A "ъ"	  # CYRILLIC SMALL LETTER HARD SIGN
0xE0    0x042E "Ю"	  # CYRILLIC CAPITAL LETTER YU
0xE1    0x0410 "А"	  # CYRILLIC CAPITAL LETTER A
0xE2    0x0411 "Б"	  # CYRILLIC CAPITAL LETTER BE
0xE3    0x0426 "Ц"	  # CYRILLIC CAPITAL LETTER TSE
0xE4    0x0414 "Д"	  # CYRILLIC CAPITAL LETTER DE
0xE5    0x0415 "Е"	  # CYRILLIC CAPITAL LETTER IE
0xE6    0x0424 "Ф"	  # CYRILLIC CAPITAL LETTER EF
0xE7    0x0413 "Г"	  # CYRILLIC CAPITAL LETTER GHE
0xE8    0x0425 "Х"	  # CYRILLIC CAPITAL LETTER HA
0xE9    0x0418 "И"	  # CYRILLIC CAPITAL LETTER I
0xEA    0x0419 "Й"	  # CYRILLIC CAPITAL LETTER SHORT I
0xEB    0x041A "К"	  # CYRILLIC CAPITAL LETTER KA
0xEC    0x041B "Л"	  # CYRILLIC CAPITAL LETTER EL
0xED    0x041C "М"	  # CYRILLIC CAPITAL LETTER EM
0xEE    0x041D "Н"	  # CYRILLIC CAPITAL LETTER EN
0xEF    0x041E "О"	  # CYRILLIC CAPITAL LETTER O
0xF0    0x041F "П"	  # CYRILLIC CAPITAL LETTER PE
0xF1    0x042F "Я"	  # CYRILLIC CAPITAL LETTER YA
0xF2    0x0420 "Р"	  # CYRILLIC CAPITAL LETTER ER
0xF3    0x0421 "С"	  # CYRILLIC CAPITAL LETTER ES
0xF4    0x0422 "Т"	  # CYRILLIC CAPITAL LETTER TE
0xF5    0x0423 "У"	  # CYRILLIC CAPITAL LETTER U
0xF6    0x0416 "Ж"	  # CYRILLIC CAPITAL LETTER ZHE
0xF7    0x0412 "В"	  # CYRILLIC CAPITAL LETTER VE
0xF8    0x042C "Ь"	  # CYRILLIC CAPITAL LETTER SOFT SIGN
0xF9    0x042B "Ы"	  # CYRILLIC CAPITAL LETTER YERU
0xFA    0x0417 "З"	  # CYRILLIC CAPITAL LETTER ZE
0xFB    0x0428 "Ш"	  # CYRILLIC CAPITAL LETTER SHA
0xFC    0x042D "Э"	  # CYRILLIC CAPITAL LETTER E
0xFD    0x0429 "Щ"	  # CYRILLIC CAPITAL LETTER SHCHA
0xFE    0x0427 "Ч"	  # CYRILLIC CAPITAL LETTER CHE
0xFF    0x042A "Ъ"	  # CYRILLIC CAPITAL LETTER HARD SIGN
PK0]L^R R test/test-styles.htmlnu[ Test Color-Styles

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Heading 1 - Ordinary Text

Heading 2 - Fontlike Text

This is b (bold).
This is big.
This is blink.
This is i (italicized).
This is small.
This is strike.
This is tt (typewriter).
This is u (underlined).

Heading 2 - Emphasized Text

This is cite (citation).
This is code.
This is del.
This is dfn (definition).
This is emphasized.
This is ins.
This is kbd (keyboard).
This is q (quoted).
This is samp (sample).
This is span.
This is strong.
This is var.

Heading 1 - Ordinary Links

This is a link to fontlike text.
This is a link to emphasized text.

Heading 1 - Emphasized Links

Heading 2 - Fontlike Links


This is b (bold) link.
This is big link.
This is blink link.
This is i (italicized) link.
This is small link.
This is strike link.
This is tt (typewriter) link.
This is u (underlined) link.

Heading 2 - Emphasized Links

This is cite (citation) link.
This is code link.
This is del link.
This is dfn (definition) link.
This is emphasized link.
This is ins link.
This is kbd (keyboard) link.
This is q (quoted) link.
This is samp (sample) link.
This is span link.
This is strong link.
This is var link. PK0]xvCtest/sgml.htmlnu[ Test of some Unicode symbols enclosed as SGML entity names

    This table prepared from SGML.TXT available at ftp.unicode.org

         ftp://ftp.unicode.org/MAPPINGS/VENDORS/MISC/SGML.TXT
         (if doing ftp, try cd Public/MAPPINGS/VENDORS/MISC)


original comment:

# Author: John Cowan <cowan@ccil.org>
# Date: 25 July 1997
#
# The following table maps SGML character entities from various
# public sets (namely, ISOamsa, ISOamsb, ISOamsc, ISOamsn, ISOamso,
# ISOamsr, ISObox, ISOcyr1, ISOcyr2, ISOdia, ISOgrk1, ISOgrk2,
# ISOgrk3, ISOgrk4, ISOlat1, ISOlat2, ISOnum, ISOpub, ISOtech,
# HTMLspecial, HTMLsymbol) to corresponding Unicode characters.
#
# The table has four tab-separated columns:
#	Column 1: SGML character entity name
#	Column 2: SGML public entity set
#	Column 3: Unicode 2.0 character code
#	Column 4: Unicode 2.0 character name (UPPER CASE)
# Entries which don't have Unicode equivalents have "0x????"
# in Column 3 and a lower case description (from the public entity
# set DTD) in Column 4.  The mapping is not reversible, because many
# distinctions are unified away in Unicode, particularly between
# mathematical symbols.
#
# The table is sorted case-blind by SGML character entity name.
#
# The contents of this table are drawn from various sources, and
# are in the public domain.
#


This test illuminates SGML character entities implementation in your browser.
We sort the entities according to unicode numbers.
You should see visible character if your display character set supports it
or some substitution string picked up from  src/chrtrans/def7_uni.tbl.
If you see &somename; - this name is not implemented yet,
you may search for &. (Sorry, ISOgrk4 which holds a dot in its name
seems to be nonvisible for most browsers.  Keep in mind that
this table is much wider than in the HTML 4.0 draft).
							Leonid Pauzner.


0x0021    !	      ISOnum	# EXCLAMATION MARK
0x0022    "	      ISOnum	# QUOTATION MARK
0x0023    #	      ISOnum	# NUMBER SIGN
0x0024    $	      ISOnum	# DOLLAR SIGN
0x0025    %	      ISOnum	# PERCENT SIGN
0x0026    &	      ISOnum	# AMPERSAND
0x0028    (	      ISOnum	# LEFT PARENTHESIS
0x0029    )	      ISOnum	# RIGHT PARENTHESIS
0x002A    *	      ISOnum	# ASTERISK
0x002B    +	      ISOnum	# PLUS SIGN
0x002C    ,	      ISOnum	# COMMA
0x002D    ‐	      ISOnum	# HYPHEN-MINUS
0x002E    .	      ISOnum	# FULL STOP
0x002F    /	      ISOnum	# SOLIDUS
0x003A    :	      ISOnum	# COLON
0x003B    ;	      ISOnum	# SEMICOLON
0x003C    <	      ISOnum	# LESS-THAN SIGN
0x003D    =	      ISOnum	# EQUALS SIGN
0x003E    >	      ISOnum	# GREATER-THAN SIGN
0x003F    ?	      ISOnum	# QUESTION MARK
0x0040    @	      ISOnum	# COMMERCIAL AT
0x005B    [	      ISOnum	# LEFT SQUARE BRACKET
0x005C    \	      ISOnum	# REVERSE SOLIDUS
0x005C    &sbsol;	      ISOamso	# REVERSE SOLIDUS
0x005D    ]	      ISOnum	# RIGHT SQUARE BRACKET
0x005F    _	      ISOnum	# LOW LINE
0x0060    `	      ISOdia	# GRAVE ACCENT
0x007B    {	      ISOnum	# LEFT CURLY BRACKET
0x007C    |	      ISOnum	# VERTICAL LINE
0x007D    }	      ISOnum	# RIGHT CURLY BRACKET
0x00A0     	      ISOnum	# NO-BREAK SPACE
0x00A1    ¡	      ISOnum	# INVERTED EXCLAMATION MARK
0x00A2    ¢	      ISOnum	# CENT SIGN
0x00A3    £	      ISOnum	# POUND SIGN
0x00A4    ¤	      ISOnum	# CURRENCY SIGN
0x00A5    ¥	      ISOnum	# YEN SIGN
0x00A6    ¦	      ISOnum	# BROKEN BAR
0x00A7    §	      ISOnum	# SECTION SIGN
0x00A8    ¨	      ISOtech	# DIAERESIS
0x00A8    ¨	      ISOdia	# DIAERESIS
0x00A8    ¨	      ISOdia	# DIAERESIS
0x00A9    ©	      ISOnum	# COPYRIGHT SIGN
0x00AA    ª	      ISOnum	# FEMININE ORDINAL INDICATOR
0x00AB    «	      ISOnum	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0x00AC    ¬	      ISOnum	# NOT SIGN
0x00AD    ­	      ISOnum	# SOFT HYPHEN
0x00AE    ®	      ISOnum	# REGISTERED SIGN
0x00AF    ¯	      ISOdia	# MACRON
0x00B0    °	      ISOnum	# DEGREE SIGN
0x00B1    ±	      ISOnum	# PLUS-MINUS SIGN
0x00B2    ²	      ISOnum	# SUPERSCRIPT TWO
0x00B3    ³	      ISOnum	# SUPERSCRIPT THREE
0x00B4    ´	      ISOdia	# ACUTE ACCENT
0x00B5    µ	      ISOnum	# MICRO SIGN
0x00B6    ¶	      ISOnum	# PILCROW SIGN
0x00B7    ·	      ISOnum	# MIDDLE DOT
0x00B8    ¸	      ISOdia	# CEDILLA
0x00B9    ¹	      ISOnum	# SUPERSCRIPT ONE
0x00BA    º	      ISOnum	# MASCULINE ORDINAL INDICATOR
0x00BB    »	      ISOnum	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0x00BC    ¼	      ISOnum	# VULGAR FRACTION ONE QUARTER
0x00BD    ½	      ISOnum	# VULGAR FRACTION ONE HALF
0x00BD    ½	      ISOnum	# VULGAR FRACTION ONE HALF
0x00BE    ¾	      ISOnum	# VULGAR FRACTION THREE QUARTERS
0x00BF    ¿	      ISOnum	# INVERTED QUESTION MARK
0x00C0    À	      ISOlat1	# LATIN CAPITAL LETTER A WITH GRAVE
0x00C1    Á	      ISOlat1	# LATIN CAPITAL LETTER A WITH ACUTE
0x00C2    Â	      ISOlat1	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0x00C3    Ã	      ISOlat1	# LATIN CAPITAL LETTER A WITH TILDE
0x00C4    Ä	      ISOlat1	# LATIN CAPITAL LETTER A WITH DIAERESIS
0x00C5    Å	      ISOlat1	# LATIN CAPITAL LETTER A WITH RING ABOVE
0x00C6    Æ	      ISOlat1	# LATIN CAPITAL LETTER AE
0x00C7    Ç	      ISOlat1	# LATIN CAPITAL LETTER C WITH CEDILLA
0x00C8    È	      ISOlat1	# LATIN CAPITAL LETTER E WITH GRAVE
0x00C9    É	      ISOlat1	# LATIN CAPITAL LETTER E WITH ACUTE
0x00CA    Ê	      ISOlat1	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0x00CB    Ë	      ISOlat1	# LATIN CAPITAL LETTER E WITH DIAERESIS
0x00CC    Ì	      ISOlat1	# LATIN CAPITAL LETTER I WITH GRAVE
0x00CD    Í	      ISOlat1	# LATIN CAPITAL LETTER I WITH ACUTE
0x00CE    Î	      ISOlat1	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0x00CF    Ï	      ISOlat1	# LATIN CAPITAL LETTER I WITH DIAERESIS
0x00D0    Ð	      ISOlat1	# LATIN CAPITAL LETTER ETH
0x00D1    Ñ	      ISOlat1	# LATIN CAPITAL LETTER N WITH TILDE
0x00D2    Ò	      ISOlat1	# LATIN CAPITAL LETTER O WITH GRAVE
0x00D3    Ó	      ISOlat1	# LATIN CAPITAL LETTER O WITH ACUTE
0x00D4    Ô	      ISOlat1	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0x00D5    Õ	      ISOlat1	# LATIN CAPITAL LETTER O WITH TILDE
0x00D6    Ö	      ISOlat1	# LATIN CAPITAL LETTER O WITH DIAERESIS
0x00D7    ×	      ISOnum	# MULTIPLICATION SIGN
0x00D8    Ø	      ISOlat1	# LATIN CAPITAL LETTER O WITH STROKE
0x00D9    Ù	      ISOlat1	# LATIN CAPITAL LETTER U WITH GRAVE
0x00DA    Ú	      ISOlat1	# LATIN CAPITAL LETTER U WITH ACUTE
0x00DB    Û	      ISOlat1	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0x00DC    Ü	      ISOlat1	# LATIN CAPITAL LETTER U WITH DIAERESIS
0x00DD    Ý	      ISOlat1	# LATIN CAPITAL LETTER Y WITH ACUTE
0x00DE    Þ	      ISOlat1	# LATIN CAPITAL LETTER THORN
0x00DF    ß	      ISOlat1	# LATIN SMALL LETTER SHARP S
0x00E0    à	      ISOlat1	# LATIN SMALL LETTER A WITH GRAVE
0x00E1    á	      ISOlat1	# LATIN SMALL LETTER A WITH ACUTE
0x00E2    â	      ISOlat1	# LATIN SMALL LETTER A WITH CIRCUMFLEX
0x00E3    ã	      ISOlat1	# LATIN SMALL LETTER A WITH TILDE
0x00E4    ä	      ISOlat1	# LATIN SMALL LETTER A WITH DIAERESIS
0x00E5    å	      ISOlat1	# LATIN SMALL LETTER A WITH RING ABOVE
0x00E6    æ	      ISOlat1	# LATIN SMALL LETTER AE
0x00E7    ç	      ISOlat1	# LATIN SMALL LETTER C WITH CEDILLA
0x00E8    è	      ISOlat1	# LATIN SMALL LETTER E WITH GRAVE
0x00E9    é	      ISOlat1	# LATIN SMALL LETTER E WITH ACUTE
0x00EA    ê	      ISOlat1	# LATIN SMALL LETTER E WITH CIRCUMFLEX
0x00EB    ë	      ISOlat1	# LATIN SMALL LETTER E WITH DIAERESIS
0x00EC    ì	      ISOlat1	# LATIN SMALL LETTER I WITH GRAVE
0x00ED    í	      ISOlat1	# LATIN SMALL LETTER I WITH ACUTE
0x00EE    î	      ISOlat1	# LATIN SMALL LETTER I WITH CIRCUMFLEX
0x00EF    ï	      ISOlat1	# LATIN SMALL LETTER I WITH DIAERESIS
0x00F0    ð	      ISOlat1	# LATIN SMALL LETTER ETH
0x00F1    ñ	      ISOlat1	# LATIN SMALL LETTER N WITH TILDE
0x00F2    ò	      ISOlat1	# LATIN SMALL LETTER O WITH GRAVE
0x00F3    ó	      ISOlat1	# LATIN SMALL LETTER O WITH ACUTE
0x00F4    ô	      ISOlat1	# LATIN SMALL LETTER O WITH CIRCUMFLEX
0x00F5    õ	      ISOlat1	# LATIN SMALL LETTER O WITH TILDE
0x00F6    ö	      ISOlat1	# LATIN SMALL LETTER O WITH DIAERESIS
0x00F7    ÷	      ISOnum	# DIVISION SIGN
0x00F8    ø	      ISOlat1	# LATIN SMALL LETTER O WITH STROKE
0x00F9    ù	      ISOlat1	# LATIN SMALL LETTER U WITH GRAVE
0x00FA    ú	      ISOlat1	# LATIN SMALL LETTER U WITH ACUTE
0x00FB    û	      ISOlat1	# LATIN SMALL LETTER U WITH CIRCUMFLEX
0x00FC    ü	      ISOlat1	# LATIN SMALL LETTER U WITH DIAERESIS
0x00FD    ý	      ISOlat1	# LATIN SMALL LETTER Y WITH ACUTE
0x00FE    þ	      ISOlat1	# LATIN SMALL LETTER THORN
0x00FF    ÿ	      ISOlat1	# LATIN SMALL LETTER Y WITH DIAERESIS
0x0100    Ā	      ISOlat2	# LATIN CAPITAL LETTER A WITH MACRON
0x0101    ā	      ISOlat2	# LATIN SMALL LETTER A WITH MACRON
0x0102    Ă	      ISOlat2	# LATIN CAPITAL LETTER A WITH BREVE
0x0103    ă	      ISOlat2	# LATIN SMALL LETTER A WITH BREVE
0x0104    Ą	      ISOlat2	# LATIN CAPITAL LETTER A WITH OGONEK
0x0105    ą	      ISOlat2	# LATIN SMALL LETTER A WITH OGONEK
0x0106    Ć	      ISOlat2	# LATIN CAPITAL LETTER C WITH ACUTE
0x0107    ć	      ISOlat2	# LATIN SMALL LETTER C WITH ACUTE
0x0108    Ĉ	      ISOlat2	# LATIN CAPITAL LETTER C WITH CIRCUMFLEX
0x0109    ĉ	      ISOlat2	# LATIN SMALL LETTER C WITH CIRCUMFLEX
0x010A    Ċ	      ISOlat2	# LATIN CAPITAL LETTER C WITH DOT ABOVE
0x010B    ċ	      ISOlat2	# LATIN SMALL LETTER C WITH DOT ABOVE
0x010C    Č	      ISOlat2	# LATIN CAPITAL LETTER C WITH CARON
0x010D    č	      ISOlat2	# LATIN SMALL LETTER C WITH CARON
0x010E    Ď	      ISOlat2	# LATIN CAPITAL LETTER D WITH CARON
0x010F    ď	      ISOlat2	# LATIN SMALL LETTER D WITH CARON
0x0110    Đ	      ISOlat2	# LATIN CAPITAL LETTER D WITH STROKE
0x0111    đ	      ISOlat2	# LATIN SMALL LETTER D WITH STROKE
0x0112    Ē	      ISOlat2	# LATIN CAPITAL LETTER E WITH MACRON
0x0113    ē	      ISOlat2	# LATIN SMALL LETTER E WITH MACRON
0x0116    Ė	      ISOlat2	# LATIN CAPITAL LETTER E WITH DOT ABOVE
0x0117    ė	      ISOlat2	# LATIN SMALL LETTER E WITH DOT ABOVE
0x0118    Ę	      ISOlat2	# LATIN CAPITAL LETTER E WITH OGONEK
0x0119    ę	      ISOlat2	# LATIN SMALL LETTER E WITH OGONEK
0x011A    Ě	      ISOlat2	# LATIN CAPITAL LETTER E WITH CARON
0x011B    ě	      ISOlat2	# LATIN SMALL LETTER E WITH CARON
0x011C    Ĝ	      ISOlat2	# LATIN CAPITAL LETTER G WITH CIRCUMFLEX
0x011D    ĝ	      ISOlat2	# LATIN SMALL LETTER G WITH CIRCUMFLEX
0x011E    Ğ	      ISOlat2	# LATIN CAPITAL LETTER G WITH BREVE
0x011F    ğ	      ISOlat2	# LATIN SMALL LETTER G WITH BREVE
0x0120    Ġ	      ISOlat2	# LATIN CAPITAL LETTER G WITH DOT ABOVE
0x0121    ġ	      ISOlat2	# LATIN SMALL LETTER G WITH DOT ABOVE
0x0122    Ģ	      ISOlat2	# LATIN CAPITAL LETTER G WITH CEDILLA
0x0123    &gcedil;	      ISOlat2	# LATIN SMALL LETTER G WITH CEDILLA
0x0124    Ĥ	      ISOlat2	# LATIN CAPITAL LETTER H WITH CIRCUMFLEX
0x0125    ĥ	      ISOlat2	# LATIN SMALL LETTER H WITH CIRCUMFLEX
0x0126    Ħ	      ISOlat2	# LATIN CAPITAL LETTER H WITH STROKE
0x0127    ħ	      ISOlat2	# LATIN SMALL LETTER H WITH STROKE
0x0128    Ĩ	      ISOlat2	# LATIN CAPITAL LETTER I WITH TILDE
0x0129    ĩ	      ISOlat2	# LATIN SMALL LETTER I WITH TILDE
0x012A    Ī	      ISOlat2	# LATIN CAPITAL LETTER I WITH MACRON
0x012B    ī	      ISOlat2	# LATIN SMALL LETTER I WITH MACRON
0x012E    Į	      ISOlat2	# LATIN CAPITAL LETTER I WITH OGONEK
0x012F    į	      ISOlat2	# LATIN SMALL LETTER I WITH OGONEK
0x0130    İ	      ISOlat2	# LATIN CAPITAL LETTER I WITH DOT ABOVE
0x0131    ı	      ISOamso	# LATIN SMALL LETTER DOTLESS I
0x0131    ı	      ISOlat2	# LATIN SMALL LETTER DOTLESS I
0x0132    IJ	      ISOlat2	# LATIN CAPITAL LIGATURE IJ
0x0133    ij	      ISOlat2	# LATIN SMALL LIGATURE IJ
0x0134    Ĵ	      ISOlat2	# LATIN CAPITAL LETTER J WITH CIRCUMFLEX
0x0135    ĵ	      ISOlat2	# LATIN SMALL LETTER J WITH CIRCUMFLEX
0x0136    Ķ	      ISOlat2	# LATIN CAPITAL LETTER K WITH CEDILLA
0x0137    ķ	      ISOlat2	# LATIN SMALL LETTER K WITH CEDILLA
0x0138    ĸ	      ISOlat2	# LATIN SMALL LETTER KRA
0x0139    Ĺ	      ISOlat2	# LATIN CAPITAL LETTER L WITH ACUTE
0x013A    ĺ	      ISOlat2	# LATIN SMALL LETTER L WITH ACUTE
0x013B    Ļ	      ISOlat2	# LATIN CAPITAL LETTER L WITH CEDILLA
0x013C    ļ	      ISOlat2	# LATIN SMALL LETTER L WITH CEDILLA
0x013D    Ľ	      ISOlat2	# LATIN CAPITAL LETTER L WITH CARON
0x013E    ľ	      ISOlat2	# LATIN SMALL LETTER L WITH CARON
0x013F    Ŀ	      ISOlat2	# LATIN CAPITAL LETTER L WITH MIDDLE DOT
0x0140    ŀ	      ISOlat2	# LATIN SMALL LETTER L WITH MIDDLE DOT
0x0141    Ł	      ISOlat2	# LATIN CAPITAL LETTER L WITH STROKE
0x0142    ł	      ISOlat2	# LATIN SMALL LETTER L WITH STROKE
0x0143    Ń	      ISOlat2	# LATIN CAPITAL LETTER N WITH ACUTE
0x0144    ń	      ISOlat2	# LATIN SMALL LETTER N WITH ACUTE
0x0145    Ņ	      ISOlat2	# LATIN CAPITAL LETTER N WITH CEDILLA
0x0146    ņ	      ISOlat2	# LATIN SMALL LETTER N WITH CEDILLA
0x0147    Ň	      ISOlat2	# LATIN CAPITAL LETTER N WITH CARON
0x0148    ň	      ISOlat2	# LATIN SMALL LETTER N WITH CARON
0x0149    ʼn	      ISOlat2	# LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
0x014A    Ŋ	      ISOlat2	# LATIN CAPITAL LETTER ENG
0x014B    ŋ	      ISOlat2	# LATIN SMALL LETTER ENG
0x014C    Ō	      ISOlat2	# LATIN CAPITAL LETTER O WITH MACRON
0x014D    ō	      ISOlat2	# LATIN SMALL LETTER O WITH MACRON
0x0150    Ő	      ISOlat2	# LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0x0151    ő	      ISOlat2	# LATIN SMALL LETTER O WITH DOUBLE ACUTE
0x0152    Œ	      ISOlat2	# LATIN CAPITAL LIGATURE OE
0x0153    œ	      ISOlat2	# LATIN SMALL LIGATURE OE
0x0154    Ŕ	      ISOlat2	# LATIN CAPITAL LETTER R WITH ACUTE
0x0155    ŕ	      ISOlat2	# LATIN SMALL LETTER R WITH ACUTE
0x0156    Ŗ	      ISOlat2	# LATIN CAPITAL LETTER R WITH CEDILLA
0x0157    ŗ	      ISOlat2	# LATIN SMALL LETTER R WITH CEDILLA
0x0158    Ř	      ISOlat2	# LATIN CAPITAL LETTER R WITH CARON
0x0159    ř	      ISOlat2	# LATIN SMALL LETTER R WITH CARON
0x015A    Ś	      ISOlat2	# LATIN CAPITAL LETTER S WITH ACUTE
0x015B    ś	      ISOlat2	# LATIN SMALL LETTER S WITH ACUTE
0x015C    Ŝ	      ISOlat2	# LATIN CAPITAL LETTER S WITH CIRCUMFLEX
0x015D    ŝ	      ISOlat2	# LATIN SMALL LETTER S WITH CIRCUMFLEX
0x015E    Ş	      ISOlat2	# LATIN CAPITAL LETTER S WITH CEDILLA
0x015F    ş	      ISOlat2	# LATIN SMALL LETTER S WITH CEDILLA
0x0160    Š	      ISOlat2	# LATIN CAPITAL LETTER S WITH CARON
0x0161    š	      ISOlat2	# LATIN SMALL LETTER S WITH CARON
0x0162    Ţ	      ISOlat2	# LATIN CAPITAL LETTER T WITH CEDILLA
0x0163    ţ	      ISOlat2	# LATIN SMALL LETTER T WITH CEDILLA
0x0164    Ť	      ISOlat2	# LATIN CAPITAL LETTER T WITH CARON
0x0165    ť	      ISOlat2	# LATIN SMALL LETTER T WITH CARON
0x0166    Ŧ	      ISOlat2	# LATIN CAPITAL LETTER T WITH STROKE
0x0167    ŧ	      ISOlat2	# LATIN SMALL LETTER T WITH STROKE
0x0168    Ũ	      ISOlat2	# LATIN CAPITAL LETTER U WITH TILDE
0x0169    ũ	      ISOlat2	# LATIN SMALL LETTER U WITH TILDE
0x016A    Ū	      ISOlat2	# LATIN CAPITAL LETTER U WITH MACRON
0x016B    ū	      ISOlat2	# LATIN SMALL LETTER U WITH MACRON
0x016C    Ŭ	      ISOlat2	# LATIN CAPITAL LETTER U WITH BREVE
0x016D    ŭ	      ISOlat2	# LATIN SMALL LETTER U WITH BREVE
0x016E    Ů	      ISOlat2	# LATIN CAPITAL LETTER U WITH RING ABOVE
0x016F    ů	      ISOlat2	# LATIN SMALL LETTER U WITH RING ABOVE
0x0170    Ű	      ISOlat2	# LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0x0171    ű	      ISOlat2	# LATIN SMALL LETTER U WITH DOUBLE ACUTE
0x0172    Ų	      ISOlat2	# LATIN CAPITAL LETTER U WITH OGONEK
0x0173    ų	      ISOlat2	# LATIN SMALL LETTER U WITH OGONEK
0x0174    Ŵ	      ISOlat2	# LATIN CAPITAL LETTER W WITH CIRCUMFLEX
0x0175    ŵ	      ISOlat2	# LATIN SMALL LETTER W WITH CIRCUMFLEX
0x0176    Ŷ	      ISOlat2	# LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
0x0177    ŷ	      ISOlat2	# LATIN SMALL LETTER Y WITH CIRCUMFLEX
0x0178    Ÿ	      ISOlat2	# LATIN CAPITAL LETTER Y WITH DIAERESIS
0x0179    Ź	      ISOlat2	# LATIN CAPITAL LETTER Z WITH ACUTE
0x017A    ź	      ISOlat2	# LATIN SMALL LETTER Z WITH ACUTE
0x017B    Ż	      ISOlat2	# LATIN CAPITAL LETTER Z WITH DOT ABOVE
0x017C    ż	      ISOlat2	# LATIN SMALL LETTER Z WITH DOT ABOVE
0x017D    Ž	      ISOlat2	# LATIN CAPITAL LETTER Z WITH CARON
0x017E    ž	      ISOlat2	# LATIN SMALL LETTER Z WITH CARON
0x0192    ƒ	      ISOtech	# LATIN SMALL LETTER F WITH HOOK
0x01F5    ǵ	      ISOlat2	# LATIN SMALL LETTER G WITH ACUTE
0x02BC    '	      ISOnum	# MODIFIER LETTER APOSTROPHE
0x02C6    ˆ	      ISOdia	# MODIFIER LETTER CIRCUMFLEX ACCENT
0x02C7    ˇ	      ISOdia	# CARON
0x02D8    ˘	      ISOdia	# BREVE
0x02D9    ˙	      ISOdia	# DOT ABOVE
0x02DA    ˚	      ISOdia	# RING ABOVE
0x02DB    ˛	      ISOdia	# OGONEK
0x02DC    ˜	      ISOdia	# SMALL TILDE
0x02DD    ˝	      ISOdia	# DOUBLE ACUTE ACCENT
0x0386    &Aacgr;	      ISOgrk2	# GREEK CAPITAL LETTER ALPHA WITH TONOS
0x0388    &Eacgr;	      ISOgrk2	# GREEK CAPITAL LETTER EPSILON WITH TONOS
0x0389    &EEacgr;	      ISOgrk2	# GREEK CAPITAL LETTER ETA WITH TONOS
0x038A    &Iacgr;	      ISOgrk2	# GREEK CAPITAL LETTER IOTA WITH TONOS
0x038C    &Oacgr;	      ISOgrk2	# GREEK CAPITAL LETTER OMICRON WITH TONOS
0x038E    &Uacgr;	      ISOgrk2	# GREEK CAPITAL LETTER UPSILON WITH TONOS
0x038F    &OHacgr;	      ISOgrk2	# GREEK CAPITAL LETTER OMEGA WITH TONOS
0x0390    &idiagr;	      ISOgrk2	# GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
0x0391    &Agr;	      ISOgrk1	# GREEK CAPITAL LETTER ALPHA
0x0391    Α	      HTMLsymbol	# GREEK CAPITAL LETTER ALPHA
0x0392    Β	      HTMLsymbol	# GREEK CAPITAL LETTER BETA
0x0392    &Bgr;	      ISOgrk1	# GREEK CAPITAL LETTER BETA
0x0393    Γ	      ISOgrk3	# GREEK CAPITAL LETTER GAMMA
0x0393    &Ggr;	      ISOgrk1	# GREEK CAPITAL LETTER GAMMA
0x0393    &b.Gamma;	      ISOgrk4	# GREEK CAPITAL LETTER GAMMA
0x0394    Δ	      ISOgrk3	# GREEK CAPITAL LETTER DELTA
0x0394    &Dgr;	      ISOgrk1	# GREEK CAPITAL LETTER DELTA
0x0394    &b.Delta;	      ISOgrk4	# GREEK CAPITAL LETTER DELTA
0x0395    &Egr;	      ISOgrk1	# GREEK CAPITAL LETTER EPSILON
0x0395    Ε	      HTMLsymbol	# GREEK CAPITAL LETTER EPSILON
0x0396    Ζ	      HTMLsymbol	# GREEK CAPITAL LETTER ZETA
0x0396    &Zgr;	      ISOgrk1	# GREEK CAPITAL LETTER ZETA
0x0397    &EEgr;	      ISOgrk1	# GREEK CAPITAL LETTER ETA
0x0397    Η	      HTMLsymbol	# GREEK CAPITAL LETTER ETA
0x0398    &THgr;	      ISOgrk1	# GREEK CAPITAL LETTER THETA
0x0398    Θ	      ISOgrk3	# GREEK CAPITAL LETTER THETA
0x0398    &b.Theta;	      ISOgrk4	# GREEK CAPITAL LETTER THETA
0x0399    &Igr;	      ISOgrk1	# GREEK CAPITAL LETTER IOTA
0x0399    Ι	      HTMLsymbol	# GREEK CAPITAL LETTER IOTA
0x039A    Κ	      HTMLsymbol	# GREEK CAPITAL LETTER KAPPA
0x039A    &Kgr;	      ISOgrk1	# GREEK CAPITAL LETTER KAPPA
0x039B    Λ	      ISOgrk3	# GREEK CAPITAL LETTER LAMDA
0x039B    &Lgr;	      ISOgrk1	# GREEK CAPITAL LETTER LAMDA
0x039B    &b.Lambda;	      ISOgrk4	# GREEK CAPITAL LETTER LAMDA
0x039C    &Mgr;	      ISOgrk1	# GREEK CAPITAL LETTER MU
0x039C    Μ	      HTMLsymbol	# GREEK CAPITAL LETTER MU
0x039D    &Ngr;	      ISOgrk1	# GREEK CAPITAL LETTER NU
0x039D    Ν	      HTMLsymbol	# GREEK CAPITAL LETTER NU
0x039E    &Xgr;	      ISOgrk1	# GREEK CAPITAL LETTER XI
0x039E    Ξ	      ISOgrk3	# GREEK CAPITAL LETTER XI
0x039E    &b.Xi;	      ISOgrk4	# GREEK CAPITAL LETTER XI
0x039F    &Ogr;	      ISOgrk1	# GREEK CAPITAL LETTER OMICRON
0x039F    Ο	      HTMLsymbol	# GREEK CAPITAL LETTER OMICRON
0x03A0    &Pgr;	      ISOgrk1	# GREEK CAPITAL LETTER PI
0x03A0    Π	      ISOgrk3	# GREEK CAPITAL LETTER PI
0x03A0    &b.Pi;	      ISOgrk4	# GREEK CAPITAL LETTER PI
0x03A1    &Rgr;	      ISOgrk1	# GREEK CAPITAL LETTER RHO
0x03A1    Ρ	      HTMLsymbol	# GREEK CAPITAL LETTER RHO
0x03A3    &Sgr;	      ISOgrk1	# GREEK CAPITAL LETTER SIGMA
0x03A3    Σ	      ISOgrk3	# GREEK CAPITAL LETTER SIGMA
0x03A3    &b.Sigma;	      ISOgrk4	# GREEK CAPITAL LETTER SIGMA
0x03A4    Τ	      HTMLsymbol	# GREEK CAPITAL LETTER TAU
0x03A4    &Tgr;	      ISOgrk1	# GREEK CAPITAL LETTER TAU
0x03A5    &Ugr;	      ISOgrk1	# GREEK CAPITAL LETTER UPSILON
0x03A5    ϒ	      ISOgrk3	# GREEK CAPITAL LETTER UPSILON
0x03A5    Υ	      HTMLsymbol	# GREEK CAPITAL LETTER UPSILON
0x03A5    &b.Upsi;	      ISOgrk4	# GREEK CAPITAL LETTER UPSILON
0x03A6    &PHgr;	      ISOgrk1	# GREEK CAPITAL LETTER PHI
0x03A6    Φ	      ISOgrk3	# GREEK CAPITAL LETTER PHI
0x03A6    &b.Phi;	      ISOgrk4	# GREEK CAPITAL LETTER PHI
0x03A7    Χ	      HTMLsymbol	# GREEK CAPITAL LETTER CHI
0x03A7    &KHgr;	      ISOgrk1	# GREEK CAPITAL LETTER CHI
0x03A8    &PSgr;	      ISOgrk1	# GREEK CAPITAL LETTER PSI
0x03A8    Ψ	      ISOgrk3	# GREEK CAPITAL LETTER PSI
0x03A8    &b.Psi;	      ISOgrk4	# GREEK CAPITAL LETTER PSI
0x03A9    &OHgr;	      ISOgrk1	# GREEK CAPITAL LETTER OMEGA
0x03A9    Ω	      ISOgrk3	# GREEK CAPITAL LETTER OMEGA
0x03A9    &b.Omega;	      ISOgrk4	# GREEK CAPITAL LETTER OMEGA
0x03AA    &Idigr;	      ISOgrk2	# GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0x03AB    &Udigr;	      ISOgrk2	# GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0x03AC    &aacgr;	      ISOgrk2	# GREEK SMALL LETTER ALPHA WITH TONOS
0x03AD    &eacgr;	      ISOgrk2	# GREEK SMALL LETTER EPSILON WITH TONOS
0x03AE    &eeacgr;	      ISOgrk2	# GREEK SMALL LETTER ETA WITH TONOS
0x03AF    &iacgr;	      ISOgrk2	# GREEK SMALL LETTER IOTA WITH TONOS
0x03B0    &udiagr;	      ISOgrk2	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND
0x03B1    &agr;	      ISOgrk1	# GREEK SMALL LETTER ALPHA
0x03B1    α	      ISOgrk3	# GREEK SMALL LETTER ALPHA
0x03B1    &b.alpha;	      ISOgrk4	# GREEK SMALL LETTER ALPHA
0x03B2    &b.beta;	      ISOgrk4	# GREEK SMALL LETTER BETA
0x03B2    β	      ISOgrk3	# GREEK SMALL LETTER BETA
0x03B2    &bgr;	      ISOgrk1	# GREEK SMALL LETTER BETA
0x03B3    &b.gamma;	      ISOgrk4	# GREEK SMALL LETTER GAMMA
0x03B3    γ	      ISOgrk3	# GREEK SMALL LETTER GAMMA
0x03B3    &ggr;	      ISOgrk1	# GREEK SMALL LETTER GAMMA
0x03B4    &b.delta;	      ISOgrk4   # GREEK SMALL LETTER DELTA
0x03B4    δ	      ISOgrk3	# GREEK SMALL LETTER DELTA
0x03B4    &dgr;	      ISOgrk1	# GREEK SMALL LETTER DELTA
0x03B5    &b.epsi;	      ISOgrk4	# GREEK SMALL LETTER EPSILON
0x03B5    &b.epsis;	      ISOgrk4	# GREEK SMALL LETTER EPSILON
0x03B5    &b.epsiv;	      ISOgrk4	# GREEK SMALL LETTER EPSILON
0x03B5    &egr;	      ISOgrk1	# GREEK SMALL LETTER EPSILON
0x03B5    ε	      ISOgrk3	# GREEK SMALL LETTER EPSILON
0x03B5    ε	      HTMLsymbol	# GREEK SMALL LETTER EPSILON
0x03B6    &b.zeta;	      ISOgrk4	# GREEK SMALL LETTER ZETA
0x03B6    ζ	      ISOgrk3	# GREEK SMALL LETTER ZETA
0x03B6    &zgr;	      ISOgrk1	# GREEK SMALL LETTER ZETA
0x03B7    &b.eta;	      ISOgrk4	# GREEK SMALL LETTER ETA
0x03B7    &eegr;	      ISOgrk1	# GREEK SMALL LETTER ETA
0x03B7    η	      ISOgrk3	# GREEK SMALL LETTER ETA
0x03B8    &b.thetas;	      ISOgrk4	# GREEK SMALL LETTER THETA
0x03B8    θ	      HTMLsymbol	# GREEK SMALL LETTER THETA
0x03B8    &thetas;	      ISOgrk3	# GREEK SMALL LETTER THETA
0x03B8    &thgr;	      ISOgrk1	# GREEK SMALL LETTER THETA
0x03B9    &b.iota;	      ISOgrk4	# GREEK SMALL LETTER IOTA
0x03B9    &igr;	      ISOgrk1	# GREEK SMALL LETTER IOTA
0x03B9    ι	      ISOgrk3	# GREEK SMALL LETTER IOTA
0x03BA    &b.kappa;	      ISOgrk4	# GREEK SMALL LETTER KAPPA
0x03BA    κ	      ISOgrk3	# GREEK SMALL LETTER KAPPA
0x03BA    &kgr;	      ISOgrk1	# GREEK SMALL LETTER KAPPA
0x03BB    &b.lambda;	      ISOgrk4	# GREEK SMALL LETTER LAMDA
0x03BB    λ	      ISOgrk3	# GREEK SMALL LETTER LAMDA
0x03BB    &lgr;	      ISOgrk1	# GREEK SMALL LETTER LAMDA
0x03BC    &b.mu;	      ISOgrk4	# GREEK SMALL LETTER MU
0x03BC    &mgr;	      ISOgrk1	# GREEK SMALL LETTER MU
0x03BC    μ	      ISOgrk3	# GREEK SMALL LETTER MU
0x03BD    &b.nu;	      ISOgrk4	# GREEK SMALL LETTER NU
0x03BD    &ngr;	      ISOgrk1	# GREEK SMALL LETTER NU
0x03BD    ν	      ISOgrk3	# GREEK SMALL LETTER NU
0x03BE    &b.xi;	      ISOgrk4	# GREEK SMALL LETTER XI
0x03BE    &xgr;	      ISOgrk1	# GREEK SMALL LETTER XI
0x03BE    ξ	      ISOgrk3	# GREEK SMALL LETTER XI
0x03BF    &ogr;	      ISOgrk1	# GREEK SMALL LETTER OMICRON
0x03BF    ο	      HTMLsymbol	# GREEK SMALL LETTER OMICRON
0x03C0    &b.pi;	      ISOgrk4	# GREEK SMALL LETTER PI
0x03C0    &pgr;	      ISOgrk1	# GREEK SMALL LETTER PI
0x03C0    π	      ISOgrk3	# GREEK SMALL LETTER PI
0x03C1    &b.rho;	      ISOgrk4	# GREEK SMALL LETTER RHO
0x03C1    &rgr;	      ISOgrk1	# GREEK SMALL LETTER RHO
0x03C1    ρ	      ISOgrk3	# GREEK SMALL LETTER RHO
0x03C2    &b.sigmav;	      ISOgrk4	# GREEK SMALL LETTER FINAL SIGMA
0x03C2    &sfgr;	      ISOgrk1	# GREEK SMALL LETTER FINAL SIGMA
0x03C2    ς	      HTMLsymbol	# GREEK SMALL LETTER FINAL SIGMA
0x03C2    ς	      ISOgrk3	# GREEK SMALL LETTER FINAL SIGMA
0x03C3    &b.sigma;	      ISOgrk4	# GREEK SMALL LETTER SIGMA
0x03C3    &sgr;	      ISOgrk1	# GREEK SMALL LETTER SIGMA
0x03C3    σ	      ISOgrk3	# GREEK SMALL LETTER SIGMA
0x03C4    &b.tau;	      ISOgrk4	# GREEK SMALL LETTER TAU
0x03C4    τ	      ISOgrk3	# GREEK SMALL LETTER TAU
0x03C4    &tgr;	      ISOgrk1	# GREEK SMALL LETTER TAU
0x03C5    &b.upsi;	      ISOgrk4	# GREEK SMALL LETTER UPSILON
0x03C5    &ugr;	      ISOgrk1	# GREEK SMALL LETTER UPSILON
0x03C5    υ	      ISOgrk3	# GREEK SMALL LETTER UPSILON
0x03C5    υ	      HTMLsymbol	# GREEK SMALL LETTER UPSILON
0x03C6    &b.phis;	      ISOgrk4	# GREEK SMALL LETTER PHI
0x03C6    &phgr;	      ISOgrk1	# GREEK SMALL LETTER PHI
0x03C6    φ	      HTMLsymbol	# GREEK SMALL LETTER PHI
0x03C6    &phis;	      ISOgrk3	# GREEK SMALL LETTER PHI
0x03C7    &b.chi;	      ISOgrk4	# GREEK SMALL LETTER CHI
0x03C7    χ	      ISOgrk3	# GREEK SMALL LETTER CHI
0x03C7    &khgr;	      ISOgrk1	# GREEK SMALL LETTER CHI
0x03C8    &b.psi;	      ISOgrk4	# GREEK SMALL LETTER PSI
0x03C8    &psgr;	      ISOgrk1	# GREEK SMALL LETTER PSI
0x03C8    ψ	      ISOgrk3	# GREEK SMALL LETTER PSI
0x03C9    &ohgr;	      ISOgrk1	# GREEK SMALL LETTER OMEGA
0x03C9    ω	      ISOgrk3	# GREEK SMALL LETTER OMEGA
0x03CA    &idigr;	      ISOgrk2	# GREEK SMALL LETTER IOTA WITH DIALYTIKA
0x03CB    &udigr;	      ISOgrk2	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0x03CC    &oacgr;	      ISOgrk2	# GREEK SMALL LETTER OMICRON WITH TONOS
0x03CD    &uacgr;	      ISOgrk2	# GREEK SMALL LETTER UPSILON WITH TONOS
0x03CE    &b.omega;	      ISOgrk4	# GREEK SMALL LETTER OMEGA WITH TONOS
0x03CE    &ohacgr;	      ISOgrk2	# GREEK SMALL LETTER OMEGA WITH TONOS
0x03D1    &b.thetav;	      ISOgrk4	# GREEK THETA SYMBOL
0x03D1    ϑ	      HTMLsymbol	# GREEK THETA SYMBOL
0x03D1    ϑ	      ISOgrk3	# GREEK THETA SYMBOL
0x03D2    ϒ	      HTMLsymbol	# GREEK UPSILON WITH HOOK SYMBOL
0x03D5    &b.phiv;	      ISOgrk4	# GREEK PHI SYMBOL
0x03D5    ϕ	      ISOgrk3	# GREEK PHI SYMBOL
0x03D6    &b.piv;	      ISOgrk4	# GREEK PI SYMBOL
0x03D6    ϖ	      ISOgrk3	# GREEK PI SYMBOL
0x03DC    &b.gammad;	      ISOgrk4	# GREEK LETTER DIGAMMA
0x03DC    ϝ	      ISOgrk3	# GREEK LETTER DIGAMMA
0x03F0    &b.kappav;	      ISOgrk4	# GREEK KAPPA SYMBOL
0x03F0    ϰ	      ISOgrk3	# GREEK KAPPA SYMBOL
0x03F1    &b.rhov;	      ISOgrk4	# GREEK RHO SYMBOL
0x03F1    ϱ	      ISOgrk3	# GREEK RHO SYMBOL
0x0401    Ё	      ISOcyr1	# CYRILLIC CAPITAL LETTER IO
0x0402    Ђ	      ISOcyr2	# CYRILLIC CAPITAL LETTER DJE
0x0403    Ѓ	      ISOcyr2	# CYRILLIC CAPITAL LETTER GJE
0x0404    Є	      ISOcyr2	# CYRILLIC CAPITAL LETTER UKRAINIAN IE
0x0405    Ѕ	      ISOcyr2	# CYRILLIC CAPITAL LETTER DZE
0x0406    І	      ISOcyr2	# CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
0x0407    Ї	      ISOcyr2	# CYRILLIC CAPITAL LETTER YI
0x0408    Ј	      ISOcyr2	# CYRILLIC CAPITAL LETTER JE
0x0409    Љ	      ISOcyr2	# CYRILLIC CAPITAL LETTER LJE
0x040A    Њ	      ISOcyr2	# CYRILLIC CAPITAL LETTER NJE
0x040B    Ћ	      ISOcyr2	# CYRILLIC CAPITAL LETTER TSHE
0x040C    Ќ	      ISOcyr2	# CYRILLIC CAPITAL LETTER KJE
0x040E    Ў	      ISOcyr2	# CYRILLIC CAPITAL LETTER SHORT U
0x040F    Џ	      ISOcyr2	# CYRILLIC CAPITAL LETTER DZHE
0x0410    А	      ISOcyr1	# CYRILLIC CAPITAL LETTER A
0x0411    Б	      ISOcyr1	# CYRILLIC CAPITAL LETTER BE
0x0412    В	      ISOcyr1	# CYRILLIC CAPITAL LETTER VE
0x0413    Г	      ISOcyr1	# CYRILLIC CAPITAL LETTER GHE
0x0414    Д	      ISOcyr1	# CYRILLIC CAPITAL LETTER DE
0x0415    Е	      ISOcyr1	# CYRILLIC CAPITAL LETTER IE
0x0416    Ж	      ISOcyr1	# CYRILLIC CAPITAL LETTER ZHE
0x0417    З	      ISOcyr1	# CYRILLIC CAPITAL LETTER ZE
0x0418    И	      ISOcyr1	# CYRILLIC CAPITAL LETTER I
0x0419    Й	      ISOcyr1	# CYRILLIC CAPITAL LETTER SHORT I
0x041A    К	      ISOcyr1	# CYRILLIC CAPITAL LETTER KA
0x041B    Л	      ISOcyr1	# CYRILLIC CAPITAL LETTER EL
0x041C    М	      ISOcyr1	# CYRILLIC CAPITAL LETTER EM
0x041D    Н	      ISOcyr1	# CYRILLIC CAPITAL LETTER EN
0x041E    О	      ISOcyr1	# CYRILLIC CAPITAL LETTER O
0x041F    П	      ISOcyr1	# CYRILLIC CAPITAL LETTER PE
0x0420    Р	      ISOcyr1	# CYRILLIC CAPITAL LETTER ER
0x0421    С	      ISOcyr1	# CYRILLIC CAPITAL LETTER ES
0x0422    Т	      ISOcyr1	# CYRILLIC CAPITAL LETTER TE
0x0423    У	      ISOcyr1	# CYRILLIC CAPITAL LETTER U
0x0424    Ф	      ISOcyr1	# CYRILLIC CAPITAL LETTER EF
0x0425    Х	      ISOcyr1	# CYRILLIC CAPITAL LETTER HA
0x0426    Ц	      ISOcyr1	# CYRILLIC CAPITAL LETTER TSE
0x0427    Ч	      ISOcyr1	# CYRILLIC CAPITAL LETTER CHE
0x0428    Ш	      ISOcyr1	# CYRILLIC CAPITAL LETTER SHA
0x0429    Щ	      ISOcyr1	# CYRILLIC CAPITAL LETTER SHCHA
0x042A    Ъ	      ISOcyr1	# CYRILLIC CAPITAL LETTER HARD SIGN
0x042B    Ы	      ISOcyr1	# CYRILLIC CAPITAL LETTER YERU
0x042C    Ь	      ISOcyr1	# CYRILLIC CAPITAL LETTER SOFT SIGN
0x042D    Э	      ISOcyr1	# CYRILLIC CAPITAL LETTER E
0x042E    Ю	      ISOcyr1	# CYRILLIC CAPITAL LETTER YU
0x042F    Я	      ISOcyr1	# CYRILLIC CAPITAL LETTER YA
0x0430    а	      ISOcyr1	# CYRILLIC SMALL LETTER A
0x0431    б	      ISOcyr1	# CYRILLIC SMALL LETTER BE
0x0432    в	      ISOcyr1	# CYRILLIC SMALL LETTER VE
0x0433    г	      ISOcyr1	# CYRILLIC SMALL LETTER GHE
0x0434    д	      ISOcyr1	# CYRILLIC SMALL LETTER DE
0x0435    е	      ISOcyr1	# CYRILLIC SMALL LETTER IE
0x0436    ж	      ISOcyr1	# CYRILLIC SMALL LETTER ZHE
0x0437    з	      ISOcyr1	# CYRILLIC SMALL LETTER ZE
0x0438    и	      ISOcyr1	# CYRILLIC SMALL LETTER I
0x0439    й	      ISOcyr1	# CYRILLIC SMALL LETTER SHORT I
0x043A    к	      ISOcyr1	# CYRILLIC SMALL LETTER KA
0x043B    л	      ISOcyr1	# CYRILLIC SMALL LETTER EL
0x043C    м	      ISOcyr1	# CYRILLIC SMALL LETTER EM
0x043D    н	      ISOcyr1	# CYRILLIC SMALL LETTER EN
0x043E    о	      ISOcyr1	# CYRILLIC SMALL LETTER O
0x043F    п	      ISOcyr1	# CYRILLIC SMALL LETTER PE
0x0440    р	      ISOcyr1	# CYRILLIC SMALL LETTER ER
0x0441    с	      ISOcyr1	# CYRILLIC SMALL LETTER ES
0x0442    т	      ISOcyr1	# CYRILLIC SMALL LETTER TE
0x0443    у	      ISOcyr1	# CYRILLIC SMALL LETTER U
0x0444    ф	      ISOcyr1	# CYRILLIC SMALL LETTER EF
0x0445    х	      ISOcyr1	# CYRILLIC SMALL LETTER HA
0x0446    ц	      ISOcyr1	# CYRILLIC SMALL LETTER TSE
0x0447    ч	      ISOcyr1	# CYRILLIC SMALL LETTER CHE
0x0448    ш	      ISOcyr1	# CYRILLIC SMALL LETTER SHA
0x0449    щ	      ISOcyr1	# CYRILLIC SMALL LETTER SHCHA
0x044A    ъ	      ISOcyr1	# CYRILLIC SMALL LETTER HARD SIGN
0x044B    ы	      ISOcyr1	# CYRILLIC SMALL LETTER YERU
0x044C    ь	      ISOcyr1	# CYRILLIC SMALL LETTER SOFT SIGN
0x044D    э	      ISOcyr1	# CYRILLIC SMALL LETTER E
0x044E    ю	      ISOcyr1	# CYRILLIC SMALL LETTER YU
0x044F    я	      ISOcyr1	# CYRILLIC SMALL LETTER YA
0x0451    ё	      ISOcyr1	# CYRILLIC SMALL LETTER IO
0x0452    ђ	      ISOcyr2	# CYRILLIC SMALL LETTER DJE
0x0453    ѓ	      ISOcyr2	# CYRILLIC SMALL LETTER GJE
0x0454    є	      ISOcyr2	# CYRILLIC SMALL LETTER UKRAINIAN IE
0x0455    ѕ	      ISOcyr2	# CYRILLIC SMALL LETTER DZE
0x0456    і	      ISOcyr2	# CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0x0457    ї	      ISOcyr2	# CYRILLIC SMALL LETTER YI
0x0458    ј	      ISOcyr2	# CYRILLIC SMALL LETTER JE
0x0459    љ	      ISOcyr2	# CYRILLIC SMALL LETTER LJE
0x045A    њ	      ISOcyr2	# CYRILLIC SMALL LETTER NJE
0x045B    ћ	      ISOcyr2	# CYRILLIC SMALL LETTER TSHE
0x045C    ќ	      ISOcyr2	# CYRILLIC SMALL LETTER KJE
0x045E    ў	      ISOcyr2	# CYRILLIC SMALL LETTER SHORT U
0x045F    џ	      ISOcyr2	# CYRILLIC SMALL LETTER DZHE
0x2002     	      ISOpub	# EN SPACE
0x2003     	      ISOpub	# EM SPACE
0x2004     	      ISOpub	# THREE-PER-EM SPACE
0x2005     	      ISOpub	# FOUR-PER-EM SPACE
0x2007     	      ISOpub	# FIGURE SPACE
0x2008     	      ISOpub	# PUNCTUATION SPACE
0x2009     	      ISOpub	# THIN SPACE
0x200A     	      ISOpub	# HAIR SPACE
0x200C    ‌	      HTMLspecial	# ZERO WIDTH NON-JOINER
0x200D    ‍	      HTMLspecial	# ZERO WIDTH JOINER
0x200E    ‎	      HTMLspecial	# LEFT-TO-RIGHT MARK
0x200F    ‏	      HTMLspecial	# RIGHT-TO-LEFT MARK
0x2010    ‐	      ISOpub	# HYPHEN
0x2013    –	      ISOpub	# EN DASH
0x2014    —	      ISOpub	# EM DASH
0x2015    ―	      ISOnum	# HORIZONTAL BAR
0x2016    ‖	      ISOtech	# DOUBLE VERTICAL LINE
0x2018    ‘	      ISOnum	# LEFT SINGLE QUOTATION MARK
0x2018    ’	      ISOpub	# LEFT SINGLE QUOTATION MARK
0x2019    ’	      ISOnum	# RIGHT SINGLE QUOTATION MARK
0x201A    ‚	      ISOpub	# SINGLE LOW-9 QUOTATION MARK
0x201A    ‚	      HTMLspecial	# SINGLE LOW-9 QUOTATION MARK
0x201C    “	      ISOnum	# LEFT DOUBLE QUOTATION MARK
0x201C    ”	      ISOpub	# LEFT DOUBLE QUOTATION MARK
0x201D    ”	      ISOnum	# RIGHT DOUBLE QUOTATION MARK
0x201E    „	      HTMLspecial	# DOUBLE LOW-9 QUOTATION MARK
0x201E    „	      ISOpub	# DOUBLE LOW-9 QUOTATION MARK
0x2020    †	      ISOpub	# DAGGER
0x2021    ‡	      ISOpub	# DOUBLE DAGGER
0x2022    •	      ISOpub	# BULLET
0x2025    ‥	      ISOpub	# TWO DOT LEADER
0x2026    …	      ISOpub	# HORIZONTAL ELLIPSIS
0x2026    …	      ISOpub	# HORIZONTAL ELLIPSIS
0x2030    ‰	      ISOtech	# PER MILLE SIGN
0x2032    ′	      ISOtech	# PRIME
0x2032    &vprime;	      ISOamso	# PRIME
0x2033    ″	      ISOtech	# DOUBLE PRIME
0x2034    ‴	      ISOtech	# TRIPLE PRIME
0x2035    ‵	      ISOamso	# REVERSED PRIME
0x2039    ‹	      HTMLspecial	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x203A    ›	      HTMLspecial	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x203E    ‾	      HTMLsymbol	# OVERLINE
0x2041    ⁁	      ISOpub	# CARET INSERTION POINT
0x2043    ⁃	      ISOpub	# HYPHEN BULLET
0x2044    ⁄	      HTMLsymbol	# FRACTION SLASH
0x20AC    €	      new       # EURO SIGN
0x20DB    ⃛	      ISOtech	# COMBINING THREE DOTS ABOVE
0x20DC    ⃜	      ISOtech	# COMBINING FOUR DOTS ABOVE
0x2105    ℅	      ISOpub	# CARE OF
0x210B    ℋ	      ISOtech	# SCRIPT CAPITAL H
0x210F    ℏ	      ISOamso	# PLANCK CONSTANT OVER TWO PI
0x2111    ℑ	      ISOamso	# BLACK-LETTER CAPITAL I
0x2112    ℒ	      ISOtech	# SCRIPT CAPITAL L
0x2113    ℓ	      ISOamso	# SCRIPT SMALL L
0x2116    №	      ISOcyr1	# NUMERO SIGN
0x2117    ℗	      ISOpub	# SOUND RECORDING COPYRIGHT
0x2118    ℘	      ISOamso	# SCRIPT CAPITAL P
0x211C    ℜ	      ISOamso	# BLACK-LETTER CAPITAL R
0x211E    ℞	      ISOpub	# PRESCRIPTION TAKE
0x2122    ™	      ISOnum	# TRADE MARK SIGN
0x2126    Ω	      ISOnum	# OHM SIGN
0x212B    Å	      ISOtech	# ANGSTROM SIGN
0x212C    ℬ	      ISOtech	# SCRIPT CAPITAL B
0x2133    ℳ	      ISOtech	# SCRIPT CAPITAL M
0x2134    ℴ	      ISOtech	# SCRIPT SMALL O
0x2135    ℵ	      HTMLsymbol	# ALEF SYMBOL
0x2135    ℵ	      ISOtech	# ALEF SYMBOL
0x2136    ℶ	      ISOamso	# BET SYMBOL
0x2137    ℷ	      ISOamso	# GIMEL SYMBOL
0x2138    ℸ	      ISOamso	# DALET SYMBOL
0x2153    ⅓	      ISOpub	# VULGAR FRACTION ONE THIRD
0x2154    ⅔	      ISOpub	# VULGAR FRACTION TWO THIRDS
0x2155    ⅕	      ISOpub	# VULGAR FRACTION ONE FIFTH
0x2156    ⅖	      ISOpub	# VULGAR FRACTION TWO FIFTHS
0x2157    ⅗	      ISOpub	# VULGAR FRACTION THREE FIFTHS
0x2158    ⅘	      ISOpub	# VULGAR FRACTION FOUR FIFTHS
0x2159    ⅙	      ISOpub	# VULGAR FRACTION ONE SIXTH
0x215A    ⅚	      ISOpub	# VULGAR FRACTION FIVE SIXTHS
0x215B    ⅛	      ISOnum	# VULGAR FRACTION ONE EIGHTH
0x215C    ⅜	      ISOnum	# VULGAR FRACTION THREE EIGHTHS
0x215D    ⅝	      ISOnum	# VULGAR FRACTION FIVE EIGHTHS
0x215E    ⅞	      ISOnum	# VULGAR FRACTION SEVEN EIGHTHS
0x2190    ←	      ISOnum	# LEFTWARDS ARROW
0x2191    ↑	      ISOnum	# UPWARDS ARROW
0x2192    →	      ISOnum	# RIGHTWARDS ARROW
0x2193    ↓	      ISOnum	# DOWNWARDS ARROW
0x2194    ↔	      ISOamsa	# LEFT RIGHT ARROW
0x2194    ⟺	      ISOamsa	# LEFT RIGHT ARROW
0x2194    ⟷	      ISOamsa	# LEFT RIGHT ARROW
0x2195    ↕	      ISOamsa	# UP DOWN ARROW
0x2196    ↖	      ISOamsa	# NORTH WEST ARROW
0x2197    ↗	      ISOamsa	# NORTH EAST ARROW
0x2198    &drarr;	      ISOamsa	# SOUTH EAST ARROW
0x2199    &dlarr;	      ISOamsa	# SOUTH WEST ARROW
0x219A    ↚	      ISOamsa	# LEFTWARDS ARROW WITH STROKE
0x219B    ↛	      ISOamsa	# RIGHTWARDS ARROW WITH STROKE
0x219D    ↝	      ISOamsa	# RIGHTWARDS WAVE ARROW
0x219E    ↞	      ISOamsa	# LEFTWARDS TWO HEADED ARROW
0x21A0    ↠	      ISOamsa	# RIGHTWARDS TWO HEADED ARROW
0x21A2    ↢	      ISOamsa	# LEFTWARDS ARROW WITH TAIL
0x21A3    ↣	      ISOamsa	# RIGHTWARDS ARROW WITH TAIL
0x21A6    ↦	      ISOamsa	# RIGHTWARDS ARROW FROM BAR
0x21A9    ↩	      ISOamsa	# LEFTWARDS ARROW WITH HOOK
0x21AA    ↪	      ISOamsa	# RIGHTWARDS ARROW WITH HOOK
0x21AB    ↫	      ISOamsa	# LEFTWARDS ARROW WITH LOOP
0x21AC    ↬	      ISOamsa	# RIGHTWARDS ARROW WITH LOOP
0x21AD    ↭	      ISOamsa	# LEFT RIGHT WAVE ARROW
0x21AE    ↮	      ISOamsa	# LEFT RIGHT ARROW WITH STROKE
0x21B0    ↰	      ISOamsa	# UPWARDS ARROW WITH TIP LEFTWARDS
0x21B1    ↱	      ISOamsa	# UPWARDS ARROW WITH TIP RIGHTWARDS
0x21B5    ↵	      HTMLsymbol	# DOWNWARDS ARROW WITH CORNER LEFTWARDS
0x21B6    ↶	      ISOamsa	# ANTICLOCKWISE TOP SEMICIRCLE ARROW
0x21B7    ↷	      ISOamsa	# CLOCKWISE TOP SEMICIRCLE ARROW
0x21BA    ↺	      ISOamsa	# ANTICLOCKWISE OPEN CIRCLE ARROW
0x21BB    ↻	      ISOamsa	# CLOCKWISE OPEN CIRCLE ARROW
0x21BC    ↼	      ISOamsa	# LEFTWARDS HARPOON WITH BARB UPWARDS
0x21BD    ↽	      ISOamsa	# LEFTWARDS HARPOON WITH BARB DOWNWARDS
0x21BE    ↾	      ISOamsa	# UPWARDS HARPOON WITH BARB RIGHTWARDS
0x21BF    ↿	      ISOamsa	# UPWARDS HARPOON WITH BARB LEFTWARDS
0x21C0    ⇀	      ISOamsa	# RIGHTWARDS HARPOON WITH BARB UPWARDS
0x21C1    ⇁	      ISOamsa	# RIGHTWARDS HARPOON WITH BARB DOWNWARDS
0x21C2    ⇂	      ISOamsa	# DOWNWARDS HARPOON WITH BARB RIGHTWARDS
0x21C3    ⇃	      ISOamsa	# DOWNWARDS HARPOON WITH BARB LEFTWARDS
0x21C4    &rlarr2;	      ISOamsa	# RIGHTWARDS ARROW OVER LEFTWARDS ARROW
0x21C6    &lrarr2;	      ISOamsa	# LEFTWARDS ARROW OVER RIGHTWARDS ARROW
0x21C7    &larr2;	      ISOamsa	# LEFTWARDS PAIRED ARROWS
0x21C8    &uarr2;	      ISOamsa	# UPWARDS PAIRED ARROWS
0x21C9    &rarr2;	      ISOamsa	# RIGHTWARDS PAIRED ARROWS
0x21CA    &darr2;	      ISOamsa	# DOWNWARDS PAIRED ARROWS
0x21CB    &lrhar2;	      ISOamsa	# LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
0x21CC    &rlhar2;	      ISOamsa	# RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
0x21CD    ⇍	      ISOamsa	# LEFTWARDS DOUBLE ARROW WITH STROKE
0x21CE    ⇎	      ISOamsa	# LEFT RIGHT DOUBLE ARROW WITH STROKE
0x21CF    ⇏	      ISOamsa	# RIGHTWARDS DOUBLE ARROW WITH STROKE
0x21D0    ⇐	      ISOtech	# LEFTWARDS DOUBLE ARROW
0x21D0    ⟸	      ISOamsa	# LEFTWARDS DOUBLE ARROW
0x21D1    ⇑	      ISOamsa	# UPWARDS DOUBLE ARROW
0x21D2    ⇒	      ISOtech	# RIGHTWARDS DOUBLE ARROW
0x21D2    ⟹	      ISOamsa	# RIGHTWARDS DOUBLE ARROW
0x21D3    ⇓	      ISOamsa	# DOWNWARDS DOUBLE ARROW
0x21D4    ⇔	      ISOamsa	# LEFT RIGHT DOUBLE ARROW
0x21D4    ⇔	      ISOtech	# LEFT RIGHT DOUBLE ARROW
0x21D5    ⇕	      ISOamsa	# UP DOWN DOUBLE ARROW
0x21DA    ⇚	      ISOamsa	# LEFTWARDS TRIPLE ARROW
0x21DB    ⇛	      ISOamsa	# RIGHTWARDS TRIPLE ARROW
0x2200    ∀	      ISOtech	# FOR ALL
0x2201    ∁	      ISOamso	# COMPLEMENT
0x2202    ∂	      ISOtech	# PARTIAL DIFFERENTIAL
0x2203    ∃	      ISOtech	# THERE EXISTS
0x2204    ∄	      ISOamso	# THERE DOES NOT EXIST
0x2205    ∅	      ISOamso	# EMPTY SET
0x2207    ∇	      ISOtech	# NABLA
0x2208    ∈	      ISOtech	# ELEMENT OF
0x2209    ∉	      ISOtech	# NOT AN ELEMENT OF
0x220A    &epsis;	      ISOgrk3	# SMALL ELEMENT OF
0x220B    ∋	      ISOtech	# CONTAINS AS MEMBER
0x220D    ϶	      ISOamsr	# SMALL CONTAINS AS MEMBER
0x220F    ∏	      ISOamsb	# N-ARY PRODUCT
0x2210    ⨿	      ISOamsb	# N-ARY COPRODUCT
0x2210    ∐	      ISOamsb	# N-ARY COPRODUCT
0x2210    &samalg;	      ISOamsr	# N-ARY COPRODUCT
0x2211    ∑	      ISOamsb	# N-ARY SUMMATION
0x2212    −	      ISOtech	# MINUS SIGN
0x2213    ∓	      ISOtech	# MINUS-OR-PLUS SIGN
0x2214    ∔	      ISOamsb	# DOT PLUS
0x2216    ∖	      ISOamsb	# SET MINUS
0x2216    ∖	      ISOamsb	# SET MINUS
0x2217    ∗	      ISOtech	# ASTERISK OPERATOR
0x2218    ∘	      ISOtech	# RING OPERATOR
0x221A    √	      ISOtech	# SQUARE ROOT
0x221D    ∝	      ISOtech	# PROPORTIONAL TO
0x221D    ∝	      ISOamsr	# PROPORTIONAL TO
0x221E    ∞	      ISOtech	# INFINITY
0x221F    &ang90;	      ISOtech	# RIGHT ANGLE
0x2220    ∠	      ISOamso	# ANGLE
0x2221    ∡	      ISOamso	# MEASURED ANGLE
0x2222    ∢	      ISOtech	# SPHERICAL ANGLE
0x2223    ∣	      ISOamsr	# DIVIDES
0x2224    ∤	      ISOamsn	# DOES NOT DIVIDE
0x2225    ∥	      ISOtech	# PARALLEL TO
0x2225    ∥	      ISOamsr	# PARALLEL TO
0x2226    ∦	      ISOamsn	# NOT PARALLEL TO
0x2226    ∦	      ISOamsn	# NOT PARALLEL TO
0x2227    ∧	      ISOtech	# LOGICAL AND
0x2228    ∨	      ISOtech	# LOGICAL OR
0x2229    ∩	      ISOtech	# INTERSECTION
0x222A    ∪	      ISOtech	# UNION
0x222B    ∫	      ISOtech	# INTEGRAL
0x222E    ∮	      ISOtech	# CONTOUR INTEGRAL
0x2234    ∴	      ISOtech	# THEREFORE
0x2235    ∵	      ISOtech	# BECAUSE
0x223C    ∼	      ISOtech	# TILDE OPERATOR
0x223C    ∼	      ISOamsr	# TILDE OPERATOR
0x223D    ∽	      ISOamsr	# REVERSED TILDE
0x2240    ≀	      ISOamsb	# WREATH PRODUCT
0x2241    ≁	      ISOamsn	# NOT TILDE
0x2243    ≃	      ISOtech	# ASYMPTOTICALLY EQUAL TO
0x2244    ≄	      ISOamsn	# NOT ASYMPTOTICALLY EQUAL TO
0x2245    ≅	      ISOtech	# APPROXIMATELY EQUAL TO
0x2247    ≇	      ISOamsn	# NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
0x2248    ≈	      ISOtech	# ALMOST EQUAL TO
0x2248    ≈	      ISOamsr	# ALMOST EQUAL TO
0x2248    ≈	      ISOamsr	# ALMOST EQUAL TO
0x2249    ≉	      ISOamsn	# NOT ALMOST EQUAL TO
0x224A    ≊	      ISOamsr	# ALMOST EQUAL OR EQUAL TO
0x224C    ≌	      ISOamsr	# ALL EQUAL TO
0x224E    ≎	      ISOamsr	# GEOMETRICALLY EQUIVALENT TO
0x224F    ≏	      ISOamsr	# DIFFERENCE BETWEEN
0x2250    ≐	      ISOamsr	# APPROACHES THE LIMIT
0x2251    ≑	      ISOamsr	# GEOMETRICALLY EQUAL TO
0x2252    ≒	      ISOamsr	# APPROXIMATELY EQUAL TO OR THE IMAGE OF
0x2253    ≓	      ISOamsr	# IMAGE OF OR APPROXIMATELY EQUAL TO
0x2254    ≔	      ISOamsr	# COLON EQUALS
0x2255    ≕	      ISOamsr	# EQUALS COLON
0x2256    ≖	      ISOamsr	# RING IN EQUAL TO
0x2257    ≗	      ISOamsr	# RING EQUAL TO
0x2259    ≙	      ISOtech	# ESTIMATES
0x225C    ≜	      ISOamsr	# DELTA EQUAL TO
0x2260    ≠	      ISOtech	# NOT EQUAL TO
0x2261    ≡	      ISOtech	# IDENTICAL TO
0x2262    ≢	      ISOamsn	# NOT IDENTICAL TO
0x2264    ≤	      ISOtech	# LESS-THAN OR EQUAL TO
0x2264    ⩽	      ISOamsr	# LESS-THAN OR EQUAL TO
0x2265    ≥	      ISOtech	# GREATER-THAN OR EQUAL TO
0x2265    ⩾	      ISOamsr	# GREATER-THAN OR EQUAL TO
0x2266    ≦	      ISOamsr	# LESS-THAN OVER EQUAL TO
0x2267    ≧	      ISOamsr	# GREATER-THAN OVER EQUAL TO
0x2268    ≨	      ISOamsn	# LESS-THAN BUT NOT EQUAL TO
0x2268    ⪇	      ISOamsn	# LESS-THAN BUT NOT EQUAL TO
0x2268    ≨︀	      ISOamsn	# LESS-THAN BUT NOT EQUAL TO
0x2269    ≩	      ISOamsn	# GREATER-THAN BUT NOT EQUAL TO
0x2269    ⪈	      ISOamsn	# GREATER-THAN BUT NOT EQUAL TO
0x2269    ≩︀	      ISOamsn	# GREATER-THAN BUT NOT EQUAL TO
0x226A    ≪	      ISOamsr	# MUCH LESS-THAN
0x226B    ≫	      ISOamsr	# MUCH GREATER-THAN
0x226C    ≬	      ISOamsr	# BETWEEN
0x226E    ≮	      ISOamsn	# NOT LESS-THAN
0x226F    ≯	      ISOamsn	# NOT GREATER-THAN
0x2270    ≰	      ISOamsn	# NEITHER LESS-THAN NOR EQUAL TO
0x2270    ⩽̸	      ISOamsn	# NEITHER LESS-THAN NOR EQUAL TO
0x2271    ≱	      ISOamsn	# NEITHER GREATER-THAN NOR EQUAL TO
0x2271    ⩾̸	      ISOamsn	# NEITHER GREATER-THAN NOR EQUAL TO
0x2272    ≲	      ISOamsr	# LESS-THAN OR EQUIVALENT TO
0x2273    ≳	      ISOamsr	# GREATER-THAN OR EQUIVALENT TO
0x2276    ≶	      ISOamsr	# LESS-THAN OR GREATER-THAN
0x2277    ≷	      ISOamsr	# GREATER-THAN OR LESS-THAN
0x227A    ≺	      ISOamsr	# PRECEDES
0x227B    ≻	      ISOamsr	# SUCCEEDS
0x227C    &cupre;	      ISOamsr	# PRECEDES OR EQUAL TO
0x227C    ⪯	      ISOamsr	# PRECEDES OR EQUAL TO
0x227D    ≽	      ISOamsr	# SUCCEEDS OR EQUAL TO
0x227D    ⪰	      ISOamsr	# SUCCEEDS OR EQUAL TO
0x227E    ≾	      ISOamsr	# PRECEDES OR EQUIVALENT TO
0x227F    ≿	      ISOamsr	# SUCCEEDS OR EQUIVALENT TO
0x2280    ⊀	      ISOamsn	# DOES NOT PRECEDE
0x2281    ⊁	      ISOamsn	# DOES NOT SUCCEED
0x2282    ⊂	      ISOtech	# SUBSET OF
0x2283    ⊃	      ISOtech	# SUPERSET OF
0x2284    ⊄	      ISOamsn	# NOT A SUBSET OF
0x2285    ⊅	      ISOamsn	# NOT A SUPERSET OF
0x2286    ⫅	      ISOamsr	# SUBSET OF OR EQUAL TO
0x2286    ⊆	      ISOtech	# SUBSET OF OR EQUAL TO
0x2287    ⫆	      ISOamsr	# SUPERSET OF OR EQUAL TO
0x2287    ⊇	      ISOtech	# SUPERSET OF OR EQUAL TO
0x2288    ⫅̸	      ISOamsn	# NEITHER A SUBSET OF NOR EQUAL TO
0x2288    ⊈	      ISOamsn	# NEITHER A SUBSET OF NOR EQUAL TO
0x2289    ⫆̸	      ISOamsn	# NEITHER A SUPERSET OF NOR EQUAL TO
0x2289    ⊉	      ISOamsn	# NEITHER A SUPERSET OF NOR EQUAL TO
0x228A    ⫋	      ISOamsn	# SUBSET OF WITH NOT EQUAL TO
0x228A    ⊊	      ISOamsn	# SUBSET OF WITH NOT EQUAL TO
0x228A    ⫋︀	      ISOamsn	# SUBSET OF WITH NOT EQUAL TO
0x228A    ⊊︀	      ISOamsn	# SUBSET OF WITH NOT EQUAL TO
0x228B    ⫌	      ISOamsn	# SUPERSET OF WITH NOT EQUAL TO
0x228B    ⊋	      ISOamsn	# SUPERSET OF WITH NOT EQUAL TO
0x228B    ⫌︀	      ISOamsn	# SUPERSET OF WITH NOT EQUAL TO
0x228B    ⊋︀	      ISOamsn	# SUPERSET OF WITH NOT EQUAL TO
0x228E    ⊎	      ISOamsb	# MULTISET UNION
0x228F    ⊏	      ISOamsr	# SQUARE IMAGE OF
0x2290    ⊐	      ISOamsr	# SQUARE ORIGINAL OF
0x2291    ⊑	      ISOamsr	# SQUARE IMAGE OF OR EQUAL TO
0x2292    ⊒	      ISOamsr	# SQUARE ORIGINAL OF OR EQUAL TO
0x2293    ⊓	      ISOamsb	# SQUARE CAP
0x2294    ⊔	      ISOamsb	# SQUARE CUP
0x2295    ⊕	      ISOamsb	# CIRCLED PLUS
0x2296    ⊖	      ISOamsb	# CIRCLED MINUS
0x2297    ⊗	      ISOamsb	# CIRCLED TIMES
0x2298    ⊘	      ISOamsb	# CIRCLED DIVISION SLASH
0x2299    ⊙	      ISOamsb	# CIRCLED DOT OPERATOR
0x229A    ⊚	      ISOamsb	# CIRCLED RING OPERATOR
0x229B    ⊛	      ISOamsb	# CIRCLED ASTERISK OPERATOR
0x229D    ⊝	      ISOamsb	# CIRCLED DASH
0x229E    ⊞	      ISOamsb	# SQUARED PLUS
0x229F    ⊟	      ISOamsb	# SQUARED MINUS
0x22A0    ⊠	      ISOamsb	# SQUARED TIMES
0x22A1    ⊡	      ISOamsb	# SQUARED DOT OPERATOR
0x22A2    ⊢	      ISOamsr	# RIGHT TACK
0x22A3    ⊣	      ISOamsr	# LEFT TACK
0x22A4    ⊤	      ISOamsb	# DOWN TACK
0x22A5    ⊥	      ISOtech	# UP TACK
0x22A5    ⊥	      ISOtech	# UP TACK
0x22A7    ⊧	      ISOamsr	# MODELS
0x22A8    ⊨	      ISOamsr	# TRUE
0x22A9    ⊩	      ISOamsr	# FORCES
0x22AA    ⊪	      ISOamsr	# TRIPLE VERTICAL BAR RIGHT TURNSTILE
0x22AC    ⊬	      ISOamsn	# DOES NOT PROVE
0x22AD    ⊭	      ISOamsn	# NOT TRUE
0x22AE    ⊮	      ISOamsn	# DOES NOT FORCE
0x22AF    ⊯	      ISOamsn	# NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT
0x22B2    ⊲	      ISOamsr	# NORMAL SUBGROUP OF
0x22B3    ⊳	      ISOamsr	# CONTAINS AS NORMAL SUBGROUP
0x22B4    ⊴	      ISOamsr	# NORMAL SUBGROUP OF OR EQUAL TO
0x22B5    ⊵	      ISOamsr	# CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
0x22B8    ⊸	      ISOamsa	# MULTIMAP
0x22BA    ⊺	      ISOamsb	# INTERCALATE
0x22BB    ⊻	      ISOamsr	# XOR
0x22BC    ⌅	      ISOamsb	# NAND
0x22C4    ⋄	      ISOamsb	# DIAMOND OPERATOR
0x22C5    ⋅	      ISOamsb	# DOT OPERATOR
0x22C6    ⋆	      ISOamsb	# STAR OPERATOR
0x22C7    ⋇	      ISOamsb	# DIVISION TIMES
0x22C8    ⋈	      ISOamsr	# BOWTIE
0x22C9    ⋉	      ISOamsb	# LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
0x22CA    ⋊	      ISOamsb	# RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
0x22CB    ⋋	      ISOamsb	# LEFT SEMIDIRECT PRODUCT
0x22CC    ⋌	      ISOamsb	# RIGHT SEMIDIRECT PRODUCT
0x22CD    ⋍	      ISOamsr	# REVERSED TILDE EQUALS
0x22CE    ⋎	      ISOamsb	# CURLY LOGICAL OR
0x22CF    ⋏	      ISOamsb	# CURLY LOGICAL AND
0x22D0    ⋐	      ISOamsr	# DOUBLE SUBSET
0x22D1    ⋑	      ISOamsr	# DOUBLE SUPERSET
0x22D2    ⋒	      ISOamsb	# DOUBLE INTERSECTION
0x22D3    ⋓	      ISOamsb	# DOUBLE UNION
0x22D4    ⋔	      ISOamsr	# PITCHFORK
0x22D6    &ldot;	      ISOamsr	# LESS-THAN WITH DOT
0x22D7    &gsdot;	      ISOamsr	# GREATER-THAN WITH DOT
0x22D8    ⋘	      ISOamsr	# VERY MUCH LESS-THAN
0x22D9    ⋙	      ISOamsr	# VERY MUCH GREATER-THAN
0x22DA    ⋚	      ISOamsr	# LESS-THAN EQUAL TO OR GREATER-THAN
0x22DB    ⋛	      ISOamsr	# GREATER-THAN EQUAL TO OR LESS-THAN
0x22DC    ⪕	      ISOamsr	# EQUAL TO OR LESS-THAN
0x22DD    ⪖	      ISOamsr	# EQUAL TO OR GREATER-THAN
0x22DE    ⋞	      ISOamsr	# EQUAL TO OR PRECEDES
0x22DF    ⋟	      ISOamsr	# EQUAL TO OR SUCCEEDS
0x22E0    ⪯̸	      ISOamsn	# DOES NOT PRECEDE OR EQUAL
0x22E1    ⪰̸	      ISOamsn	# DOES NOT SUCCEED OR EQUAL
0x22E6    ⋦	      ISOamsn	# LESS-THAN BUT NOT EQUIVALENT TO
0x22E7    ⋧	      ISOamsn	# GREATER-THAN BUT NOT EQUIVALENT TO
0x22E8    ⋨	      ISOamsn	# PRECEDES BUT NOT EQUIVALENT TO
0x22E9    ⋩	      ISOamsn	# SUCCEEDS BUT NOT EQUIVALENT TO
0x22EA    ⋪	      ISOamsn	# NOT NORMAL SUBGROUP OF
0x22EB    ⋫	      ISOamsn	# DOES NOT CONTAIN AS NORMAL SUBGROUP
0x22EC    ⋬	      ISOamsn	# NOT NORMAL SUBGROUP OF OR EQUAL TO
0x22ED    ⋭	      ISOamsn	# DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
0x22EE    ⋮	      ISOpub	# VERTICAL ELLIPSIS
0x2306    ⌆	      ISOamsb	# PERSPECTIVE
0x2308    ⌈	      ISOamsc	# LEFT CEILING
0x2309    ⌉	      ISOamsc	# RIGHT CEILING
0x230A    ⌊	      ISOamsc	# LEFT FLOOR
0x230B    ⌋	      ISOamsc	# RIGHT FLOOR
0x230C    ⌌	      ISOpub	# BOTTOM RIGHT CROP
0x230D    ⌍	      ISOpub	# BOTTOM LEFT CROP
0x230E    ⌎	      ISOpub	# TOP RIGHT CROP
0x230F    ⌏	      ISOpub	# TOP LEFT CROP
0x2315    ⌕	      ISOpub	# TELEPHONE RECORDER
0x2316    ⌖	      ISOpub	# POSITION INDICATOR
0x231C    ⌜	      ISOamsc	# TOP LEFT CORNER
0x231D    ⌝	      ISOamsc	# TOP RIGHT CORNER
0x231E    ⌞	      ISOamsc	# BOTTOM LEFT CORNER
0x231F    ⌟	      ISOamsc	# BOTTOM RIGHT CORNER
0x2322    ⌢	      ISOamsr	# FROWN
0x2322    ⌢	      ISOamsr	# FROWN
0x2323    ⌣	      ISOamsr	# SMILE
0x2323    ⌣	      ISOamsr	# SMILE
0x2329    ⟨	      ISOtech	# LEFT-POINTING ANGLE BRACKET
0x232A    ⟩	      ISOtech	# RIGHT-POINTING ANGLE BRACKET
0x2423    ␣	      ISOpub	# OPEN BOX
0x24C8    Ⓢ	      ISOamso	# CIRCLED LATIN CAPITAL LETTER S
0x2500    ─	      ISObox	# BOX DRAWINGS LIGHT HORIZONTAL
0x2502    │	      ISObox	# BOX DRAWINGS LIGHT VERTICAL
0x250C    ┌	      ISObox	# BOX DRAWINGS LIGHT DOWN AND RIGHT
0x2510    ┐	      ISObox	# BOX DRAWINGS LIGHT DOWN AND LEFT
0x2514    └	      ISObox	# BOX DRAWINGS LIGHT UP AND RIGHT
0x2518    ┘	      ISObox	# BOX DRAWINGS LIGHT UP AND LEFT
0x251C    ├	      ISObox	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0x2524    ┤	      ISObox	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
0x252C    ┬	      ISObox	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0x2534    ┴	      ISObox	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
0x253C    ┼	      ISObox	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0x2550    ═	      ISObox	# BOX DRAWINGS DOUBLE HORIZONTAL
0x2551    ║	      ISObox	# BOX DRAWINGS DOUBLE VERTICAL
0x2552    ╒	      ISObox	# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0x2553    ╓	      ISObox	# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0x2554    ╔	      ISObox	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
0x2555    ╕	      ISObox	# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0x2556    ╖	      ISObox	# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0x2557    ╗	      ISObox	# BOX DRAWINGS DOUBLE DOWN AND LEFT
0x2558    ╘	      ISObox	# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0x2559    ╙	      ISObox	# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0x255A    ╚	      ISObox	# BOX DRAWINGS DOUBLE UP AND RIGHT
0x255B    ╛	      ISObox	# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0x255C    ╜	      ISObox	# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0x255D    ╝	      ISObox	# BOX DRAWINGS DOUBLE UP AND LEFT
0x255E    ╞	      ISObox	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0x255F    ╟	      ISObox	# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0x2560    ╠	      ISObox	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0x2561    ╡	      ISObox	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0x2562    ╢	      ISObox	# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0x2563    ╣	      ISObox	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0x2564    ╤	      ISObox	# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0x2565    ╥	      ISObox	# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0x2566    ╦	      ISObox	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0x2567    ╧	      ISObox	# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0x2568    ╨	      ISObox	# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0x2569    ╩	      ISObox	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0x256A    ╪	      ISObox	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0x256B    ╫	      ISObox	# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0x256C    ╬	      ISObox	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0x2580    ▀	      ISOpub	# UPPER HALF BLOCK
0x2584    ▄	      ISOpub	# LOWER HALF BLOCK
0x2588    █	      ISOpub	# FULL BLOCK
0x2591    ░	      ISOpub	# LIGHT SHADE
0x2592    ▒	      ISOpub	# MEDIUM SHADE
0x2593    ▓	      ISOpub	# DARK SHADE
0x25A1    □	      ISOpub	# WHITE SQUARE
0x25A1    □	      ISOtech	# WHITE SQUARE
0x25AA    ▪	      ISOpub	# BLACK SMALL SQUARE
0x25AD    ▭	      ISOpub	# WHITE RECTANGLE
0x25AE    ▮	      ISOpub	# BLACK VERTICAL RECTANGLE
0x25B3    △	      ISOamsb	# WHITE UP-POINTING TRIANGLE
0x25B4    ▴	      ISOpub	# BLACK UP-POINTING SMALL TRIANGLE
0x25B5    ▵	      ISOpub	# WHITE UP-POINTING SMALL TRIANGLE
0x25B8    ▸	      ISOpub	# BLACK RIGHT-POINTING SMALL TRIANGLE
0x25B9    ▹	      ISOpub	# WHITE RIGHT-POINTING SMALL TRIANGLE
0x25BD    ▽	      ISOamsb	# WHITE DOWN-POINTING TRIANGLE
0x25BE    ▾	      ISOpub	# BLACK DOWN-POINTING SMALL TRIANGLE
0x25BF    ▿	      ISOpub	# WHITE DOWN-POINTING SMALL TRIANGLE
0x25C2    ◂	      ISOpub	# BLACK LEFT-POINTING SMALL TRIANGLE
0x25C3    ◃	      ISOpub	# WHITE LEFT-POINTING SMALL TRIANGLE
0x25CA    ◊	      ISOpub	# LOZENGE
0x25CB    ○	      ISOpub	# WHITE CIRCLE
0x25CB    ◯	      ISOamsb	# WHITE CIRCLE
0x2605    ★	      ISOpub	# BLACK STAR
0x2606    ☆	      ISOpub	# WHITE STAR
0x260E    ☎	      ISOpub	# BLACK TELEPHONE
0x2640    ♀	      ISOpub	# FEMALE SIGN
0x2642    ♂	      ISOpub	# MALE SIGN
0x2660    ♠	      ISOpub	# BLACK SPADE SUIT
0x2663    ♣	      ISOpub	# BLACK CLUB SUIT
0x2665    ♥	      ISOpub	# BLACK HEART SUIT
0x2666    ♦	      ISOpub	# BLACK DIAMOND SUIT
0x266A    ♪	      ISOnum	# EIGHTH NOTE
0x266D    ♭	      ISOpub	# MUSIC FLAT SIGN
0x266E    ♮	      ISOpub	# MUSIC NATURAL SIGN
0x266F    ♯	      ISOpub	# MUSIC SHARP SIGN
0x2713    ✓	      ISOpub	# CHECK MARK
0x2717    ✗	      ISOpub	# BALLOT X
0x2720    ✠	      ISOpub	# MALTESE CROSS
0x2726    ⧫	      ISOpub	# BLACK FOUR POINTED STAR

0x2736    ✶	      ISOpub	# SIX POINTED BLACK STAR
0x????    ϵ	      ISOgrk3	# variant epsilon
0x????    fj	      ISOpub	# fj ligature
0x????    ⪌	      ISOamsr	# greater-than, double equals, less-than
0x????    ⪆	      ISOamsr	# greater-than, approximately equal to
0x????    ⪊	      ISOamsn	# greater-than, not approximately equal to
0x????    &jnodot;	      ISOamso	# latin small letter dotless j
0x????    ⪋	      ISOamsr	# less-than, double equals, greater-than
0x????    ⪅	      ISOamsr	# less-than, approximately equal to
0x????    ⪉	      ISOamsn	# less-than, not approximately equal to
0x????    &lpargt;	      ISOamsc	# left parenthesis, greater-than
0x????    ≧̸	      ISOamsn	# not greater-than, double equals
0x????    ≦̸	      ISOamsn	# not less-than, double equals
0x????    ∤	      ISOamsn	# nshortmid
0x????    ⪷	      ISOamsr	# precedes, approximately equal to
0x????    ⪵	      ISOamsn	# precedes, not double equal
0x????    ⪹	      ISOamsn	# precedes, not approximately equal to
0x????    ⦔	      ISOamsc	# right parenthesis, greater-than
0x????    ⪸	      ISOamsr	# succeeds, approximately equal to
0x????    ⪶	      ISOamsn	# succeeds, not double equals
0x????    ⪺	      ISOamsn	# succeeds, not approximately equal to
0x????    ∣	      ISOamsr	# shortmid
0xFB00    ff	      ISOpub	# LATIN SMALL LIGATURE FF
0xFB01    fi	      ISOpub	# LATIN SMALL LIGATURE FI
0xFB02    fl	      ISOpub	# LATIN SMALL LIGATURE FL
0xFB03    ffi	      ISOpub	# LATIN SMALL LIGATURE FFI
0xFB04    ffl	      ISOpub	# LATIN SMALL LIGATURE FFL

PK0]IYYtest/bad-html.htmlnu[ Examples of "Bad HTML" per Lynx

Unterminated TEXTAREA




Unterminated SELECT

OPTION not within SELECT

TEXTAREA ending without starting

PK0] zztest/README.txtnu[ISO_LATIN1_test.html and iso-8859-1.html are for testing the translation of HTML entities with the character sets that are selectable via the 'o'ptions menu. TestComment.html and tabtest.html are for testing comment and TAB handling. Any other files in this directory do not represent a test suite. They are used during program testing to track down odd and mysterious bugs. PK0]qgVr22test/iso-8859-2.htmlnu[ Martin Ramsch's character table modified and enhanced for iso8859-2

iso8859-2 plus table

Description                               Code            Entity name   
===================================       ============    ==============
quotation mark                            &#34;  --> "     &quot;   --> "
ampersand                                 &#38;  --> &     &amp;    --> &
less-than sign                            &#60;  --> <     &lt;     --> <
greater-than sign                         &#62;  --> >     &gt;     --> >

Description                          Char Code            Entity name   
===================================  ==== ============    ==============
non-breaking space                       &#160; -->      &nbsp;   -->  
capital A, ogonek                        &#260; --> Ą    &Aogon;  --> Ą
breve                               {}  {&#728;}-->{˘}  {&breve;} -->{˘}
capital L, stroke                        &#321; --> Ł    &Lstrok; --> Ł
general currency sign                    &#164; --> ¤    &curren; --> ¤
capital L, caron                         &#317; --> Ľ    &Lcaron; --> Ľ
capital S, acute accent                  &#346; --> Ś    &Sacute; --> Ś
section sign                             &#167; --> §    &sect;   --> §
umlaut (dieresis)                        &#168; --> ¨    &uml;    --> ¨
                                                          &die;    --> ¨
capital S, caron                         &#352; --> Š    &Scaron; --> Š
capital S, cedilla                       &#350; --> Ş    &Scedil; --> Ş
capital T, caron                         &#356; --> Ť    &Tcaron; --> Ť
capital Z, acute accent                  &#377; --> Ź    &Zacute; --> Ź
soft hyphen                         []  [&#173;]-->[­]  [&shy;]   -->[­]
capital Z, caron                         &#381; --> Ž    &Zcaron; --> Ž
capital Z, dot above                     &#379; --> Ż    &Zdot;   --> Ż
degree sign                              &#176; --> °    &deg;    --> °
small a, ogonek                          &#261; --> ą    &aogon;  --> ą
ogonek                              {}  {&#731;}-->{˛}  {&ogon;}  -->{˛}
small l, stroke                          &#322; --> ł    &lstrok; --> ł
acute accent                             &#180; --> ´    &acute;  --> ´
small l, caron                           &#318; --> ľ    &lcaron; --> ľ
small s, acute accent                    &#347; --> ś    &sacute; --> ś
caron                               {}  {&#711;}-->{ˇ}  {&caron;} -->{ˇ}
cedilla                                  &#184; --> ¸    &cedil;  --> ¸
small s, caron                           &#353; --> š    &scaron; --> š
small s, cedilla                         &#351; --> ş    &scedil; --> ş
small t, caron                           &#357; --> ť    &tcaron; --> ť
small z, acute accent                    &#378; --> ź    &zacute; --> ź
double acute accent                 {}  {&#733;}-->{˝}  {&dblac;} -->{˝}
small z, caron                           &#382; --> ž    &zcaron; --> ž
small z, dot above                       &#380; --> ż    &zdot;   --> ż  
capital R, acute accent                  &#340; --> Ŕ    &Racute; --> Ŕ
capital A, acute accent                  &#193; --> Á    &Aacute; --> Á
capital A, circumflex accent             &#194; --> Â    &Acirc;  --> Â
capital A, breve                         &#258; --> Ă    &Abreve; --> Ă
capital A, dieresis or umlaut mark       &#196; --> Ä    &Auml;   --> Ä
capital L, acute accent                  &#313; --> Ĺ    &Lacute; --> Ĺ
capital C, acute accent                  &#262; --> Ć    &Cacute; --> Ć
capital C, cedilla                       &#199; --> Ç    &Ccedil; --> Ç
capital C, caron                         &#268; --> Č    &Ccaron; --> Č
capital E, acute accent                  &#201; --> É    &Eacute; --> É
capital E, ogonek                        &#280; --> Ę    &Eogon;  --> Ę
capital E, dieresis or umlaut mark       &#203; --> Ë    &Euml;   --> Ë
capital E, caron                         &#282; --> Ě    &Ecaron; --> Ě
capital I, acute accent                  &#205; --> Í    &Iacute; --> Í
capital I, circumflex accent             &#206; --> Î    &Icirc;  --> Î
capital D, caron                         &#270; --> Ď    &Dcaron; --> Ď
capital D, stroke                        &#272; --> Đ    &Dstrok; --> Đ
capital Eth, Icelandic               N/A  &#208; --> Ð    &ETH;    --> Ð
capital N, acute accent                  &#323; --> Ń    &Nacute; --> Ń
capital N, caron                         &#327; --> Ň    &Ncaron; --> Ň
capital O, acute accent                  &#211; --> Ó    &Oacute; --> Ó
capital O, circumflex accent             &#212; --> Ô    &Ocirc;  --> Ô
capital O, double acute accent           &#368; --> Ű    &Odblac; --> Ő
capital O, dieresis or umlaut mark       &#214; --> Ö    &Ouml;   --> Ö
multiply sign                            &#215; --> ×    &times;  --> ×
capital R, caron                         &#344; --> Ř    &Rcaron; --> Ř
capital U, ring                          &#366; --> Ů    &Uring;  --> Ů
capital U, acute accent                  &#218; --> Ú    &Uacute; --> Ú
capital U, double acute accent           &#368; --> Ű    &Udblac; --> Ű
capital U, dieresis or umlaut mark       &#220; --> Ü    &Uuml;   --> Ü
capital Y, acute accent                  &#221; --> Ý    &Yacute; --> Ý
capital T, cedilla                       &#354; --> Ţ    &Tcedil; --> Ţ
small sharp s, German (sz ligature)      &#223; --> ß    &szlig;  --> ß
small r, acute accent                    &#341; --> ŕ    &racute; --> ŕ
small a, acute accent                    &#225; --> á    &aacute; --> á
small a, circumflex accent               &#226; --> â    &acirc;  --> â
small a, breve                           &#259; --> ă    &abreve; --> ă
small a, dieresis or umlaut mark         &#228; --> ä    &auml;   --> ä
small l, acute accent                    &#314; --> ĺ    &lacute; --> ĺ
small c, acute accent                    &#263; --> ć    &cacute; --> ć
small c, cedilla                         &#231; --> ç    &ccedil; --> ç
small c, caron                           &#269; --> č    &ccaron; --> č
small e, acute accent                    &#233; --> é    &eacute; --> é
small e, ogonek                          &#281; --> ę    &eogon;  --> ę
small e, dieresis or umlaut mark         &#235; --> ë    &euml;   --> ë
small e, caron                           &#283; --> ě    &ecaron; --> ě
small i, acute accent                    &#237; --> í    &iacute; --> í
small i, circumflex accent               &#238; --> î    &icirc;  --> î
small d, caron                           &#271; --> ď    &dcaron; --> ď
small d, stroke                          &#273; --> đ    &dstrok; --> đ
small eth, Icelandic                 N/A  &#240; --> ð    &eth;    --> ð
small n, acute accent                    &#324; --> ń    &nacute; --> ń
small n, caron                           &#328; --> ň    &ncaron; --> ň
small o, acute accent                    &#243; --> ó    &oacute; --> ó
small o, circumflex accent               &#244; --> ô    &ocirc;  --> ô
small o, double acute accent             &#369; --> ű    &odblac; --> ő
small o, dieresis or umlaut mark         &#246; --> ö    &ouml;   --> ö
division sign                            &#247; --> ÷    &divide; --> ÷
small r, caron                           &#345; --> ř    &rcaron; --> ř
small u, ring                            &#367; --> ů    &uring;  --> ů
small u, acute accent                    &#250; --> ú    &uacute; --> ú
small u, double acute accent             &#369; --> ű    &udblac; --> ű
small u, dieresis or umlaut mark         &#252; --> ü    &uuml;   --> ü
small y, acute accent                    &#253; --> ý    &yacute; --> ý
small t, cedilla                         &#355; --> ţ    &tcedil; --> ţ
dot above                           {}  {&#729;}-->{˙}  {&dot;}   -->{˙}

Some other characters of interest    Char Code            Entity name   
===================================  ==== ============    ==============
capital AE diphthong (ligature)      N/A  &#198; --> Æ    &AElig;  --> Æ
small ae diphthong (ligature)        N/A  &#230; --> æ    &aelig;  --> æ
capital OE ligature                  N/A {&#338;}-->{Œ}  {&OElig;} -->{Œ}
small oe ligature                    N/A {&#339;}-->{œ}  {&oelig;} -->{œ}
copyright                            N/A  &#169; --> ©    &copy;   --> ©
registered trademark                 N/A  &#174; --> ®    &reg;    --> ®
trademark sign                       N/A  &#8482;--> ™   &trade;  --> ™
em space                             N/A [&#8195;]->[ ] [&emsp;]  -->[ ]
en space                             N/A [&#8194;]->[ ] [&ensp;]  -->[ ]
1/3-em space                         N/A [&#8196;]->[ ] [&emsp13;] -->[ ]
1/4-em space                         N/A [&#8197;]->[ ] [&emsp14;] -->[ ]
thin space                           N/A [&#8201;]->[ ] [&thinsp;]-->[ ]
hair space                           N/A [&#8202;]->[ ] [&hairsp;]-->[ ]
em dash                              N/A [&#8212;]->[—] [&mdash;] -->[—]
en dash                              N/A [&#8211;]->[–] [&ndash;] -->[–]


Characters not found in ISO-8859-2 have "N/A" in the Char column. Some characters for which I could not find entity names in either RFC 2070 or the ISOlat1, ISOlat2, ISOnum, ISOpub and ISOtech sets (the ones included by Peter Flynn's HTML Pro DTD) are shown enclosed in {braces}.

There also is a variation of this table which tests ISO-8859-2 characters and entities in ALT attributes.

See Martin Ramsch's original ISO-8859-1 Table for related info and links, and for some notes on entity names. This file is mostly just an adaptation of his table to the ISO-8859-2 character set.


kweide@tezcat.com 1997-03-09
PK0]6test/square.htmlnu[ Test ImageMap - square

SQUARE

PK0]֡test/triangle.htmlnu[ Test ImageMap - triangle

TRIANGLE

PK0]2V{:{:test/iso-8859-1.htmlnu[ Martin Ramsch - iso8859-1 table

iso8859-1 table

Description                               Code            Entity name   
===================================       ============    ==============
quotation mark                            &#34;  --> "    &quot;   --> "
ampersand                                 &#38;  --> &    &amp;    --> &
less-than sign                            &#60;  --> <    &lt;     --> <
greater-than sign                         &#62;  --> >    &gt;     --> >

Description                          Char Code            Entity name   
===================================  ==== ============    ==============
non-breaking space                       &#160; -->      &nbsp;   -->  
inverted exclamation                     &#161; --> ¡    &iexcl;  --> ¡
cent sign                                &#162; --> ¢    &cent;   --> ¢
pound sterling                           &#163; --> £    &pound;  --> £
general currency sign                    &#164; --> ¤    &curren; --> ¤
yen sign                                 &#165; --> ¥    &yen;    --> ¥
broken vertical bar                      &#166; --> ¦    &brvbar; --> ¦
                                             Non-standard &brkbar; --> &brkbar;
section sign                             &#167; --> §    &sect;   --> §
umlaut (dieresis)                        &#168; --> ¨    &uml;    --> ¨
                                             Non-standard &die;    --> ¨
copyright                                &#169; --> ©    &copy;   --> ©
feminine ordinal                         &#170; --> ª    &ordf;   --> ª
left angle quote, guillemotleft          &#171; --> «    &laquo;  --> «
not sign                                 &#172; --> ¬    &not;    --> ¬
soft hyphen                              &#173; --> ­    &shy;    --> ­
registered trademark                     &#174; --> ®    &reg;    --> ®
macron accent                            &#175; --> ¯    &macr;   --> ¯
                                             Non-standard &hibar;  --> &hibar;
degree sign                              &#176; --> °    &deg;    --> °
plus or minus                            &#177; --> ±    &plusmn; --> ±
superscript two                          &#178; --> ²    &sup2;   --> ²
superscript three                        &#179; --> ³    &sup3;   --> ³
acute accent                             &#180; --> ´    &acute;  --> ´
micro sign                               &#181; --> µ    &micro;  --> µ
paragraph sign                           &#182; --> ¶    &para;   --> ¶
middle dot                               &#183; --> ·    &middot; --> ·
cedilla                                  &#184; --> ¸    &cedil;  --> ¸
superscript one                          &#185; --> ¹    &sup1;   --> ¹
masculine ordinal                        &#186; --> º    &ordm;   --> º
right angle quote, guillemotright        &#187; --> »    &raquo;  --> »
fraction one-fourth                      &#188; --> ¼    &frac14; --> ¼
fraction one-half                        &#189; --> ½    &frac12; --> ½
fraction three-fourths                   &#190; --> ¾    &frac34; --> ¾
inverted question mark                   &#191; --> ¿    &iquest; --> ¿
capital A, grave accent                  &#192; --> À    &Agrave; --> À
capital A, acute accent                  &#193; --> Á    &Aacute; --> Á
capital A, circumflex accent             &#194; --> Â    &Acirc;  --> Â
capital A, tilde                         &#195; --> Ã    &Atilde; --> Ã
capital A, dieresis or umlaut mark       &#196; --> Ä    &Auml;   --> Ä
capital A, ring                          &#197; --> Å    &Aring;  --> Å
capital AE diphthong (ligature)          &#198; --> Æ    &AElig;  --> Æ
capital C, cedilla                       &#199; --> Ç    &Ccedil; --> Ç
capital E, grave accent                  &#200; --> È    &Egrave; --> È
capital E, acute accent                  &#201; --> É    &Eacute; --> É
capital E, circumflex accent             &#202; --> Ê    &Ecirc;  --> Ê
capital E, dieresis or umlaut mark       &#203; --> Ë    &Euml;   --> Ë
capital I, grave accent                  &#204; --> Ì    &Igrave; --> Ì
capital I, acute accent                  &#205; --> Í    &Iacute; --> Í
capital I, circumflex accent             &#206; --> Î    &Icirc;  --> Î
capital I, dieresis or umlaut mark       &#207; --> Ï    &Iuml;   --> Ï
capital Eth, Icelandic                   &#208; --> Ð    &ETH;    --> Ð
                                             Non-standard &Dstrok; --> Đ
capital N, tilde                         &#209; --> Ñ    &Ntilde; --> Ñ
capital O, grave accent                  &#210; --> Ò    &Ograve; --> Ò
capital O, acute accent                  &#211; --> Ó    &Oacute; --> Ó
capital O, circumflex accent             &#212; --> Ô    &Ocirc;  --> Ô
capital O, tilde                         &#213; --> Õ    &Otilde; --> Õ
capital O, dieresis or umlaut mark       &#214; --> Ö    &Ouml;   --> Ö
multiply sign                            &#215; --> ×    &times;  --> ×
capital O, slash                         &#216; --> Ø    &Oslash; --> Ø
capital U, grave accent                  &#217; --> Ù    &Ugrave; --> Ù
capital U, acute accent                  &#218; --> Ú    &Uacute; --> Ú
capital U, circumflex accent             &#219; --> Û    &Ucirc;  --> Û
capital U, dieresis or umlaut mark       &#220; --> Ü    &Uuml;   --> Ü
capital Y, acute accent                  &#221; --> Ý    &Yacute; --> Ý
capital THORN, Icelandic                 &#222; --> Þ    &THORN;  --> Þ
small sharp s, German (sz ligature)      &#223; --> ß    &szlig;  --> ß
small a, grave accent                    &#224; --> à    &agrave; --> à
small a, acute accent                    &#225; --> á    &aacute; --> á
small a, circumflex accent               &#226; --> â    &acirc;  --> â
small a, tilde                           &#227; --> ã    &atilde; --> ã
small a, dieresis or umlaut mark         &#228; --> ä    &auml;   --> ä
small a, ring                            &#229; --> å    &aring;  --> å
small ae diphthong (ligature)            &#230; --> æ    &aelig;  --> æ
small c, cedilla                         &#231; --> ç    &ccedil; --> ç
small e, grave accent                    &#232; --> è    &egrave; --> è
small e, acute accent                    &#233; --> é    &eacute; --> é
small e, circumflex accent               &#234; --> ê    &ecirc;  --> ê
small e, dieresis or umlaut mark         &#235; --> ë    &euml;   --> ë
small i, grave accent                    &#236; --> ì    &igrave; --> ì
small i, acute accent                    &#237; --> í    &iacute; --> í
small i, circumflex accent               &#238; --> î    &icirc;  --> î
small i, dieresis or umlaut mark         &#239; --> ï    &iuml;   --> ï
small eth, Icelandic                     &#240; --> ð    &eth;    --> ð
small n, tilde                           &#241; --> ñ    &ntilde; --> ñ
small o, grave accent                    &#242; --> ò    &ograve; --> ò
small o, acute accent                    &#243; --> ó    &oacute; --> ó
small o, circumflex accent               &#244; --> ô    &ocirc;  --> ô
small o, tilde                           &#245; --> õ    &otilde; --> õ
small o, dieresis or umlaut mark         &#246; --> ö    &ouml;   --> ö
division sign                            &#247; --> ÷    &divide; --> ÷
small o, slash                           &#248; --> ø    &oslash; --> ø
small u, grave accent                    &#249; --> ù    &ugrave; --> ù
small u, acute accent                    &#250; --> ú    &uacute; --> ú
small u, circumflex accent               &#251; --> û    &ucirc;  --> û
small u, dieresis or umlaut mark         &#252; --> ü    &uuml;   --> ü
small y, acute accent                    &#253; --> ý    &yacute; --> ý
small thorn, Icelandic                   &#254; --> þ    &thorn;  --> þ
small y, dieresis or umlaut mark         &#255; --> ÿ    &yuml;   --> ÿ

How to read this table. The columns are
1st:
textual description of the character
2nd:
character inserted directly into the HTML page as one byte
3rd:
character written as numeric HTML entity, in the format:
"how it looks literally" --> "what your browser does with it"
4th:
character written as symbolic HTML entity, in the format:
"how it looks literally" --> "what your browser does with it"
So for example, if you see something like "&divide; --> &divide;" in the 4th column, this means your browser doesn't know about the entity name "divide" and just puts it literally.

This table grew out of an overview of the "ISO Latin-1 Character Set" overview related to the Hyper-G Text Format (HTF). The entity names &brkbar; and &Dstrok; seem to be unique to HTF. The entity name &hibar; has been supported by X Mosaic but seems to be replaced with &macr;. The entity names &uml; and &die; should be equivalent.

The standards stuff: The HTML 2.0 Standard includes a section on Character Entity Sets and an overview on the HTML Coded Character Set (The entity names are derived from ISO 8879).
Or have a look at the Latin-1 Character Entities as listed in an draft for the HTML 3.0 specification.
The Appendix II of CERN's HTML+ Discussion Document contains a table (in PostScript format) of the proposed character entities for HTML+ and their corresponding character codes for Unicode and the Adobe Latin-1 & Symbol character sets.

Please note that there is nothing wrong with using characters of ISO Latin-1 above 127: the normal transmission protocol for the WWW, HTTP/1.0, uses the 8bit ISO latin-1 as default encoding. (Thanks to Roman Czyborra for pointing this out!)

Other information:


Martin Ramsch, 16.02.1994, 07.01.1996, 01.07.1996, 1998-10-09, 2000-05-15
PK0]p0#;#;test/iso-8859-2a.htmlnu[ Martin Ramsch's character table modified and enhanced for iso8859-2

iso8859-2 plus table, and cp-1252

Description                               Code            Entity name   
===================================       ============    ==============
quotation mark                            &#34;  --> "     &quot;   --> "
ampersand                                 &#38;  --> &     &amp;    --> &
less-than sign                            &#60;  --> <     &lt;     --> <
greater-than sign                         &#62;  --> >     &gt;     --> >

Description                          Char Code            Entity name   
===================================  ==== ============    ==============
euro sign                                  &128; --> €
undefined                                  &129; --> 
single low-9 quotation mark                &130; --> ‚
latin small letter f with hook             &131; --> ƒ
double low-9 quotation mark                &132; --> „
horizontal ellipsis                        &133; --> …
dagger                                     &134; --> †
double dagger                              &135; --> ‡
modifier letter circumflex accent          &136; --> ˆ
per mille sign                             &137; --> ‰
latin capital letter s with caron          &138; --> Š
single left-pointing angle quote mark      &139; --> ‹
latin capital ligature oe                  &140; --> Œ
undefined                                  &141; --> 
latin capital letter z with caron          &142; --> Ž
undefined                                  &143; --> 

undefined                                  &144; --> 
left single quotation mark                 &145; --> ‘
right single quotation mark                &146; --> ’
left double quotation mark                 &147; --> “
right double quotation mark                &148; --> ”
bullet                                     &149; --> •
en dash                                    &150; --> –
em dash                                    &151; --> —
small tilde                                &152; --> ˜
trade mark sign                            &153; --> ™
latin small letter s with caron            &154; --> š
single right-pointing angle quote mark     &155; --> ›
latin small ligature oe                    &156; --> œ
undefined                                  &157; --> 
latin small letter z with caron            &158; --> ž
latin capital letter y with diaeresis      &159; --> Ÿ

non-breaking space                       &#160; -->      &nbsp;   -->  
capital A, ogonek                        &#260; --> Ą    &Aogon;  --> Ą
breve                               {}  {&#728;}-->{˘}  {&breve;} -->{˘}
capital L, stroke                        &#321; --> Ł    &Lstrok; --> Ł
general currency sign                    &#164; --> ¤    &curren; --> ¤
capital L, caron                         &#317; --> Ľ    &Lcaron; --> Ľ
capital S, acute accent                  &#346; --> Ś    &Sacute; --> Ś
section sign                             &#167; --> §    &sect;   --> §
umlaut (dieresis)                        &#168; --> ¨    &uml;    --> ¨
                                                          &die;    --> ¨
capital S, caron                         &#352; --> Š    &Scaron; --> Š
capital S, cedilla                       &#350; --> Ş    &Scedil; --> Ş
capital T, caron                         &#356; --> Ť    &Tcaron; --> Ť
capital Z, acute accent                  &#377; --> Ź    &Zacute; --> Ź
soft hyphen                         []  [&#173;]-->[­]  [&shy;]   -->[­]
capital Z, caron                         &#381; --> Ž    &Zcaron; --> Ž
capital Z, dot above                     &#379; --> Ż    &Zdot;   --> Ż
degree sign                              &#176; --> °    &deg;    --> °
small a, ogonek                          &#261; --> ą    &aogon;  --> ą
ogonek                              {}  {&#731;}-->{˛}  {&ogon;}  -->{˛}
small l, stroke                          &#322; --> ł    &lstrok; --> ł
acute accent                             &#180; --> ´    &acute;  --> ´
small l, caron                           &#318; --> ľ    &lcaron; --> ľ
small s, acute accent                    &#347; --> ś    &sacute; --> ś
caron                               {}  {&#711;}-->{ˇ}  {&caron;} -->{ˇ}
cedilla                                  &#184; --> ¸    &cedil;  --> ¸
small s, caron                           &#353; --> š    &scaron; --> š
small s, cedilla                         &#351; --> ş    &scedil; --> ş
small t, caron                           &#357; --> ť    &tcaron; --> ť
small z, acute accent                    &#378; --> ź    &zacute; --> ź
double acute accent                 {}  {&#733;}-->{˝}  {&dblac;} -->{˝}
small z, caron                           &#382; --> ž    &zcaron; --> ž
small z, dot above                       &#380; --> ż    &zdot;   --> ż  
capital R, acute accent                  &#340; --> Ŕ    &Racute; --> Ŕ
capital A, acute accent                  &#193; --> Á    &Aacute; --> Á
capital A, circumflex accent             &#194; --> Â    &Acirc;  --> Â
capital A, breve                         &#258; --> Ă    &Abreve; --> Ă
capital A, dieresis or umlaut mark       &#196; --> Ä    &Auml;   --> Ä
capital L, acute accent                  &#313; --> Ĺ    &Lacute; --> Ĺ
capital C, acute accent                  &#262; --> Ć    &Cacute; --> Ć
capital C, cedilla                       &#199; --> Ç    &Ccedil; --> Ç
capital C, caron                         &#268; --> Č    &Ccaron; --> Č
capital E, acute accent                  &#201; --> É    &Eacute; --> É
capital E, ogonek                        &#280; --> Ę    &Eogon;  --> Ę
capital E, dieresis or umlaut mark       &#203; --> Ë    &Euml;   --> Ë
capital E, caron                         &#282; --> Ě    &Ecaron; --> Ě
capital I, acute accent                  &#205; --> Í    &Iacute; --> Í
capital I, circumflex accent             &#206; --> Î    &Icirc;  --> Î
capital D, caron                         &#270; --> Ď    &Dcaron; --> Ď
capital D, stroke                        &#272; --> Đ    &Dstrok; --> Đ
capital Eth, Icelandic               N/A  &#208; --> Ð    &ETH;    --> Ð
capital N, acute accent                  &#323; --> Ń    &Nacute; --> Ń
capital N, caron                         &#327; --> Ň    &Ncaron; --> Ň
capital O, acute accent                  &#211; --> Ó    &Oacute; --> Ó
capital O, circumflex accent             &#212; --> Ô    &Ocirc;  --> Ô
capital O, double acute accent           &#368; --> Ű    &Odblac; --> Ő
capital O, dieresis or umlaut mark       &#214; --> Ö    &Ouml;   --> Ö
multiply sign                            &#215; --> ×    &times;  --> ×
capital R, caron                         &#344; --> Ř    &Rcaron; --> Ř
capital U, ring                          &#366; --> Ů    &Uring;  --> Ů
capital U, acute accent                  &#218; --> Ú    &Uacute; --> Ú
capital U, double acute accent           &#368; --> Ű    &Udblac; --> Ű
capital U, dieresis or umlaut mark       &#220; --> Ü    &Uuml;   --> Ü
capital Y, acute accent                  &#221; --> Ý    &Yacute; --> Ý
capital T, cedilla                       &#354; --> Ţ    &Tcedil; --> Ţ
small sharp s, German (sz ligature)      &#223; --> ß    &szlig;  --> ß
small r, acute accent                    &#341; --> ŕ    &racute; --> ŕ
small a, acute accent                    &#225; --> á    &aacute; --> á
small a, circumflex accent               &#226; --> â    &acirc;  --> â
small a, breve                           &#259; --> ă    &abreve; --> ă
small a, dieresis or umlaut mark         &#228; --> ä    &auml;   --> ä
small l, acute accent                    &#314; --> ĺ    &lacute; --> ĺ
small c, acute accent                    &#263; --> ć    &cacute; --> ć
small c, cedilla                         &#231; --> ç    &ccedil; --> ç
small c, caron                           &#269; --> č    &ccaron; --> č
small e, acute accent                    &#233; --> é    &eacute; --> é
small e, ogonek                          &#281; --> ę    &eogon;  --> ę
small e, dieresis or umlaut mark         &#235; --> ë    &euml;   --> ë
small e, caron                           &#283; --> ě    &ecaron; --> ě
small i, acute accent                    &#237; --> í    &iacute; --> í
small i, circumflex accent               &#238; --> î    &icirc;  --> î
small d, caron                           &#271; --> ď    &dcaron; --> ď
small d, stroke                          &#273; --> đ    &dstrok; --> đ
small eth, Icelandic                 N/A  &#240; --> ð    &eth;    --> ð
small n, acute accent                    &#324; --> ń    &nacute; --> ń
small n, caron                           &#328; --> ň    &ncaron; --> ň
small o, acute accent                    &#243; --> ó    &oacute; --> ó
small o, circumflex accent               &#244; --> ô    &ocirc;  --> ô
small o, double acute accent             &#369; --> ű    &odblac; --> ő
small o, dieresis or umlaut mark         &#246; --> ö    &ouml;   --> ö
division sign                            &#247; --> ÷    &divide; --> ÷
small r, caron                           &#345; --> ř    &rcaron; --> ř
small u, ring                            &#367; --> ů    &uring;  --> ů
small u, acute accent                    &#250; --> ú    &uacute; --> ú
small u, double acute accent             &#369; --> ű    &udblac; --> ű
small u, dieresis or umlaut mark         &#252; --> ü    &uuml;   --> ü
small y, acute accent                    &#253; --> ý    &yacute; --> ý
small t, cedilla                         &#355; --> ţ    &tcedil; --> ţ
dot above                           {}  {&#729;}-->{˙}  {&dot;}   -->{˙}

Some other characters of interest    Char Code            Entity name   
===================================  ==== ============    ==============
capital AE diphthong (ligature)      N/A  &#198; --> Æ    &AElig;  --> Æ
small ae diphthong (ligature)        N/A  &#230; --> æ    &aelig;  --> æ
capital OE ligature                  N/A {&#338;}-->{Œ}  {&OElig;} -->{Œ}
small oe ligature                    N/A {&#339;}-->{œ}  {&oelig;} -->{œ}
copyright                            N/A  &#169; --> ©    &copy;   --> ©
registered trademark                 N/A  &#174; --> ®    &reg;    --> ®
trademark sign                       N/A  &#8482;--> ™   &trade;  --> ™
em space                             N/A [&#8195;]->[ ] [&emsp;]  -->[ ]
en space                             N/A [&#8194;]->[ ] [&ensp;]  -->[ ]
1/3-em space                         N/A [&#8196;]->[ ] [&emsp13;] -->[ ]
1/4-em space                         N/A [&#8197;]->[ ] [&emsp14;] -->[ ]
thin space                           N/A [&#8201;]->[ ] [&thinsp;]-->[ ]
hair space                           N/A [&#8202;]->[ ] [&hairsp;]-->[ ]
em dash                              N/A [&#8212;]->[—] [&mdash;] -->[—]
en dash                              N/A [&#8211;]->[–] [&ndash;] -->[–]


Characters not found in ISO-8859-2 have "N/A" in the Char column. Some characters for which I could not find entity names in either RFC 2070 or the ISOlat1, ISOlat2, ISOnum, ISOpub and ISOtech sets (the ones included by Peter Flynn's HTML Pro DTD) are shown enclosed in {braces}.

There also is a variation of this table which tests ISO-8859-2 characters and entities in ALT attributes.

See Martin Ramsch's original ISO-8859-1 Table for related info and links, and for some notes on entity names. This file is mostly just an adaptation of his table to the ISO-8859-2 character set.


kweide@tezcat.com 1997-03-09
PK0]d'test/tabtest.htmlnu[ Tests of TAB element.

Tests of TAB element.

Normal Style:
OneTwoThree FourFive SixSeven Eight
1.2.3.4.5. 6.7.8.
i.ii.iii.iv.v. vi.vii.viii.

In PRE block:
OneTwoThreeFourFive
1.2.3.4.5.
i.ii.iii.iv.v.
In BQ block:
OneTwoThreeFour
1.2.3.4.
i.ii.iii.iv.

noctambulant - walking at night
(from Latin: nox noctis night + ambulare walk)

|||
080158
PK0])test/image.jpgnu[JFIFHHC  !"$"$C00"*!"1Q#ABq$1!AQa" ?;gqszq3ϳW:M:唴OLBG$nC«!YYDy=Jۧ/nKKH%ScR;~lه'ZiKKYޫIƳ3#_UCoqd~٘BInݡjkif^#ugFr܍NݳӮ xԤ*|83v%]IhLsFAѸe*{0 Fܘ-pe+c2i:D$)` eH8"jh =G>zŰ8=ZJ$% .|x B$$O:NDΌK 47m\q%+XD̅n^;V!{FUuʤ42f/ 0$vӔ7Nźv9#>'Ka<5lNٷXRNdW(VH$DJIQ53fg!ɐBl2WA&F"HÞ wb ;G=yb) T+>užM'' VOt[_-[E4&ln2`B50}jH%2b$z~G\iG%_*3džbM4Z[p[ Fc^dz|4r+e䪞?Lꚨ$M5&^ʓTV+΍JDaV؂ [Q1{ gc&#A\'zD_RȞ́RII$?J5 Character table modified and enhanced for iso8859-2 - ALT test

iso8859-2 plus table - ALT test

Description                               Code            Entity name   
===================================       ============    ==============
quotation mark                            &#34;  --> "     &quot;   --> "
ampersand                                 &#38;  --> &     &amp;    --> &
less-than sign                            &#60;  --> <     &lt;     --> <
greater-than sign                         &#62;  --> >     &gt;     --> >

Description                          Char Code            Entity name   
===================================  ==== ============    ==============
non-breaking space                       &#160; -->      &nbsp;   -->  
capital A, ogonek                        &#260; --> Ą    &Aogon;  --> Ą
breve                               {}  {&#728;}-->{˘}  {&breve;} -->{˘}
capital L, stroke                        &#321; --> Ł    &Lstrok; --> Ł
general currency sign                    &#164; --> ¤    &curren; --> ¤
capital L, caron                         &#317; --> Ľ    &Lcaron; --> Ľ
capital S, acute accent                  &#346; --> Ś    &Sacute; --> Ś
section sign                             &#167; --> §    &sect;   --> §
umlaut (dieresis)                        &#168; --> ¨    &uml;    --> ¨
                                                          &die;    --> ¨
capital S, caron                         &#352; --> Š    &Scaron; --> Š
capital S, cedilla                       &#350; --> Ş    &Scedil; --> Ş
capital T, caron                         &#356; --> Ť    &Tcaron; --> Ť
capital Z, acute accent                  &#377; --> Ź    &Zacute; --> Ź
soft hyphen                         []  [&#173;]-->[­]  [&shy;]   -->[­]
capital Z, caron                         &#381; --> Ž    &Zcaron; --> Ž
capital Z, dot above                     &#379; --> Ż    &Zdot;   --> Ż
degree sign                              &#176; --> °    &deg;    --> °
small a, ogonek                          &#261; --> ą    &aogon;  --> ą
ogonek                              {}  {&#731;}-->{˛}  {&ogon;}  -->{˛}
small l, stroke                          &#322; --> ł    &lstrok; --> ł
acute accent                             &#180; --> ´    &acute;  --> ´
small l, caron                           &#318; --> ľ    &lcaron; --> ľ
small s, acute accent                    &#347; --> ś    &sacute; --> ś
caron                               {}  {&#711;}-->{ˇ}  {&caron;} -->{ˇ}
cedilla                                  &#184; --> ¸    &cedil;  --> ¸
small s, caron                           &#353; --> š    &scaron; --> š
small s, cedilla                         &#351; --> ş    &scedil; --> ş
small t, caron                           &#357; --> ť    &tcaron; --> ť
small z, acute accent                    &#378; --> ź    &zacute; --> ź
double acute accent                 {}  {&#733;}-->{˝}  {&dblac;} -->{˝}
small z, caron                           &#382; --> ž    &zcaron; --> ž
small z, dot above                       &#380; --> ż    &zdot;   --> ż  
capital R, acute accent                  &#340; --> Ŕ    &Racute; --> Ŕ
capital A, acute accent                  &#193; --> Á    &Aacute; --> Á
capital A, circumflex accent             &#194; --> Â    &Acirc;  --> Â
capital A, breve                         &#258; --> Ă    &Abreve; --> Ă
capital A, dieresis or umlaut mark       &#196; --> Ä    &Auml;   --> Ä
capital L, acute accent                  &#313; --> Ĺ    &Lacute; --> Ĺ
capital C, acute accent                  &#262; --> Ć    &Cacute; --> Ć
capital C, cedilla                       &#199; --> Ç    &Ccedil; --> Ç
capital C, caron                         &#268; --> Č    &Ccaron; --> Č
capital E, acute accent                  &#201; --> É    &Eacute; --> É
capital E, ogonek                        &#280; --> Ę    &Eogon;  --> Ę
capital E, dieresis or umlaut mark       &#203; --> Ë    &Euml;   --> Ë
capital E, caron                         &#282; --> Ě    &Ecaron; --> Ě
capital I, acute accent                  &#205; --> Í    &Iacute; --> Í
capital I, circumflex accent             &#206; --> Î    &Icirc;  --> Î
capital D, caron                         &#270; --> Ď    &Dcaron; --> Ď
capital D, stroke                        &#272; --> Đ    &Dstrok; --> Đ
capital Eth, Icelandic               N/A  &#208; --> Ð    &ETH;    --> Ð
capital N, acute accent                  &#323; --> Ń    &Nacute; --> Ń
capital N, caron                         &#327; --> Ň    &Ncaron; --> Ň
capital O, acute accent                  &#211; --> Ó    &Oacute; --> Ó
capital O, circumflex accent             &#212; --> Ô    &Ocirc;  --> Ô
capital O, double acute accent           &#368; --> Ű    &Odblac; --> Ő
capital O, dieresis or umlaut mark       &#214; --> Ö    &Ouml;   --> Ö
multiply sign                            &#215; --> ×    &times;  --> ×
capital R, caron                         &#344; --> Ř    &Rcaron; --> Ř
capital U, ring                          &#366; --> Ů    &Uring;  --> Ů
capital U, acute accent                  &#218; --> Ú    &Uacute; --> Ú
capital U, double acute accent           &#368; --> Ű    &Udblac; --> Ű
capital U, dieresis or umlaut mark       &#220; --> Ü    &Uuml;   --> Ü
capital Y, acute accent                  &#221; --> Ý    &Yacute; --> Ý
capital T, cedilla                       &#354; --> Ţ    &Tcedil; --> Ţ
small sharp s, German (sz ligature)      &#223; --> ß    &szlig;  --> ß
small r, acute accent                    &#341; --> ŕ    &racute; --> ŕ
small a, acute accent                    &#225; --> á    &aacute; --> á
small a, circumflex accent               &#226; --> â    &acirc;  --> â
small a, breve                           &#259; --> ă    &abreve; --> ă
small a, dieresis or umlaut mark         &#228; --> ä    &auml;   --> ä
small l, acute accent                    &#314; --> ĺ    &lacute; --> ĺ
small c, acute accent                    &#263; --> ć    &cacute; --> ć
small c, cedilla                         &#231; --> ç    &ccedil; --> ç
small c, caron                           &#269; --> č    &ccaron; --> č
small e, acute accent                    &#233; --> é    &eacute; --> é
small e, ogonek                          &#281; --> ę    &eogon;  --> ę
small e, dieresis or umlaut mark         &#235; --> ë    &euml;   --> ë
small e, caron                           &#283; --> ě    &ecaron; --> ě
small i, acute accent                    &#237; --> í    &iacute; --> í
small i, circumflex accent               &#238; --> î    &icirc;  --> î
small d, caron                           &#271; --> ď    &dcaron; --> ď
small d, stroke                          &#273; --> đ    &dstrok; --> đ
small eth, Icelandic                 N/A  &#240; --> ð    &eth;    --> ð
small n, acute accent                    &#324; --> ń    &nacute; --> ń
small n, caron                           &#328; --> ň    &ncaron; --> ň
small o, acute accent                    &#243; --> ó    &oacute; --> ó
small o, circumflex accent               &#244; --> ô    &ocirc;  --> ô
small o, double acute accent             &#369; --> ű    &odblac; --> ő
small o, dieresis or umlaut mark         &#246; --> ö    &ouml;   --> ö
division sign                            &#247; --> ÷    &divide; --> ÷
small r, caron                           &#345; --> ř    &rcaron; --> ř
small u, ring                            &#367; --> ů    &uring;  --> ů
small u, acute accent                    &#250; --> ú    &uacute; --> ú
small u, double acute accent             &#369; --> ű    &udblac; --> ű
small u, dieresis or umlaut mark         &#252; --> ü    &uuml;   --> ü
small y, acute accent                    &#253; --> ý    &yacute; --> ý
small t, cedilla                         &#355; --> ţ    &tcedil; --> ţ
dot above                           {}  {&#729;}-->{˙}  {&dot;}   -->{˙}

Some other characters of interest    Char Code            Entity name   
===================================  ==== ============    ==============
capital AE diphthong (ligature)      N/A  &#198; --> Æ    &AElig;  --> Æ
small ae diphthong (ligature)        N/A  &#230; --> æ    &aelig;  --> æ
capital OE ligature                  N/A {&#338;}-->{Œ}  {&OElig;} -->{Œ}
small oe ligature                    N/A {&#339;}-->{œ}  {&oelig;} -->{œ}
copyright                            N/A  &#169; --> ©    &copy;   --> ©
registered trademark                 N/A  &#174; --> ®    &reg;    --> ®
trademark sign                       N/A  &#8482;--> ™   &trade;  --> ™
em space                             N/A [&#8195;]->[ ] [&emsp;]  -->[ ]
en space                             N/A [&#8194;]->[ ] [&ensp;]  -->[ ]
1/3-em space                         N/A [&#8196;]->[ ] [&emsp13;] -->[ ]
1/4-em space                         N/A [&#8197;]->[ ] [&emsp14;] -->[ ]
thin space                           N/A [&#8201;]->[ ] [&thinsp;]-->[ ]
hair space                           N/A [&#8202;]->[ ] [&hairsp;]-->[ ]
em dash                              N/A [&#8212;]->[—] [&mdash;] -->[—]
en dash                              N/A [&#8211;]->[–] [&ndash;] -->[–]


Characters not found in ISO-8859-2 have "N/A" in the Char column. Some characters for which I could not find entity names in either RFC 2070 or the ISOlat1, ISOlat2, ISOnum, ISOpub and ISOtech sets (the ones included by Peter Flynn's HTML Pro DTD) are shown enclosed in {braces}.

See Martin Ramsch's original ISO-8859-1 Table for related info and links, and for some notes on entity names. This file is mostly just an adaptation of his table to the ISO-8859-2 character set.


kweide@tezcat.com 1997-03-09
PK0]IP{{test/tags.htmlnu[ Tags to Test Color-Style

Content of an H1 Tag

Text after an H1 Tag.

Paragraph after an H1 Tag.

Content of an H2 Tag

Text after an H2 Tag.

Paragraph after an H2 Tag.

Content of an H3 Tag

Text after an H3 Tag.

Paragraph after an H3 Tag.

Content of an H4 Tag

Text after an H4 Tag.

Paragraph after an H4 Tag.

Content of an H5 Tag
Text after an H5 Tag.

Paragraph after an H5 Tag.

Content of an H6 Tag
Text after an H6 Tag.

Paragraph after an H6 Tag. This is an "a" tag.
This is an

"address"
tag.
This is a "b" tag.
This is a "big" tag.
Before quote,
this is a "blockquote"
, after quote.
This is a
"center"
tag.
This is a "cite" tag.
This is a "code" tag.
This is a
div
tag.
This is an "em" tag.
This is a "font" tag.
This is an
"hr"
tag.
This is an "i" tag.
This is an tag.
This is an img tag.
This is an tag.
map: normal: lightgray: blue
This is
pre-formatted
text (three lines, with pre's on preceding/following lines).

This is a "q"tag.
This is a "samp" tag.
This is a "small" tag.
This is a "strong" tag.
This is a "sub" tag.
This is a "sup" tag.
This is a "tt" tag.
This is a "var" tag.

Forms


First: Last: Description:

Another form



first
second
third
empty
done

Another form




Unquoted Table
First: the first row short last
Second: the second row very long string lower-right
Quoted Table
First: the first row very long string last
Second: the second row short lower-right

An image map

Square Circle Triangle

Definition List

This is an definition list:
the first dt
the first dd
the second dt
the second dd
the first dt
the first dd
the second dt
the second dd
the third dt
the third dd
the third dt
the third dd

Unordered List

This is an unordered list:
  • first item
  • second item
    • first item
    • second item
    • third item
  • third item

Ordered List

This is an ordered list:
  1. first item
  2. second item
    1. first item
    2. second item
    3. third item
  3. third item
PK0]K0BBtest/iso-8859-1a.htmlnu[ Martin Ramsch - iso8859-1 table

iso8859-1 table, with cp-1252

Description                               Code            Entity name   
===================================       ============    ==============
quotation mark                            &#34;  --> "    &quot;   --> "
ampersand                                 &#38;  --> &    &amp;    --> &
less-than sign                            &#60;  --> <    &lt;     --> <
greater-than sign                         &#62;  --> >    &gt;     --> >

Description                          Char Code            Entity name   
===================================  ==== ============    ==============
euro sign                                  &128; --> €
undefined                                  &129; --> 
single low-9 quotation mark                &130; --> ‚
latin small letter f with hook             &131; --> ƒ
double low-9 quotation mark                &132; --> „
horizontal ellipsis                        &133; --> …
dagger                                     &134; --> †
double dagger                              &135; --> ‡
modifier letter circumflex accent          &136; --> ˆ
per mille sign                             &137; --> ‰
latin capital letter s with caron          &138; --> Š
single left-pointing angle quote mark      &139; --> ‹
latin capital ligature oe                  &140; --> Œ
undefined                                  &141; --> 
latin capital letter z with caron          &142; --> Ž
undefined                                  &143; --> 

undefined                                  &144; --> 
left single quotation mark                 &145; --> ‘
right single quotation mark                &146; --> ’
left double quotation mark                 &147; --> “
right double quotation mark                &148; --> ”
bullet                                     &149; --> •
en dash                                    &150; --> –
em dash                                    &151; --> —
small tilde                                &152; --> ˜
trade mark sign                            &153; --> ™
latin small letter s with caron            &154; --> š
single right-pointing angle quote mark     &155; --> ›
latin small ligature oe                    &156; --> œ
undefined                                  &157; --> 
latin small letter z with caron            &158; --> ž
latin capital letter y with diaeresis      &159; --> Ÿ

non-breaking space                       &#160; -->      &nbsp;   -->  
inverted exclamation                     &#161; --> ¡    &iexcl;  --> ¡
cent sign                                &#162; --> ¢    &cent;   --> ¢
pound sterling                           &#163; --> £    &pound;  --> £
general currency sign                    &#164; --> ¤    &curren; --> ¤
yen sign                                 &#165; --> ¥    &yen;    --> ¥
broken vertical bar                      &#166; --> ¦    &brvbar; --> ¦
                                             Non-standard &brkbar; --> &brkbar;
section sign                             &#167; --> §    &sect;   --> §
umlaut (dieresis)                        &#168; --> ¨    &uml;    --> ¨
                                             Non-standard &die;    --> ¨
copyright                                &#169; --> ©    &copy;   --> ©
feminine ordinal                         &#170; --> ª    &ordf;   --> ª
left angle quote, guillemotleft          &#171; --> «    &laquo;  --> «
not sign                                 &#172; --> ¬    &not;    --> ¬
soft hyphen                              &#173; --> ­    &shy;    --> ­
registered trademark                     &#174; --> ®    &reg;    --> ®
macron accent                            &#175; --> ¯    &macr;   --> ¯
                                             Non-standard &hibar;  --> &hibar;
degree sign                              &#176; --> °    &deg;    --> °
plus or minus                            &#177; --> ±    &plusmn; --> ±
superscript two                          &#178; --> ²    &sup2;   --> ²
superscript three                        &#179; --> ³    &sup3;   --> ³
acute accent                             &#180; --> ´    &acute;  --> ´
micro sign                               &#181; --> µ    &micro;  --> µ
paragraph sign                           &#182; --> ¶    &para;   --> ¶
middle dot                               &#183; --> ·    &middot; --> ·
cedilla                                  &#184; --> ¸    &cedil;  --> ¸
superscript one                          &#185; --> ¹    &sup1;   --> ¹
masculine ordinal                        &#186; --> º    &ordm;   --> º
right angle quote, guillemotright        &#187; --> »    &raquo;  --> »
fraction one-fourth                      &#188; --> ¼    &frac14; --> ¼
fraction one-half                        &#189; --> ½    &frac12; --> ½
fraction three-fourths                   &#190; --> ¾    &frac34; --> ¾
inverted question mark                   &#191; --> ¿    &iquest; --> ¿
capital A, grave accent                  &#192; --> À    &Agrave; --> À
capital A, acute accent                  &#193; --> Á    &Aacute; --> Á
capital A, circumflex accent             &#194; --> Â    &Acirc;  --> Â
capital A, tilde                         &#195; --> Ã    &Atilde; --> Ã
capital A, dieresis or umlaut mark       &#196; --> Ä    &Auml;   --> Ä
capital A, ring                          &#197; --> Å    &Aring;  --> Å
capital AE diphthong (ligature)          &#198; --> Æ    &AElig;  --> Æ
capital C, cedilla                       &#199; --> Ç    &Ccedil; --> Ç
capital E, grave accent                  &#200; --> È    &Egrave; --> È
capital E, acute accent                  &#201; --> É    &Eacute; --> É
capital E, circumflex accent             &#202; --> Ê    &Ecirc;  --> Ê
capital E, dieresis or umlaut mark       &#203; --> Ë    &Euml;   --> Ë
capital I, grave accent                  &#204; --> Ì    &Igrave; --> Ì
capital I, acute accent                  &#205; --> Í    &Iacute; --> Í
capital I, circumflex accent             &#206; --> Î    &Icirc;  --> Î
capital I, dieresis or umlaut mark       &#207; --> Ï    &Iuml;   --> Ï
capital Eth, Icelandic                   &#208; --> Ð    &ETH;    --> Ð
                                             Non-standard &Dstrok; --> Đ
capital N, tilde                         &#209; --> Ñ    &Ntilde; --> Ñ
capital O, grave accent                  &#210; --> Ò    &Ograve; --> Ò
capital O, acute accent                  &#211; --> Ó    &Oacute; --> Ó
capital O, circumflex accent             &#212; --> Ô    &Ocirc;  --> Ô
capital O, tilde                         &#213; --> Õ    &Otilde; --> Õ
capital O, dieresis or umlaut mark       &#214; --> Ö    &Ouml;   --> Ö
multiply sign                            &#215; --> ×    &times;  --> ×
capital O, slash                         &#216; --> Ø    &Oslash; --> Ø
capital U, grave accent                  &#217; --> Ù    &Ugrave; --> Ù
capital U, acute accent                  &#218; --> Ú    &Uacute; --> Ú
capital U, circumflex accent             &#219; --> Û    &Ucirc;  --> Û
capital U, dieresis or umlaut mark       &#220; --> Ü    &Uuml;   --> Ü
capital Y, acute accent                  &#221; --> Ý    &Yacute; --> Ý
capital THORN, Icelandic                 &#222; --> Þ    &THORN;  --> Þ
small sharp s, German (sz ligature)      &#223; --> ß    &szlig;  --> ß
small a, grave accent                    &#224; --> à    &agrave; --> à
small a, acute accent                    &#225; --> á    &aacute; --> á
small a, circumflex accent               &#226; --> â    &acirc;  --> â
small a, tilde                           &#227; --> ã    &atilde; --> ã
small a, dieresis or umlaut mark         &#228; --> ä    &auml;   --> ä
small a, ring                            &#229; --> å    &aring;  --> å
small ae diphthong (ligature)            &#230; --> æ    &aelig;  --> æ
small c, cedilla                         &#231; --> ç    &ccedil; --> ç
small e, grave accent                    &#232; --> è    &egrave; --> è
small e, acute accent                    &#233; --> é    &eacute; --> é
small e, circumflex accent               &#234; --> ê    &ecirc;  --> ê
small e, dieresis or umlaut mark         &#235; --> ë    &euml;   --> ë
small i, grave accent                    &#236; --> ì    &igrave; --> ì
small i, acute accent                    &#237; --> í    &iacute; --> í
small i, circumflex accent               &#238; --> î    &icirc;  --> î
small i, dieresis or umlaut mark         &#239; --> ï    &iuml;   --> ï
small eth, Icelandic                     &#240; --> ð    &eth;    --> ð
small n, tilde                           &#241; --> ñ    &ntilde; --> ñ
small o, grave accent                    &#242; --> ò    &ograve; --> ò
small o, acute accent                    &#243; --> ó    &oacute; --> ó
small o, circumflex accent               &#244; --> ô    &ocirc;  --> ô
small o, tilde                           &#245; --> õ    &otilde; --> õ
small o, dieresis or umlaut mark         &#246; --> ö    &ouml;   --> ö
division sign                            &#247; --> ÷    &divide; --> ÷
small o, slash                           &#248; --> ø    &oslash; --> ø
small u, grave accent                    &#249; --> ù    &ugrave; --> ù
small u, acute accent                    &#250; --> ú    &uacute; --> ú
small u, circumflex accent               &#251; --> û    &ucirc;  --> û
small u, dieresis or umlaut mark         &#252; --> ü    &uuml;   --> ü
small y, acute accent                    &#253; --> ý    &yacute; --> ý
small thorn, Icelandic                   &#254; --> þ    &thorn;  --> þ
small y, dieresis or umlaut mark         &#255; --> ÿ    &yuml;   --> ÿ

How to read this table. The columns are
1st:
textual description of the character
2nd:
character inserted directly into the HTML page as one byte
3rd:
character written as numeric HTML entity, in the format:
"how it looks literally" --> "what your browser does with it"
4th:
character written as symbolic HTML entity, in the format:
"how it looks literally" --> "what your browser does with it"
So for example, if you see something like "&divide; --> &divide;" in the 4th column, this means your browser doesn't know about the entity name "divide" and just puts it literally.

This table grew out of an overview of the "ISO Latin-1 Character Set" overview related to the Hyper-G Text Format (HTF). The entity names &brkbar; and &Dstrok; seem to be unique to HTF. The entity name &hibar; has been supported by X Mosaic but seems to be replaced with &macr;. The entity names &uml; and &die; should be equivalent.

The standards stuff: The HTML 2.0 Standard includes a section on Character Entity Sets and an overview on the HTML Coded Character Set (The entity names are derived from ISO 8879).
Or have a look at the Latin-1 Character Entities as listed in an draft for the HTML 3.0 specification.
The Appendix II of CERN's HTML+ Discussion Document contains a table (in PostScript format) of the proposed character entities for HTML+ and their corresponding character codes for Unicode and the Adobe Latin-1 & Symbol character sets.

Please note that there is nothing wrong with using characters of ISO Latin-1 above 127: the normal transmission protocol for the WWW, HTTP/1.0, uses the 8bit ISO latin-1 as default encoding. (Thanks to Roman Czyborra for pointing this out!)

Other information:


Martin Ramsch, 16.02.1994, 07.01.1996, 01.07.1996, 1998-10-09, 2000-05-15
PK0]J test/raw8bit.htmlnu[ Test of raw 8-bit symbols
This is a test of translation 8-bit letters for different pairs of
document's charset (assumed charset) and display charset,
both can be reached from 'O'ptions menu.

This page (obviously) corresponds to text/html mode
but you may test text/plain just by pressing '\'
Try also: '@' for ``raw mode'' and '=' for Information Page.


    0 1 2 3 4 5 6 7 8 9 A B C D E F
20    ! " # $ % & ' ( ) * + , - . /
30  0 1 2 3 4 5 6 7 8 9 : ; < = > ?
40  @ A B C D E F G H I J K L M N O
50  P Q R S T U V W X Y Z [ \ ] ^ _
60  ` a b c d e f g h i j k l m n o
70  p q r s t u v w x y z { | } ~ 
80                 
90                 
A0                 
B0                 
C0                 
D0                 
E0                 
F0                 

PK0]+06test/circle.htmlnu[ Test ImageMap - circle

CIRCLE

PK0]mSdZ{Z{test/utf-8-demo.htmlnu[ Markus Kuhn's UTF-8 demo
UTF-8 encoded sample plain-text file
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾

Markus Kuhn [ˈmaʳkʊs kuːn] <mkuhn@acm.org> — 1999-08-20


The ASCII compatible UTF-8 encoding of ISO 10646 and Unicode
plain-text files is defined in RFC 2279 and in ISO 10646-1 Annex R.


Using Unicode/UTF-8, you can write in emails and source code things such as

Mathematics and Sciences:

  ∮ E⋅da = Q,  n → ∞, ∑ f(i) = ∏ g(i), ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β),

  ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (A ⇔ B),

  2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm

Linguistics and dictionaries:

  ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn
  Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ]

APL:

  ((V⍳V)=⍳⍴V)/V←,V    ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈

Nicer typography in plain text files:

  ╔══════════════════════════════════════════╗
  ║                                          ║
  ║   • ‘single’ and “double” quotes         ║
  ║                                          ║
  ║   • Curly apostrophes: “We’ve been here” ║
  ║                                          ║
  ║   • Latin-1 apostrophe and accents: '´`  ║
  ║                                          ║
  ║   • ‚deutsche‘ „Anführungszeichen“       ║
  ║                                          ║
  ║   • †, ‡, ‰, •, 3–4, —, −5/+5, ™, …      ║
  ║                                          ║
  ║   • ASCII safety test: 1lI|, 0OD, 8B     ║
  ║                      ╭─────────╮         ║
  ║   • the euro symbol: │ € 14.95 │         ║
  ║                      ╰─────────╯         ║
  ╚══════════════════════════════════════════╝

Greek (in Polytonic):

  The Greek anthem:

  Σὲ γνωρίζω ἀπὸ τὴν κόψη
  τοῦ σπαθιοῦ τὴν τρομερή,
  σὲ γνωρίζω ἀπὸ τὴν ὄψη
  ποὺ μὲ βία μετράει τὴ γῆ.

  ᾿Απ᾿ τὰ κόκκαλα βγαλμένη
  τῶν ῾Ελλήνων τὰ ἱερά
  καὶ σὰν πρῶτα ἀνδρειωμένη
  χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά!

  From a speech of Demosthenes in the 4th century BC:

  Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι,
  ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς
  λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ
  τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ 
  εἰς τοῦτο προήκοντα,  ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ
  πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν
  οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι,
  οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν
  ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον
  τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι
  γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν
  προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους
  σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ
  τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ
  τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς
  τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον.

  Δημοσθένους, Γ´ ᾿Ολυνθιακὸς

Georgian:

  From a Unicode conference invitation:

  გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო
  კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს,
  ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს
  ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი,
  ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება
  ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში,
  ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში.

Russian:

  From a Unicode conference invitation:

  Зарегистрируйтесь сейчас на Десятую Международную Конференцию по
  Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии.
  Конференция соберет широкий круг экспертов по  вопросам глобального
  Интернета и Unicode, локализации и интернационализации, воплощению и
  применению Unicode в различных операционных системах и программных
  приложениях, шрифтах, верстке и многоязычных компьютерных системах.

Thai (UCS Level 2):

  Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese
  classic 'San Gua'):

  [----------------------------|------------------------]
    ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช  พระปกเกศกองบู๊กู้ขึ้นใหม่
  สิบสองกษัตริย์ก่อนหน้าแลถัดไป       สององค์ไซร้โง่เขลาเบาปัญญา
    ทรงนับถือขันทีเป็นที่พึ่ง           บ้านเมืองจึงวิปริตเป็นนักหนา
  โฮจิ๋นเรียกทัพทั่วหัวเมืองมา         หมายจะฆ่ามดชั่วตัวสำคัญ
    เหมือนขับไสไล่เสือจากเคหา      รับหมาป่าเข้ามาเลยอาสัญ
  ฝ่ายอ้องอุ้นยุแยกให้แตกกัน          ใช้สาวนั้นเป็นชนวนชื่นชวนใจ
    พลันลิฉุยกุยกีกลับก่อเหตุ          ช่างอาเพศจริงหนาฟ้าร้องไห้
  ต้องรบราฆ่าฟันจนบรรลัย           ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ

  (The above is a two-column text. If combining characters are handled
  correctly, the lines of the second column should be aligned with the
  | character above.)

Ethiopian:

  Proverbs in the Amharic language:

  ሰማይ አይታረስ ንጉሥ አይከሰስ።
  ብላ ካለኝ እንደአባቴ በቆመጠኝ።
  ጌጥ ያለቤቱ ቁምጥና ነው።
  ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው።
  የአፍ ወለምታ በቅቤ አይታሽም።
  አይጥ በበላ ዳዋ ተመታ።
  ሲተረጉሙ ይደረግሙ።
  ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል።
  ድር ቢያብር አንበሳ ያስር።
  ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም።
  እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም።
  የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ።
  ሥራ ከመፍታት ልጄን ላፋታት።
  ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል።
  የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ።
  ተንጋሎ ቢተፉ ተመልሶ ባፉ።
  ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው።
  እግርህን በፍራሽህ ልክ ዘርጋ።

Runes:

  ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ

  (Old English, which transcribed into Latin reads 'He cwaeth that he
  bude thaem lande northweardum with tha Westsae.' and means 'He said
  that he lived in the northern land near the Western Sea.')

Braille:

  ⡌⠁⠧⠑ ⠼⠁⠒  ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌

  ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞
  ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎
  ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂
  ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙
  ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ 
  ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲

  ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲

  ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹
  ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞
  ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕
  ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ 
  ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ 
  ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎
  ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳
  ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞
  ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲

  (The first couple of paragraphs of "A Christmas Carol" by Dickens)

Compact font selection example text:

  ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789
  abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ
  –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд
  ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა

Greetings in various languages:

  Hello world, Καλημέρα κόσμε, コンニチハ

Box drawing alignment tests:                                          █
                                                                      ▉
  ╔══╦══╗  ┌──┬──┐  ╭──┬──╮  ╭──┬──╮  ┏━━┳━━┓  ┎┒┏┑   ╷  ╻ ┏┯┓ ┌┰┐    ▊ ╱╲╱╲╳╳╳
  ║┌─╨─┐║  │╔═╧═╗│  │╒═╪═╕│  │╓─╁─╖│  ┃┌─╂─┐┃  ┗╃╄┙  ╶┼╴╺╋╸┠┼┨ ┝╋┥    ▋ ╲╱╲╱╳╳╳
  ║│╲ ╱│║  │║   ║│  ││ │ ││  │║ ┃ ║│  ┃│ ╿ │┃  ┍╅╆┓   ╵  ╹ ┗┷┛ └┸┘    ▌ ╱╲╱╲╳╳╳
  ╠╡ ╳ ╞╣  ├╢   ╟┤  ├┼─┼─┼┤  ├╫─╂─╫┤  ┣┿╾┼╼┿┫  ┕┛┖┚     ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳
  ║│╱ ╲│║  │║   ║│  ││ │ ││  │║ ┃ ║│  ┃│ ╽ │┃  ░░▒▒▓▓██ ┊  ┆ ╎ ╏  ┇ ┋ ▎
  ║└─╥─┘║  │╚═╤═╝│  │╘═╪═╛│  │╙─╀─╜│  ┃└─╂─┘┃  ░░▒▒▓▓██ ┊  ┆ ╎ ╏  ┇ ┋ ▏
  ╚══╩══╝  └──┴──┘  ╰──┴──╯  ╰──┴──╯  ┗━━┻━━┛           └╌╌┘ ╎ ┗╍╍┛ ┋  ▁▂▃▄▅▆▇█

PK0] test/unicode.htmlnu[ Test of some Unicode symbols in numeric character reference form

    This table prepared from SGML.TXT available at ftp.unicode.org

         ftp://ftp.unicode.org/MAPPINGS/VENDORS/MISC/SGML.TXT
         (if doing ftp, try cd Public/MAPPINGS/VENDORS/MISC)


original comment:

# Author: John Cowan <cowan@ccil.org>
# Date: 25 July 1997
#
# The following table maps SGML character entities from various
# public sets (namely, ISOamsa, ISOamsb, ISOamsc, ISOamsn, ISOamso,
# ISOamsr, ISObox, ISOcyr1, ISOcyr2, ISOdia, ISOgrk1, ISOgrk2,
# ISOgrk3, ISOgrk4, ISOlat1, ISOlat2, ISOnum, ISOpub, ISOtech,
# HTMLspecial, HTMLsymbol) to corresponding Unicode characters.
#
# The table has four tab-separated columns:
#	Column 1: SGML character entity name
#	Column 2: SGML public entity set
#	Column 3: Unicode 2.0 character code
#	Column 4: Unicode 2.0 character name (UPPER CASE)
# Entries which don't have Unicode equivalents have "0x????"
# in Column 3 and a lower case description (from the public entity
# set DTD) in Column 4.  The mapping is not reversible, because many
# distinctions are unified away in Unicode, particularly between
# mathematical symbols.
#
# The table is sorted case-blind by SGML character entity name.
#
# The contents of this table are drawn from various sources, and
# are in the public domain.
#


This test is illuminated Unicode numeric entities like &#x22AB;
We sort the entities according to unicode numbers.
You should see visible characters if your display character set support them
or some substitution string picked up from  src/chrtrans/def7_uni.tbl

If you see something like &#x34D2; - this number unknown to def7_uni.tbl
or the internal browser's implementation is broken.
							Leonid Pauzner.




0x0021    !  		# EXCLAMATION MARK
0x0022    "  		# QUOTATION MARK
0x0023    #  		# NUMBER SIGN
0x0024    $  		# DOLLAR SIGN
0x0025    %  		# PERCENT SIGN
0x0026    &  		# AMPERSAND
0x0028    (  		# LEFT PARENTHESIS
0x0029    )  		# RIGHT PARENTHESIS
0x002A    *  		# ASTERISK
0x002B    +  		# PLUS SIGN
0x002C    ,  		# COMMA
0x002D    -  		# HYPHEN-MINUS
0x002E    .  		# FULL STOP
0x002F    /  		# SOLIDUS
0x003A    :  		# COLON
0x003B    ;  		# SEMICOLON
0x003C    <  		# LESS-THAN SIGN
0x003D    =  		# EQUALS SIGN
0x003E    >  		# GREATER-THAN SIGN
0x003F    ?  		# QUESTION MARK
0x0040    @  		# COMMERCIAL AT
0x005B    [  		# LEFT SQUARE BRACKET
0x005C    \  		# REVERSE SOLIDUS
0x005C    \  		# REVERSE SOLIDUS
0x005D    ]  		# RIGHT SQUARE BRACKET
0x005F    _  		# LOW LINE
0x0060    `  		# GRAVE ACCENT
0x007B    {  		# LEFT CURLY BRACKET
0x007C    |  		# VERTICAL LINE
0x007D    }  		# RIGHT CURLY BRACKET
0x00A0       		# NO-BREAK SPACE
0x00A1    ¡  		# INVERTED EXCLAMATION MARK
0x00A2    ¢  		# CENT SIGN
0x00A3    £  		# POUND SIGN
0x00A4    ¤  		# CURRENCY SIGN
0x00A5    ¥  		# YEN SIGN
0x00A6    ¦  		# BROKEN BAR
0x00A7    §  		# SECTION SIGN
0x00A8    ¨  		# DIAERESIS
0x00A9    ©  		# COPYRIGHT SIGN
0x00AA    ª  		# FEMININE ORDINAL INDICATOR
0x00AB    «  		# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0x00AC    ¬  		# NOT SIGN
0x00AD    ­  		# SOFT HYPHEN
0x00AE    ®  		# REGISTERED SIGN
0x00AF    ¯  		# MACRON
0x00B0    °  		# DEGREE SIGN
0x00B1    ±  		# PLUS-MINUS SIGN
0x00B2    ²  		# SUPERSCRIPT TWO
0x00B3    ³  		# SUPERSCRIPT THREE
0x00B4    ´  		# ACUTE ACCENT
0x00B5    µ  		# MICRO SIGN
0x00B6    ¶  		# PILCROW SIGN
0x00B7    ·  		# MIDDLE DOT
0x00B8    ¸  		# CEDILLA
0x00B9    ¹  		# SUPERSCRIPT ONE
0x00BA    º  		# MASCULINE ORDINAL INDICATOR
0x00BB    »  		# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0x00BC    ¼  		# VULGAR FRACTION ONE QUARTER
0x00BD    ½  		# VULGAR FRACTION ONE HALF
0x00BE    ¾  		# VULGAR FRACTION THREE QUARTERS
0x00BF    ¿  		# INVERTED QUESTION MARK
0x00C0    À  		# LATIN CAPITAL LETTER A WITH GRAVE
0x00C1    Á  		# LATIN CAPITAL LETTER A WITH ACUTE
0x00C2    Â  		# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0x00C3    Ã  		# LATIN CAPITAL LETTER A WITH TILDE
0x00C4    Ä  		# LATIN CAPITAL LETTER A WITH DIAERESIS
0x00C5    Å  		# LATIN CAPITAL LETTER A WITH RING ABOVE
0x00C6    Æ  		# LATIN CAPITAL LETTER AE
0x00C7    Ç  		# LATIN CAPITAL LETTER C WITH CEDILLA
0x00C8    È  		# LATIN CAPITAL LETTER E WITH GRAVE
0x00C9    É  		# LATIN CAPITAL LETTER E WITH ACUTE
0x00CA    Ê  		# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0x00CB    Ë  		# LATIN CAPITAL LETTER E WITH DIAERESIS
0x00CC    Ì  		# LATIN CAPITAL LETTER I WITH GRAVE
0x00CD    Í  		# LATIN CAPITAL LETTER I WITH ACUTE
0x00CE    Î  		# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0x00CF    Ï  		# LATIN CAPITAL LETTER I WITH DIAERESIS
0x00D0    Ð  		# LATIN CAPITAL LETTER ETH
0x00D1    Ñ  		# LATIN CAPITAL LETTER N WITH TILDE
0x00D2    Ò  		# LATIN CAPITAL LETTER O WITH GRAVE
0x00D3    Ó  		# LATIN CAPITAL LETTER O WITH ACUTE
0x00D4    Ô  		# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0x00D5    Õ  		# LATIN CAPITAL LETTER O WITH TILDE
0x00D6    Ö  		# LATIN CAPITAL LETTER O WITH DIAERESIS
0x00D7    ×  		# MULTIPLICATION SIGN
0x00D8    Ø  		# LATIN CAPITAL LETTER O WITH STROKE
0x00D9    Ù  		# LATIN CAPITAL LETTER U WITH GRAVE
0x00DA    Ú  		# LATIN CAPITAL LETTER U WITH ACUTE
0x00DB    Û  		# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0x00DC    Ü  		# LATIN CAPITAL LETTER U WITH DIAERESIS
0x00DD    Ý  		# LATIN CAPITAL LETTER Y WITH ACUTE
0x00DE    Þ  		# LATIN CAPITAL LETTER THORN
0x00DF    ß  		# LATIN SMALL LETTER SHARP S
0x00E0    à  		# LATIN SMALL LETTER A WITH GRAVE
0x00E1    á  		# LATIN SMALL LETTER A WITH ACUTE
0x00E2    â  		# LATIN SMALL LETTER A WITH CIRCUMFLEX
0x00E3    ã  		# LATIN SMALL LETTER A WITH TILDE
0x00E4    ä  		# LATIN SMALL LETTER A WITH DIAERESIS
0x00E5    å  		# LATIN SMALL LETTER A WITH RING ABOVE
0x00E6    æ  		# LATIN SMALL LETTER AE
0x00E7    ç  		# LATIN SMALL LETTER C WITH CEDILLA
0x00E8    è  		# LATIN SMALL LETTER E WITH GRAVE
0x00E9    é  		# LATIN SMALL LETTER E WITH ACUTE
0x00EA    ê  		# LATIN SMALL LETTER E WITH CIRCUMFLEX
0x00EB    ë  		# LATIN SMALL LETTER E WITH DIAERESIS
0x00EC    ì  		# LATIN SMALL LETTER I WITH GRAVE
0x00ED    í  		# LATIN SMALL LETTER I WITH ACUTE
0x00EE    î  		# LATIN SMALL LETTER I WITH CIRCUMFLEX
0x00EF    ï  		# LATIN SMALL LETTER I WITH DIAERESIS
0x00F0    ð  		# LATIN SMALL LETTER ETH
0x00F1    ñ  		# LATIN SMALL LETTER N WITH TILDE
0x00F2    ò  		# LATIN SMALL LETTER O WITH GRAVE
0x00F3    ó  		# LATIN SMALL LETTER O WITH ACUTE
0x00F4    ô  		# LATIN SMALL LETTER O WITH CIRCUMFLEX
0x00F5    õ  		# LATIN SMALL LETTER O WITH TILDE
0x00F6    ö  		# LATIN SMALL LETTER O WITH DIAERESIS
0x00F7    ÷  		# DIVISION SIGN
0x00F8    ø  		# LATIN SMALL LETTER O WITH STROKE
0x00F9    ù  		# LATIN SMALL LETTER U WITH GRAVE
0x00FA    ú  		# LATIN SMALL LETTER U WITH ACUTE
0x00FB    û  		# LATIN SMALL LETTER U WITH CIRCUMFLEX
0x00FC    ü  		# LATIN SMALL LETTER U WITH DIAERESIS
0x00FD    ý  		# LATIN SMALL LETTER Y WITH ACUTE
0x00FE    þ  		# LATIN SMALL LETTER THORN
0x00FF    ÿ  		# LATIN SMALL LETTER Y WITH DIAERESIS
0x0100    Ā  		# LATIN CAPITAL LETTER A WITH MACRON
0x0101    ā  		# LATIN SMALL LETTER A WITH MACRON
0x0102    Ă  		# LATIN CAPITAL LETTER A WITH BREVE
0x0103    ă  		# LATIN SMALL LETTER A WITH BREVE
0x0104    Ą  		# LATIN CAPITAL LETTER A WITH OGONEK
0x0105    ą  		# LATIN SMALL LETTER A WITH OGONEK
0x0106    Ć  		# LATIN CAPITAL LETTER C WITH ACUTE
0x0107    ć  		# LATIN SMALL LETTER C WITH ACUTE
0x0108    Ĉ  		# LATIN CAPITAL LETTER C WITH CIRCUMFLEX
0x0109    ĉ  		# LATIN SMALL LETTER C WITH CIRCUMFLEX
0x010A    Ċ  		# LATIN CAPITAL LETTER C WITH DOT ABOVE
0x010B    ċ  		# LATIN SMALL LETTER C WITH DOT ABOVE
0x010C    Č  		# LATIN CAPITAL LETTER C WITH CARON
0x010D    č  		# LATIN SMALL LETTER C WITH CARON
0x010E    Ď  		# LATIN CAPITAL LETTER D WITH CARON
0x010F    ď  		# LATIN SMALL LETTER D WITH CARON
0x0110    Đ  		# LATIN CAPITAL LETTER D WITH STROKE
0x0111    đ  		# LATIN SMALL LETTER D WITH STROKE
0x0112    Ē  		# LATIN CAPITAL LETTER E WITH MACRON
0x0113    ē  		# LATIN SMALL LETTER E WITH MACRON
0x0116    Ė  		# LATIN CAPITAL LETTER E WITH DOT ABOVE
0x0117    ė  		# LATIN SMALL LETTER E WITH DOT ABOVE
0x0118    Ę  		# LATIN CAPITAL LETTER E WITH OGONEK
0x0119    ę  		# LATIN SMALL LETTER E WITH OGONEK
0x011A    Ě  		# LATIN CAPITAL LETTER E WITH CARON
0x011B    ě  		# LATIN SMALL LETTER E WITH CARON
0x011C    Ĝ  		# LATIN CAPITAL LETTER G WITH CIRCUMFLEX
0x011D    ĝ  		# LATIN SMALL LETTER G WITH CIRCUMFLEX
0x011E    Ğ  		# LATIN CAPITAL LETTER G WITH BREVE
0x011F    ğ  		# LATIN SMALL LETTER G WITH BREVE
0x0120    Ġ  		# LATIN CAPITAL LETTER G WITH DOT ABOVE
0x0121    ġ  		# LATIN SMALL LETTER G WITH DOT ABOVE
0x0122    Ģ  		# LATIN CAPITAL LETTER G WITH CEDILLA
0x0123    ģ  		# LATIN SMALL LETTER G WITH CEDILLA
0x0124    Ĥ  		# LATIN CAPITAL LETTER H WITH CIRCUMFLEX
0x0125    ĥ  		# LATIN SMALL LETTER H WITH CIRCUMFLEX
0x0126    Ħ  		# LATIN CAPITAL LETTER H WITH STROKE
0x0127    ħ  		# LATIN SMALL LETTER H WITH STROKE
0x0128    Ĩ  		# LATIN CAPITAL LETTER I WITH TILDE
0x0129    ĩ  		# LATIN SMALL LETTER I WITH TILDE
0x012A    Ī  		# LATIN CAPITAL LETTER I WITH MACRON
0x012B    ī  		# LATIN SMALL LETTER I WITH MACRON
0x012E    Į  		# LATIN CAPITAL LETTER I WITH OGONEK
0x012F    į  		# LATIN SMALL LETTER I WITH OGONEK
0x0130    İ  		# LATIN CAPITAL LETTER I WITH DOT ABOVE
0x0131    ı  		# LATIN SMALL LETTER DOTLESS I
0x0131    ı  		# LATIN SMALL LETTER DOTLESS I
0x0132    IJ  		# LATIN CAPITAL LIGATURE IJ
0x0133    ij  		# LATIN SMALL LIGATURE IJ
0x0134    Ĵ  		# LATIN CAPITAL LETTER J WITH CIRCUMFLEX
0x0135    ĵ  		# LATIN SMALL LETTER J WITH CIRCUMFLEX
0x0136    Ķ  		# LATIN CAPITAL LETTER K WITH CEDILLA
0x0137    ķ  		# LATIN SMALL LETTER K WITH CEDILLA
0x0138    ĸ  		# LATIN SMALL LETTER KRA
0x0139    Ĺ  		# LATIN CAPITAL LETTER L WITH ACUTE
0x013A    ĺ  		# LATIN SMALL LETTER L WITH ACUTE
0x013B    Ļ  		# LATIN CAPITAL LETTER L WITH CEDILLA
0x013C    ļ  		# LATIN SMALL LETTER L WITH CEDILLA
0x013D    Ľ  		# LATIN CAPITAL LETTER L WITH CARON
0x013E    ľ  		# LATIN SMALL LETTER L WITH CARON
0x013F    Ŀ  		# LATIN CAPITAL LETTER L WITH MIDDLE DOT
0x0140    ŀ  		# LATIN SMALL LETTER L WITH MIDDLE DOT
0x0141    Ł  		# LATIN CAPITAL LETTER L WITH STROKE
0x0142    ł  		# LATIN SMALL LETTER L WITH STROKE
0x0143    Ń  		# LATIN CAPITAL LETTER N WITH ACUTE
0x0144    ń  		# LATIN SMALL LETTER N WITH ACUTE
0x0145    Ņ  		# LATIN CAPITAL LETTER N WITH CEDILLA
0x0146    ņ  		# LATIN SMALL LETTER N WITH CEDILLA
0x0147    Ň  		# LATIN CAPITAL LETTER N WITH CARON
0x0148    ň  		# LATIN SMALL LETTER N WITH CARON
0x0149    ʼn  		# LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
0x014A    Ŋ  		# LATIN CAPITAL LETTER ENG
0x014B    ŋ  		# LATIN SMALL LETTER ENG
0x014C    Ō  		# LATIN CAPITAL LETTER O WITH MACRON
0x014D    ō  		# LATIN SMALL LETTER O WITH MACRON
0x0150    Ő  		# LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0x0151    ő  		# LATIN SMALL LETTER O WITH DOUBLE ACUTE
0x0152    Œ  		# LATIN CAPITAL LIGATURE OE
0x0153    œ  		# LATIN SMALL LIGATURE OE
0x0154    Ŕ  		# LATIN CAPITAL LETTER R WITH ACUTE
0x0155    ŕ  		# LATIN SMALL LETTER R WITH ACUTE
0x0156    Ŗ  		# LATIN CAPITAL LETTER R WITH CEDILLA
0x0157    ŗ  		# LATIN SMALL LETTER R WITH CEDILLA
0x0158    Ř  		# LATIN CAPITAL LETTER R WITH CARON
0x0159    ř  		# LATIN SMALL LETTER R WITH CARON
0x015A    Ś  		# LATIN CAPITAL LETTER S WITH ACUTE
0x015B    ś  		# LATIN SMALL LETTER S WITH ACUTE
0x015C    Ŝ  		# LATIN CAPITAL LETTER S WITH CIRCUMFLEX
0x015D    ŝ  		# LATIN SMALL LETTER S WITH CIRCUMFLEX
0x015E    Ş  		# LATIN CAPITAL LETTER S WITH CEDILLA
0x015F    ş  		# LATIN SMALL LETTER S WITH CEDILLA
0x0160    Š  		# LATIN CAPITAL LETTER S WITH CARON
0x0161    š  		# LATIN SMALL LETTER S WITH CARON
0x0162    Ţ  		# LATIN CAPITAL LETTER T WITH CEDILLA
0x0163    ţ  		# LATIN SMALL LETTER T WITH CEDILLA
0x0164    Ť  		# LATIN CAPITAL LETTER T WITH CARON
0x0165    ť  		# LATIN SMALL LETTER T WITH CARON
0x0166    Ŧ  		# LATIN CAPITAL LETTER T WITH STROKE
0x0167    ŧ  		# LATIN SMALL LETTER T WITH STROKE
0x0168    Ũ  		# LATIN CAPITAL LETTER U WITH TILDE
0x0169    ũ  		# LATIN SMALL LETTER U WITH TILDE
0x016A    Ū  		# LATIN CAPITAL LETTER U WITH MACRON
0x016B    ū  		# LATIN SMALL LETTER U WITH MACRON
0x016C    Ŭ  		# LATIN CAPITAL LETTER U WITH BREVE
0x016D    ŭ  		# LATIN SMALL LETTER U WITH BREVE
0x016E    Ů  		# LATIN CAPITAL LETTER U WITH RING ABOVE
0x016F    ů  		# LATIN SMALL LETTER U WITH RING ABOVE
0x0170    Ű  		# LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0x0171    ű  		# LATIN SMALL LETTER U WITH DOUBLE ACUTE
0x0172    Ų  		# LATIN CAPITAL LETTER U WITH OGONEK
0x0173    ų  		# LATIN SMALL LETTER U WITH OGONEK
0x0174    Ŵ  		# LATIN CAPITAL LETTER W WITH CIRCUMFLEX
0x0175    ŵ  		# LATIN SMALL LETTER W WITH CIRCUMFLEX
0x0176    Ŷ  		# LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
0x0177    ŷ  		# LATIN SMALL LETTER Y WITH CIRCUMFLEX
0x0178    Ÿ  		# LATIN CAPITAL LETTER Y WITH DIAERESIS
0x0179    Ź  		# LATIN CAPITAL LETTER Z WITH ACUTE
0x017A    ź  		# LATIN SMALL LETTER Z WITH ACUTE
0x017B    Ż  		# LATIN CAPITAL LETTER Z WITH DOT ABOVE
0x017C    ż  		# LATIN SMALL LETTER Z WITH DOT ABOVE
0x017D    Ž  		# LATIN CAPITAL LETTER Z WITH CARON
0x017E    ž  		# LATIN SMALL LETTER Z WITH CARON
0x0192    ƒ  		# LATIN SMALL LETTER F WITH HOOK
0x01F5    ǵ  		# LATIN SMALL LETTER G WITH ACUTE
0x02BC    ʼ  		# MODIFIER LETTER APOSTROPHE
0x02C6    ˆ  		# MODIFIER LETTER CIRCUMFLEX ACCENT
0x02C7    ˇ  		# CARON
0x02D8    ˘  		# BREVE
0x02D9    ˙  		# DOT ABOVE
0x02DA    ˚  		# RING ABOVE
0x02DB    ˛  		# OGONEK
0x02DC    ˜  		# SMALL TILDE
0x02DD    ˝  		# DOUBLE ACUTE ACCENT
0x0386    Ά  		# GREEK CAPITAL LETTER ALPHA WITH TONOS
0x0388    Έ  		# GREEK CAPITAL LETTER EPSILON WITH TONOS
0x0389    Ή  		# GREEK CAPITAL LETTER ETA WITH TONOS
0x038A    Ί  		# GREEK CAPITAL LETTER IOTA WITH TONOS
0x038C    Ό  		# GREEK CAPITAL LETTER OMICRON WITH TONOS
0x038E    Ύ  		# GREEK CAPITAL LETTER UPSILON WITH TONOS
0x038F    Ώ  		# GREEK CAPITAL LETTER OMEGA WITH TONOS
0x0390    ΐ  		# GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
0x0391    Α  		# GREEK CAPITAL LETTER ALPHA
0x0392    Β  		# GREEK CAPITAL LETTER BETA
0x0393    Γ  		# GREEK CAPITAL LETTER GAMMA
0x0394    Δ  		# GREEK CAPITAL LETTER DELTA
0x0395    Ε  		# GREEK CAPITAL LETTER EPSILON
0x0396    Ζ  		# GREEK CAPITAL LETTER ZETA
0x0397    Η  		# GREEK CAPITAL LETTER ETA
0x0398    Θ  		# GREEK CAPITAL LETTER THETA
0x0399    Ι  		# GREEK CAPITAL LETTER IOTA
0x039A    Κ  		# GREEK CAPITAL LETTER KAPPA
0x039B    Λ  		# GREEK CAPITAL LETTER LAMDA
0x039C    Μ  		# GREEK CAPITAL LETTER MU
0x039D    Ν  		# GREEK CAPITAL LETTER NU
0x039E    Ξ  		# GREEK CAPITAL LETTER XI
0x039F    Ο  		# GREEK CAPITAL LETTER OMICRON
0x03A0    Π  		# GREEK CAPITAL LETTER PI
0x03A1    Ρ  		# GREEK CAPITAL LETTER RHO
0x03A3    Σ  		# GREEK CAPITAL LETTER SIGMA
0x03A4    Τ  		# GREEK CAPITAL LETTER TAU
0x03A5    Υ  		# GREEK CAPITAL LETTER UPSILON
0x03A6    Φ  		# GREEK CAPITAL LETTER PHI
0x03A7    Χ  		# GREEK CAPITAL LETTER CHI
0x03A8    Ψ  		# GREEK CAPITAL LETTER PSI
0x03A9    Ω  		# GREEK CAPITAL LETTER OMEGA
0x03AA    Ϊ  		# GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0x03AB    Ϋ  		# GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0x03AC    ά  		# GREEK SMALL LETTER ALPHA WITH TONOS
0x03AD    έ  		# GREEK SMALL LETTER EPSILON WITH TONOS
0x03AE    ή  		# GREEK SMALL LETTER ETA WITH TONOS
0x03AF    ί  		# GREEK SMALL LETTER IOTA WITH TONOS
0x03B0    ΰ  		# GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
0x03B1    α  		# GREEK SMALL LETTER ALPHA
0x03B2    β  		# GREEK SMALL LETTER BETA
0x03B3    γ  		# GREEK SMALL LETTER GAMMA
0x03B4    δ  		# GREEK SMALL LETTER DELTA
0x03B5    ε  		# GREEK SMALL LETTER EPSILON
0x03B6    ζ  		# GREEK SMALL LETTER ZETA
0x03B7    η  		# GREEK SMALL LETTER ETA
0x03B8    θ  		# GREEK SMALL LETTER THETA
0x03B9    ι  		# GREEK SMALL LETTER IOTA
0x03BA    κ  		# GREEK SMALL LETTER KAPPA
0x03BB    λ  		# GREEK SMALL LETTER LAMDA
0x03BC    μ  		# GREEK SMALL LETTER MU
0x03BD    ν  		# GREEK SMALL LETTER NU
0x03BE    ξ  		# GREEK SMALL LETTER XI
0x03BF    ο  		# GREEK SMALL LETTER OMICRON
0x03C0    π  		# GREEK SMALL LETTER PI
0x03C1    ρ  		# GREEK SMALL LETTER RHO
0x03C2    ς  		# GREEK SMALL LETTER FINAL SIGMA
0x03C3    σ  		# GREEK SMALL LETTER SIGMA
0x03C4    τ  		# GREEK SMALL LETTER TAU
0x03C5    υ  		# GREEK SMALL LETTER UPSILON
0x03C6    φ  		# GREEK SMALL LETTER PHI
0x03C7    χ  		# GREEK SMALL LETTER CHI
0x03C8    ψ  		# GREEK SMALL LETTER PSI
0x03C9    ω  		# GREEK SMALL LETTER OMEGA
0x03CA    ϊ  		# GREEK SMALL LETTER IOTA WITH DIALYTIKA
0x03CB    ϋ  		# GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0x03CC    ό  		# GREEK SMALL LETTER OMICRON WITH TONOS
0x03CE    ώ  		# GREEK SMALL LETTER OMEGA WITH TONOS
0x03D1    ϑ  		# GREEK THETA SYMBOL
0x03D2    ϒ  		# GREEK UPSILON WITH HOOK SYMBOL
0x03D5    ϕ  		# GREEK PHI SYMBOL
0x03D6    ϖ  		# GREEK PI SYMBOL
0x03DC    Ϝ  		# GREEK LETTER DIGAMMA
0x03F0    ϰ  		# GREEK KAPPA SYMBOL
0x03F1    ϱ  		# GREEK RHO SYMBOL
0x0401    Ё  		# CYRILLIC CAPITAL LETTER IO
0x0402    Ђ  		# CYRILLIC CAPITAL LETTER DJE
0x0403    Ѓ  		# CYRILLIC CAPITAL LETTER GJE
0x0404    Є  		# CYRILLIC CAPITAL LETTER UKRAINIAN IE
0x0405    Ѕ  		# CYRILLIC CAPITAL LETTER DZE
0x0406    І  		# CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
0x0407    Ї  		# CYRILLIC CAPITAL LETTER YI
0x0408    Ј  		# CYRILLIC CAPITAL LETTER JE
0x0409    Љ  		# CYRILLIC CAPITAL LETTER LJE
0x040A    Њ  		# CYRILLIC CAPITAL LETTER NJE
0x040B    Ћ  		# CYRILLIC CAPITAL LETTER TSHE
0x040C    Ќ  		# CYRILLIC CAPITAL LETTER KJE
0x040E    Ў  		# CYRILLIC CAPITAL LETTER SHORT U
0x040F    Џ  		# CYRILLIC CAPITAL LETTER DZHE
0x0410    А  		# CYRILLIC CAPITAL LETTER A
0x0411    Б  		# CYRILLIC CAPITAL LETTER BE
0x0412    В  		# CYRILLIC CAPITAL LETTER VE
0x0413    Г  		# CYRILLIC CAPITAL LETTER GHE
0x0414    Д  		# CYRILLIC CAPITAL LETTER DE
0x0415    Е  		# CYRILLIC CAPITAL LETTER IE
0x0416    Ж  		# CYRILLIC CAPITAL LETTER ZHE
0x0417    З  		# CYRILLIC CAPITAL LETTER ZE
0x0418    И  		# CYRILLIC CAPITAL LETTER I
0x0419    Й  		# CYRILLIC CAPITAL LETTER SHORT I
0x041A    К  		# CYRILLIC CAPITAL LETTER KA
0x041B    Л  		# CYRILLIC CAPITAL LETTER EL
0x041C    М  		# CYRILLIC CAPITAL LETTER EM
0x041D    Н  		# CYRILLIC CAPITAL LETTER EN
0x041E    О  		# CYRILLIC CAPITAL LETTER O
0x041F    П  		# CYRILLIC CAPITAL LETTER PE
0x0420    Р  		# CYRILLIC CAPITAL LETTER ER
0x0421    С  		# CYRILLIC CAPITAL LETTER ES
0x0422    Т  		# CYRILLIC CAPITAL LETTER TE
0x0423    У  		# CYRILLIC CAPITAL LETTER U
0x0424    Ф  		# CYRILLIC CAPITAL LETTER EF
0x0425    Х  		# CYRILLIC CAPITAL LETTER HA
0x0426    Ц  		# CYRILLIC CAPITAL LETTER TSE
0x0427    Ч  		# CYRILLIC CAPITAL LETTER CHE
0x0428    Ш  		# CYRILLIC CAPITAL LETTER SHA
0x0429    Щ  		# CYRILLIC CAPITAL LETTER SHCHA
0x042A    Ъ  		# CYRILLIC CAPITAL LETTER HARD SIGN
0x042B    Ы  		# CYRILLIC CAPITAL LETTER YERU
0x042C    Ь  		# CYRILLIC CAPITAL LETTER SOFT SIGN
0x042D    Э  		# CYRILLIC CAPITAL LETTER E
0x042E    Ю  		# CYRILLIC CAPITAL LETTER YU
0x042F    Я  		# CYRILLIC CAPITAL LETTER YA
0x0430    а  		# CYRILLIC SMALL LETTER A
0x0431    б  		# CYRILLIC SMALL LETTER BE
0x0432    в  		# CYRILLIC SMALL LETTER VE
0x0433    г  		# CYRILLIC SMALL LETTER GHE
0x0434    д  		# CYRILLIC SMALL LETTER DE
0x0435    е  		# CYRILLIC SMALL LETTER IE
0x0436    ж  		# CYRILLIC SMALL LETTER ZHE
0x0437    з  		# CYRILLIC SMALL LETTER ZE
0x0438    и  		# CYRILLIC SMALL LETTER I
0x0439    й  		# CYRILLIC SMALL LETTER SHORT I
0x043A    к  		# CYRILLIC SMALL LETTER KA
0x043B    л  		# CYRILLIC SMALL LETTER EL
0x043C    м  		# CYRILLIC SMALL LETTER EM
0x043D    н  		# CYRILLIC SMALL LETTER EN
0x043E    о  		# CYRILLIC SMALL LETTER O
0x043F    п  		# CYRILLIC SMALL LETTER PE
0x0440    р  		# CYRILLIC SMALL LETTER ER
0x0441    с  		# CYRILLIC SMALL LETTER ES
0x0442    т  		# CYRILLIC SMALL LETTER TE
0x0443    у  		# CYRILLIC SMALL LETTER U
0x0444    ф  		# CYRILLIC SMALL LETTER EF
0x0445    х  		# CYRILLIC SMALL LETTER HA
0x0446    ц  		# CYRILLIC SMALL LETTER TSE
0x0447    ч  		# CYRILLIC SMALL LETTER CHE
0x0448    ш  		# CYRILLIC SMALL LETTER SHA
0x0449    щ  		# CYRILLIC SMALL LETTER SHCHA
0x044A    ъ  		# CYRILLIC SMALL LETTER HARD SIGN
0x044B    ы  		# CYRILLIC SMALL LETTER YERU
0x044C    ь  		# CYRILLIC SMALL LETTER SOFT SIGN
0x044D    э  		# CYRILLIC SMALL LETTER E
0x044E    ю  		# CYRILLIC SMALL LETTER YU
0x044F    я  		# CYRILLIC SMALL LETTER YA
0x0451    ё  		# CYRILLIC SMALL LETTER IO
0x0452    ђ  		# CYRILLIC SMALL LETTER DJE
0x0453    ѓ  		# CYRILLIC SMALL LETTER GJE
0x0454    є  		# CYRILLIC SMALL LETTER UKRAINIAN IE
0x0455    ѕ  		# CYRILLIC SMALL LETTER DZE
0x0456    і  		# CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0x0457    ї  		# CYRILLIC SMALL LETTER YI
0x0458    ј  		# CYRILLIC SMALL LETTER JE
0x0459    љ  		# CYRILLIC SMALL LETTER LJE
0x045A    њ  		# CYRILLIC SMALL LETTER NJE
0x045B    ћ  		# CYRILLIC SMALL LETTER TSHE
0x045C    ќ  		# CYRILLIC SMALL LETTER KJE
0x045E    ў  		# CYRILLIC SMALL LETTER SHORT U
0x045F    џ  		# CYRILLIC SMALL LETTER DZHE
0x2002       		# EN SPACE
0x2003       		# EM SPACE
0x2004       		# THREE-PER-EM SPACE
0x2005       		# FOUR-PER-EM SPACE
0x2007       		# FIGURE SPACE
0x2008       		# PUNCTUATION SPACE
0x2009       		# THIN SPACE
0x200A       		# HAIR SPACE
0x200C    ‌  		# ZERO WIDTH NON-JOINER
0x200D    ‍  		# ZERO WIDTH JOINER
0x200E    ‎  		# LEFT-TO-RIGHT MARK
0x200F    ‏  		# RIGHT-TO-LEFT MARK
0x2010    ‐  		# HYPHEN
0x2013    –  		# EN DASH
0x2014    —  		# EM DASH
0x2015    ―  		# HORIZONTAL BAR
0x2016    ‖  		# DOUBLE VERTICAL LINE
0x2018    ‘  		# LEFT SINGLE QUOTATION MARK
0x2018    ‘  		# LEFT SINGLE QUOTATION MARK
0x2019    ’  		# RIGHT SINGLE QUOTATION MARK
0x201A    ‚  		# SINGLE LOW-9 QUOTATION MARK
0x201A    ‚  		# SINGLE LOW-9 QUOTATION MARK
0x201C    “  		# LEFT DOUBLE QUOTATION MARK
0x201C    “  		# LEFT DOUBLE QUOTATION MARK
0x201D    ”  		# RIGHT DOUBLE QUOTATION MARK
0x201E    „  		# DOUBLE LOW-9 QUOTATION MARK
0x201E    „  		# DOUBLE LOW-9 QUOTATION MARK
0x2020    †  		# DAGGER
0x2021    ‡  		# DOUBLE DAGGER
0x2022    •  		# BULLET
0x2025    ‥  		# TWO DOT LEADER
0x2026    …  		# HORIZONTAL ELLIPSIS
0x2026    …  		# HORIZONTAL ELLIPSIS
0x2030    ‰  		# PER MILLE SIGN
0x2032    ′  		# PRIME
0x2032    ′  		# PRIME
0x2033    ″  		# DOUBLE PRIME
0x2034    ‴  		# TRIPLE PRIME
0x2035    ‵  		# REVERSED PRIME
0x2039    ‹  		# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x203A    ›  		# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x203E    ‾  		# OVERLINE
0x2041    ⁁  		# CARET INSERTION POINT
0x2043    ⁃  		# HYPHEN BULLET
0x2044    ⁄  		# FRACTION SLASH
0x20AC    €  		# EURO SIGN
0x20DB    ⃛  		# COMBINING THREE DOTS ABOVE
0x20DC    ⃜  		# COMBINING FOUR DOTS ABOVE
0x2105    ℅  		# CARE OF
0x210B    ℋ  		# SCRIPT CAPITAL H
0x210F    ℏ  		# PLANCK CONSTANT OVER TWO PI
0x2111    ℑ  		# BLACK-LETTER CAPITAL I
0x2112    ℒ  		# SCRIPT CAPITAL L
0x2113    ℓ  		# SCRIPT SMALL L
0x2116    №  		# NUMERO SIGN
0x2117    ℗  		# SOUND RECORDING COPYRIGHT
0x2118    ℘  		# SCRIPT CAPITAL P
0x211C    ℜ  		# BLACK-LETTER CAPITAL R
0x211E    ℞  		# PRESCRIPTION TAKE
0x2122    ™  		# TRADE MARK SIGN
0x2126    Ω  		# OHM SIGN
0x212B    Å  		# ANGSTROM SIGN
0x212C    ℬ  		# SCRIPT CAPITAL B
0x2133    ℳ  		# SCRIPT CAPITAL M
0x2134    ℴ  		# SCRIPT SMALL O
0x2135    ℵ  		# ALEF SYMBOL
0x2135    ℵ  		# ALEF SYMBOL
0x2136    ℶ  		# BET SYMBOL
0x2137    ℷ  		# GIMEL SYMBOL
0x2138    ℸ  		# DALET SYMBOL
0x2153    ⅓  		# VULGAR FRACTION ONE THIRD
0x2154    ⅔  		# VULGAR FRACTION TWO THIRDS
0x2155    ⅕  		# VULGAR FRACTION ONE FIFTH
0x2156    ⅖  		# VULGAR FRACTION TWO FIFTHS
0x2157    ⅗  		# VULGAR FRACTION THREE FIFTHS
0x2158    ⅘  		# VULGAR FRACTION FOUR FIFTHS
0x2159    ⅙  		# VULGAR FRACTION ONE SIXTH
0x215A    ⅚  		# VULGAR FRACTION FIVE SIXTHS
0x215B    ⅛  		# VULGAR FRACTION ONE EIGHTH
0x215C    ⅜  		# VULGAR FRACTION THREE EIGHTHS
0x215D    ⅝  		# VULGAR FRACTION FIVE EIGHTHS
0x215E    ⅞  		# VULGAR FRACTION SEVEN EIGHTHS
0x2190    ←  		# LEFTWARDS ARROW
0x2191    ↑  		# UPWARDS ARROW
0x2192    →  		# RIGHTWARDS ARROW
0x2193    ↓  		# DOWNWARDS ARROW
0x2194    ↔  		# LEFT RIGHT ARROW
0x2195    ↕  		# UP DOWN ARROW
0x2196    ↖  		# NORTH WEST ARROW
0x2197    ↗  		# NORTH EAST ARROW
0x2198    ↘  		# SOUTH EAST ARROW
0x2199    ↙  		# SOUTH WEST ARROW
0x219A    ↚  		# LEFTWARDS ARROW WITH STROKE
0x219B    ↛  		# RIGHTWARDS ARROW WITH STROKE
0x219D    ↝  		# RIGHTWARDS WAVE ARROW
0x219E    ↞  		# LEFTWARDS TWO HEADED ARROW
0x21A0    ↠  		# RIGHTWARDS TWO HEADED ARROW
0x21A2    ↢  		# LEFTWARDS ARROW WITH TAIL
0x21A3    ↣  		# RIGHTWARDS ARROW WITH TAIL
0x21A6    ↦  		# RIGHTWARDS ARROW FROM BAR
0x21A9    ↩  		# LEFTWARDS ARROW WITH HOOK
0x21AA    ↪  		# RIGHTWARDS ARROW WITH HOOK
0x21AB    ↫  		# LEFTWARDS ARROW WITH LOOP
0x21AC    ↬  		# RIGHTWARDS ARROW WITH LOOP
0x21AD    ↭  		# LEFT RIGHT WAVE ARROW
0x21AE    ↮  		# LEFT RIGHT ARROW WITH STROKE
0x21B0    ↰  		# UPWARDS ARROW WITH TIP LEFTWARDS
0x21B1    ↱  		# UPWARDS ARROW WITH TIP RIGHTWARDS
0x21B5    ↵  		# DOWNWARDS ARROW WITH CORNER LEFTWARDS
0x21B6    ↶  		# ANTICLOCKWISE TOP SEMICIRCLE ARROW
0x21B7    ↷  		# CLOCKWISE TOP SEMICIRCLE ARROW
0x21BA    ↺  		# ANTICLOCKWISE OPEN CIRCLE ARROW
0x21BB    ↻  		# CLOCKWISE OPEN CIRCLE ARROW
0x21BC    ↼  		# LEFTWARDS HARPOON WITH BARB UPWARDS
0x21BD    ↽  		# LEFTWARDS HARPOON WITH BARB DOWNWARDS
0x21BE    ↾  		# UPWARDS HARPOON WITH BARB RIGHTWARDS
0x21BF    ↿  		# UPWARDS HARPOON WITH BARB LEFTWARDS
0x21C0    ⇀  		# RIGHTWARDS HARPOON WITH BARB UPWARDS
0x21C1    ⇁  		# RIGHTWARDS HARPOON WITH BARB DOWNWARDS
0x21C2    ⇂  		# DOWNWARDS HARPOON WITH BARB RIGHTWARDS
0x21C3    ⇃  		# DOWNWARDS HARPOON WITH BARB LEFTWARDS
0x21C4    ⇄  		# RIGHTWARDS ARROW OVER LEFTWARDS ARROW
0x21C6    ⇆  		# LEFTWARDS ARROW OVER RIGHTWARDS ARROW
0x21C7    ⇇  		# LEFTWARDS PAIRED ARROWS
0x21C8    ⇈  		# UPWARDS PAIRED ARROWS
0x21C9    ⇉  		# RIGHTWARDS PAIRED ARROWS
0x21CA    ⇊  		# DOWNWARDS PAIRED ARROWS
0x21CB    ⇋  		# LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
0x21CC    ⇌  		# RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
0x21CD    ⇍  		# LEFTWARDS DOUBLE ARROW WITH STROKE
0x21CE    ⇎  		# LEFT RIGHT DOUBLE ARROW WITH STROKE
0x21CF    ⇏  		# RIGHTWARDS DOUBLE ARROW WITH STROKE
0x21D0    ⇐  		# LEFTWARDS DOUBLE ARROW
0x21D1    ⇑  		# UPWARDS DOUBLE ARROW
0x21D2    ⇒  		# RIGHTWARDS DOUBLE ARROW
0x21D3    ⇓  		# DOWNWARDS DOUBLE ARROW
0x21D4    ⇔  		# LEFT RIGHT DOUBLE ARROW
0x21D5    ⇕  		# UP DOWN DOUBLE ARROW
0x21DA    ⇚  		# LEFTWARDS TRIPLE ARROW
0x21DB    ⇛  		# RIGHTWARDS TRIPLE ARROW
0x2200    ∀  		# FOR ALL
0x2201    ∁  		# COMPLEMENT
0x2202    ∂  		# PARTIAL DIFFERENTIAL
0x2203    ∃  		# THERE EXISTS
0x2204    ∄  		# THERE DOES NOT EXIST
0x2205    ∅  		# EMPTY SET
0x2207    ∇  		# NABLA
0x2208    ∈  		# ELEMENT OF
0x2209    ∉  		# NOT AN ELEMENT OF
0x220A    ∊  		# SMALL ELEMENT OF
0x220B    ∋  		# CONTAINS AS MEMBER
0x220D    ∍  		# SMALL CONTAINS AS MEMBER
0x220F    ∏  		# N-ARY PRODUCT
0x2210    ∐  		# N-ARY COPRODUCT
0x2211    ∑  		# N-ARY SUMMATION
0x2212    −  		# MINUS SIGN
0x2213    ∓  		# MINUS-OR-PLUS SIGN
0x2214    ∔  		# DOT PLUS
0x2216    ∖  		# SET MINUS
0x2217    ∗  		# ASTERISK OPERATOR
0x2218    ∘  		# RING OPERATOR
0x221A    √  		# SQUARE ROOT
0x221D    ∝  		# PROPORTIONAL TO
0x221E    ∞  		# INFINITY
0x221F    ∟  		# RIGHT ANGLE
0x2220    ∠  		# ANGLE
0x2221    ∡  		# MEASURED ANGLE
0x2222    ∢  		# SPHERICAL ANGLE
0x2223    ∣  		# DIVIDES
0x2224    ∤  		# DOES NOT DIVIDE
0x2225    ∥  		# PARALLEL TO
0x2226    ∦  		# NOT PARALLEL TO
0x2227    ∧  		# LOGICAL AND
0x2228    ∨  		# LOGICAL OR
0x2229    ∩  		# INTERSECTION
0x222A    ∪  		# UNION
0x222B    ∫  		# INTEGRAL
0x222E    ∮  		# CONTOUR INTEGRAL
0x2234    ∴  		# THEREFORE
0x2235    ∵  		# BECAUSE
0x223C    ∼  		# TILDE OPERATOR
0x223D    ∽  		# REVERSED TILDE
0x2240    ≀  		# WREATH PRODUCT
0x2241    ≁  		# NOT TILDE
0x2243    ≃  		# ASYMPTOTICALLY EQUAL TO
0x2244    ≄  		# NOT ASYMPTOTICALLY EQUAL TO
0x2245    ≅  		# APPROXIMATELY EQUAL TO
0x2247    ≇  		# NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
0x2248    ≈  		# ALMOST EQUAL TO
0x2249    ≉  		# NOT ALMOST EQUAL TO
0x224A    ≊  		# ALMOST EQUAL OR EQUAL TO
0x224C    ≌  		# ALL EQUAL TO
0x224E    ≎  		# GEOMETRICALLY EQUIVALENT TO
0x224F    ≏  		# DIFFERENCE BETWEEN
0x2250    ≐  		# APPROACHES THE LIMIT
0x2251    ≑  		# GEOMETRICALLY EQUAL TO
0x2252    ≒  		# APPROXIMATELY EQUAL TO OR THE IMAGE OF
0x2253    ≓  		# IMAGE OF OR APPROXIMATELY EQUAL TO
0x2254    ≔  		# COLON EQUALS
0x2255    ≕  		# EQUALS COLON
0x2256    ≖  		# RING IN EQUAL TO
0x2257    ≗  		# RING EQUAL TO
0x2259    ≙  		# ESTIMATES
0x225C    ≜  		# DELTA EQUAL TO
0x2260    ≠  		# NOT EQUAL TO
0x2261    ≡  		# IDENTICAL TO
0x2262    ≢  		# NOT IDENTICAL TO
0x2264    ≤  		# LESS-THAN OR EQUAL TO
0x2265    ≥  		# GREATER-THAN OR EQUAL TO
0x2266    ≦  		# LESS-THAN OVER EQUAL TO
0x2267    ≧  		# GREATER-THAN OVER EQUAL TO
0x2268    ≨  		# LESS-THAN BUT NOT EQUAL TO
0x2269    ≩  		# GREATER-THAN BUT NOT EQUAL TO
0x226A    ≪  		# MUCH LESS-THAN
0x226B    ≫  		# MUCH GREATER-THAN
0x226C    ≬  		# BETWEEN
0x226E    ≮  		# NOT LESS-THAN
0x226F    ≯  		# NOT GREATER-THAN
0x2270    ≰  		# NEITHER LESS-THAN NOR EQUAL TO
0x2271    ≱  		# NEITHER GREATER-THAN NOR EQUAL TO
0x2272    ≲  		# LESS-THAN OR EQUIVALENT TO
0x2273    ≳  		# GREATER-THAN OR EQUIVALENT TO
0x2276    ≶  		# LESS-THAN OR GREATER-THAN
0x2277    ≷  		# GREATER-THAN OR LESS-THAN
0x227A    ≺  		# PRECEDES
0x227B    ≻  		# SUCCEEDS
0x227C    ≼  		# PRECEDES OR EQUAL TO
0x227D    ≽  		# SUCCEEDS OR EQUAL TO
0x227E    ≾  		# PRECEDES OR EQUIVALENT TO
0x227F    ≿  		# SUCCEEDS OR EQUIVALENT TO
0x2280    ⊀  		# DOES NOT PRECEDE
0x2281    ⊁  		# DOES NOT SUCCEED
0x2282    ⊂  		# SUBSET OF
0x2283    ⊃  		# SUPERSET OF
0x2284    ⊄  		# NOT A SUBSET OF
0x2285    ⊅  		# NOT A SUPERSET OF
0x2286    ⊆  		# SUBSET OF OR EQUAL TO
0x2287    ⊇  		# SUPERSET OF OR EQUAL TO
0x2288    ⊈  		# NEITHER A SUBSET OF NOR EQUAL TO
0x2289    ⊉  		# NEITHER A SUPERSET OF NOR EQUAL TO
0x228A    ⊊  		# SUBSET OF WITH NOT EQUAL TO
0x228B    ⊋  		# SUPERSET OF WITH NOT EQUAL TO
0x228E    ⊎  		# MULTISET UNION
0x228F    ⊏  		# SQUARE IMAGE OF
0x2290    ⊐  		# SQUARE ORIGINAL OF
0x2291    ⊑  		# SQUARE IMAGE OF OR EQUAL TO
0x2292    ⊒  		# SQUARE ORIGINAL OF OR EQUAL TO
0x2293    ⊓  		# SQUARE CAP
0x2294    ⊔  		# SQUARE CUP
0x2295    ⊕  		# CIRCLED PLUS
0x2296    ⊖  		# CIRCLED MINUS
0x2297    ⊗  		# CIRCLED TIMES
0x2298    ⊘  		# CIRCLED DIVISION SLASH
0x2299    ⊙  		# CIRCLED DOT OPERATOR
0x229A    ⊚  		# CIRCLED RING OPERATOR
0x229B    ⊛  		# CIRCLED ASTERISK OPERATOR
0x229D    ⊝  		# CIRCLED DASH
0x229E    ⊞  		# SQUARED PLUS
0x229F    ⊟  		# SQUARED MINUS
0x22A0    ⊠  		# SQUARED TIMES
0x22A1    ⊡  		# SQUARED DOT OPERATOR
0x22A2    ⊢  		# RIGHT TACK
0x22A3    ⊣  		# LEFT TACK
0x22A4    ⊤  		# DOWN TACK
0x22A5    ⊥  		# UP TACK
0x22A7    ⊧  		# MODELS
0x22A8    ⊨  		# TRUE
0x22A9    ⊩  		# FORCES
0x22AA    ⊪  		# TRIPLE VERTICAL BAR RIGHT TURNSTILE
0x22AC    ⊬  		# DOES NOT PROVE
0x22AD    ⊭  		# NOT TRUE
0x22AE    ⊮  		# DOES NOT FORCE
0x22AF    ⊯  		# NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
0x22B2    ⊲  		# NORMAL SUBGROUP OF
0x22B3    ⊳  		# CONTAINS AS NORMAL SUBGROUP
0x22B4    ⊴  		# NORMAL SUBGROUP OF OR EQUAL TO
0x22B5    ⊵  		# CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
0x22B8    ⊸  		# MULTIMAP
0x22BA    ⊺  		# INTERCALATE
0x22BB    ⊻  		# XOR
0x22BC    ⊼  		# NAND
0x22C4    ⋄  		# DIAMOND OPERATOR
0x22C5    ⋅  		# DOT OPERATOR
0x22C6    ⋆  		# STAR OPERATOR
0x22C7    ⋇  		# DIVISION TIMES
0x22C8    ⋈  		# BOWTIE
0x22C9    ⋉  		# LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
0x22CA    ⋊  		# RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
0x22CB    ⋋  		# LEFT SEMIDIRECT PRODUCT
0x22CC    ⋌  		# RIGHT SEMIDIRECT PRODUCT
0x22CD    ⋍  		# REVERSED TILDE EQUALS
0x22CE    ⋎  		# CURLY LOGICAL OR
0x22CF    ⋏  		# CURLY LOGICAL AND
0x22D0    ⋐  		# DOUBLE SUBSET
0x22D1    ⋑  		# DOUBLE SUPERSET
0x22D2    ⋒  		# DOUBLE INTERSECTION
0x22D3    ⋓  		# DOUBLE UNION
0x22D4    ⋔  		# PITCHFORK
0x22D6    ⋖  		# LESS-THAN WITH DOT
0x22D7    ⋗  		# GREATER-THAN WITH DOT
0x22D8    ⋘  		# VERY MUCH LESS-THAN
0x22D9    ⋙  		# VERY MUCH GREATER-THAN
0x22DA    ⋚  		# LESS-THAN EQUAL TO OR GREATER-THAN
0x22DB    ⋛  		# GREATER-THAN EQUAL TO OR LESS-THAN
0x22DC    ⋜  		# EQUAL TO OR LESS-THAN
0x22DD    ⋝  		# EQUAL TO OR GREATER-THAN
0x22DE    ⋞  		# EQUAL TO OR PRECEDES
0x22DF    ⋟  		# EQUAL TO OR SUCCEEDS
0x22E0    ⋠  		# DOES NOT PRECEDE OR EQUAL
0x22E1    ⋡  		# DOES NOT SUCCEED OR EQUAL
0x22E6    ⋦  		# LESS-THAN BUT NOT EQUIVALENT TO
0x22E7    ⋧  		# GREATER-THAN BUT NOT EQUIVALENT TO
0x22E8    ⋨  		# PRECEDES BUT NOT EQUIVALENT TO
0x22E9    ⋩  		# SUCCEEDS BUT NOT EQUIVALENT TO
0x22EA    ⋪  		# NOT NORMAL SUBGROUP OF
0x22EB    ⋫  		# DOES NOT CONTAIN AS NORMAL SUBGROUP
0x22EC    ⋬  		# NOT NORMAL SUBGROUP OF OR EQUAL TO
0x22ED    ⋭  		# DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
0x22EE    ⋮  		# VERTICAL ELLIPSIS
0x2306    ⌆  		# PERSPECTIVE
0x2308    ⌈  		# LEFT CEILING
0x2309    ⌉  		# RIGHT CEILING
0x230A    ⌊  		# LEFT FLOOR
0x230B    ⌋  		# RIGHT FLOOR
0x230C    ⌌  		# BOTTOM RIGHT CROP
0x230D    ⌍  		# BOTTOM LEFT CROP
0x230E    ⌎  		# TOP RIGHT CROP
0x230F    ⌏  		# TOP LEFT CROP
0x2315    ⌕  		# TELEPHONE RECORDER
0x2316    ⌖  		# POSITION INDICATOR
0x231C    ⌜  		# TOP LEFT CORNER
0x231D    ⌝  		# TOP RIGHT CORNER
0x231E    ⌞  		# BOTTOM LEFT CORNER
0x231F    ⌟  		# BOTTOM RIGHT CORNER
0x2322    ⌢  		# FROWN
0x2323    ⌣  		# SMILE
0x2329    〈  		# LEFT-POINTING ANGLE BRACKET
0x232A    〉  		# RIGHT-POINTING ANGLE BRACKET
0x2423    ␣  		# OPEN BOX
0x24C8    Ⓢ  		# CIRCLED LATIN CAPITAL LETTER S
0x2500    ─  		# BOX DRAWINGS LIGHT HORIZONTAL
0x2502    │  		# BOX DRAWINGS LIGHT VERTICAL
0x250C    ┌  		# BOX DRAWINGS LIGHT DOWN AND RIGHT
0x2510    ┐  		# BOX DRAWINGS LIGHT DOWN AND LEFT
0x2514    └  		# BOX DRAWINGS LIGHT UP AND RIGHT
0x2518    ┘  		# BOX DRAWINGS LIGHT UP AND LEFT
0x251C    ├  		# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0x2524    ┤  		# BOX DRAWINGS LIGHT VERTICAL AND LEFT
0x252C    ┬  		# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0x2534    ┴  		# BOX DRAWINGS LIGHT UP AND HORIZONTAL
0x253C    ┼  		# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0x2550    ═  		# BOX DRAWINGS DOUBLE HORIZONTAL
0x2551    ║  		# BOX DRAWINGS DOUBLE VERTICAL
0x2552    ╒  		# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0x2553    ╓  		# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0x2554    ╔  		# BOX DRAWINGS DOUBLE DOWN AND RIGHT
0x2555    ╕  		# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0x2556    ╖  		# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0x2557    ╗  		# BOX DRAWINGS DOUBLE DOWN AND LEFT
0x2558    ╘  		# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0x2559    ╙  		# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0x255A    ╚  		# BOX DRAWINGS DOUBLE UP AND RIGHT
0x255B    ╛  		# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0x255C    ╜  		# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0x255D    ╝  		# BOX DRAWINGS DOUBLE UP AND LEFT
0x255E    ╞  		# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0x255F    ╟  		# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0x2560    ╠  		# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0x2561    ╡  		# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0x2562    ╢  		# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0x2563    ╣  		# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0x2564    ╤  		# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0x2565    ╥  		# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0x2566    ╦  		# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0x2567    ╧  		# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0x2568    ╨  		# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0x2569    ╩  		# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0x256A    ╪  		# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0x256B    ╫  		# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0x256C    ╬  		# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0x2580    ▀  		# UPPER HALF BLOCK
0x2584    ▄  		# LOWER HALF BLOCK
0x2588    █  		# FULL BLOCK
0x2591    ░  		# LIGHT SHADE
0x2592    ▒  		# MEDIUM SHADE
0x2593    ▓  		# DARK SHADE
0x25A1    □  		# WHITE SQUARE
0x25AA    ▪  		# BLACK SMALL SQUARE
0x25AD    ▭  		# WHITE RECTANGLE
0x25AE    ▮  		# BLACK VERTICAL RECTANGLE
0x25B3    △  		# WHITE UP-POINTING TRIANGLE
0x25B4    ▴  		# BLACK UP-POINTING SMALL TRIANGLE
0x25B5    ▵  		# WHITE UP-POINTING SMALL TRIANGLE
0x25B8    ▸  		# BLACK RIGHT-POINTING SMALL TRIANGLE
0x25B9    ▹  		# WHITE RIGHT-POINTING SMALL TRIANGLE
0x25BD    ▽  		# WHITE DOWN-POINTING TRIANGLE
0x25BE    ▾  		# BLACK DOWN-POINTING SMALL TRIANGLE
0x25BF    ▿  		# WHITE DOWN-POINTING SMALL TRIANGLE
0x25C2    ◂  		# BLACK LEFT-POINTING SMALL TRIANGLE
0x25C3    ◃  		# WHITE LEFT-POINTING SMALL TRIANGLE
0x25CA    ◊  		# LOZENGE
0x25CB    ○  		# WHITE CIRCLE
0x2605    ★  		# BLACK STAR
0x2606    ☆  		# WHITE STAR
0x260E    ☎  		# BLACK TELEPHONE
0x2640    ♀  		# FEMALE SIGN
0x2642    ♂  		# MALE SIGN
0x2660    ♠  		# BLACK SPADE SUIT
0x2663    ♣  		# BLACK CLUB SUIT
0x2665    ♥  		# BLACK HEART SUIT
0x2666    ♦  		# BLACK DIAMOND SUIT
0x266A    ♪  		# EIGHTH NOTE
0x266D    ♭  		# MUSIC FLAT SIGN
0x266E    ♮  		# MUSIC NATURAL SIGN
0x266F    ♯  		# MUSIC SHARP SIGN
0x2713    ✓  		# CHECK MARK
0x2717    ✗  		# BALLOT X
0x2720    ✠  		# MALTESE CROSS
0x2726    ✦  		# BLACK FOUR POINTED STAR
0x2727    ✧  		# WHITE FOUR POINTED STAR
0x2736    ✶  		# SIX POINTED BLACK STAR
0xFB00    ff  		# LATIN SMALL LIGATURE FF
0xFB01    fi  		# LATIN SMALL LIGATURE FI
0xFB02    fl  		# LATIN SMALL LIGATURE FL
0xFB03    ffi  		# LATIN SMALL LIGATURE FFI
0xFB04    ffl  		# LATIN SMALL LIGATURE FFL


PK0]ltest/TestComment.htmlnu[ HTML Comment Parser Test

Test of the HTML/SGML comment syntax, as given in the W3 HTML Spec: Comments

See especially, the footnote: (10)

Co-vary the LYK_MINIMAL and LYK_HISTORICAL command key toggles (use the 'k'eymap command to see their key bindings) to establish Valid, Minimal or Historical comment parsing, and toggle trace mode on (Ctrl-T), to see how comment parsing is affected.

Case 01 through Case 14 should appear as short separate paragraphs with the case numbers aligned vertically. Some noise characters may appear to the right as a byproduct of code present for error recovery, but there should be no noise before each case number.

Case | 01 | Trivial

Case | 03 | Extra LT --> --> -->

Case | 04 | Balanced

Case > still in comment --> | 05 | Extra GT

Case | 06 | Stuff Inside

Case | 07 | Extra Open --> -->

Case degenerate --> | 09 | Degenerate

Case | 10 | Empty

Case | 11 | Perverse --> --> -->

Case --> -->

Case | 13 | Zero Comments

Case | 14 | Last

<Tests completed!> PK0]L 44test/cp-1252.htmlnu[ Character table for cp-1252

cp-1252 table

Description                                 Code            Entity name   
===================================         ============    ==============
quotation mark                              &#34;  --> "     &quot;   --> "
ampersand                                   &#38;  --> &     &amp;    --> &
less-than sign                              &#60;  --> <     &lt;     --> <
greater-than sign                           &#62;  --> >     &gt;     --> >

Description                            Char Code            Entity name   
===================================    ==== ============    ==============
euro sign                                  &128; --> €
single low-9 quotation mark                &130; --> ‚
latin small letter f with hook             &131; --> ƒ
double low-9 quotation mark                &132; --> „
horizontal ellipsis                        &133; --> …
dagger                                     &134; --> †
double dagger                              &135; --> ‡
modifier letter circumflex accent          &136; --> ˆ
per mille sign                             &137; --> ‰
latin capital letter s with caron          &138; --> Š
single left-pointing angle quote mark      &139; --> ‹
latin capital ligature oe                  &140; --> Œ
latin capital letter z with caron          &142; --> Ž

left single quotation mark                 &145; --> ‘
right single quotation mark                &146; --> ’
left double quotation mark                 &147; --> “
right double quotation mark                &148; --> ”
bullet                                     &149; --> •
en dash                                    &150; --> –
em dash                                    &151; --> —
small tilde                                &152; --> ˜
trade mark sign                            &153; --> ™
latin small letter s with caron            &154; --> š
single right-pointing angle quote mark     &155; --> ›
latin small ligature oe                    &156; --> œ
latin small letter z with caron            &158; --> ž
latin capital letter y with diaeresis      &159; --> Ÿ

non-breaking space                         &#160; -->      &nbsp;   -->  
inverted exclamation                       &#161; --> ¡    &iexcl;  --> ¡
cent sign                                  &#162; --> ¢    &cent;   --> ¢
pound sterling                             &#163; --> £    &pound;  --> £
general currency sign                      &#164; --> ¤    &curren; --> ¤
yen sign                                   &#165; --> ¥    &yen;    --> ¥
broken vertical bar                        &#166; --> ¦    &brvbar; --> ¦
section sign                               &#167; --> §    &sect;   --> §
umlaut (dieresis)                          &#168; --> ¨    &uml;    --> ¨
copyright                                  &#169; --> ©    &copy;   --> ©
feminine ordinal                           &#170; --> ª    &ordf;   --> ª
left angle quote, guillemotleft            &#171; --> «    &laquo;  --> «
not sign                                   &#172; --> ¬    &not;    --> ¬
soft hyphen                                &#173; --> ­    &shy;    --> ­
registered trademark                       &#174; --> ®    &reg;    --> ®
macron accent                              &#175; --> ¯    &macr;   --> ¯

degree sign                                &#176; --> °    &deg;    --> °
plus or minus                              &#177; --> ±    &plusmn; --> ±
superscript two                            &#178; --> ²    &sup2;   --> ²
superscript three                          &#179; --> ³    &sup3;   --> ³
acute accent                               &#180; --> ´    &acute;  --> ´
micro sign                                 &#181; --> µ    &micro;  --> µ
paragraph sign                             &#182; --> ¶    &para;   --> ¶
middle dot                                 &#183; --> ·    &middot; --> ·
cedilla                                    &#184; --> ¸    &cedil;  --> ¸
superscript one                            &#185; --> ¹    &sup1;   --> ¹
masculine ordinal                          &#186; --> º    &ordm;   --> º
right angle quote, guillemotright          &#187; --> »    &raquo;  --> »
vulgar fraction one-quarter                &#188; --> ¼    &frac14; --> ¼
vulgar fraction one-half                   &#189; --> ½    &frac12; --> ½
vulgar fraction three-fourths              &#190; --> ¾    &frac34; --> ¾
inverted question mark                     &#191; --> ¿    &iquest; --> ¿

latin capital letter a with grave          &#192; --> À    &Agrave; --> À
latin capital letter a with acute          &#193; --> Á    &Aacute; --> Á
latin capital letter a with circumflex     &#194; --> Â    &Acirc;  --> Â
latin capital letter a with tilde          &#195; --> Ã    &Atilde; --> Ã
latin capital letter a with diaeresis      &#196; --> Ä    &Auml;   --> Ä
latin capital letter a with ring above     &#197; --> Å    &Aring;  --> Å
latin capital letter ae                    &#198; --> Æ    &AElig;  --> Æ
latin capital letter c with cedilla        &#199; --> Ç    &Ccedil; --> Ç
latin capital letter e with grave          &#200; --> È    &Egrave; --> È
latin capital letter e with acute          &#201; --> É    &Eacute; --> É
latin capital letter e with circumflex     &#202; --> Ê    &Ecirc;  --> Ê
latin capital letter e with diaeresis      &#203; --> Ë    &Euml;   --> Ë
latin capital letter i with grave          &#204; --> Ì    &Igrave; --> Ì
latin capital letter i with acute          &#205; --> Í    &Iacute; --> Í
latin capital letter i with circumflex     &#206; --> Î    &Icirc;  --> Î
latin capital letter i with diaeresis      &#207; --> Ï    &Iuml;   --> Ï

latin capital letter eth                   &#208; --> Ð    &ETH;    --> Ð
latin capital letter n with tilde          &#209; --> Ñ    &Ntilde; --> Ñ
latin capital letter o with grave          &#210; --> Ò    &Ograve; --> Ò
latin capital letter o with acute          &#211; --> Ó    &Oacute; --> Ó
latin capital letter o with circumflex     &#212; --> Ô    &Ocirc;  --> Ô
latin capital letter o with tilde          &#213; --> Õ    &Otilde; --> Õ
latin capital letter o with diaeresis      &#214; --> Ö    &Ouml;   --> Ö
multiplication sign                        &#215; --> ×    &times;  --> ×
latin capital letter o with stroke         &#216; --> Ø    &Oslash; --> Ø
latin capital letter u with grave          &#217; --> Ù    &Ugrave; --> Ù
latin capital letter u with acute          &#218; --> Ú    &Uacute; --> Ú
latin capital letter u with circumflex     &#219; --> Û    &Ucirc;  --> Û
latin capital letter u with diaeresis      &#220; --> Ü    &Uuml;   --> Ü
latin capital letter y with acute          &#221; --> Ý    &Yacute; --> Ý
latin capital letter thorn                 &#222; --> Þ    &THORN;  --> Þ
latin small letter sharp s                 &#223; --> ß    &szlig;  --> ß

latin small letter a with grave            &#224; --> à    &agrave; --> à
latin small letter a with acute            &#225; --> á    &aacute; --> á
latin small letter a with circumflex       &#226; --> â    &acirc;  --> â
latin small letter a with tilde            &#227; --> ã    &atilde; --> ã
latin small letter a with diaeresis        &#228; --> ä    &auml;   --> ä
latin small letter a with ring above       &#229; --> å    &aring;  --> å
latin small letter ae                      &#230; --> æ    &aelig;  --> æ
latin small letter c with cedilla          &#231; --> ç    &ccedil; --> ç
latin small letter e with grave            &#232; --> è    &egrave; --> è
latin small letter e with acute            &#233; --> é    &eacute; --> é
latin small letter e with circumflex       &#234; --> ê    &ecirc;  --> ê
latin small letter e with diaeresis        &#235; --> ë    &euml;   --> ë
latin small letter i with grave            &#236; --> ì    &igrave; --> ì
latin small letter i with acute            &#237; --> í    &iacute; --> í
latin small letter i with circumflex       &#238; --> î    &icirc;  --> î
latin small letter i with diaeresis        &#239; --> ï    &iuml;   --> ï

latin small letter eth                     &#240; --> ð    &eth;    --> ð
latin small letter n with tilde            &#241; --> ñ    &ntilde; --> ñ
latin small letter o with grave            &#242; --> ò    &ograve; --> ò
latin small letter o with acute            &#243; --> ó    &oacute; --> ó
latin small letter o with circumflex       &#244; --> ô    &ocirc;  --> ô
latin small letter o with tilde            &#245; --> õ    &otilde; --> õ
latin small letter o with diaeresis        &#246; --> ö    &ouml;   --> ö
division sign                              &#247; --> ÷    &divide; --> ÷
latin small letter o with stroke           &#248; --> ø    &oslash; --> ø
latin small letter u with grave            &#249; --> ù    &ugrave; --> ù
latin small letter u with acute            &#250; --> ú    &uacute; --> ú
latin small letter u with circumflex       &#251; --> û    &ucirc;  --> û
latin small letter u with diaeresis        &#252; --> ü    &uuml;   --> ü
latin small letter y with acute            &#253; --> ý    &yacute; --> ý
latin small letter thorn                   &#254; --> þ    &thorn;  --> þ
latin small letter y with diaeresis   {}  {&#255;}-->{ÿ}  {&yuml;}  -->{ÿ}

Some other characters of interest      Char Code            Entity name   
===================================    ==== ============    ==============
capital AE diphthong (ligature)        N/A  &#198; --> Æ    &AElig;  --> Æ
small ae diphthong (ligature)          N/A  &#230; --> æ    &aelig;  --> æ
capital OE ligature                    N/A {&#338;}-->{Œ}  {&OElig;} -->{Œ}
small oe ligature                      N/A {&#339;}-->{œ}  {&oelig;} -->{œ}
copyright                              N/A  &#169; --> ©    &copy;   --> ©
registered trademark                   N/A  &#174; --> ®    &reg;    --> ®
trademark sign                         N/A  &#8482;--> ™   &trade;  --> ™
em space                               N/A [&#8195;]->[ ] [&emsp;]  -->[ ]
en space                               N/A [&#8194;]->[ ] [&ensp;]  -->[ ]
1/3-em space                           N/A [&#8196;]->[ ] [&emsp13;] -->[ ]
1/4-em space                           N/A [&#8197;]->[ ] [&emsp14;] -->[ ]
thin space                             N/A [&#8201;]->[ ] [&thinsp;]-->[ ]
hair space                             N/A [&#8202;]->[ ] [&hairsp;]-->[ ]
em dash                                N/A [&#8212;]->[—] [&mdash;] -->[—]
en dash                                N/A [&#8211;]->[–] [&ndash;] -->[–]

PK0] test/ISO_LATIN1_test.htmlnu[ Test of minimal ISO LATIN1 character set

minimal ISO LATIN1 text entities

  • "Æ", /* capital AE diphthong (ligature) */
  • "Á", /* capital A, acute accent */
  • "Â", /* capital A, circumflex accent */
  • "À", /* capital A, grave accent */
  • "Å", /* capital A, ring */
  • "Ã", /* capital A, tilde */
  • "Ä", /* capital A, dieresis or umlaut mark */
  • "Ç", /* capital C, cedilla */
  • "Ð", /* capital Eth, Icelandic */
  • "É", /* capital E, acute accent */
  • "Ê", /* capital E, circumflex accent */
  • "È", /* capital E, grave accent */
  • "Ë", /* capital E, dieresis or umlaut mark */
  • "Í", /* capital I, acute accent */
  • "Î", /* capital I, circumflex accent */
  • "Ì", /* capital I, grave accent */
  • "Ï", /* capital I, dieresis or umlaut mark */
  • "Ñ", /* capital N, tilde */
  • "Ó", /* capital O, acute accent */
  • "Ô", /* capital O, circumflex accent */
  • "Ò", /* capital O, grave accent */
  • "Ø", /* capital O, slash */
  • "Õ", /* capital O, tilde */
  • "Ö", /* capital O, dieresis or umlaut mark */
  • "Þ", /* capital THORN, Icelandic */
  • "Ú", /* capital U, acute accent */
  • "Û", /* capital U, circumflex accent */
  • "Ù", /* capital U, grave accent */
  • "Ü", /* capital U, dieresis or umlaut mark */
  • "Ý", /* capital Y, acute accent */
  • "á", /* small a, acute accent */
  • "â", /* small a, circumflex accent */
  • "æ", /* small ae diphthong (ligature) */
  • "à", /* small a, grave accent */
  • "&", /* ampersand */
  • "å", /* small a, ring */
  • "ã", /* small a, tilde */
  • "ä", /* small a, dieresis or umlaut mark */
  • "ç", /* small c, cedilla */
  • "é", /* small e, acute accent */
  • "ê", /* small e, circumflex accent */
  • "è", /* small e, grave accent */
  • " ", /* emsp, em space - not collapsed */
  • " ", /* ensp, en space - not collapsed */
  • "ð", /* small eth, Icelandic */
  • "ë", /* small e, dieresis or umlaut mark */
  • ">", /* greater than */
  • "í", /* small i, acute accent */
  • "î", /* small i, circumflex accent */
  • "ì", /* small i, grave accent */
  • "ï", /* small i, dieresis or umlaut mark */
  • "<", /* less than */
  • " ", /* nbsp, non breaking space */
  • "ñ", /* small n, tilde */
  • "ó", /* small o, acute accent */
  • "ô", /* small o, circumflex accent */
  • "ò", /* small o, grave accent */
  • "ø", /* small o, slash */
  • "õ", /* small o, tilde */
  • "ö", /* small o, dieresis or umlaut mark */
  • """, /* quote, '"' */
  • "ß", /* small sharp s, German (sz ligature) */
  • "þ", /* small thorn, Icelandic */
  • "ú", /* small u, acute accent */
  • "û", /* small u, circumflex accent */
  • "ù", /* small u, grave accent */
  • "ü", /* small u, dieresis or umlaut mark */
  • "ý", /* small y, acute accent */
  • "ÿ", /* small y, dieresis or umlaut mark */
PK0]K INSTALLATIONnu[PK0]#](READMEnu[PK0] edocs/README.metricsnu[PK0]>  8docs/VMSWAIS.announcenu[PK0]|?docs/CHANGES2.4nu[PK0]dccGdocs/IBMPC-charsets.announcenu[PK0]DD docs/README.releasenu[PK0]v}} docs/CHANGES2.8nu[PK0]d d )docs/README.optionsnu[PK0],xHH[7docs/FM.announcenu[PK0]S}{LLEdocs/README.definesnu[PK0]f?rFFr^docs/CHANGES2.3nu[PK0]Ų,XXadocs/slang.keynu[PK0]惰Gdocs/CHANGES2.7nu[PK0]Jddocs/pdcurses.keynu[PK0]$ZcZ(Z(docs/README.sslcertsnu[PK0]4 docs/README.sslnu[PK0]Ƌm@l@ldocs/CHANGES2.5nu[PK0]Kc"docs/README.TRSTnu[PK0]RZZAdocs/CRAWL.announcenu[PK0]פ 2Ydocs/SOCKETSHR.announcenu[PK0]Vww"`docs/CHANGES2.6nu[PK0]ӄ  docs/README.cookiesnu[PK0]u` docs/README.chartransnu[PK0][_HH* docs/TCPWARE.announcenu[PK0]/ docs/djgpp.keynu[PK0]:j44WF docs/README.rootcertsnu[PK0]-K1zzh{ docs/win-386.announcenu[PK0]V6mm' lynx.hlpnu[PK0]Պ"G samples/mime.typesnu[PK0]&|99 L samples/lynx_bookmarks.htmnu[PK0]| O samples/blue-background.lssnu[PK0]$$e\ samples/mailto-form.plnu[PK0]Ss samples/jumps.htmnu[PK0]-EB samples/home.htmnu[PK0]0yӉi samples/jumpsVMS.htmlnu[PK0]VBB7 samples/mild-colors.lssnu[PK0]a w66 samples/lynx.iconu[PK0].;?6 samples/mailcapnu[PK0]K:un samples/installdirs.htmlnu[PK0]i samples/lynx-keymapsnu[PK0]0a samples/bright-blue.lssnu[PK0]M5ѐ samples/lynx.comnu[PK0]) samples/oldlynxnuȯPK0]2^^! samples/keepviewernuȯPK0]3 samples/lynx-demo.cfgnu[PK0]h samples/lynxdumpnuȯPK0]2qO   samples/midnight.lssnu[PK0]g~{ ; samples/lynx.lssnu[PK0]uFFx samples/opaque.lssnu[PK0]AY samples/cernrules.txtnu[PK0] ffF samples/jumpsUnix.htmlnu[PK0]3199' lynx_help/keystrokes/bookmark_help.htmlnu[PK0]GD?0?0% lynx_help/keystrokes/follow_help.htmlnu[PK0]Ϧ( lynx_help/keystrokes/keystroke_help.htmlnu[PK0]!uu%8 lynx_help/keystrokes/option_help.htmlnu[PK0]{-{-,:q lynx_help/keystrokes/bashlike_edit_help.htmlnu[PK0]kQ % lynx_help/keystrokes/cookie_help.htmlnu[PK0]?%} &5 lynx_help/keystrokes/test_display.htmlnu[PK0]K!DEE#_ lynx_help/keystrokes/edit_help.htmlnu[PK0]!x!!$ lynx_help/keystrokes/other_help.htmlnu[PK0]Mh6+ lynx_help/keystrokes/gopher_types_help.htmlnu[PK0]7d1BB$ lynx_help/keystrokes/print_help.htmlnu[PK0]A ' lynx_help/keystrokes/movement_help.htmlnu[PK0] %^%^& lynx_help/keystrokes/environments.htmlnu[PK0]12$9r lynx_help/keystrokes/xterm_help.htmlnu[PK0] KG(Yy lynx_help/keystrokes/scrolling_help.htmlnu[PK0]pK  & lynx_help/keystrokes/history_help.htmlnu[PK0]d2bN $! lynx_help/keystrokes/dired_help.htmlnu[PK0]a] ] &b lynx_help/keystrokes/visited_help.htmlnu[PK0]>$$' lynx_help/keystrokes/alt_edit_help.htmlnu[PK0]|9 lynx_help/lynx_help_main.htmlnu[PK0]j lynx_help/lynx_url_support.htmlnu[PK0]orrVlynx_help/Lynx_users_guide.htmlnu[PK0]EERflynx_help/about_lynx.htmlnu[PK0]hD{lynx_help/help_files.txtnu[PK0]2Wuulynx_help/lynx-dev.htmlnu[PK0]1|<6<6itest/cp-1252a.htmlnu[PK0]test/quickbrown.htmlnu[PK0] fgb%% ;test/c1.htmlnu[PK0]+Ikktest/special_urls.htmlnu[PK0]:p, , Mtest/spaces.htmlnu[PK0]G4=4=test/koi8-r.htmlnu[PK0]L^R R -2test/test-styles.htmlnu[PK0]xvC=test/sgml.htmlnu[PK0]IYY 1test/bad-html.htmlnu[PK0] zz5test/README.txtnu[PK0]qgVr22]7test/iso-8859-2.htmlnu[PK0]6jtest/square.htmlnu[PK0]֡ktest/triangle.htmlnu[PK0]2V{:{:mtest/iso-8859-1.htmlnu[PK0]p0#;#;Чtest/iso-8859-2a.htmlnu[PK0]d'8test/tabtest.htmlnu[PK0])test/image.jpgnu[PK0];::Etest/ALT88592.htmlnu[PK0]IP{{})test/tags.htmlnu[PK0]K0BB6>test/iso-8859-1a.htmlnu[PK0]J &test/raw8bit.htmlnu[PK0]+06test/circle.htmlnu[PK0]mSdZ{Z{Ntest/utf-8-demo.htmlnu[PK0] test/unicode.htmlnu[PK0]ltest/TestComment.htmlnu[PK0]L 44Jtest/cp-1252.htmlnu[PK0] test/ISO_LATIN1_test.htmlnu[PKhh#