Major changes to build system in order to fix these bugs:
[privoxy.git] / acconfig.h
1 #ifndef _CONFIG_H
2 #define _CONFIG_H
3 /*********************************************************************
4  *
5  * File        :  $Source: /cvsroot/ijbswa/current/acconfig.h,v $
6  *
7  * Purpose     :  This file should be the first thing included in every
8  *                .c file.  (Before even system headers).  It contains 
9  *                #define statements for various features.  It was
10  *                introduced because the compile command line started
11  *                getting ludicrously long with feature defines.
12  *
13  * Copyright   :  Written by and Copyright (C) 2001 the SourceForge
14  *                IJBSWA team.  http://ijbswa.sourceforge.net
15  *
16  *                Based on the Internet Junkbuster originally written
17  *                by and Copyright (C) 1997 Anonymous Coders and 
18  *                Junkbusters Corporation.  http://www.junkbusters.com
19  *
20  *                This program is free software; you can redistribute it 
21  *                and/or modify it under the terms of the GNU General
22  *                Public License as published by the Free Software
23  *                Foundation; either version 2 of the License, or (at
24  *                your option) any later version.
25  *
26  *                This program is distributed in the hope that it will
27  *                be useful, but WITHOUT ANY WARRANTY; without even the
28  *                implied warranty of MERCHANTABILITY or FITNESS FOR A
29  *                PARTICULAR PURPOSE.  See the GNU General Public
30  *                License for more details.
31  *
32  *                The GNU General Public License should be included with
33  *                this file.  If not, you can view it at
34  *                http://www.gnu.org/copyleft/gpl.html
35  *                or write to the Free Software Foundation, Inc., 59
36  *                Temple Place - Suite 330, Boston, MA  02111-1307, USA.
37  *
38  * Revisions   :
39  *    $Log: acconfig.h,v $
40  *    Revision 1.7  2001/07/25 22:53:59  jongfoster
41  *    Will #error if pthreads is enabled under BeOs
42  *
43  *    Revision 1.6  2001/07/15 17:54:29  jongfoster
44  *    Renaming #define STATIC to STATIC_PCRE
45  *    Adding new #define FEATURE_PTHREAD that will be used to enable
46  *    POSIX threads support.
47  *
48  *    Revision 1.5  2001/07/13 13:48:37  oes
49  *     - (Fix:) Copied CODE_STATUS #define from config.h.in
50  *     - split REGEX #define into REGEX_GNU and REGEX_PCRE
51  *       and removed PCRE.
52  *       (REGEX = REGEX_GNU || REGEX_PCRE per project.h)
53  *     - Moved STATIC (for pcre) here from Makefile.in
54  *     - Introduced STATIC_PCRS #define to allow for dynaimc linking with
55  *       libpcrs
56  *     - Removed PCRS #define, since pcrs is now needed for CGI anyway
57  *
58  *    Revision 1.4  2001/05/29 09:50:24  jongfoster
59  *    Unified blocklist/imagelist/permissionslist.
60  *    File format is still under discussion, but the internal changes
61  *    are (mostly) done.
62  *
63  *    Also modified interceptor behaviour:
64  *    - We now intercept all URLs beginning with one of the following
65  *      prefixes (and *only* these prefixes):
66  *        * http://i.j.b/
67  *        * http://ijbswa.sf.net/config/
68  *        * http://ijbswa.sourceforge.net/config/
69  *    - New interceptors "home page" - go to http://i.j.b/ to see it.
70  *    - Internal changes so that intercepted and fast redirect pages
71  *      are not replaced with an image.
72  *    - Interceptors now have the option to send a binary page direct
73  *      to the client. (i.e. ijb-send-banner uses this)
74  *    - Implemented show-url-info interceptor.  (Which is why I needed
75  *      the above interceptors changes - a typical URL is
76  *      "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
77  *      The previous mechanism would not have intercepted that, and
78  *      if it had been intercepted then it then it would have replaced
79  *      it with an image.)
80  *
81  *    Revision 1.3  2001/05/26 01:26:34  jongfoster
82  *    New #define, WIN_GUI_EDIT, enables the (embryonic) Win32 GUI editor.
83  *    This #define cannot be set from ./configure - there's no point, it
84  *    doesn't work yet.  See feature request # 425722
85  *
86  *    Revision 1.2  2001/05/22 17:43:35  oes
87  *
88  *    - Enabled filtering banners by size rather than URL
89  *      by adding patterns that replace all standard banner
90  *      sizes with the "Junkbuster" gif to the re_filterfile
91  *
92  *    - Enabled filtering WebBugs by providing a pattern
93  *      which kills all 1x1 images
94  *
95  *    - Added support for PCRE_UNGREEDY behaviour to pcrs,
96  *      which is selected by the (nonstandard and therefore
97  *      capital) letter 'U' in the option string.
98  *      It causes the quantifiers to be ungreedy by default.
99  *      Appending a ? turns back to greedy (!).
100  *
101  *    - Added a new interceptor ijb-send-banner, which
102  *      sends back the "Junkbuster" gif. Without imagelist or
103  *      MSIE detection support, or if tinygif = 1, or the
104  *      URL isn't recognized as an imageurl, a lame HTML
105  *      explanation is sent instead.
106  *
107  *    - Added new feature, which permits blocking remote
108  *      script redirects and firing back a local redirect
109  *      to the browser.
110  *      The feature is conditionally compiled, i.e. it
111  *      can be disabled with --disable-fast-redirects,
112  *      plus it must be activated by a "fast-redirects"
113  *      line in the config file, has its own log level
114  *      and of course wants to be displayed by show-proxy-args
115  *      Note: Boy, all the #ifdefs in 1001 locations and
116  *      all the fumbling with configure.in and acconfig.h
117  *      were *way* more work than the feature itself :-(
118  *
119  *    - Because a generic redirect template was needed for
120  *      this, tinygif = 3 now uses the same.
121  *
122  *    - Moved GIFs, and other static HTTP response templates
123  *      to project.h
124  *
125  *    - Many minor fixes
126  *
127  *    - Removed some >400 CRs again (Jon, you really worked
128  *      a lot! ;-)
129  *
130  *    Revision 1.1.1.1  2001/05/15 13:58:45  oes
131  *    Initial import of version 2.9.3 source tree
132  *
133  *
134  *********************************************************************/
135 \f
136 @TOP@
137
138 /*
139  * Version number - Major (X._._)
140  */
141 #undef VERSION_MAJOR
142
143 /*
144  * Version number - Minor (_.X._)
145  */
146 #undef VERSION_MINOR
147
148 /*
149  * Version number - Point (_._.X)
150  */
151 #undef VERSION_POINT
152
153 /*
154  * Version number, as a string
155  */
156 #undef VERSION
157
158 /*
159  * Status of the code: alpha, beta or stable
160  */
161 #undef CODE_STATUS
162
163 /*
164  * Regular expression matching for URLs.  (Highly recommended).
165  * If neither of these are defined then you can ony use prefix matching.
166  * Don't bother to change this here! Use configure instead.
167  */
168 #undef REGEX_GNU
169 #undef REGEX_PCRE
170
171 /* 
172  * Should pcre be statically built in instead of linkling with libpcre?
173  * (This is determined by configure depending on the availiability of
174  * libpcre and user preferences). The name is ugly, but pcre needs it.
175  * Don't bother to change this here! Use configure instead.
176  */
177 #undef STATIC_PCRE
178
179 /* 
180  * Should pcrs be statically built in instead of linkling with libpcrs?
181  * (This is determined by configure depending on the availiability of
182  * libpcrs and user preferences).
183  * Don't bother to change this here! Use configure instead.
184  */
185 #undef STATIC_PCRS
186
187 /*
188  * Allow JunkBuster to be "disabled" so it is just a normal non-blocking
189  * non-anonymizing proxy.  This is useful if you're trying to access a
190  * blocked or broken site - just change the setting in the config file
191  * and send a SIGHUP (UN*X), or use the handy "Disable" menu option (Windows
192  * GUI).
193  */
194 #undef TOGGLE
195
196 /*
197  * If a stream is compressed via gzip (Netscape specific I think), then
198  * it cannot be modified with Perl regexps.  This forces it to be 
199  * uncompressed.
200  */
201 #undef DENY_GZIP
202
203 /*
204  * Enables statistics function.
205  */
206 #undef STATISTICS
207
208 /*
209  * Bypass filtering for 1 page only
210  */
211 #undef FORCE_LOAD
212
213 /*
214  * Locally redirect remote script-redirect URLs
215  */
216 #undef FAST_REDIRECTS
217
218 /*
219  * Split the show-proxy-args page into a page for each config file.
220  */
221 #undef SPLIT_PROXY_ARGS
222
223 /*
224  * Kills JavaScript popups - window.open, onunload, etc.
225  */
226 #undef KILLPOPUPS
227
228 /*
229  * Support for webDAV - e.g. so Microsoft Outlook can access HotMail e-mail
230  */
231 #undef WEBDAV
232
233 /*
234  * Detect image requests automatically for MSIE.  Will fall back to
235  * other image-detection methods (i.e. "+image" permission) for other
236  * browsers.
237  *
238  * You must also define IMAGE_BLOCKING to use this feature.
239  *
240  * It detects the following header pair as an image request:
241  *
242  * User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
243  * Accept: * / *
244  *
245  * And the following as a HTML request:
246  *
247  * User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
248  * Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, * / *
249  *
250  * And no, I haven't got that backwards - IE is being wierd.
251  *
252  * Known limitations: 
253  * 1) If you press shift-reload on a blocked HTML page, you get
254  *    the image "blocked" page, not the HTML "blocked" page.
255  * 2) Once an image "blocked" page has been sent, viewing it 
256  *    in it's own browser window *should* bring up the HTML
257  *    "blocked" page, but it doesn't.  You need to clear the 
258  *    browser cache to get the HTML version again.
259  *
260  * These limitations are due to IE making inconsistent choices
261  * about which "Accept:" header to send.
262  */
263 #undef DETECT_MSIE_IMAGES
264
265 /*
266  * Allow blocking using images as well as HTML.
267  * If you do not define this then everything is blocked as HTML.
268  *
269  * Note that this is required if you want to use DETECT_MSIE_IMAGES.
270  */
271 #undef IMAGE_BLOCKING
272
273 /*
274  * Allows the use of ACL files to control access to the proxy by IP address.
275  */
276 #undef ACL_FILES
277
278 /*
279  * Allows the use of trust files.
280  */
281 #undef TRUST_FILES
282
283 /*
284  * Allows the use of jar files to capture cookies.
285  */
286 #undef JAR_FILES
287
288 /*
289  * Define this to use the Windows GUI for editing the blocklist.
290  * FIXME: This feature is only partially implemented and does not work
291  * FIXME: This #define can never be set by ./configure.
292  */
293 #undef WIN_GUI_EDIT
294
295 /*
296  * Use POSIX threads instead of native threads.
297  */
298 #undef FEATURE_PTHREAD
299
300 /*
301  * Defined on Solaris only.  Makes the system libraries thread safe.
302  */
303 #undef _REENTRANT
304
305 /*
306  * Defined on Solaris only.  Without this, many important functions are not
307  * defined in the system headers.
308  */
309 #undef __EXTENSIONS__
310
311 /*
312  * Defined always.
313  * FIXME: Don't know what it does or why we need it.
314  * (presumably something to do with MultiThreading?)
315  */
316 #undef __MT__
317
318 @BOTTOM@
319
320 /*
321  * Defined always.
322  * FIXME: Don't know what it does or why we need it.
323  * (presumably something to do with ANSI Standard C?)
324  */
325 #ifndef __STDC__
326 #define __STDC__ 1
327 #endif /* ndef __STDC__ */
328
329 /*
330  * Need to set up this define only for the Pthreads library for
331  * Win32, available from http://sources.redhat.com/pthreads-win32/
332  */
333 #if defined(FEATURE_PTHREAD) && defined(_WIN32)
334 #define __CLEANUP_C
335 #endif /* defined(FEATURE_PTHREAD) && defined(_WIN32) */
336
337 /*
338  * BEOS does not currently support POSIX threads.
339  * This *should* be detected by ./configure, but let's be sure.
340  */
341 #if defined(FEATURE_PTHREAD) && defined(__BEOS__)
342 #error BEOS does not support pthread - please run ./configure again with "--disable-pthread"
343
344 #endif /* defined(FEATURE_PTHREAD) && defined(__BEOS__) */
345
346
347 #endif /* _CONFIG_H */