1 /*
2  * $LynxId: userdefs.h,v 1.358 2021/08/01 18:50:51 tom Exp $
3  *
4  * Lynx - Hypertext navigation system
5  *
6  *   Copyright 1996-2020,2021 Thomas E. Dickey and Lynx Developers Group
7  *   Note: GNU General Public License is not a copyright.
8  *
9  *   (c) Copyright 1992, 1993, 1994 University of Kansas
10  *	 1995, 1996: GNU General Public License
11  */
12 
13 /*******************************************************************
14  * There are four sections to this document:
15  *  Section 1.  Things you MUST verify.  Unix platforms use a configure
16  *		script to provide sensible default values.  If your site
17  *		has special requirements, that may not be sufficient.
18  *		For non-Unix platforms (e.g., VMS), there is no
19  *		configure script, so the defaults here are more
20  *		critical.
21  *	Section 1a)  VMS specific things
22  *	Section 1b)  non-VMS specific things
23  *	Section 1c)  ALL Platforms
24  *
25  *  Section 2.  Things you should probably check!
26  *
27  *  Section 3.  Things you should only change after you have a good
28  *              understanding of the program!
29  *
30  *  Section 4.  Things you MUST check only if you plan to use Lynx in
31  *              an anonymous account (allow public access to Lynx)!
32  *
33  */
34 
35 #ifndef USERDEFS_H
36 #define USERDEFS_H
37 
38 /*******************************************************************
39  * Insure definition of NOT_ASCII, etc. precedes use below.
40  */
41 #ifndef HTUTILS_H
42 #include <HTUtils.h>
43 #endif
44 
45 #ifdef HAVE_CONFIG_H
46 #include <lynx_cfg.h>
47 #endif
48 
49 /*******************************************************************
50  * Things you must change
51  *  Section 1.
52  */
53 
54 /*******************************************************************
55  * Things you must change  -  VMS specific
56  *  Section 1a).
57  */
58 #ifdef VMS
59 /**************************
60  * TEMP_SPACE is where Lynx temporary cache files will be placed.
61  * Temporary files are removed automatically as long as nothing
62  * goes terribly wrong :)  If you include "$USER" in the definition
63  * (e.g., "device:[dir.$USER]"), Lynx will replace the "$USER" with
64  * the username of the account which invoked the Lynx image.  Such
65  * directories should already exist, and have protections/ACLs set
66  * so that only the appropriate user(s) will have read/write access.
67  * On VMS, "sys$scratch:" defaults to "sys$login:" if it has not been
68  * defined externally, or you can use "sys$login:" explicitly here.
69  * If the path has SHELL syntax and includes a tilde (e.g, "~/lynxtmp"),
70  * Lynx will replace the tilde with the full path for the user's home
71  * and convert the result to VMS syntax.
72  * The definition here can be overridden at run time by defining a
73  * "LYNX_TEMP_SPACE" VMS logical.
74  */
75 #define TEMP_SPACE "sys$scratch:"
76 
77 /**************************
78  * LYNX_CFG_FILE is the location and name of the default lynx
79  * global configuration file.  It is sought and processed at
80  * startup of Lynx, followed by a seek and processing of a
81  * personal RC file (.lynxrc in the user's HOME directory,
82  * created if the user saves values in the 'o'ptions menu).
83  * You also can define the location and name of the global
84  * configuration file via a VMS logical, "LYNX_CFG", which
85  * will override the "LYNX_CFG_FILE" definition here.  SYS$LOGIN:
86  * can be used as the device in either or both definitions if
87  * you want lynx.cfg treated as a personal configuration file.
88  * You also can use Unix syntax with a '~' for a subdirectory
89  * of the login directory, (e.g., ~/lynx/lynx.cfg).
90  * The -cfg command line switch will override these definitions.
91  * You can pass the compilation default via build.com or descrip.mms.
92  *
93  * Note that some implementations of telnet allow passing of
94  * environment variables, which might be used by unscrupulous
95  * people to modify the environment in anonymous accounts.  When
96  * making Lynx and Web access publicly available via anonymous
97  * accounts intended to run Lynx captively, be sure the wrapper
98  * uses the -cfg switch and specifies the startfile, rather than
99  * relying on the LYNX_CFG, LYNX_CFG_FILE, or WWW_HOME variables.
100  *
101  * Note that any SUFFIX or VIEWER mappings in the configuration
102  * file will be overridden by any suffix or viewer mappings
103  * that are established as defaults in src/HTInit.c.  You can
104  * override the src/HTInit.c defaults via the mime.types and
105  * mailcap files (see the examples in the samples directory).
106  */
107 #ifndef LYNX_CFG_FILE
108 #define LYNX_CFG_FILE "Lynx_Dir:lynx.cfg"
109 #endif /* LYNX_CFG_FILE */
110 
111 #ifndef LYNX_CFG_PATH
112 #define LYNX_CFG_PATH "Lynx_Dir"
113 #endif /* LYNX_CFG_PATH */
114 
115 /**************************
116  * The EXTENSION_MAP file allows you to map file suffixes to
117  * mime types.
118  * The file locations defined here can be overridden in lynx.cfg.
119  * Mappings in these global and personal files override any SUFFIX
120  * definitions in lynx.cfg and built-in defaults from src/HTInit.c.
121  */
122 #define GLOBAL_EXTENSION_MAP "Lynx_Dir:mime.types"
123 #define PERSONAL_EXTENSION_MAP "mime.types"
124 
125 /**************************
126  * The MAILCAP file allows you to map file MIME types to
127  * external viewers.
128  * The file locations defined here can be overridden in lynx.cfg.
129  * Mappings in these global and personal files override any VIEWER
130  * definitions in lynx.cfg and built-in defaults from src/HTInit.c.
131  */
132 #define GLOBAL_MAILCAP "Lynx_Dir:mailcap"
133 #define PERSONAL_MAILCAP ".mailcap"
134 
135 /**************************
136  * XLOADIMAGE_COMMAND will be used as a default in src/HTInit.c
137  * for viewing image content types when the DECW$DISPLAY logical
138  * is set.  Make it the foreign command for your system's X image
139  * viewer (commonly, "xv").  It can be anything that will handle GIF,
140  * TIFF and other popular image formats.  Freeware ports of xv for
141  * VMS are available in the ftp://ftp.wku.edu/vms/unsupported and
142  * http://www.openvms.digital.com/cd/XV310A/ subdirectories.  You
143  * must also have a "%s" for the filename.  The default defined
144  * here can be overridden in lynx.cfg, or via the global or personal
145  * mailcap files.
146  * Make this NULL if you don't have such a viewer or don't want to
147  * use any default viewers for image types.
148  */
149 #define XLOADIMAGE_COMMAND "xv %s"
150 
151 /**************************
152  * SYSTEM_MAIL must be defined here to your mail sending command,
153  * and SYSTEM_MAIL_FLAGS to appropriate qualifiers.  They can be
154  * changed in lynx.cfg.
155  *
156  * The mail command will be spawned as a subprocess of lynx
157  * and used to send the email, with headers specified in a
158  * temporary file for PMDF.  If you define SYSTEM_MAIL to the
159  * "generic" MAIL utility for VMS, headers cannot be specified
160  * via a header file (and thus may not be included), and the
161  * subject line will be specified by use of the /subject="SUBJECT"
162  * qualifier.
163  *
164  * If your mailer uses another syntax, some hacking of the
165  * mailform(), mailmsg() and reply_by_mail() functions in
166  * LYMail.c, and printfile() function in LYPrint.c, may be
167  * required.
168  */
169 #define SYSTEM_MAIL "PMDF SEND"
170 #define SYSTEM_MAIL_FLAGS "/headers"
171 /* #define SYSTEM_MAIL "MAIL"   */
172 /* #define SYSTEM_MAIL_FLAGS "" */
173 
174 /*************************
175  * Below is the argument for an sprintf command that will add
176  * "IN%""ADDRESS""" to the Internet mail address given by the user.
177  * It is structured for PMDF's IN%"INTERNET_ADDRESS" scheme.  The %s
178  * is replaced with the address given by the user.  If you are using
179  * a different Internet mail transport, change the IN appropriately
180  * (e.g., to SMTP, MX, or WINS), here or in lynx.cfg.
181  */
182 #define MAIL_ADRS "\"IN%%\"\"%s\"\"\""
183 
184 /*********************************
185  * On VMS, CSwing (an XTree emulation for VTxxx terminals) is intended for
186  * use as the Directory/File Manager (sources, objects, or executables are
187  * available from ftp://narnia.memst.edu/).  CSWING_PATH should be defined
188  * here or in lynx.cfg to your foreign command for CSwing, with any
189  * regulatory switches you want included.  If not defined, or defined as
190  * a zero-length string ("") or "none" (case-insensitive), the support
191  * will be disabled.  It will also be disabled if the -nobrowse or
192  * -selective switches are used, or if the file_url restriction is set.
193  *
194  * When enabled, the DIRED_MENU command (normally 'f' or 'F') will invoke
195  * CSwing, normally with the current default directory as an argument to
196  * position the user on that node of the directory tree.  However, if the
197  * current document is a local directory listing, or a local file and not
198  * one of the temporary menu or list files, the associated directory will
199  * be passed as an argument, to position the user on that node of the tree.
200  */
201 /* #define CSWING_PATH "swing" */
202 
203 /*********************************
204  * If USE_FIXED_RECORDS is set to TRUE here and/or in lynx.cfg, Lynx will
205  * convert 'd'ownloaded binary files to FIXED 512 record format before saving
206  * them to disk or acting on a DOWNLOADER option.  If set to FALSE, the
207  * headers of such files will indicate that they are Stream_LF with Implied
208  * Carriage Control, which is incorrect, and can cause downloading software
209  * to get confused and unhappy.  If you do set it FALSE, you can use the
210  * FIXED512.COM command file, which is included in this distribution, to do
211  * the conversion externally.
212  */
213 #define USE_FIXED_RECORDS	TRUE	/* convert binaries to FIXED 512 */
214 
215 /********************************
216  * If NO_ANONYMOUS_EMAIL is defined, Lynx will not offer to insert X-From
217  * and X_Personal_Name lines in the body of email messages.  On VMS, the
218  * actual From and Personal Name (if defined for the account) headers always
219  * are those of the account running the Lynx image.  If the account is not
220  * the one to which the recipient should reply, you can indicate the alternate
221  * address and personal name via the X-From and X_Personal_Name entries, but
222  * the recipient must explicitly send the reply to the X_From address, rather
223  * than using the VMS REPLY command (which will use the actual From address).
224  *
225  * This symbol constant might be defined on Unix for security reasons that
226  * don't apply on VMS.  There is no security reason for defining this on VMS,
227  * but if you have no anonymous accounts (i.e., the From always will point to
228  * the actual user's email address, you can define it to avoid the bother of
229  * X-From and X_Personal_Name offers.
230  */
231 /*#define NO_ANONYMOUS_EMAIL TRUE */
232 
233 /**************************
234  * LYNX_LSS_FILE is the location and name of the default lynx
235  * character style sheet file.  It is sought and processed at
236  * startup of Lynx only if experimental character style code has
237  * been compiled in, otherwise it will be ignored.  Note that use
238  * of the character style option is _experimental_ AND _unsupported_.
239  * There is no documentation other than a sample lynx.lss file in
240  * the samples subdirectory.  This code probably won't even work on
241  * VMS.  You can define the location and name of this file via an
242  * environment variable, "lynx_lss", which will override the definition
243  * here.  You can use '~' to refer to the user's home directory.  The
244  * -lss command line switch will override these definitions.
245  */
246 #ifndef LYNX_LSS_FILE
247 #define LYNX_LSS_FILE "Lynx_Dir:lynx.lss"
248 #endif /* LYNX_LSS_FILE */
249 
250 /*
251  * FTP_FORMAT uses the same codes as LIST_FORMAT, but applies to files shown
252  * in an ftp listing.
253  */
254 #define FTP_FORMAT "%d  %-16.16t %a  %K"
255 
256 /*******************************************************************
257  * Things you must change  -  non-VMS specific
258  *  Section 1b).
259  */
260 #else /* non-VMS: UNIX etc. */
261 
262 /**************************
263  * NOTE: This variable is set by the configure script; editing changes will
264  * be ignored.
265  *
266  * LYNX_CFG_FILE is the location and name of the default lynx
267  * global configuration file.  It is sought and processed at
268  * startup of Lynx, followed by a seek and processing of a
269  * personal RC file (.lynxrc in the user's HOME directory,
270  * created if the user saves values in the 'o'ptions menu).
271  * You also can define the location and name of the global
272  * configuration file via an environment variable, "LYNX_CFG",
273  * which will override the "LYNX_CFG_FILE" definition here.
274  * You can use '~' in either or both definitions if you want
275  * lynx.cfg treated as a personal configuration file.  The
276  * -cfg command line switch will override these definitions.
277  * You can pass the compilation default via the Makefile.
278  *
279  * If you are building Lynx using the configure script, you should specify
280  * the default location of the configuration file via that script, since it
281  * also generates the makefile and install-cfg rules.
282  *
283  * Note that many implementations of telnetd allow passing of
284  * environment variables, which might be used by unscrupulous
285  * people to modify the environment in anonymous accounts.  When
286  * making Lynx and Web access publicly available via anonymous
287  * accounts intended to run Lynx captively, be sure the wrapper
288  * uses the -cfg switch and specifies the startfile, rather than
289  * relying on the LYNX_CFG, LYNX_CFG_FILE, or WWW_HOME variables.
290  *
291  * Note that any SUFFIX or VIEWER mappings in the configuration
292  * file will be overridden by any suffix or viewer mappings
293  * that are established as defaults in src/HTInit.c.  You can
294  * override the src/HTInit.c defaults via the mime.types and
295  * mailcap files (see the examples in the samples directory).
296  */
297 #ifndef HAVE_CONFIG_H
298 #ifndef LYNX_CFG_FILE
299 #ifdef DOSPATH
300 #define LYNX_CFG_PATH "."
301 #define LYNX_CFG_FILE "./lynx.cfg"
302 #else
303 #define LYNX_CFG_PATH "/usr/local/lib"
304 #define LYNX_CFG_FILE "/usr/local/lib/lynx.cfg"
305 #endif /* DOSPATH */
306 #endif /* LYNX_CFG_FILE */
307 #endif /* HAVE_CONFIG_H */
308 
309 #ifndef MIME_LIBDIR
310 #define MIME_LIBDIR "/etc/"
311 #endif
312 
313 /**************************
314  * The EXTENSION_MAP file allows you to map file suffixes to
315  * mime types.
316  * The file locations defined here can be overridden in lynx.cfg.
317  * Mappings in these global and personal files override any SUFFIX
318  * definitions in lynx.cfg and built-in defaults from src/HTInit.c.
319  */
320 #define GLOBAL_EXTENSION_MAP MIME_LIBDIR "mime.types"
321 #define PERSONAL_EXTENSION_MAP "~/.mime.types"
322 
323 /**************************
324  * The MAILCAP file allows you to map file MIME types to
325  * external viewers.
326  * The file locations defined here can be overridden in lynx.cfg.
327  * Mappings in these global and personal files override any VIEWER
328  * definitions in lynx.cfg and built-in defaults from src/HTInit.c.
329  */
330 #define GLOBAL_MAILCAP MIME_LIBDIR "mailcap"
331 #define PERSONAL_MAILCAP "~/.mailcap"
332 
333 /**************************
334  * XLOADIMAGE_COMMAND will be used as a default in src/HTInit.c for
335  * viewing image content types when the DISPLAY environment variable
336  * is set.  Make it the full path and name of the xli (also known as
337  * xloadimage or xview) command, or other image viewer.  It can be
338  * anything that will handle GIF, TIFF and other popular image formats
339  * (xli does).  The freeware distribution of xli is available in the
340  * ftp://ftp.x.org/contrib/ subdirectory.  The shareware, xv, also is
341  * suitable.  You must also have a "%s" for the filename; "&" for
342  * background is optional.  The default defined here can be overridden
343  * in lynx.cfg, or via the global or personal mailcap files.
344  * Make this NULL if you don't have such a viewer or don't want to
345  * use any default viewers for image types.  Note that open is used as
346  * the default for NeXT, instead of the XLOADIMAGE_COMMAND definition.
347  */
348 #define XLOADIMAGE_COMMAND "xli %s &"
349 
350 /**************************
351  * For UNIX systems, SYSTEM_MAIL and SYSTEM_MAIL_FLAGS are set by the
352  * configure-script.
353  */
354 
355 /**************************
356  * A place to put temporary files, it is almost always in "/tmp/"
357  * for UNIX systems.  If you include "$USER" in the definition
358  * (e.g., "/tmp/$USER"), Lynx will replace the "$USER" with the
359  * username of the account which invoked the Lynx image.  Such
360  * directories should already exist, and have protections/ACLs set
361  * so that only the appropriate user(s) will have read/write access.
362  * If the path includes a tilde (e.g, "~" or "~/lynxtmp"), Lynx will
363  * replace the tilde with the full path for the user's home.
364  * The definition here can be overridden at run time by setting a
365  * "LYNX_TEMP_SPACE" environment variable, or (if that is not set)
366  * the "TMPDIR" (unix), or "TEMP" or "TMP" (Windows,DOS,OS/2)
367  * variable.
368  */
369 #define TEMP_SPACE "/tmp/"
370 
371 /********************************
372  * Comment this line out to disable code that implements command logging
373  * and scripting.
374  */
375 #define USE_CMD_LOGGING 1
376 
377 /********************************
378  * Comment this line out to disable code that randomizes the names given to
379  * temporary files.
380  */
381 #define USE_RAND_TEMPNAME 1
382 
383 /********************************
384  * Comment this line out to let the user enter his/her email address
385  * when sending a message.  There should be no need to do this unless
386  * your mailer agent does not put in the From: field for you.  (If your
387  * mailer agent does not automatically put in the From: field, you should
388  * upgrade, because anonymous mail makes it far too easy for a user to
389  * spoof someone else's email address.)
390  */
391 /*#define NO_ANONYMOUS_EMAIL TRUE */
392 
393 /********************************
394  * LIST_FORMAT defines the display for local files when LONG_LIST
395  * is defined in the Makefile.  The default set here can be changed
396  * in lynx.cfg.
397  *
398  * The percent items in the list are interpreted as follows:
399  *
400  *	%p	Unix-style permission bits
401  *	%l	link count
402  *	%o	owner of file
403  *	%g	group of file
404  *	%d	date of last modification
405  *	%a	anchor pointing to file or directory
406  *	%A	as above but don't show symbolic links
407  *	%t	type of file (description derived from MIME type)
408  *	%T	MIME type as known by Lynx (from mime.types or default)
409  *	%k	size of file in Kilobytes
410  *	%K	as above but omit size for directories
411  *	%s	size of file in bytes
412  *
413  * Anything between the percent and the letter is passed on to sprintf.
414  * A double percent yields a literal percent on output.  Other characters
415  * are passed through literally.
416  *
417  * If you want only the filename:  "    %a"
418  *
419  * If you want a brief output:     "    %4K %-12.12d %a"
420  *
421  * For the Unix "ls -l" format:    "    %p %4l %-8.8o %-8.8g %7s %-12.12d %a"
422  */
423 #ifdef DOSPATH
424 #define LIST_FORMAT "    %4K %-12.12d %a"
425 #else
426 #define LIST_FORMAT "    %p %4l %-8.8o %-8.8g %7s %-12.12d %a"
427 #endif
428 
429 /*
430  * FTP_FORMAT uses the same codes as LIST_FORMAT, but applies to files shown
431  * in an ftp listing.
432  */
433 #define FTP_FORMAT "%d  %-16.16t %a  %K"
434 
435 /*
436  *  If NO_FORCED_CORE_DUMP is set to TRUE, Lynx will not force
437  *  core dumps via abort() calls on fatal errors or assert()
438  *  calls to check potentially fatal errors.  The default defined
439  *  here can be changed in lynx.cfg, and the compilation or
440  *  configuration default can be toggled via the -core command
441  *  line switch.
442  */
443 #define NO_FORCED_CORE_DUMP	FALSE
444 
445 /**************************
446  * LYNX_LSS_FILE is the location and name of the default lynx
447  * character style sheet file.  It is sought and processed at
448  * startup of Lynx only if experimental character style code
449  * has been compiled in, otherwise it will be ignored.  Note
450  * that use of the character style option is _experimental_ AND
451  * _unsupported_.  There is no documentation other than a sample
452  * lynx.lss file in the samples subdirectory.  You also can
453  * define the location and name of this file via environment
454  * variables "LYNX_LSS" or "lynx_lss" which will override the
455  * "LYNX_LSS_FILE" definition here.  You can use '~' in either or
456  * both definitions to refer to the user's home directory.  The
457  * -lss command line switch will override these definitions.
458  */
459 #ifndef LYNX_LSS_FILE
460 #ifdef DOSPATH
461 #define LYNX_LSS_FILE "lynx.lss"
462 #else
463 #define LYNX_LSS_FILE "/usr/local/lib/lynx.lss"
464 #endif
465 #endif /* LYNX_LSS_FILE */
466 
467 #endif /* VMS OR UNIX */
468 
469 /*************************************************************
470  *  Section 1c)   Every platform must change or verify these
471  *
472  */
473 
474 /*****************************
475  * STARTFILE is the default starting URL if none is specified
476  *   on the command line or via a WWW_HOME environment variable;
477  *   Lynx will refuse to start without a starting URL of some kind.
478  * STARTFILE can be remote, e.g., http://www.w3.org/default.html ,
479  *                or local, e.g., file://localhost/PATH_TO/FILENAME ,
480  *           where PATH_TO is replaced with the complete path to FILENAME
481  *           using Unix shell syntax and including the device on VMS.
482  *
483  * Normally we expect you will connect to a remote site, e.g., the Lynx starting
484  * site:
485  */
486 #ifndef HOMEPAGE_URL
487 #define HOMEPAGE_URL "https://lynx.invisible-island.net/"
488 #endif
489 #define STARTFILE HOMEPAGE_URL
490 /*
491  * As an alternative, you may want to use a local URL.  A good choice for this
492  * is the user's home directory:
493  *#define STARTFILE "file://localhost/~/"
494  *
495  * Your choice of STARTFILE should reflect your site's needs, and be a URL that
496  * you can connect to reliably.  Otherwise users will become confused and think
497  * that they cannot run Lynx.
498  */
499 
500 /*****************************
501  * HELPFILE must be defined as a URL and must have a
502  * complete path if local:
503  * file://localhost/PATH_TO/lynx_help/lynx_help_main.html
504  *   Replace PATH_TO with the path to the lynx_help subdirectory
505  *   for this distribution (use SHELL syntax including the device
506  *   on VMS systems).
507  * The default HELPFILE is:
508  * https://lynx.invisible-island.net/lynx_help/lynx_help_main.html
509  *   This should be changed here or in lynx.cfg to the local path.
510  * The definition here can be overridden at run time by defining a
511  * "LYNX_HELPFILE" environment variable.
512  */
513 #define HELPFILE "https://lynx.invisible-island.net/lynx_help/lynx_help_main.html"
514 /* #define HELPFILE "file://localhost/PATH_TO/lynx_help/lynx_help_main.html" */
515 
516 /*****************************
517  * DEFAULT_INDEX_FILE is the default file retrieved when the
518  * user presses the 'I' key when viewing any document.
519  * An index to your CWIS can be placed here or a document containing
520  * pointers to lots of interesting places on the web.
521  */
522 #define DEFAULT_INDEX_FILE "http://scout.wisc.edu/"
523 
524 /*****************************
525  * If USE_TRACE_LOG is set FALSE, then when TRACE mode is invoked the
526  * syserr messages will not be directed to a log file named Lynx.trace
527  * in the account's HOME directory.  The default defined here can be
528  * toggled via the -tlog command line switch.  Also, it is set FALSE
529  * automatically when Lynx is executed in an anonymous or validation
530  * account (if indicated via the -anonymous or -validate command line
531  * switches, or via the check for the ANONYMOUS_USER, defined below).
532  * When FALSE, the TRACE_LOG command (normally ';') cannot be used to
533  * examine the Lynx Trace Log during the current session.  If left
534  * TRUE, but you wish to use command line piping of stderr to a file
535  * you specify, include the -tlog toggle on the command line.  Note
536  * that once TRACE mode is turned on during a session and stderr is
537  * directed to the log, all stderr messages will continue going to
538  * the log, even if TRACE mode is turned off via the TOGGLE_TRACE
539  * (Control-T) command.
540  */
541 #define USE_TRACE_LOG	TRUE
542 
543 /*******************************
544  * If GOTOBUFFER is set to TRUE here or in lynx.cfg the last entered
545  * goto URL, if any, will be offered as a default for reuse or editing
546  * when the 'g'oto command is entered.  All previously used goto URLs
547  * can be accessed for reuse or editing via a circular buffer invoked
548  * with the Up-Arrow or Down-Arrow keys after entering the 'g'oto
549  * command, whether or not a default is offered.
550  */
551 #define GOTOBUFFER	  FALSE
552 
553 /*****************************
554  * If FTP_PASSIVE is set to TRUE here or in lynx.cfg, ftp transfers will
555  * be done in passive mode.
556  * Note: if passive transfers fail, lynx falls back to active mode, and
557  * vice versa if active transfers fail at first.
558  */
559 #define FTP_PASSIVE	  TRUE
560 
561 /*****************************
562  * JUMPFILE is the default local file checked for shortcut URLs when
563  * the user presses the 'J' (JUMP) key.  The user will be prompted for
564  * a shortcut entry (analogously to 'g'oto), and can enter one
565  * or use '?' for a list of the shortcuts with associated links to
566  * their actual URLs.  See the sample jumps files in the samples
567  * subdirectory.  Make sure your jumps file includes a '?' shortcut
568  * for a file://localhost URL to itself:
569  *
570  * <dt>?<dd><a href="file://localhost/path/jumps.html">This Shortcut List</a>
571  *
572  * If not defined here or in lynx.cfg, the JUMP command will invoke
573  * the NO_JUMPFILE status line message (see LYMessages_en.h).  The prompt
574  * associated with the default jumps file is defined as JUMP_PROMPT in
575  * LYMessages_en.h and can be modified in lynx.cfg.  Additional, alternate
576  * jumps files can be defined and mapped to keystrokes, and alternate
577  * prompts can be set for them, in lynx.cfg, but at least one default
578  * jumps file and associated prompt should be established before adding
579  * others.
580  *
581  * On VMS, use Unix SHELL syntax (including a lead slash) to define it.
582  *
583  * Do not include "file://localhost" in the definition.
584  */
585 /* #define JUMPFILE "/Lynx_Dir/jumps.html" */
586 
587 /*******************************
588  * If JUMPBUFFER is set to TRUE here or in lynx.cfg the last entered
589  * jump shortcut, if any, will be offered as a default for reuse or
590  * editing when the JUMP command is entered.  All previously used
591  * shortcuts can be accessed for reuse or editing via a circular buffer
592  * invoked with the Up-Arrow or Down-Arrow keys after entering the JUMP
593  * command, whether or not a default is offered.  If you have multiple
594  * jumps files and corresponding key mappings, each will have its own
595  * circular buffer.
596  */
597 #define JUMPBUFFER	  FALSE
598 
599 /********************************
600  * If PERMIT_GOTO_FROM_JUMP is defined, then a : or / in a jump target
601  * will be treated as a full or partial URL (to be resolved versus the
602  * startfile), and will be handled analogously to a 'g'oto command.
603  * Such "random URLs" will be entered in the circular buffer for goto
604  * URLs, not the buffer for jump targets (shortcuts).  If the target
605  * is the single character ':', it will be treated equivalently to an
606  * Up-Arrow or Down-Arrow following a 'g'oto command, for accessing the
607  * circular buffer of goto URLs.
608  */
609 /* #define PERMIT_GOTO_FROM_JUMP */
610 
611 /*****************************
612  * If LYNX_HOST_NAME is defined here and/or in lynx.cfg, it will be
613  * treated as an alias for the local host name in checks for URLs on
614  * the local host (e.g., when the -localhost switch is set), and this
615  * host name, "localhost", and HTHostName (the fully qualified domain
616  * name of the system on which Lynx is running) will all be passed as
617  * local.  A different definition in lynx.cfg will override this one.
618  */
619 /* #define LYNX_HOST_NAME "localhost" */
620 
621 /*********************
622  * LOCAL_DOMAIN is used for a tail match with the ut_host element of
623  * the utmp or utmpx structure on systems with utmp capabilities, to
624  * determine if a user is local to your campus or organization when
625  * handling -restrictions=inside_foo or outside_foo settings for ftp,
626  * news, telnet/tn3270 and rlogin URLs.  An "inside" user is assumed
627  * if your system does not have utmp capabilities.  CHANGE THIS here
628  * or in lynx.cfg.
629  */
630 #define LOCAL_DOMAIN "localdomain"
631 
632 /********************************
633 * The DEFAULT_CACHE_SIZE specifies the number of WWW documents to be
634 * cached in memory at one time.
635 *
636 * This so-called cache size (actually, number) may be modified in lynx.cfg
637 * and or with the command line argument -cache=NUMBER  The minimum allowed
638 * value is 2, for the current document and at least one to fetch, and there
639 * is no absolute maximum number of cached documents.  On Unix, and VMS not
640 * compiled with VAXC, whenever the number is exceeded the least recently
641 * displayed document will be removed from memory.
642 *
643 * On VMS compiled with VAXC, the DEFAULT_VIRTUAL_MEMORY_SIZE specifies the
644 * amount (bytes) of virtual memory that can be allocated and not yet be freed
645 * before previous documents are removed from memory.  If the values for both
646 * the DEFAULT_CACHE_SIZE and DEFAULT_VIRTUAL_MEMORY_SIZE are exceeded, then
647 * least recently displayed documents will be freed until one or the other
648 * value is no longer exceeded.  The value can be modified in lynx.cfg.
649 *
650 * The Unix and VMS but not VAXC implementations use the C library malloc's
651 * and calloc's for memory allocation, and procedures for taking the actual
652 * amount of cache into account still need to be developed.  They use only
653 * the DEFAULT_CACHE_SIZE value, and that specifies the absolute maximum
654 * number of documents to cache (rather than the maximum number only if
655 * DEFAULT_VIRTUAL_MEMORY_SIZE has been exceeded, as with VAXC/VAX).
656 */
657 #define DEFAULT_CACHE_SIZE 10
658 
659 #if defined(VMS) && defined(VAXC) && !defined(__DECC)
660 #define DEFAULT_VIRTUAL_MEMORY_SIZE 512000
661 #endif /* VMS && VAXC && !__DECC */
662 
663 /********************************
664  * If ALWAYS_RESUBMIT_POSTS is set TRUE, Lynx always will resubmit forms
665  * with method POST, dumping any cache from a previous submission of the
666  * form, including when the document returned by that form is sought with
667  * the PREV_DOC command or via the history list.  Lynx always resubmits
668  * forms with method POST when a submit button or a submitting text input
669  * is activated, but normally retrieves the previously returned document
670  * if it had links which you activated, and then go back with the PREV_DOC
671  * command or via the history list.
672  *
673  * The default defined here can be changed in lynx.cfg, and can be toggled
674  * via the -resubmit_posts command line switch.
675  */
676 #define ALWAYS_RESUBMIT_POSTS FALSE
677 
678 /********************************
679  * CHARACTER_SET defines the default character set, i.e., that assumed
680  * to be installed on the user's terminal.  It determines which characters
681  * or strings will be used to represent 8-bit character entities within
682  * HTML.  New character sets may be defined as explained in the README
683  * files of the src/chrtrans directory in the Lynx source code distribution.
684  * For Asian (CJK) character sets, it also determines how Kanji code will
685  * be handled.  The default defined here can be changed in lynx.cfg, and
686  * via the 'o'ptions menu.  The 'o'ptions menu setting will be stored in
687  * the user's RC file whenever those settings are saved, and thereafter
688  * will be used as the default.  Also see lynx.cfg for information about
689  * the -raw switch and LYK_RAW_TOGGLE command.
690  *
691  * Since Lynx now supports a wide range of platforms it may be useful
692  * to note that cpXXX codepages used by IBM PC compatible computers,
693  * and windows-xxxx used by native MS-Windows apps.
694  *
695  *  Recognized character sets include:
696  *
697  *     string for 'O'ptions Menu          MIME name
698  *     ===========================        =========
699  *     7 bit approximations (US-ASCII)    us-ascii
700  *     Western (ISO-8859-1)               iso-8859-1
701  *     Western (cp850)                    cp850
702  *     Western (windows-1252)             windows-1252
703  *     IBM PC US codepage (cp437)         cp437
704  *     DEC Multinational                  dec-mcs
705  *     Macintosh (8 bit)                  macintosh
706  *     NeXT character set                 next
707  *     HP Roman8                          hp-roman8
708  *     Chinese                            euc-cn
709  *     Japanese (EUC-JP)                  euc-jp
710  *     Japanese (Shift_JIS)               shift_jis
711  *     Korean                             euc-kr
712  *     Taipei (Big5)                      big5
713  *     Vietnamese (VISCII)                viscii
714  *     Eastern European (ISO-8859-2)      iso-8859-2
715  *     Eastern European (cp852)           cp852
716  *     Eastern European (windows-1250)    windows-1250
717  *     Latin 3 (ISO-8859-3)               iso-8859-3
718  *     Latin 4 (ISO-8859-4)               iso-8859-4
719  *     Baltic Rim (cp775)                 cp775
720  *     Baltic Rim (windows-1257)          windows-1257
721  *     Cyrillic (ISO-8859-5)              iso-8859-5
722  *     Cyrillic (cp866)                   cp866
723  *     Cyrillic (windows-1251)            windows-1251
724  *     Cyrillic (KOI8-R)                  koi8-r
725  *     Arabic (ISO-8859-6)                iso-8859-6
726  *     Arabic (cp864)                     cp864
727  *     Arabic (windows-1256)              windows-1256
728  *     Greek (ISO-8859-7)                 iso-8859-7
729  *     Greek (cp737)                      cp737
730  *     Greek2 (cp869)                     cp869
731  *     Greek (windows-1253)               windows-1253
732  *     Hebrew (ISO-8859-8)                iso-8859-8
733  *     Hebrew (cp862)                     cp862
734  *     Hebrew (windows-1255)              windows-1255
735  *     Turkish (ISO-8859-9)               iso-8859-9
736  *     ISO-8859-10                        iso-8859-10
737  *     Ukrainian Cyrillic (cp866u)        cp866u
738  *     Ukrainian Cyrillic (KOI8-U)        koi8-u
739  *     UNICODE (UTF-8)                    utf-8
740  *     RFC 1345 w/o Intro                 mnemonic+ascii+0
741  *     RFC 1345 Mnemonic                  mnemonic
742  *     Transparent                        x-transparent
743  */
744 #define CHARACTER_SET "iso-8859-1"
745 
746 /*****************************
747  * PREFERRED_LANGUAGE is the language in MIME notation (e.g., "en",
748  * "fr") which will be indicated by Lynx in its Accept-Language headers
749  * as the preferred language.  If available, the document will be
750  * transmitted in that language.  This definition can be overridden via
751  * lynx.cfg.  Users also can change it via the 'o'ptions menu and save
752  * that preference in their RC file.  This may be a comma-separated list
753  * of languages in decreasing preference.
754  */
755 #define PREFERRED_LANGUAGE "en"
756 
757 /*****************************
758  * PREFERRED_CHARSET specifies the character set in MIME notation (e.g.,
759  * "ISO-8859-2", "ISO-8859-5") which Lynx will indicate you prefer in
760  * requests to http servers using an Accept-Charsets header.
761  * This definition can be overridden via lynx.cfg.  Users also can change it
762  * via the 'o'ptions menu and save that preference in their RC file.
763  * The value should NOT include "ISO-8859-1" or "US-ASCII", since those
764  * values are always assumed by default.
765  * If a file in that character set is available, the server will send it.
766  * If no Accept-Charset header is present, the default is that any
767  * character set is acceptable.  If an Accept-Charset header is present,
768  * and if the server cannot send a response which is acceptable
769  * according to the Accept-Charset header, then the server SHOULD send
770  * an error response with the 406 (not acceptable) status code, though
771  * the sending of an unacceptable response is also allowed. (RFC2068)
772  */
773 #define PREFERRED_CHARSET ""
774 
775 /*****************************
776 * If MULTI_BOOKMARK_SUPPORT is set to MBM_STANDARD or MBM_ADVANCED, and
777 * BLOCK_MULTI_BOOKMARKS (see below) is FALSE, and sub-bookmarks exist, all
778 * bookmark operations will first prompt the user to select an active
779 * sub-bookmark file or the default bookmark file.  MBM_OFF is the default so
780 * that one (the default) bookmark file will be available initially.  The
781 * default set here can be overridden in lynx.cfg.  The user can turn on
782 * multiple bookmark support via the 'o'ptions menu, and can save that choice as
783 * the startup default via the .lynxrc file.  When on, the setting can be
784 * STANDARD or ADVANCED.  If support is set to the latter, and the user mode
785 * also is ADVANCED, the VIEW_BOOKMARK command will invoke a status line prompt
786 * at which the user can enter the letter token (A - Z) of the desired bookmark,
787 * or '=' to get a menu of available bookmark files.  The menu always is
788 * presented in NOVICE or INTERMEDIATE mode, or if the support is set to
789 * STANDARD.  No prompting or menu display occurs if only one (the startup
790 * default) bookmark file has been defined (define additional ones via the
791 * 'o'ptions menu).  The startup default, however set, can be overridden on the
792 * command line via the -restrictions=multibook or the -anonymous or -validate
793 * switches.
794 */
795 #ifndef MULTI_BOOKMARK_SUPPORT
796 #define MULTI_BOOKMARK_SUPPORT MBM_OFF
797 #endif /* MULTI_BOOKMARK_SUPPORT */
798 
799 /*****************************
800 * If BLOCK_MULTI_BOOKMARKS is set TRUE, multiple bookmark support will
801 * be forced off, and cannot be toggled on via the 'o'ptions menu.  This
802 * compilation setting can be overridden via lynx.cfg.
803 */
804 #ifndef BLOCK_MULTI_BOOKMARKS
805 #define BLOCK_MULTI_BOOKMARKS FALSE
806 #endif /* BLOCK_MULTI_BOOKMARKS */
807 
808 /********************************
809  * URL_DOMAIN_PREFIXES and URL_DOMAIN_SUFFIXES are strings which will be
810  * prepended (together with a scheme://) and appended to the first element
811  * of command line or 'g'oto arguments which are not complete URLs and
812  * cannot be opened as a local file (file://localhost/string).  Both
813  * can be comma-separated lists.  Each prefix must end with a dot, each
814  * suffix must begin with a dot, and either may contain other dots (e.g.,
815  * .co.jp).  The default lists are defined here, and can be changed
816  * in lynx.cfg.  Each prefix will be used with each suffix, in order,
817  * until a valid Internet host is created, based on a successful DNS
818  * lookup (e.g., foo will be tested as www.foo.com and then www.foo.edu
819  * etc.).  The first element can include a :port and/or /path which will
820  * be restored with the expanded host (e.g., wfbr:8002/dir/lynx will
821  * become http://www.wfbr.edu:8002/dir/lynx).  The prefixes will not be
822  * used if the first element ends in a dot (or has a dot before the
823  * :port or /path), and similarly the suffixes will not be used if the
824  * the first element begins with a dot (e.g., .nyu.edu will become
825  * http://www.nyu.edu without testing www.nyu.com).  Lynx will try to
826  * guess the scheme based on the first field of the expanded host name,
827  * and use "http://" as the default (e.g., gopher.wfbr.edu or gopher.wfbr.
828  * will be made gopher://gopher.wfbr.edu).
829  */
830 #define URL_DOMAIN_PREFIXES "www."
831 #define URL_DOMAIN_SUFFIXES ".com,.edu,.net,.org"
832 
833 /********************************
834  * If LIST_NEWS_NUMBERS is set TRUE, Lynx will use an ordered list
835  * and include the numbers of articles in news listings, instead of
836  * using an unordered list.
837  *
838  * The default defined here can be changed in lynx.cfg.
839  */
840 #define LIST_NEWS_NUMBERS FALSE
841 
842 /********************************
843  * If LIST_NEWS_DATES is set TRUE, Lynx will include the dates of
844  * articles in news listings.  The dates always are included in the
845  * articles, themselves.
846  *
847  * The default defined here can be changed in lynx.cfg.
848  */
849 #define LIST_NEWS_DATES FALSE
850 
851 /*************************
852  * Set NEWS_POSTING to FALSE if you do not want to support posting to
853  * news groups via Lynx.  If left TRUE, Lynx will use its news gateway to
854  * post new messages or followups to news groups, using the URL schemes
855  * described in the "Supported URL" section of the online 'h'elp.  The
856  * posts will be attempted via the nntp server specified in the URL, or
857  * if none was specified, via the NNTPSERVER configuration or environment
858  * variable.  Links with these URLs for posting or sending followups are
859  * created by the news gateway when reading group listings or articles
860  * from nntp servers if the server indicates that it permits posting.
861  * The setting here can be changed in lynx.cfg.
862  */
863 #define NEWS_POSTING TRUE
864 
865 /*************************
866  * Define LYNX_SIG_FILE to the name of a file containing a signature which
867  * can be appended to email messages and news postings or followups.  The
868  * user will be prompted whether to append it.  It is sought in the home
869  * directory.  If it is in a subdirectory, begin it with a dot-slash
870  * (e.g., ./lynx/.lynxsig).  The definition here can be changed in lynx.cfg.
871  */
872 #define LYNX_SIG_FILE ".lynxsig"
873 
874 /********************************
875  * BIBP_GLOBAL_SERVER is the default global server for bibp: links, used
876  * when a local bibhost or document-specified citehost is unavailable.
877  */
878 #define BIBP_GLOBAL_SERVER "http://usin.org/"
879 
880 /********************************
881  * If USE_SELECT_POPUPS is set FALSE, Lynx will present a vertical list
882  * of radio buttons for the OPTIONs in SELECT blocks which lack the
883  * MULTIPLE attribute, instead of using a popup menu.  Note that if
884  * the MULTIPLE attribute is present in the SELECT start tag, Lynx
885  * always will create a vertical list of checkboxes for the OPTIONs.
886  *
887  * The default defined here can be changed in lynx.cfg.  It can be
888  * set and saved via the 'o'ptions menu to override the compilation
889  * and configuration defaults, and the default always can be toggled
890  * via the -popup command line switch.
891  */
892 #define USE_SELECT_POPUPS TRUE
893 
894 /********************************
895  * If COLLAPSE_BR_TAGS is set FALSE, Lynx will not collapse serial
896  * BR tags.  If set TRUE, two or more concurrent BRs will be collapsed
897  * into a single blank line.  Note that the valid way to insert extra
898  * blank lines in HTML is via a PRE block with only newlines in the
899  * block.
900  *
901  * The default defined here can be changed in lynx.cfg.
902  */
903 #define COLLAPSE_BR_TAGS TRUE
904 
905 /********************************
906  * If SET_COOKIES is set FALSE, Lynx will ignore Set-Cookie headers
907  * in http server replies.
908  *
909  * The default defined here can be changed in lynx.cfg, and can be toggled
910  * via the -cookies command line switch.
911  */
912 #define SET_COOKIES TRUE
913 
914 /********************************
915  * If SEND_USERAGENT is set FALSE, Lynx will not send a user-agent string.
916  * You can override this in the 'O'ptions menu.
917  */
918 #define SEND_USERAGENT TRUE
919 
920 /*******************************
921  * If ACCEPT_ALL_COOKIES is set TRUE, and SET_COOKIES is TRUE, Lynx will
922  * accept all cookies.
923  *
924  * The default defined here can be changed in lynx.cfg, and .lynxrc, or
925  * toggled via the -accept_all_cookies command line switch.
926  */
927 #define ACCEPT_ALL_COOKIES FALSE
928 
929 /****************************************************************
930  *   Section 2.   Things that you probably want to change or review
931  *
932  */
933 
934 /*****************************
935  * The following three definitions set the number of seconds for
936  * pauses following status line messages that would otherwise be
937  * replaced immediately, and are more important than the unpaused
938  * progress messages.  Those set by INFOSECS are also basically
939  * progress messages (e.g., that a prompted input has been canceled)
940  * and should have the shortest pause.  Those set by MESSAGESECS are
941  * informational (e.g., that a function is disabled) and should have
942  * a pause of intermediate duration.  Those set by ALERTSECS typically
943  * report a serious problem and should be paused long enough to read
944  * whenever they appear (typically unexpectedly).  The default values
945  * defined here can be modified via lynx.cfg, should longer pauses be
946  * desired for braille-based access to Lynx.
947  */
948 #define INFOSECS 1
949 #define MESSAGESECS 2
950 #define ALERTSECS 3
951 
952 #define DEBUGSECS 0
953 #define REPLAYSECS 0
954 
955 /******************************
956  * SHOW_COLOR controls whether the program displays in color by default.
957  */
958 #ifdef COLOR_CURSES
959 #define SHOW_COLOR TRUE
960 #else
961 #define SHOW_COLOR FALSE
962 #endif
963 
964 /******************************
965  * SHOW_CURSOR controls whether or not the cursor is hidden or appears
966  * over the current link, or current option in select popup windows.
967  * Showing the cursor is handy if you are a sighted user with a poor
968  * terminal that can't do bold and reverse video at the same time or
969  * at all.  It also can be useful to blind users, as an alternative
970  * or supplement to setting LINKS_AND_FIELDS_ARE_NUMBERED or
971  * LINKS_ARE_NUMBERED.
972  *
973  * The default defined here can be changed in lynx.cfg.  It can be
974  * set and saved via the 'o'ptions menu to override the compilation
975  * and configuration defaults, and the default always can be toggled
976  * via the -show_cursor command line switch.
977  */
978 #define SHOW_CURSOR FALSE
979 
980 /******************************
981 * UNDERLINE_LINKS controls whether links are underlined by default, or shown
982 * in bold.  Normally this default is set from the configure script.
983 */
984 #ifndef HAVE_CONFIG_H
985 #define UNDERLINE_LINKS FALSE
986 #endif
987 
988 /******************************
989 * VERBOSE_IMAGES controls whether or not Lynx replaces the [LINK], [INLINE]
990 * and [IMAGE] comments (for images without ALT) with filenames of these
991 * images.  This is extremely useful because now we can determine immediately
992 * what images are just decorations (button.gif, line.gif) and what images are
993 * important.
994 *
995 * The default defined here can be changed in lynx.cfg.
996 */
997 #define VERBOSE_IMAGES TRUE
998 
999 /******************************
1000  * BOXVERT and BOXHORI control the layout of popup menus.  Set to 0 if your
1001  * curses supports line-drawing characters, set to '*' or any other character
1002  * to not use line-drawing (e.g., '|' for vertical and '-' for horizontal).
1003  */
1004 #ifndef HAVE_CONFIG_H
1005 #ifdef DOSPATH
1006 #define BOXVERT 0
1007 #define BOXHORI 0
1008 #else
1009 #define BOXVERT '|'
1010 /* #define BOXVERT 0 */
1011 #define BOXHORI '-'
1012 /* #define BOXHORI 0 */
1013 #endif /* DOSPATH */
1014 #endif /* !HAVE_CONFIG_H */
1015 
1016 /******************************
1017  * LY_UMLAUT controls the 7-bit expansion of characters with dieresis or
1018  * umlaut.  If defined, a digraph is displayed, e.g., auml --> ae
1019  * Otherwise, a single character is displayed,  e.g., auml --> a
1020  * Note that this is currently not supported with the chartrans code,
1021  * or rather it doesn't have an effect if translations for a display
1022  * character set are taken from one of the *.tbl files in src/chrtrans.
1023  * One would have to modify the corresponding *.tbl file to change the
1024  # 7-bit replacements for these characters.
1025  */
1026 #define LY_UMLAUT
1027 
1028 /*******************************
1029  * Execution links/scripts configuration.
1030  *
1031  * Execution links and scripts allow you to run
1032  * local programs by activating links within Lynx.
1033  *
1034  * An execution link is of the form:
1035  *
1036  *     lynxexec:<COMMAND>
1037  * or:
1038  *     lynxexec://<COMMAND>
1039  * or:
1040  *     lynxprog:<COMMAND>
1041  * or:
1042  *     lynxprog://<COMMAND>
1043  *
1044  * where <COMMAND> is a command that Lynx will run when the link is
1045  * activated.  The double-slash should be included if the command begins
1046  * with an '@', as for executing VMS command files.  Otherwise, the double-
1047  * slash can be omitted.
1048  * Use lynxexec for commands or scripts that generate a screen output which
1049  * should be held via a prompt to press <return> before returning to Lynx
1050  * for display of the current document.
1051  * Use lynxprog for programs such as mail which do not require a pause before
1052  * Lynx restores the display of the current document.
1053  *
1054  * Execution scripts take the form of a standard
1055  * URL.  Extension mapping or MIME typing is used
1056  * to decide if the file is a script and should be
1057  * executed.  The current extensions are:
1058  * .csh, .ksh, and .sh on UNIX systems and .com on
1059  * VMS systems.  Any time a file of this type is
1060  * accessed Lynx will look at the user's options
1061  * settings to decide if the script can be executed.
1062  * Current options include: Only exec files that
1063  * reside on the local machine and are referenced
1064  * with a "file://localhost" URL, All execution
1065  * off, and all execution on.
1066  *
1067  * The following definitions will add execution
1068  * capabilities to Lynx.  You may define none, one
1069  * or both.
1070  *
1071  * I strongly recommend that you define neither one
1072  * of these since execution links/scripts can represent
1073  * very serious security risk to your system and its
1074  * users.  If you do define these I suggest that
1075  * you only allow users to execute files/scripts
1076  * that reside on your local machine.
1077  *
1078  * YOU HAVE BEEN WARNED!
1079  *
1080  * Note: if you are enabling execution scripts you should
1081  * also see src/HTInit.c to verify/change the execution
1082  * script extensions and/or commands.
1083  */
1084 /* #define EXEC_LINKS  */
1085 /* #define EXEC_SCRIPTS  */
1086 
1087 #if defined(EXEC_LINKS) || defined(EXEC_SCRIPTS)
1088 
1089 /**********
1090  * if ENABLE_OPTS_CHANGE_EXEC is defined, the user will be able to change
1091  * the execution status within the Options Menu.
1092  */
1093 /* #define ENABLE_OPTS_CHANGE_EXEC */
1094 
1095 /**********
1096  * if NEVER_ALLOW_REMOTE_EXEC is defined,
1097  * local execution of scripts or lynxexec & lynxprog URLs will be implemented
1098  * only from HTML files that were accessed via a "file://localhost/" URL
1099  * and the Options Menu for "Local executions links" will allow toggling
1100  * only between "ALWAYS OFF" and "FOR LOCAL FILES ONLY".
1101  */
1102 /* #define NEVER_ALLOW_REMOTE_EXEC */
1103 
1104 /*****************************
1105  * These are for executable shell scripts and links.
1106  * Set to FALSE unless you really know what you're
1107  * doing.
1108  *
1109  * This only applies if you are compiling with EXEC_LINKS or
1110  * EXEC_SCRIPTS defined.
1111  *
1112  * The first two settings:
1113  * LOCAL_EXECUTION_LINKS_ALWAYS_ON
1114  * LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE
1115  * specify the DEFAULT settings of the users execution link
1116  * options (they can also be overridden in lynx.cfg), but
1117  * the user may still change those options.
1118  * If you do not wish the user to be able to change the
1119  * execution link settings you may wish to use the command line option:
1120  *    -restrictions=exec_frozen
1121  *
1122  * LOCAL_EXECUTION_LINKS_ALWAYS_ON will be FALSE
1123  * if NEVER_ALLOW_REMOTE_EXEC has been defined.
1124  *
1125  * if LOCAL_EXECUTION_LINKS_ALWAYS_OFF_FOR_ANONYMOUS is true,
1126  * all execution links will be disabled when the -anonymous
1127  * command-line option is used.  Anonymous users are not allowed
1128  * to change the execution options from within the Lynx Options Menu,
1129  * so you might be able to use this option to enable execution links
1130  * and set LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE to TRUE
1131  * to give anonymous execution-link capability without compromising
1132  * your system (see comments about TRUSTED_EXEC rules in lynx.cfg ).
1133  */
1134 
1135 #define LOCAL_EXECUTION_LINKS_ALWAYS_ON          FALSE
1136 #define LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE  FALSE
1137 #define LOCAL_EXECUTION_LINKS_ALWAYS_OFF_FOR_ANONYMOUS FALSE
1138 
1139 #endif /*  defined(EXEC_LINKS) || defined(EXEC_SCRIPTS) */
1140 
1141 /**********
1142  * *** This is for those -- e.g. DOS users -- who do not have configure;
1143  * *** others should use the configure switch --enable-lynxcgi-links .
1144  *
1145  * UNIX:
1146  * =====
1147  * CGI script support.  Defining LYNXCGI_LINKS allows you to use the
1148  *
1149  *   lynxcgi:path
1150  *
1151  * URL which allows lynx to access a cgi script directly without the need for
1152  * a http daemon.  Redirection is not supported but just about everything
1153  * else is.  If the path is not an executable file then the URL is
1154  * rewritten as file://localhost and passed to the file loader.  This means
1155  * that if your http:html files are currently set up to use relative
1156  * addressing, you should be able to fire up your main page with lynxcgi:path
1157  * and everything should work as if you were talking to the http daemon.
1158  *
1159  * Note that TRUSTED_LYNXCGI directives must be defined in your lynx.cfg file
1160  * if you wish to place restrictions on source documents and/or paths for
1161  * lynxcgi links.
1162  *
1163  * The cgi scripts are called with a fork()/execve() sequence so you don't
1164  * have to worry about people trying to abuse the code. :-)
1165  *
1166  *     George Lindholm (George.Lindholm@ubc.ca)
1167  *
1168  * VMS:
1169  * ====
1170  * The lynxcgi scheme, if enabled, yields an informational message regardless
1171  * of the path, and use of the freeware OSU DECthreads server as a local
1172  * script server is recommended instead of lynxcgi URLs.  Uncomment the
1173  * following line to define LYNXCGI_LINKS, and when running Lynx, enter
1174  * lynxcgi:advice  as a G)oto URL for more information and links to the
1175  * OSU server distribution.
1176  */
1177 #ifndef HAVE_CONFIG_H
1178 /* #define LYNXCGI_LINKS */
1179 #endif
1180 
1181 /*********************************
1182  *  MAIL_SYSTEM_ERROR_LOGGING will send a message to the owner of
1183  *  the information if there is one, every time
1184  *  that a document cannot be accessed!
1185  *  This is just the default, it can be changed in lynx.cfg, and error
1186  *  logging can be turned off with the -nolog command line option.
1187  *
1188  *  NOTE: This can generate A LOT of mail, be warned.
1189  */
1190 #define MAIL_SYSTEM_ERROR_LOGGING   FALSE	/*mail a message for every error? */
1191 
1192 /*********************************
1193  *  If a document cannot be accessed, and MAIL_SYSTEM_ERROR_LOGGING
1194  *  is on and would send a message to the owner of the information,
1195  *  but no owner is known, then the message will be sent to ALERTMAIL
1196  *  instead - if it is defined as a non-empty email address.
1197  *
1198  *  NOTE: This can generate A REAL LOT of mail, be warned!!!
1199  */
1200 /* #define ALERTMAIL "webmaster@localhost" */ /*error recipient if no owner */
1201 
1202 /*********************************
1203  * If CHECKMAIL is set to TRUE, the user will be informed (via a status line
1204  * message) about the existence of any unread mail at startup of Lynx, and
1205  * will get status line messages if subsequent new mail arrives.  If a jumps
1206  * file with a lynxprog URL for invoking mail is available, or your html
1207  * pages include an mail launch file URL, the user thereby can access mail
1208  * and read the messages.
1209  * This is just the default, it can be changed in lynx.cfg.  The checks and
1210  * status line reports will not be performed if Lynx has been invoked with
1211  * the -restrictions=mail switch.
1212  *
1213  *  VMS USERS !!!
1214  * New mail is normally broadcast as it arrives, via "unsolicited screen
1215  * broadcasts", which can be "wiped" from the Lynx display via the Ctrl-W
1216  * command.  You may prefer to disable the broadcasts and use CHECKMAIL
1217  * instead (e.g., in a public account which will be used by people who
1218  * are ignorant about VMS).
1219  */
1220 #define CHECKMAIL	FALSE	/* report unread and new mail messages */
1221 
1222 /*********************************
1223  * Vi or Emacs movement keys.  These are defaults,
1224  * which can be changed in lynx.cfg , the Options Menu or .lynxrc .
1225  */
1226 #define VI_KEYS_ALWAYS_ON	FALSE	/* familiar h j k l */
1227 #define EMACS_KEYS_ALWAYS_ON	FALSE	/* familiar ^N ^P ^F ^B */
1228 
1229 /*********************************
1230  * DEFAULT_KEYPAD_MODE may be set to NUMBERS_AS_ARROWS
1231  *                                or LINKS_ARE_NUMBERED
1232  *                                or LINKS_AND_FIELDS_ARE_NUMBERED
1233  * to specify whether numbers (e.g. [10]) appear before all links,
1234  * allowing immediate access by entering the number on the keyboard,
1235  * or numbers on the numeric key-pad work like arrows;
1236  * the 3rd option causes form fields also to be preceded by numbers.
1237  * The first two options (but not the last) can be changed in lynx.cfg
1238  * and all three can be changed via the Options Menu.
1239  */
1240 #define DEFAULT_KEYPAD_MODE	NUMBERS_AS_ARROWS
1241 
1242 /********************************
1243  * The default search.
1244  * This is a default that can be overridden in lynx.cfg or by the user!
1245  */
1246 #define CASE_SENSITIVE_ALWAYS_ON    FALSE	/* case sensitive user search */
1247 
1248 /********************************
1249  * If NO_DOT_FILES is set TRUE here or in lynx.cfg, the user will not be
1250  * allowed to specify files beginning with a dot in reply to output filename
1251  * prompts, and files beginning with a dot (e.g., file://localhost/foo/.lynxrc)
1252  * will not be included in the directory browser's listings.  The setting here
1253  * will be overridden by the setting in lynx.cfg.  If FALSE, you can force it
1254  * to be treated as TRUE via -restrictions=dotfiles (or -anonymous, which sets
1255  * this and most other restrictions).
1256  *
1257  * If it is FALSE at startup of Lynx, the user can regulate it via the
1258  * 'o'ptions menu, and may save the preference in the RC file.
1259  */
1260 #define NO_DOT_FILES    TRUE	/* disallow access to dot files */
1261 
1262 /********************************
1263  * If MAKE_LINKS_FOR_ALL_IMAGES is TRUE, all images will be given links
1264  * which can be ACTIVATEd.  For inlines, the ALT or pseudo-ALT ("[INLINE]")
1265  * strings will be links for the resolved SRC rather than just text.  For
1266  * ISMAP or other graphic links, the ALT or pseudo-ALT ("[ISMAP]" or "[LINK]")
1267  * strings will have '-' and a link labeled "[IMAGE]" for the resolved SRC
1268  * appended. See also VERBOSE_IMAGES flag.
1269  *
1270  * The default defined here can be changed in lynx.cfg, and the user can
1271  * use LYK_IMAGE_TOGGLE to toggle the feature on or off at run time.
1272  *
1273  * The default also can be toggled via an "-image_links" command line switch.
1274  */
1275 #define MAKE_LINKS_FOR_ALL_IMAGES	FALSE	/* inlines cast to links */
1276 
1277 /********************************
1278  * If MAKE_PSEUDO_ALTS_FOR_INLINES is FALSE, inline images which do not
1279  * specify an ALT string will not have "[INLINE]" inserted as a pseudo-ALT,
1280  * i.e., they'll be treated as having ALT="".  If MAKE_LINKS_FOR_ALL_IMAGES
1281  * is defined or toggled to TRUE, however, the pseudo-ALTs will be created
1282  * for inlines, so that they can be used as links to the SRCs.
1283  * See also VERBOSE_IMAGES flag.
1284  *
1285  * The default defined here can be changed in lynx.cfg, and the user can
1286  * use LYK_INLINE_TOGGLE to toggle the feature on or off at run time.
1287  *
1288  * The default also can be toggled via a "-pseudo_inlines" command line
1289  * switch.
1290  */
1291 #define MAKE_PSEUDO_ALTS_FOR_INLINES	TRUE	/* Use "[INLINE]" pseudo-ALTs */
1292 
1293 /********************************
1294  * If SUBSTITUTE_UNDERSCORES is TRUE, the _underline_ format will be used
1295  * for emphasis tags in dumps.
1296  *
1297  * The default defined here can be changed in lynx.cfg, and the user can
1298  * toggle the default via a "-underscore" command line switch.
1299  */
1300 #define SUBSTITUTE_UNDERSCORES	FALSE	/* Use _underline_ format in dumps */
1301 
1302 /********************************
1303  * If QUIT_DEFAULT_YES is defined as TRUE then when the QUIT command
1304  * is entered, any response other than n or N will confirm.  Define it
1305  * as FALSE if you prefer the more conservative action of requiring an
1306  * explicit Y or y to confirm.  The default defined here can be changed
1307  * in lynx.cfg.
1308  */
1309 #define QUIT_DEFAULT_YES	TRUE
1310 
1311 /********************************
1312  * If TEXT_SUBMIT_CONFIRM_WANTED is defined (to anything), the user will be
1313  * prompted for confirmation before Lynx submits a form with only one input
1314  * field (of type text) to the server, after the user has pressed <return>
1315  * or <enter> on the field.  Since the is no other way such as a "submit"
1316  * button to submit, normally the form gets submitted automatically in this
1317  * case, but some users may find this surprising and expect <return> to just
1318  * move to the next link as for other text entry fields.
1319  */
1320 /* #define TEXT_SUBMIT_CONFIRM_WANTED */
1321 
1322 /********************************
1323  * If TEXTFIELDS_MAY_NEED_ACTIVATION is defined (to anything),
1324  * the option TEXTFIELDS_NEED_ACTIVATION in lynx.cfg or the command
1325  * line option -tna can be used to require explicit activation
1326  * before text input fields can be changed with the built-in line
1327  * editor.
1328  */
1329 
1330 #define TEXTFIELDS_MAY_NEED_ACTIVATION
1331 
1332 /********************************
1333  * The following three definitions control some aspects of extended
1334  * textarea handling.  TEXTAREA_EXPAND_SIZE is the number of new empty
1335  * lines that get appended at the end of a textarea by a GROWTEXTAREA
1336  * key.  If TEXTAREA_AUTOGROW is defined (to anything), <return> or
1337  * <enter> in the last line of a textarea automatically extends the
1338  * area by adding a new line.  If TEXTAREA_AUTOEXTEDIT is defined (to
1339  * anything), a key mapped to DWIMEDIT will invoke the external editor
1340  * like EDITTEXTAREA when used in a text input field.  Comment those
1341  * last two definitions out to disable the corresponding behavior.
1342  * See under KEYMAP in lynx.cfg for mapping keys to GROWTEXTAREA or
1343  * DWIMEDIT actions.
1344  */
1345 #define TEXTAREA_EXPAND_SIZE  5
1346 #define TEXTAREA_AUTOGROW
1347 #define TEXTAREA_AUTOEXTEDIT
1348 
1349 /********************************
1350  * If BUILTIN_SUFFIX_MAPS is defined (to anything), default mappings
1351  * for file extensions (aka suffixes) will be compiled in (see
1352  * src/HTInit.c).  By removing the definition, the default mappings
1353  * are suppressed except for a few very basic ones for text/html.
1354  * See GLOBAL_EXTENSION_MAP, PERSONAL_EXTENSION_MAP above and SUFFIX,
1355  * SUFFIX_ORDER in lynx.cfg for other ways to map file extensions.
1356  */
1357 
1358 #define BUILTIN_SUFFIX_MAPS
1359 
1360 /********************************
1361  * These definitions specify files created or used in conjunction
1362  * with traversals.  See CRAWL.ANNOUNCE for more information.
1363  */
1364 #define TRAVERSE_FILE "traverse.dat"
1365 #define TRAVERSE_FOUND_FILE "traverse2.dat"
1366 #define TRAVERSE_REJECT_FILE "reject.dat"
1367 #define TRAVERSE_ERRORS "traverse.errors"
1368 
1369 /****************************************************************
1370  * The LYMessages_en.h header defines default, English strings
1371  * used in status line prompts, messages, and warnings during
1372  * program execution.  See the comments in LYMessages_en.h for
1373  * information on translating or customizing them for your site.
1374  */
1375 #ifndef LYMESSAGES_EN_H
1376 #include <LYMessages_en.h>
1377 #endif /* !LYMESSAGES_EN_H */
1378 
1379 /****************************************************************
1380  * DEFAULT_VISITED_LINKS may be set to one or more of
1381  *					VISITED_LINKS_AS_FIRST_V
1382  *					VISITED_LINKS_AS_TREE
1383  *					VISITED_LINKS_AS_LATEST
1384  *					VISITED_LINKS_REVERSE
1385  * to change the organization of the Visited Links page.
1386  *
1387  * (Not all combinations are meaningful; see src/LYrcFile.c for a list
1388  * in the visited_links_tbl table).
1389  */
1390 #define DEFAULT_VISITED_LINKS (VISITED_LINKS_AS_LATEST | VISITED_LINKS_REVERSE)
1391 
1392 /****************************************************************
1393  * If USE_CACHEJAR is set to TRUE the user will be able to view,
1394  * access and delete cached documents in current lynx session.
1395  */
1396 #ifndef USE_CACHEJAR
1397 /* #define USE_CACHEJAR TRUE */
1398 #endif
1399 
1400 /****************************************************************
1401  * If USE_SESSIONS is set to TRUE the user will be able to save,
1402  * resume and in general manipulate with lynx sessions.
1403  */
1404 #ifndef USE_SESSIONS
1405 /* #define USE_SESSIONS TRUE */
1406 #endif
1407 
1408 #define MAX_SESSIONS	10000
1409 
1410 /*
1411  * If USE_SESSIONS is TRUE you may tune it fine how it will work:
1412  */
1413 #define GOTOURL_IN_SESSION	/* Allow to save goto url */
1414 #define GOTOURL_OUT_SESSION	/* Allow to restore goto url */
1415 #define HISTORY_IN_SESSION	/* Allow to save history */
1416 #define HISTORY_OUT_SESSION	/* Allow to restore history */
1417 #define SEARCH_IN_SESSION	/* Allow to save search string */
1418 #define SEARCH_OUT_SESSION	/* Allow to restore search string */
1419 #define VLINK_IN_SESSION	/* Allow to save visited link */
1420 #define VLINK_OUT_SESSION	/* Allow to restore visited link */
1421 
1422 /****************************************************************
1423  * The STATUSBUFSIZE defines how many entries will be stored in
1424  * cyclic buffer of statusline messages. This is specially useful
1425  * for users who use lynx on a terminal with more than 40 lines.
1426  */
1427 /* #define STATUSBUFSIZE 90 */
1428 
1429 /****************************************************************
1430  * If USE_PROGRESSBAR is TRUE the user will be able to set
1431  * download progress as odometer(thermometer) display, ie:
1432  *
1433  * 80% IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
1434  *
1435  */
1436 /* #define USE_PROGRESSBAR TRUE */
1437 
1438 /****************************************************************
1439  *   Section 3.   Things that you should not change until you
1440  *  		  have a good knowledge of the program
1441  */
1442 
1443 #define LYNX_NAME "Lynx"
1444 /* The strange-looking comments on the next line tell PRCS to replace
1445  * the version definition with the Project Version on checkout.  Just
1446  * ignore it. - kw */
1447 /* $Format: "#define LYNX_VERSION \"$ProjectVersion$\""$ */
1448 #define LYNX_VERSION "2.9.0dev.9"
1449 #define LYNX_WWW_HOME "https://lynx.invisible-island.net/"
1450 #define LYNX_WWW_DIST "https://lynx.invisible-island.net/current/"
1451 /* $Format: "#define LYNX_DATE \"$ProjectDate$\""$ */
1452 #define LYNX_DATE "Sun, 01 Aug 2021 14:50:52 -0400"
1453 #define LYNX_DATE_OFF 5		/* truncate the automatically-generated date */
1454 #define LYNX_DATE_LEN 11	/* truncate the automatically-generated date */
1455 
1456 #ifdef UNICODE
1457 #define W32_STRING(s) L##s
1458 #else
1459 #define W32_STRING(s) s
1460 #endif
1461 
1462 #define LYNX_SUBKEY W32_STRING("Software\\Lynx")
1463 
1464 #define LINESIZE 1024		/* max length of line to read from file */
1465 #define MAXLINKS 1024		/* max links on one screen */
1466 
1467 #ifndef SEARCH_GOAL_LINE
1468 #define SEARCH_GOAL_LINE 4	/* try to position search target there */
1469 #endif
1470 
1471 #define MAXCHARSETS 60		/* max character sets supported */
1472 #define TRST_MAXROWSPAN 200	/* max rowspan accepted by TRST code */
1473 #define TRST_MAXCOLSPAN 200	/* max colspan and COL/COLGROUP span accepted */
1474 #define MAX_TABLE_ROWS  200	/* max rows for tables */
1475 #define MAX_TABLE_COLS  200	/* max cols for tables */
1476 #define SAVE_TIME_NOT_SPACE	/* minimize number of some malloc calls */
1477 
1478 /* Win32 may support more, but old win16 helper apps may not. */
1479 #if defined(__DJGPP__) || defined(_WINDOWS)
1480 #define FNAMES_8_3
1481 #endif
1482 
1483 #ifdef FNAMES_8_3
1484 #define HTML_SUFFIX ".htm"
1485 #else
1486 #define HTML_SUFFIX ".html"
1487 #endif
1488 
1489 #ifndef FNAME_LYNXRC
1490 #ifdef FNAMES_8_3
1491 #define FNAME_LYNXRC "lynx.rc"
1492 #else
1493 #define FNAME_LYNXRC ".lynxrc"
1494 #endif /* FNAMES_8_3 */
1495 #endif
1496 
1497 #ifndef FNAME_LYNX_COOKIES
1498 #ifdef FNAMES_8_3
1499 #define FNAME_LYNX_COOKIES "cookies"
1500 #else
1501 #define FNAME_LYNX_COOKIES ".lynx_cookies"
1502 #endif /* FNAMES_8_3 */
1503 #endif
1504 
1505 #ifndef FNAME_LYNX_TRACE
1506 #ifdef FNAMES_8_3
1507 #define FNAME_LYNX_TRACE "LY-TRACE.LOG"
1508 #else
1509 #define FNAME_LYNX_TRACE "Lynx.trace"
1510 #endif /* FNAMES_8_3 */
1511 #endif
1512 
1513 #ifndef BLAT_MAIL
1514 #define BLAT_MAIL "blat"
1515 #endif
1516 
1517 #ifndef ALTBLAT_MAIL
1518 #define ALTBLAT_MAIL "blatj"
1519 #endif
1520 
1521 #define BIN_SUFFIX  ".bin"
1522 #define TEXT_SUFFIX ".txt"
1523 
1524 #ifdef VMS
1525 /*
1526 **  Use the VMS port of gzip for uncompressing both .Z and .gz files.
1527 */
1528 #define UNCOMPRESS_PATH "gzip -d"
1529 #define COPY_PATH	"copy/nolog/noconf"
1530 #define GZIP_PATH       "gzip"
1531 #define BZIP2_PATH      "bzip2"
1532 #define TELNET_PATH     "telnet"
1533 #define TN3270_PATH     "tn3270"
1534 #define RLOGIN_PATH     "rlogin"
1535 
1536 #else
1537 
1538 #ifdef DOSPATH
1539 
1540 /*
1541  * Define this to setup feature that uses directory of lynx.exe to locate
1542  * associated configuration files.
1543 #define USE_PROGRAM_DIR 1
1544  */
1545 
1546 #ifdef _WINDOWS
1547 
1548 #ifndef USE_BLAT_MAILER
1549 #define USE_BLAT_MAILER 1
1550 #endif
1551 
1552 #ifndef LYNX_CFG_PATH
1553 #define LYNX_CFG_PATH "."
1554 #endif
1555 
1556 #else
1557 /* have to define something... */
1558 #undef SYSTEM_MAIL
1559 #define SYSTEM_MAIL             "sendmail"
1560 #define SYSTEM_MAIL_FLAGS       "-t -oi"
1561 #endif /* _WINDOWS */
1562 
1563 /*
1564 **  The following executables may be used at run time.  Unless you change
1565 **  the definitions to include the full directories, they will be sought
1566 **  from your PATH at run-time; they should be available as "cp.exe",
1567 **  "mv.exe" and so on.  To get those programs look for GNU-port stuff
1568 **  elsewhere.
1569 **  Currently, if compiled with -DUSE_ZLIB and without -DDIRED_SUPPORT
1570 **  (default), the following from the list below are required:
1571 **  MV_PATH   (mv.exe) - for bookmark handling (DEL_BOOKMARK command)
1572 **  UNCOMPRESS_PATH    - for automatic decompression of files in Unix
1573 **                       compress format
1574 **  TELNET_PATH, TN3270_PATH, RLOGIN_PATH - for access to "telnet:",
1575 **                                         "tn3270:", and "rlogin:" URLs.
1576 **  If they are not defined right, the corresponding operations may fail
1577 **  in unexpected and obscure ways!
1578 **
1579 **    WINDOWS/DOS
1580 **    ===========
1581 */
1582 #ifndef HAVE_CONFIG_H
1583 #define COMPRESS_PATH   "compress"
1584 #define UNCOMPRESS_PATH "uncompress"
1585 #define UUDECODE_PATH   "uudecode"
1586 #define ZCAT_PATH       "zcat"
1587 #define GZIP_PATH       "gzip"
1588 #define BZIP2_PATH      "bzip2"
1589 #define MV_PATH         "mv"
1590 #define INSTALL_PATH    "install"
1591 #define TAR_PATH        "tar"
1592 #define ZIP_PATH        "zip"
1593 #define UNZIP_PATH      "unzip"
1594 #define RM_PATH         "rm"
1595 #define TELNET_PATH     "telnet"
1596 #define TN3270_PATH     "tn3270"
1597 #define RLOGIN_PATH     "rlogin"
1598 
1599 /* see src/LYLocal.c for these */
1600 #define TAR_UP_OPTIONS	 "-cf"
1601 #define TAR_DOWN_OPTIONS "-xf"
1602 #define TAR_PIPE_OPTIONS "-"
1603 #define TAR_FILE_OPTIONS ""
1604 
1605 /*
1606  * These are not used:
1607  * #define COPY_PATH       "cp"
1608  * #define CHMOD_PATH      "chmod"
1609  * #define MKDIR_PATH      "mkdir"
1610  * #define TOUCH_PATH      "touch"
1611  */
1612 #endif /* HAVE_CONFIG_H */
1613 
1614 #else /* Unix */
1615 	/* Standard locations are defined via the configure script.  When
1616 	 * helper applications are in your home directory or other nonstandard
1617 	 * locations, you probably will have to preset the path to them with
1618 	 * environment variables (see INSTALLATION, Section II-1d).
1619 	 */
1620 #endif /* DOSPATH */
1621 #endif /* VMS */
1622 
1623 /*****************************
1624  * I have not ported multibyte support for EBCDIC.  In fact, some multibyte
1625  * code in LYLowerCase() crashes on EBCDIC strings.  -- gil
1626  */
1627 #if       ! defined(NOT_ASCII)
1628 /*****************************
1629  * SUPPORT_MULTIBYTE_EDIT provides better support of CJK characters to
1630  * Lynx's Line Editor.  JIS X0201 Kana is partially supported.  The
1631  * reason why I didn't support it fully is I think supporting it is not
1632  * required so much and I don't have an environment to test it. - TH
1633  */
1634 #define SUPPORT_MULTIBYTE_EDIT
1635 #endif /* ! defined(NOT_ASCII) */
1636 
1637 /*****************************
1638  * SUPPORT_CHDIR provides CD command (bound to 'C' by default).  It allows
1639  * changing directory to arbitrary location (if OS allows them).  If dired is
1640  * enabled, user will be able to visit any directory and view any file allowed
1641  * according to file permissions or ACLs.
1642  */
1643 #define SUPPORT_CHDIR
1644 
1645 /*****************************
1646  * MARK_HIDDEN_LINKS controls whether hidden links are shown with the title
1647  * set by the HIDDEN_LINK_MARKER string in lynx.cfg
1648  */
1649 #define MARK_HIDDEN_LINKS
1650 
1651 /*****************************
1652  * USE_TH_JP_AUTO_DETECT and KANJI_CODE_OVERRIDE are the macros
1653  * for Japanese. - TH
1654  */
1655 /*****************************
1656  * USE_TH_JP_AUTO_DETECT enables a new Japanese charset detection routine.
1657  * With the old detection strategy, Lynx always thought a document was
1658  * written in mixture of three kanji codes (JIS, EUC and SJIS).  The new
1659  * strategy is for Lynx to first assume the document is written in one code
1660  * or JIS + one other kanji code (JIS, EUC, SJIS, EUC+JIS and SJIS+JIS).
1661  * The first assumption is usually correct, but if the assumption is wrong,
1662  * Lynx falls back to the old assumption of the three kanji codes mixed.
1663  */
1664 #define USE_TH_JP_AUTO_DETECT
1665 
1666 /*****************************
1667  * Uncomment the following line to enable the kanji code override routine.
1668  * The code can be changed by pressing ^L.  More precisely, this allows
1669  * the user to override the assumption about the kanji code for the document
1670  * which Lynx has made on the basis of a META tag and HTTP response.
1671  */
1672 /*#define KANJI_CODE_OVERRIDE */
1673 
1674 /**************************
1675  * SSL_CERT_FILE contains valid SSL CA certificates.  Set this to a string
1676  * to provide a runtime default value.
1677  */
1678 #define SSL_CERT_FILE NULL
1679 
1680 /****************************************************************
1681  *  Section 4.  Things you MUST check only if you plan to use Lynx
1682  *              in an anonymous account (allow public access to Lynx).
1683  *              This section may be skipped by those people building
1684  *              Lynx for private use only.
1685  *
1686  */
1687 
1688 /*****************************
1689  * Enter the name of your anonymous account if you have one
1690  * as ANONYMOUS_USER.  UNIX systems will use a cuserid
1691  * or get_login call to determine if the current user is
1692  * the ANONYMOUS_USER.  VMS systems will use getenv("USER").
1693  *
1694  * You may use the "-anonymous" option for multiple accounts,
1695  * or for precautionary reasons in the anonymous account, as well.
1696  *
1697  * Specify privileges for the anonymous account below.
1698  *
1699  * It is very important to have this correctly defined or include
1700  * the "-anonymous" command line option for invocation of Lynx
1701  * in an anonymous account!  If you do not you will be putting
1702  * yourself at GREAT security risk!
1703  */
1704 #define ANONYMOUS_USER ""
1705 
1706 /*******************************
1707  * In the following four pairs of defines,
1708  * INSIDE_DOMAIN means users connecting from inside your local domain,
1709  * OUTSIDE_DOMAIN means users connecting from outside your local domain.
1710  *
1711  * set to FALSE if you don't want users of your anonymous
1712  * account to be able to telnet back out
1713  */
1714 #define CAN_ANONYMOUS_INSIDE_DOMAIN_TELNET	TRUE
1715 #define CAN_ANONYMOUS_OUTSIDE_DOMAIN_TELNET	FALSE
1716 
1717 /*******************************
1718  * set to FALSE if you don't want users of your anonymous
1719  * account to be able to use ftp
1720  */
1721 #define CAN_ANONYMOUS_INSIDE_DOMAIN_FTP		TRUE
1722 #define CAN_ANONYMOUS_OUTSIDE_DOMAIN_FTP	FALSE
1723 
1724 /*******************************
1725  * set to FALSE if you don't want users of your anonymous
1726  * account to be able to use rlogin
1727  */
1728 #define CAN_ANONYMOUS_INSIDE_DOMAIN_RLOGIN	TRUE
1729 #define CAN_ANONYMOUS_OUTSIDE_DOMAIN_RLOGIN	FALSE
1730 
1731 /*******************************
1732  * set to FALSE if you don't want users of your anonymous
1733  * account to be able to read news OR post news articles.
1734  * These flags apply to "news", "nntp", "newspost", and "newsreply"
1735  * URLs, but not to "snews", "snewspost", or "snewsreply"
1736  * in case they are supported.
1737  */
1738 #define CAN_ANONYMOUS_INSIDE_DOMAIN_READ_NEWS	TRUE
1739 #define CAN_ANONYMOUS_OUTSIDE_DOMAIN_READ_NEWS	FALSE
1740 
1741 /*******************************
1742  * set to FALSE if you don't want users of your anonymous
1743  * account to be able to goto random URLs. (The 'g' command)
1744  */
1745 #define CAN_ANONYMOUS_GOTO		TRUE
1746 
1747 /*******************************
1748  * set to FALSE if you don't want users of your anonymous
1749  * account to be able to goto particular URLs.
1750  */
1751 #define CAN_ANONYMOUS_GOTO_BIBP		TRUE	/* BIBP maps to HTTP */
1752 #define CAN_ANONYMOUS_GOTO_CSO		FALSE
1753 #define CAN_ANONYMOUS_GOTO_FILE		FALSE
1754 #define CAN_ANONYMOUS_GOTO_FINGER	TRUE
1755 #define CAN_ANONYMOUS_GOTO_FTP		FALSE
1756 #define CAN_ANONYMOUS_GOTO_GOPHER	FALSE
1757 #define CAN_ANONYMOUS_GOTO_HTTP		TRUE
1758 #define CAN_ANONYMOUS_GOTO_HTTPS	FALSE
1759 #define CAN_ANONYMOUS_GOTO_LYNXCGI	FALSE
1760 #define CAN_ANONYMOUS_GOTO_LYNXEXEC	FALSE
1761 #define CAN_ANONYMOUS_GOTO_LYNXPROG	FALSE
1762 #define CAN_ANONYMOUS_GOTO_MAILTO	TRUE
1763 #define CAN_ANONYMOUS_GOTO_NEWS		FALSE
1764 #define CAN_ANONYMOUS_GOTO_NNTP		FALSE
1765 #define CAN_ANONYMOUS_GOTO_RLOGIN	FALSE
1766 #define CAN_ANONYMOUS_GOTO_SNEWS	FALSE
1767 #define CAN_ANONYMOUS_GOTO_TELNET	FALSE
1768 #define CAN_ANONYMOUS_GOTO_TN3270	FALSE
1769 #define CAN_ANONYMOUS_GOTO_WAIS		TRUE
1770 
1771 /*******************************
1772  * set to FALSE if you don't want users of your anonymous
1773  * account to be able to specify a port in 'g'oto commands
1774  * for telnet URLs.
1775  */
1776 #define CAN_ANONYMOUS_GOTO_TELNET_PORT	FALSE
1777 
1778 /*******************************
1779  * set to FALSE if you don't want users of your anonymous
1780  * account to be able to jump to URLs (The 'J' command)
1781  * via the shortcut entries in your JUMPFILE.
1782  */
1783 #define CAN_ANONYMOUS_JUMP	FALSE
1784 
1785 /*******************************
1786  * set to FALSE if you don't want users of your anonymous
1787  * account to be able to mail
1788  */
1789 #define CAN_ANONYMOUS_MAIL	TRUE
1790 
1791 /*******************************
1792  * set to FALSE if you don't want users of your anonymous
1793  * account to be able to print
1794  */
1795 #define CAN_ANONYMOUS_PRINT	FALSE
1796 
1797 /*******************************
1798  * set to FALSE if users with anonymous restrictions should
1799  * not be able to view configuration file (lynx.cfg) info
1800  * via special LYNXCFG: links.  (This does not control access
1801  * to lynx.cfg as a normal file, e.g., through a "file:" URL,
1802  * if other restrictions allow that.)
1803  */
1804 #define CAN_ANONYMOUS_VIEW_LYNXCFG_INFO			FALSE
1805 
1806 /*******************************
1807  * set to FALSE if users with anonymous restrictions should
1808  * not be able to view extended configuration file (lynx.cfg)
1809  * info @@@ or perform special config info functions (reloading
1810  * at run-time) via special LYNXCFG: links @@@.  This only applies
1811  * if the lynxcfg_info" restriction controlled by the previous
1812  * item is not in effect and if Lynx has been compiled without
1813  * NO_CONFIG_INFO defined (--disable-config-info wasn't used
1814  * if Lynx was built with the autoconf configure script).
1815  * The extended info may include details on configuration file
1816  * names and location and links for reading the files, as well
1817  * as information on nesting of included configuration files.
1818  */
1819 #define CAN_ANONYMOUS_VIEW_LYNXCFG_EXTENDED_INFO	FALSE
1820 
1821 /*******************************
1822  * set to FALSE if users with anonymous restrictions should
1823  * not be able to view information on compile time configuration
1824  * via special LYNXCOMPILEOPTS: links.  This only applies
1825  * if the autoconf configure script was used to build Lynx
1826  * AND --disable-config-info wasn't used, otherwise this
1827  * special URL scheme isn't recognized anyway.
1828  */
1829 #define CAN_ANONYMOUS_VIEW_COMPILEOPTS_INFO		FALSE
1830 
1831 /*******************************
1832  * set to FALSE if you don't want users of your anonymous
1833  * account to be able to 'g'oto special URLs for showing
1834  * configuration info (LYNXCFG: and LYNXCOMPILEOPTS:) if
1835  * they are otherwise allowed.
1836  */
1837 #define CAN_ANONYMOUS_GOTO_CONFIGINFO		FALSE
1838 
1839 /*****************************
1840  * Be sure you have read about and set defines above in Sections
1841  * 1, 2 and 3 that could  affect Lynx in an anonymous account,
1842  * especially LOCAL_EXECUTION_LINKS_ALWAYS_OFF_FOR_ANONYMOUS.
1843  *
1844  * This ends the section specific to anonymous accounts.
1845  */
1846 
1847 /*****************************
1848  * These can be uncommented to get more detail when debugging changes to
1849  * the color-style and layout logic.
1850  */
1851 /*#define DEBUG_APPCH 1*/
1852 /*#define DEBUG_STYLE 1*/
1853 
1854 #ifdef DEBUG_STYLE
1855 #define CTRACE_STYLE(p) CTRACE2(TRACE_STYLE, p)
1856 #else
1857 #define CTRACE_STYLE(p)		/* nothing */
1858 #endif
1859 
1860 /* #define DEBUG_SPLITLINE */
1861 
1862 #ifdef DEBUG_SPLITLINE
1863 #define CTRACE_SPLITLINE(p)	CTRACE(p)
1864 #else
1865 #define CTRACE_SPLITLINE(p)	/*nothing */
1866 #endif
1867 
1868 #endif /* USERDEFS_H */
1869