1
/* $Id: feature.h,v 1.33 2004/01/01 16:34:41 jonas Exp $ */
3
#ifndef EL__DOTDOT_FEATURE_H
4
#define EL__DOTDOT_FEATURE_H
6
/* This file contains various compile-time configuration settings, which you
7
* can adjust below. You can fine-tune the ELinks binary to include really only
8
* what you want it to. There are still some things which are to be adjusted
9
* only directly through the ./configure script arguments though, so check
10
* ./configure --help out as well! */
14
* The "/" "*" and "*" "/" sequences start/end comments in this file. The
15
* features are controlled by using the "#define FEATURE" command. If it is
16
* commented out, it means the feature is disabled, otherwise it is enabled.
17
* Therefore, if the default doesn't suit you, you can either comment it out
18
* or remove the comment marks. */
22
* Please strive to keep the format of all entries uniform, it will make it
23
* easier for us as well as for the users. Do not forget to accurately describe
24
* the feature and also the impact of enabling/disabling it. Follow the format
25
* of existing comments. Follow the example of XBEL when adding features which
26
* also need some detection in configure.in.
28
* Not everything is suitable for an entry in this file, maybe it would be
29
* happier directly in the configure.in. Basically, if it is going to have the
30
* commandline argument in ./configure anyway (the M4 macro expansion does it,
31
* like --with-x or --without-nls), do not add it here. If it is really purely
32
* question of system support (X2, HAVE_SA_STORAGE), and it makes no sense for
33
* the user to touch it, do not include it here.
35
* Also, use your common sense. (Not that I would trust it that much... ;-))
42
* These are the tiny LED-like indicators, shown at the bottom-right of the
43
* screen as [-----]. They are used for indication of various states, ie.
44
* whether you are currently talking through a SSL-secured connection.
46
* This is rather a fancy thing, and it doesn't do anything actually useful yet
49
* Default: disabled */
51
/* #define CONFIG_LEDS */
56
* ELinks has built-in hiearchic bookmarks support. Open the bookmarks manager
57
* by pressing 's'. When bookmarks are enabled, also support for the internal
58
* ELinks bookmarks format is always compiled in.
60
* This is a favourite target for disabling in various embedded applications.
61
* It all depends on your requirements.
65
#define CONFIG_BOOKMARKS
70
* ELinks also supports universal XML bookmarks format called XBEL, also
71
* supported by ie. Galeon, various "always-have-my-bookmarks" websites and
72
* number of universal bookmark convertors.
74
* Frequently, you know you will not need it, then you can of course happily
75
* forcibly remove support for it and save few bytes.
77
* Default: enabled if libexpat (required library) found and bookmarks are
80
#if defined(HAVE_LIBEXPAT) && defined(CONFIG_BOOKMARKS)
81
/* Comment out the following line if you want to always have this disabled: */
82
#define CONFIG_XBEL_BOOKMARKS
88
* Support for HTTP cookies --- a data token which the server sends the client
89
* once and then the client sends it back along each request to the server.
90
* This mechanism is crucial for ie. keeping HTTP sessions (you "log in" to a
91
* site, and from then on the site recognizes you usually because of the
92
* cookie), but also for various banner systems, remembering values filled to
93
* various forms, and so on. You can further tune the ELinks behaviour at
94
* runtime (whether to accept/send cookies, ask for confirmation when accepting
97
* This functionality is usually quite important and you should not disable it
98
* unless you really know what are you doing.
100
* Default: enabled */
102
#define CONFIG_COOKIES
107
* This device records each and every page you visit (to a configurable limit).
108
* You can browse through this history in the history manager (press 'h'). Do
109
* not confuse this with the "session history", recording history of your
110
* browsing in the frame of one session (session history is the thing you move
111
* through when pressing 'back' and 'unback' or which you see in the
112
* File::History menu).
114
* Global history does not care about the order you visited the pages in, it
115
* just records that you visited it, when did you do that and the title of the
116
* page. Then, you can see when did you visit a link last time (and what was
117
* the title of the target document at that time), links can be coloured as
120
* If you disable this feature, you will not lose any crucial functionality,
121
* just some relatively minor convenience features, which can nevertheless
122
* prove sometimes very practical.
124
* Default: enabled */
126
#define CONFIG_GLOBHIST
132
* The goto dialog through which new URIs can be entered is an essential part
133
* of browsing in ELinks. This feature makes the dialog more powerful by making
134
* it possible to extend how entered text is handled through a set of rewrite
135
* rules (see protocol.rewrite options).
137
* There are two types of rules: simple and smart ones.
139
* Simple rewriting rules are basicly URI abbreviations, making it possible to
140
* map a word to the full URI. They can also be used for hierarchic navigation
141
* to ease moving from some nested directory to the parent directory or doing
142
* other stuff with the current URI. For example, when you type 'gg' into the
143
* goto dialog, you will be materialized at Google's homepage.
145
* Smart rules can take arguments and therefore enable more advanced rewriting.
146
* The arguments could be search words to google for or a lookup query for a
147
* dictionary. Eg. type 'gg:Petr Baudis king of ELinks cvs'.
149
* This feature is also available in a more powerful form in the Lua and Guile
150
* extensions, so if you plan to or already use those, you won't miss anything
151
* by disabling this feature (besides easier and better integrated
154
* Default: enabled */
156
#define CONFIG_URI_REWRITE
162
* ELinks uses a MIME system for determining the content type of documents and
163
* configuring programs for external handling. By default the option system can
164
* be used to configure how media types are handled. More info about how to set
165
* up the MIME handling using the option system can be found in the
166
* doc/mime.html file.
168
* Below are listed some additional ways to do it. */
172
* Mailcap files describe what program - on the local system - can be used to
173
* handle a media type. The file format is defined in RFC 1524 and more info
174
* including examples can be found in the doc/mailcap.html file.
176
* This is very useful especially for clean interoperability with other
177
* MIME-aware applications and fitting nicely into the UNIX system, where this
178
* is the standard way of specifying MIME handlers. If you are not interested
179
* in that, you can still use the internal MIME associations system, though.
181
* Default: enabled */
183
#define CONFIG_MAILCAP
187
* Mimetypes file can be used to specify the relation between media types and
190
* Basically same thing applies here as for the mailcap support.
192
* Default: enabled */
194
#define CONFIG_MIMETYPES
198
/*** 256 Colors in Terminals
200
* Define to add support for using 256 colors in terminals. Note that this
201
* requires a capable terminal emulator, such as:
203
* - Thomas Dickey's XTerm, version 111 or later (check which version you have
204
* with xterm -version) compiled with --enable-256-color.
206
* - Recent versions of PuTTY also have some support for 256 colors.
208
* You will still need to enable this at runtime for a given terminal in
209
* terminal options, or set your $TERM variable to xterm-256color - then,
210
* ELinks will automatically configure itself to make use of all the available
211
* terminal features, while still acting sensibly when you happen to run it in
212
* an xterm w/o the 256 colors support.
214
* When enabled, the memory usage is somewhat increased even when running in
215
* mono and 16 colors mode (the memory consumption can be especially remarkable
216
* when rendering very large documents and/or using very large terminals).
217
* However, when you actually run it in the suitable terminal, it looks really
218
* impressive, I'd say marvelous!
220
* Default: disabled */
222
/* #define CONFIG_256_COLORS */
225
/*** Backtrace Printing
227
* Once upon a time, a disaster happens and ELinks crashes. That is a very sad
228
* event and it would be very nice to have some means how to diagnose it. In
229
* the crash handler, ELinks prints out various helpful things, however the
230
* truly important information is _where_ did it crash. Usually, users do not
231
* have gdb installed and can't provide a backtrace. However, ELinks can print
232
* a backtrace on its own, if the system supports it (currently, it is
233
* implemented only for glibc). It is not always accurate, it is useless when
234
* the ELinks binary is stripped and it still misses a lot of important
235
* information, but it can be sometimes still an indispensable help for the
238
* You should keep this, unless you will strip your ELinks binary anyway, you
239
* know you are not going to report back any failures and you care about each
242
* Default: enabled if the libc supports it (only glibc) */
244
#ifdef CONFIG_BACKTRACE
245
/* Uncomment the following line if you want to always have this disabled: */
246
/* #undef CONFIG_BACKTRACE */
250
/*** Disable Root User
252
* Browsers are scary monsters used for traveling around in an even more scary
253
* world where people indifferently throw garbage files at you and threaten
254
* your perfect world. Altho' ELinks is a small monster compared to most
255
* browsers, it can still bite your head off and some might consider running it
256
* as the root user extremely dangerous. To prevent such usage simply enable
259
* Default: disabled */
261
#if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
262
/* Uncomment the following line if you want to enable this: */
263
/* #define CONFIG_NO_ROOT_EXEC */
269
* The famous Competing Browser has that annoying thing which pops up when you
270
* submit a form, offering to remember it and pre-fill it the next time. And
271
* yes, ELinks can do that too! You will still need to also enable this manualy
272
* at document.browse.forms.show_formhist.
274
* Many people find it extremely annoying (including pasky), however some
275
* others consider it extremely handy and will sacrifice almost anything to get
276
* it. It will not do any harm to have this compiled-in as long as you will
277
* leave it turned off (which is also the default configuration).
279
* Default: enabled */
281
#define CONFIG_FORMHIST
286
* ELinks may be controlled not only by keyboard, but also by mouse to quite
287
* some extent. You can select links, menu items, scroll document, click at
288
* buttons etc, and it should hopefully work. ELinks supports mouse control by
289
* GPM, xterm mouse reporting and TWAIN's twterm mouse reporting.
291
* It is generally nice convience and doesn't cost too much. However, you can
292
* do everything with keyboard as you can with mouse. Also note that the xterm
293
* mouse reporting takes control over the terminal so that copy and pasting
294
* text from and to ELinks has to be done by holding down the Shift key.
296
* Default: enabled */
301
/*** Local CGI Support
303
* ELinks can (like w3m or lynx) execute certain executable files stored on the
304
* local disks as CGIs, when you target it on them (through a URI of the 'file'
305
* scheme). ELinks emulates the complete CGI environment, like the program
306
* would be executed by a web server. See the protocol.file.cgi options tree
307
* for detailed runtime configuration.
309
* Some people just write their bookmark managment application as perl CGI
310
* script and then access it from the web browser using this feature, not
311
* needing any web server or so. Therefore, this is a great possible way to
312
* extended the browser capabilities.
314
* Even when you compile this in, you need to enable this yet in the
315
* configuration, and even then only CGI files passing certain user-defined
316
* filters (path-based) will be allowed to be executed (and there are certain
317
* other security barriers in place).
319
* Default: disabled */
322
/* Uncomment the following line if you want to enable this: */
323
/* #define CONFIG_CGI */
327
/*** SMB Protocol Support
329
* ELinks supports browsing over the SMB protocol (URI 'smb' scheme), using the
330
* smbclient program as backend. Therefore, in order to have this enabled, you
331
* will need to install Samba (or at least just the smbclient part, if you can
332
* install it separately).
334
* Default: enabled if smbclient will be found */
337
/* Uncomment the following line if you want to always have this disabled: */
338
/* #undef CONFIG_SMB */