Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
authorDavid Schmidt <david__schmidt@users.sourceforge.net>
Tue, 18 Jul 2006 14:49:15 +0000 (14:49 +0000)
committerDavid Schmidt <david__schmidt@users.sourceforge.net>
Tue, 18 Jul 2006 14:49:15 +0000 (14:49 +0000)
with what was really the latest development (the v_3_0_branch branch)

272 files changed:
.gitignore
AUTHORS
ChangeLog
GNUmakefile.in
INSTALL
LICENSE
Makefile
README
acconfig.h
actionlist.h [moved from src/actionlist.h with 93% similarity]
actions.c [moved from src/actions.c with 92% similarity]
actions.h [moved from src/actions.h with 92% similarity]
amiga.c [moved from src/amiga.c with 95% similarity]
amiga.h [moved from src/amiga.h with 98% similarity]
cgi.c [moved from src/cgi.c with 87% similarity]
cgi.h [moved from src/cgi.h with 92% similarity]
cgiedit.c [moved from src/cgiedit.c with 94% similarity]
cgiedit.h [moved from src/cgiedit.h with 91% similarity]
cgisimple.c [moved from src/cgisimple.c with 93% similarity]
cgisimple.h [moved from src/cgisimple.h with 98% similarity]
config
configure.in
cygwin.h [moved from src/cygwin.h with 97% similarity]
deanimate.c [moved from src/deanimate.c with 94% similarity]
deanimate.h [moved from src/deanimate.h with 86% similarity]
debian/.gitignore [deleted file]
debian/README.Debian
debian/changelog
debian/compat
debian/control
debian/copyright
debian/doc-base.user
debian/init.d
debian/logrotate
debian/manpages
debian/patches/00list [new file with mode: 0644]
debian/patches/01_local_usermanual.dpatch [new file with mode: 0644]
debian/patches/02_linkcolor.dpatch [new file with mode: 0644]
debian/patches/04_nomultiproxy.dpatch [new file with mode: 0644]
debian/patches/05_defaut_action.dpatch [new file with mode: 0644]
debian/patches/06_8bit_manual.dpatch [new file with mode: 0644]
debian/patches/07_typos.dpatch [new file with mode: 0644]
debian/patches/08_log_pthread.dpatch [new file with mode: 0644]
debian/patches/09_no_identity.dpatch [new file with mode: 0644]
debian/patches/10_backup_doc.dpatch [new file with mode: 0644]
debian/patches/11_backup_autotools.dpatch [new file with mode: 0644]
debian/patches/12_multiple-filters.dpatch [new file with mode: 0644]
debian/patches/13_memory.dpatch [new file with mode: 0644]
debian/patches/14_config.dpatch [new file with mode: 0644]
debian/patches/15_mansection8.dpatch [new file with mode: 0644]
debian/postinst
debian/postrm
debian/rules
debian/watch [new file with mode: 0644]
default.action.master
default.filter
doc/Doxyfile [deleted file]
doc/pcrs.3
doc/pdf/privoxy-developer-manual.pdf
doc/pdf/privoxy-faq.pdf
doc/pdf/privoxy-user-manual.pdf
doc/source/GNUmakefile.in [deleted file]
doc/source/announce.sgml
doc/source/authors.sgml
doc/source/buildsource.sgml
doc/source/config.sgml
doc/source/contacting.sgml
doc/source/copyright.sgml
doc/source/developer-manual.sgml
doc/source/faq.sgml
doc/source/history.sgml
doc/source/install.sgml
doc/source/p-authors.sgml
doc/source/p-config.sgml
doc/source/privoxy-man-page.sgml
doc/source/privoxy.sgml
doc/source/readme.sgml
doc/source/supported.sgml
doc/source/user-manual.sgml
doc/source/webserver/index.sgml
doc/text/developer-manual.txt
doc/text/faq.txt
doc/text/user-manual.txt
doc/webserver/actions/index.php
doc/webserver/actions/step3.php
doc/webserver/config/index.php
doc/webserver/default_page.php [deleted file]
doc/webserver/developer-manual/coding.html
doc/webserver/developer-manual/contact.html
doc/webserver/developer-manual/copyright.html
doc/webserver/developer-manual/cvs.html
doc/webserver/developer-manual/documentation.html
doc/webserver/developer-manual/index.html
doc/webserver/developer-manual/introduction.html
doc/webserver/developer-manual/newrelease.html
doc/webserver/developer-manual/quickstart.html [new file with mode: 0644]
doc/webserver/developer-manual/seealso.html
doc/webserver/developer-manual/testing.html
doc/webserver/developer-manual/webserver-update.html
doc/webserver/faq/configuration.html
doc/webserver/faq/contact.html
doc/webserver/faq/copyright.html
doc/webserver/faq/general.html
doc/webserver/faq/index.html
doc/webserver/faq/installation.html
doc/webserver/faq/misc.html
doc/webserver/faq/trouble.html
doc/webserver/index.html
doc/webserver/man-page/privoxy-man-page.html
doc/webserver/p_doc.css
doc/webserver/p_web.css [deleted file]
doc/webserver/privoxy-index.html
doc/webserver/submit/confirmad.php [new file with mode: 0644]
doc/webserver/submit/index.php [new file with mode: 0644]
doc/webserver/team/09member.jpg [deleted file]
doc/webserver/team/09member_t.jpg [deleted file]
doc/webserver/team/10member.jpg [deleted file]
doc/webserver/team/10member_t.jpg [deleted file]
doc/webserver/team/11member.jpg [deleted file]
doc/webserver/team/11member_t.jpg [deleted file]
doc/webserver/team/12member.jpg [deleted file]
doc/webserver/team/12member_t.jpg [deleted file]
doc/webserver/team/13member.jpg [deleted file]
doc/webserver/team/13member_t.jpg [deleted file]
doc/webserver/team/14member.jpg [deleted file]
doc/webserver/team/14member_t.jpg [deleted file]
doc/webserver/team/15member.jpg [deleted file]
doc/webserver/team/15member_t.jpg [deleted file]
doc/webserver/team/16member.jpg [deleted file]
doc/webserver/team/16member_t.jpg [deleted file]
doc/webserver/team/17member.jpg [deleted file]
doc/webserver/team/17member_t.jpg [deleted file]
doc/webserver/team/18member.jpg [deleted file]
doc/webserver/team/18member_t.jpg [deleted file]
doc/webserver/team/19member.jpg [deleted file]
doc/webserver/team/19member_t.jpg [deleted file]
doc/webserver/team/index.html
doc/webserver/user-manual/actions-file.html
doc/webserver/user-manual/appendix.html
doc/webserver/user-manual/config.html
doc/webserver/user-manual/configuration.html
doc/webserver/user-manual/contact.html
doc/webserver/user-manual/copyright.html
doc/webserver/user-manual/filter-file.html
doc/webserver/user-manual/index.html
doc/webserver/user-manual/installation.html
doc/webserver/user-manual/introduction.html
doc/webserver/user-manual/quickstart.html
doc/webserver/user-manual/seealso.html
doc/webserver/user-manual/startup.html
doc/webserver/user-manual/templates.html
doc/webserver/user-manual/upgradersnote.html
encode.c [moved from src/encode.c with 97% similarity]
encode.h [moved from src/encode.h with 97% similarity]
errlog.c [moved from src/errlog.c with 91% similarity]
errlog.h [moved from src/errlog.h with 84% similarity]
filters.c [moved from src/filters.c with 91% similarity]
filters.h [moved from src/filters.h with 92% similarity]
gateway.c [moved from src/gateway.c with 92% similarity]
gateway.h [moved from src/gateway.h with 98% similarity]
icons/ico00001.ico [moved from src/icons/ico00001.ico with 100% similarity]
icons/ico00002.ico [moved from src/icons/ico00002.ico with 100% similarity]
icons/ico00003.ico [moved from src/icons/ico00003.ico with 100% similarity]
icons/ico00004.ico [moved from src/icons/ico00004.ico with 100% similarity]
icons/ico00005.ico [moved from src/icons/ico00005.ico with 100% similarity]
icons/ico00006.ico [moved from src/icons/ico00006.ico with 100% similarity]
icons/ico00007.ico [moved from src/icons/ico00007.ico with 100% similarity]
icons/ico00008.ico [moved from src/icons/ico00008.ico with 100% similarity]
icons/idle.ico [moved from src/icons/idle.ico with 100% similarity]
icons/os2.ico [moved from src/icons/os2.ico with 100% similarity]
icons/os20.ico [moved from src/icons/os20.ico with 100% similarity]
icons/os21.ico [moved from src/icons/os21.ico with 100% similarity]
icons/os22.ico [moved from src/icons/os22.ico with 100% similarity]
icons/os23.ico [moved from src/icons/os23.ico with 100% similarity]
icons/os24.ico [moved from src/icons/os24.ico with 100% similarity]
icons/os25.ico [moved from src/icons/os25.ico with 100% similarity]
icons/os26.ico [moved from src/icons/os26.ico with 100% similarity]
icons/os27.ico [moved from src/icons/os27.ico with 100% similarity]
icons/os28.ico [moved from src/icons/os28.ico with 100% similarity]
icons/privoxy.ico [moved from src/icons/privoxy.ico with 100% similarity]
jbsockets.c [moved from src/jbsockets.c with 92% similarity]
jbsockets.h [moved from src/jbsockets.h with 94% similarity]
jcc.c [moved from src/jcc.c with 71% similarity]
jcc.h [moved from src/jcc.h with 82% similarity]
killpopup.c [moved from src/killpopup.c with 98% similarity]
killpopup.h [moved from src/killpopup.h with 98% similarity]
list.c [moved from src/list.c with 93% similarity]
list.h [moved from src/list.h with 93% similarity]
loadcfg.c [moved from src/loadcfg.c with 82% similarity]
loadcfg.h [moved from src/loadcfg.h with 95% similarity]
loaders.c [moved from src/loaders.c with 87% similarity]
loaders.h [moved from src/loaders.h with 94% similarity]
miscutil.c [moved from src/miscutil.c with 98% similarity]
miscutil.h [moved from src/miscutil.h with 98% similarity]
mkinstalldirs
parsers.c [moved from src/parsers.c with 82% similarity]
parsers.h [moved from src/parsers.h with 91% similarity]
pcre/config.h
pcre/vc_dftables.dsp [moved from visualc/vc_dftables.dsp with 85% similarity, mode: 0755]
pcrs.c [moved from src/pcrs.c with 93% similarity]
pcrs.h [moved from src/pcrs.h with 98% similarity]
privoxy-generic.init
privoxy-rh.spec
privoxy-suse.spec
privoxy.1
privoxy.init
privoxy.init.suse
privoxy.logrotate
privoxy.monthly [deleted file]
privoxy.weekly [deleted file]
project.h [moved from src/project.h with 92% similarity]
src/ipc.h [deleted file]
src/java/org/privoxy/activityconsole/ActivityConsole.java [deleted file]
src/java/org/privoxy/activityconsole/ActivityConsoleGui.java [deleted file]
src/java/org/privoxy/activityconsole/ActivityConsoleGuiUtil.java [deleted file]
src/java/org/privoxy/activityconsole/ActivityConsoleResources.java [deleted file]
src/java/org/privoxy/activityconsole/BevelArrowIcon.java [deleted file]
src/java/org/privoxy/activityconsole/BlankIcon.java [deleted file]
src/java/org/privoxy/activityconsole/ColumnRef.java [deleted file]
src/java/org/privoxy/activityconsole/Copyright.java [deleted file]
src/java/org/privoxy/activityconsole/ServerThread.java [deleted file]
src/java/org/privoxy/activityconsole/SortButtonRenderer.java [deleted file]
src/java/org/privoxy/activityconsole/SortableTableModel.java [deleted file]
src/java/org/privoxy/activityconsole/Stat.java [deleted file]
src/java/org/privoxy/activityconsole/StatWidget.java [deleted file]
src/java/org/privoxy/activityconsole/StatWidgetThread.java [deleted file]
src/java/org/privoxy/activityconsole/StringUtil.java [deleted file]
src/java/org/privoxy/activityconsole/TableSorter.java [deleted file]
src/java/org/privoxy/activityconsole/acon.bat [deleted file]
src/java/org/privoxy/activityconsole/acon.cmd [deleted file]
src/java/org/privoxy/activityconsole/acon.manifest [deleted file]
src/java/org/privoxy/activityconsole/acon.sh [deleted file]
src/stats.c [deleted file]
src/stats.h [deleted file]
ssplit.c [moved from src/ssplit.c with 98% similarity]
ssplit.h [moved from src/ssplit.h with 97% similarity]
standard.action
templates/blocked
templates/cgi-error-disabled
templates/connect-failed
templates/edit-actions-add-url-form
templates/edit-actions-for-url
templates/edit-actions-for-url-filter
templates/edit-actions-list
templates/edit-actions-list-section
templates/edit-actions-list-url
templates/edit-actions-remove-url-form
templates/edit-actions-url-form
templates/mod-title
templates/no-such-domain
templates/show-status
urlmatch.c [moved from src/urlmatch.c with 89% similarity]
urlmatch.h [moved from src/urlmatch.h with 98% similarity]
user.action
user.filter [new file with mode: 0644]
utils/cvs2cl.pl [deleted file]
utils/filter2docs.pl [new file with mode: 0755]
utils/ldp_print/ldp_print
vc_config_pthreads.h [moved from visualc/vc_config_pthreads.h with 99% similarity]
vc_config_winthreads.h [moved from visualc/vc_config_winthreads.h with 73% similarity]
vc_console.dsp [moved from visualc/vc_console.dsp with 76% similarity]
vc_privoxy.dsp [moved from visualc/vc_privoxy.dsp with 76% similarity]
vc_privoxy.dsw [moved from visualc/vc_privoxy.dsw with 89% similarity]
visualc/.gitignore [deleted file]
w32.rc [moved from src/w32res.rc with 89% similarity]
w32log.c [moved from src/w32log.c with 93% similarity]
w32log.h [moved from src/w32log.h with 93% similarity]
w32res.h [moved from src/w32res.h with 95% similarity]
w32taskbar.c [moved from src/w32taskbar.c with 91% similarity]
w32taskbar.h [moved from src/w32taskbar.h with 97% similarity]
win32.c [moved from src/win32.c with 91% similarity]
win32.h [moved from src/win32.h with 90% similarity]

index b61a8d6..bff9f85 100644 (file)
@@ -29,9 +29,6 @@ core
 *.txt
 GNUmakefile
 Makefile
-autom4te.cache
-build-stamp
-configure-stamp
 configure
 config.base
 config.cache
@@ -57,3 +54,4 @@ vc_release
 vc_release_winthr
 w32.aps
 w32.res
+.project
diff --git a/AUTHORS b/AUTHORS
index f0e0f89..aff9e9c 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -4,18 +4,19 @@
 Current Developement Team:
 
  Hal Burgiss (docs)
- Jon Foster
  Andreas Oesterhelt
  David Schmidt (OS/2, Mac OSX ports)
  
+
 
 Current and Former Project Contributors:
 
  Johny Agotnes 
  Rodrigo Barbosa (RPM specfiles)
  Moritz Barsnick
+ Brian Dessent
  Mattes Dolak 
+ Jon Foster
  Karsten Hopp (Red Hat)
  Alexander Lazic
  Daniel Leite
index 9ddb8a4..a64af74 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,15 +1,63 @@
 --------------------------------------------------------------------
 ChangeLog for Privoxy
 --------------------------------------------------------------------
-*** Version 3.1.1  ***
-- Major re-write of make install target. Add uninstall and
-  install-strip targets. Add user and group testing to configure.
-- Add an INSTALL file, and remove these instructions from README.
-- Add a demoronizer filter, which fixes MS's abuse of std charsets
-  (common cases anyway).
-- Add a 'dashboard' to watch activity in real-time - implemented
-  as a GUI in Java
-- Add the ability to specify the 'blocked' image to serve
+*** Since 3.0.3 ***
+- Multiple filter files can now be specified in config.
+- Added jpeg filtering to defend against MS jpeg vulnerability MS04-028
+- Removed the "arbitrary" 1000 filter limit - addresses tracker #911950
+- Thanks to Jindrich Makovicka for a race condition fix for the log 
+  file.  The race condition remains for non-pthread implementations.
+  Reference patch #1175720.
+
+*** Version 3.0.3 ***
+
+- Fixed yet another two memory leaks. Process growth seems stopped now.
+- Further tightened security against malicious toggle-off links.
+- Excluded text/plain MIME types from filtering. This fixes a
+  couple of client-crashing, download corruption and
+  Privoxy performance issues, whose root cause lies in
+  web servers labelling content of unknown type as text/plain.
+- Assorted fixes for POSIX compliance, signal handling, graceful
+  termination, compiler warnings, OSX support, Win32 systray,
+  error logging, hostname wildcards, correct detection of NetBSD.
+- Workarounds for client (iTunes etc) and server (PHP < 4.2.3) bugs
+  including the notorious "blank page" problem.
+- Various filter improvements; most notably the unsolicited-popups
+  filter became less destructive     
+- Major revamp of the actions file
+       
+*** Version 3.0.2 ***
+
+- Fixed two memory leaks, one serious
+- Fixed bug in pcrs which could cause crashes with user-defined filters
+- Fixed bug in domain name matching
+- Assorted small fixes (Win32 menu, CGI URL editor, ..) 
+- Added basic support for the OPTIONS and TRACE http methods
+- Added workaround for Bug in Mac OSX that made Privoxy crash occasionally
+- Refined the default action file through >400 items of user feedback
+- Filter changes:
+  - Assorted refinements, optimizations and fixes in the js-annoyances,
+    img-reorder, banners-by-size, banners-by-link, webbugs, refresh-tags,
+    html-annoyances, content-cookies and fun filters
+  - Replaced filter "popups" by choice between two modes:
+    - "unsolicited-popups" tries to catch only the unsolicited ones
+    - "all-popups" tries to kill them all (as before)
+  - New filter "tiny-textforms" Help those tiny or hard-wrap textareas. 
+  - New filter "jumping-windows" that prevents windows from resizing
+    and moving themselves
+  - New filter "demoronizer" which fixes MS's abuse of std charsets
+    (common cases anyway).
+  - Replaced "nimda" with more general "ie-exploits" filter in which
+    all filters for exploits shall be collected
+- Improved cookie logging
+- Rewrote make install target. Added uninstall and install-strip
+  targets.
+- Fixed a potential (application-level, NOT OS-level!) security
+  problem involving remote toggling and action file manipulation
+  by mailicious websites.
+- Added ability to chroot (thanks to Sviatoslav Sviridov)
+- Added more action aliases for prehistoric action names
+- Add Slackware support to Makefile.
 
 *** Version 3.0  ***
 
index 18601df..65c2b4b 100644 (file)
@@ -1,8 +1,8 @@
 # Note:  Makefile is built automatically from Makefile.in
 #
-# $Id: GNUmakefile.in,v 1.138 2003/10/17 17:51:58 oes Exp $
+# $Id: GNUmakefile.in,v 1.104.2.28 2004/06/10 17:06:05 hal9 Exp $
 #
-# Written by and Copyright (C) 2001 the SourceForge
+# Written by and Copyright (C) 2001 - 2004 the SourceForge
 # Privoxy team. http://www.privoxy.org/
 #
 # Based on the Internet Junkbuster originally written
@@ -48,23 +48,13 @@ SNAPVERSION   = $(RPM_VERSION)-$(shell date "+%Y%m%d")
 
 
 #############################################################################
-# Source directories
+# "make install" directories and variables
 #############################################################################
-DIR_PRIVOXY_ROOT     := .
-DIR_PRIVOXY_SRC      := $(DIR_PRIVOXY_ROOT)/src
-DIR_PRIVOXY_SRC_PCRE := $(DIR_PRIVOXY_ROOT)/pcre
-DIR_PRIVOXY_SRC_JAVA := $(DIR_PRIVOXY_ROOT)/src/java
-DIR_PRIVOXY_OBJ      := $(DIR_PRIVOXY_ROOT)/obj
 
-#############################################################################
-# "make install" settings
-#############################################################################
-
-# User and Group settings
-USER   = @USER@
-GROUP  = @GROUP@
+#User Group paras
+USER         = @USER@
+GROUP     = @GROUP@
 
-# PATHS set from configure
 prefix       = @prefix@
 exec_prefix  = @exec_prefix@
 CONF_BASE    = @sysconfdir@
@@ -88,53 +78,52 @@ PIDS_DEST    = $(VAR_DEST)/run
 # finally if $prefix=/usr/local and VAR_DEST=$prefix/var it 
 # changes this to /var for storing the logs and pidfile
 
-# Where to find docs. The install goes to $share_dest/doc/privoxy.
-DOK_WEB    = doc/webserver/
+# used in source dir only, the install goes to $share_dest/doc/privoxy
+DOK_WEB = doc/webserver/
 
 # Install usage should be compatible with install-sh.
 INSTALL    = @INSTALL@
-
-# Permissions used during installation.
-# Binaries (daemon, init scripts)
+# Binaries
 BIN_MODE        = 0755
-# Files daemon writes to: *action, trust and logs.
-RWD_MODE   = 0660
-# Misc files, docs, etc.
-RA_MODE    = 0664
+# Support files, docs, etc.
+RA_MODE   = 0664
 # Directory
 DIR_MODE   = 0755
-
+# Files daemon writes to.
+RWD_MODE   = 0660
 INSTALL_P  = -m $(BIN_MODE)  
 INSTALL_T  = -m $(RA_MODE)
 INSTALL_D  = -m $(DIR_MODE) -d
 INSTALL_R  = -m $(RWD_MODE)
+
 # install options for superuser install
-#INSTALL_S  = -g  -o  
+#INSTALL_S  = -g @GROUP@ -o @USER@ 
 
 #############################################################################
-# Build and Install tools
+# Build tools
 #############################################################################
 
 PROGRAM    = privoxy@EXEEXT@
 CC         = @CC@
 ECHO       = echo
 GZIP_PROG  = gzip
+
 # id -u is not universal. FIXME: need to set from configure. Breaks on
 # Solaris.
 #ID         = id -u
 ID         = id
 LD         = @CC@
 RM         = rm -f
+CP         = cp -f
 RMDIR      = rmdir
 MKDIR      = ./mkinstalldirs
 STRIP_PROG = strip
-CP         = cp -f
 SED          = sed
 GREP       = grep
 CAT        = cat
 RPM        = rpm
-RPMBUILD   = rpm
-MV        = mv
+RPMBUILD   = rpmbuild
+MV           = mv
 TAR        = tar
 LN         = ln
 TOUCH      = touch
@@ -143,24 +132,29 @@ CHMOD      = chmod
 CHOWN      = chown
 CHGRP      = chgrp
 GROUPS     = groups
-DOC_STATUS = @DOC_STATUS@
-# Note: Please make sure that -d ldp.dsl\#html stays the last option to
-#       $(JADEBIN), because for some targets "-notoc" will be appended
-#       to it (--> "ldp.dsl\#html-notoc"). 
+WDUMP      = @WDUMP@ -dump
+JADECAT    = @JADECAT@
+JADEBIN    = @JADEBIN@
+DB         = $(JADEBIN) $(JADECAT) -ihtml -t sgml  -D.. -d ldp.dsl\#html
+DB2HTML    = @DB2HTML@
+MAN2HTML   = @MAN2HTML@
+G2H_CMD    = groff -mandoc -Thtml
 TARGET_OS  = @host@
 PERL       = perl
-DOC_DIR    = doc/source
+DOC_DIR         = doc/source
+DOC_TMP    = $(DOC_DIR)/tmp
+DOC_STATUS = @DOC_STATUS@
 
 # Program to do LF->CRLF
 #
-# The sed version should be the most portable, but it doesn't work for me,
+# The sed version should be the most portable, but it doesn't for for me,
 # the other two do.  FIXME.
 #   - Jon
 #DOSFILTER  = $(SED) -e $$'s,$$,\r,'
 #DOSFILTER  = gawk -v ORS='\r\n' '{print $0;}'
 DOSFILTER  = $(PERL) -p -e 's/\n/\r\n/'
 CVSROOT    = :pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa
-TMPDIR     := $(shell mktemp -d /tmp/$(PROGRAM).XXXXXX)
+#TMPDIR     := $(shell mktemp -d /tmp/$(PROGRAM).XXXXXX)
 
 #############################################################################
 # Setup for make distribution rh and suse for now 
@@ -183,64 +177,45 @@ DOC_FILES = AUTHORS LICENSE README ChangeLog INSTALL \
                `find doc/text/ -type f | grep -v "CVS" | grep -v "\.\#" | grep -v ".*~" | grep -v ".cvsignore" | grep -v "TAGS"` \
                `find doc/webserver/ -name "*.html" | grep -v "\(webserver\|team\)\/index\.html"` \
                `find doc/webserver/ -name "*.css"` \
-                privoxy.1
+                privoxy.1 \
+               doc/pdf/*.pdf
 
 #############################################################################
 # Filenames and libraries
 #############################################################################
 
-C_SRC  =          \
-  $(DIR_PRIVOXY_SRC)/actions.c   \
-  $(DIR_PRIVOXY_SRC)/cgi.c       \
-  $(DIR_PRIVOXY_SRC)/cgiedit.c   \
-  $(DIR_PRIVOXY_SRC)/cgisimple.c \
-  $(DIR_PRIVOXY_SRC)/deanimate.c \
-  $(DIR_PRIVOXY_SRC)/encode.c    \
-  $(DIR_PRIVOXY_SRC)/errlog.c    \
-  $(DIR_PRIVOXY_SRC)/filters.c   \
-  $(DIR_PRIVOXY_SRC)/gateway.c   \
-  $(DIR_PRIVOXY_SRC)/jbsockets.c \
-  $(DIR_PRIVOXY_SRC)/jcc.c       \
-  $(DIR_PRIVOXY_SRC)/killpopup.c \
-  $(DIR_PRIVOXY_SRC)/list.c      \
-  $(DIR_PRIVOXY_SRC)/loadcfg.c   \
-  $(DIR_PRIVOXY_SRC)/loaders.c   \
-  $(DIR_PRIVOXY_SRC)/miscutil.c  \
-  $(DIR_PRIVOXY_SRC)/parsers.c   \
-  $(DIR_PRIVOXY_SRC)/ssplit.c    \
-  $(DIR_PRIVOXY_SRC)/urlmatch.c
-
-C_OBJS = $(C_SRC:$(DIR_PRIVOXY_SRC)/%.c=$(DIR_PRIVOXY_OBJ)/%.@OBJEXT@)
-C_HDRS = $(C_SRC:.c=.h) $(DIR_PRIVOXY_SRC)/project.h $(DIR_PRIVOXY_SRC)/actionlist.h
-
-W32_SRC   = @WIN_ONLY@$(DIR_PRIVOXY_SRC)/w32log.c $(DIR_PRIVOXY_SRC)/w32taskbar.c $(DIR_PRIVOXY_SRC)/win32.c
-W32_FILES = @WIN_ONLY@$(DIR_PRIVOXY_OBJ)/w32res.res
-W32_OBJS  = @WIN_ONLY@$(W32_SRC:$(DIR_PRIVOXY_SRC)/%.c=$(DIR_PRIVOXY_OBJ)/%.@OBJEXT@) $(W32_FILES)
-W32_HDRS  = @WIN_ONLY@$(DIR_PRIVOXY_SRC)/w32log.h $(DIR_PRIVOXY_SRC)/w32taskbar.h $(DIR_PRIVOXY_SRC)/win32.h $(DIR_PRIVOXY_SRC)/w32res.h
+C_SRC  = actions.c cgi.c cgiedit.c cgisimple.c deanimate.c encode.c \
+         errlog.c filters.c gateway.c jbsockets.c jcc.c killpopup.c \
+         list.c loadcfg.c loaders.c miscutil.c parsers.c ssplit.c \
+         urlmatch.c
+
+C_OBJS = $(C_SRC:.c=.@OBJEXT@)
+C_HDRS = $(C_SRC:.c=.h) project.h actionlist.h
+
+W32_SRC   = @WIN_ONLY@w32log.c w32taskbar.c win32.c
+W32_FILES = @WIN_ONLY@w32.res
+W32_OBJS  = @WIN_ONLY@$(W32_SRC:.c=.@OBJEXT@) $(W32_FILES)
+W32_HDRS  = @WIN_ONLY@w32log.h w32taskbar.h win32.h w32res.h
 W32_LIB   = @WIN_ONLY@-lwsock32 -lcomctl32
 W32_INIS  = @WIN_ONLY@config.txt trust.txt
 
-PCRS_SRC     = @STATIC_PCRS_ONLY@$(DIR_PRIVOXY_SRC)/pcrs.c
-PCRS_OBJS    = @STATIC_PCRS_ONLY@$(PCRS_SRC:$(DIR_PRIVOXY_SRC)/%.c=$(DIR_PRIVOXY_OBJ)/%.@OBJEXT@)
+PCRS_SRC     = @STATIC_PCRS_ONLY@pcrs.c
+PCRS_OBJS    = @STATIC_PCRS_ONLY@$(PCRS_SRC:.c=.@OBJEXT@)
 PCRS_HDRS    = @STATIC_PCRS_ONLY@$(PCRS_SRC:.c=.h)
 
-PCRE_SRC     = @STATIC_PCRE_ONLY@$(DIR_PRIVOXY_SRC_PCRE)/get.c $(DIR_PRIVOXY_SRC_PCRE)/maketables.c $(DIR_PRIVOXY_SRC_PCRE)/study.c $(DIR_PRIVOXY_SRC_PCRE)/pcre.c
-PCRE_OBJS    = @STATIC_PCRE_ONLY@$(PCRE_SRC:$(DIR_PRIVOXY_SRC_PCRE)/%.c=$(DIR_PRIVOXY_OBJ)/%.@OBJEXT@)
-PCRE_HDRS    = @STATIC_PCRE_ONLY@$(DIR_PRIVOXY_SRC_PCRE)/config.h $(DIR_PRIVOXY_SRC_PCRE)/chartables.c $(DIR_PRIVOXY_SRC_PCRE)/internal.h $(DIR_PRIVOXY_SRC_PCRE)/pcre.h
-
-ACTIVITY_SRC  = @ACTIVITY_ONLY@$(DIR_PRIVOXY_SRC)/stats.c
-ACTIVITY_OBJS = @ACTIVITY_ONLY@$(ACTIVITY_SRC:$(DIR_PRIVOXY_SRC)/%.c=$(DIR_PRIVOXY_OBJ)/%.@OBJEXT@)
-ACTIVITY_HDRS = @ACTIVITY_ONLY@$(ACTIVITY_SRC:.c=.h) $(DIR_PRIVOXY_SRC)/ipc.h
+PCRE_SRC     = @STATIC_PCRE_ONLY@pcre/get.c pcre/maketables.c pcre/study.c pcre/pcre.c
+PCRE_OBJS    = @STATIC_PCRE_ONLY@$(PCRE_SRC:.c=.@OBJEXT@)
+PCRE_HDRS    = @STATIC_PCRE_ONLY@pcre/config.h pcre/chartables.c pcre/internal.h pcre/pcre.h
 
 # No REGEX (maybe because dynamically linked pcreposix):
 REGEX_SRC    =
-@STATIC_PCRE_ONLY@REGEX_SRC = $(DIR_PRIVOXY_SRC_PCRE)/pcreposix.c
+@STATIC_PCRE_ONLY@REGEX_SRC = pcre/pcreposix.c
 
-REGEX_OBJS   = $(REGEX_SRC:$(DIR_PRIVOXY_SRC_PCRE)/%.c=$(DIR_PRIVOXY_OBJ)/%.@OBJEXT@)
+REGEX_OBJS   = $(REGEX_SRC:.c=.@OBJEXT@)
 REGEX_HDRS   = $(REGEX_SRC:.c=.h)
 
 # Dependencies introduced by #include "project.h".
-PROJECT_H_DEPS = $(DIR_PRIVOXY_SRC)/project.h $(REGEX_HDRS) $(PCRS_HDRS) @STATIC_PCRE_ONLY@$(DIR_PRIVOXY_SRC_PCRE)/pcre.h
+PROJECT_H_DEPS = project.h $(REGEX_HDRS) $(PCRS_HDRS) @STATIC_PCRE_ONLY@pcre/pcre.h
 
 # Socket libraries for platforms that need them explicitly defined
 SOCKET_LIB   = @SOCKET_LIB@
@@ -248,9 +223,9 @@ SOCKET_LIB   = @SOCKET_LIB@
 # PThreads library, if needed.
 PTHREAD_LIB  = @PTHREAD_ONLY@@PTHREAD_LIB@
 
-SRCS         = $(C_SRC)  $(W32_SRC)  $(PCRS_SRC)  $(PCRE_SRC)  $(REGEX_SRC)  $(ACTIVITY_SRC)
-OBJS         = $(C_OBJS) $(W32_OBJS) $(PCRS_OBJS) $(PCRE_OBJS) $(REGEX_OBJS) $(ACTIVITY_OBJS)
-HDRS         = $(C_HDRS) $(W32_HDRS) $(PCRS_HDRS) $(PCRE_OBJS) $(REGEX_HDRS) $(ACTIVITY_HDRS)
+SRCS         = $(C_SRC)  $(W32_SRC)  $(PCRS_SRC)  $(PCRE_SRC)  $(REGEX_SRC)
+OBJS         = $(C_OBJS) $(W32_OBJS) $(PCRS_OBJS) $(PCRE_OBJS) $(REGEX_OBJS)
+HDRS         = $(C_HDRS) $(W32_HDRS) $(PCRS_HDRS) $(PCRE_OBJS) $(REGEX_HDRS)
 LIBS         = @LIBS@ $(W32_LIB) $(SOCKET_LIB) $(PTHREAD_LIB)
 
 
@@ -279,31 +254,23 @@ LDFLAGS = $(DEBUG_CFLAGS) $(SPECIAL_CFLAGS)
 #
 # There should NOT be any targets above this line.
 #############################################################################
-all: user-warned-once $(PROGRAM) default.action
+all: $(PROGRAM) default.action
 
 
 #############################################################################
 # Phony targets
 #############################################################################
-.PHONY: all inifiles redhat-dist redhat-upload redhat-test solaris-dist suse-dist \
+.PHONY: all inifiles redhat-dist redhat-upload solaris-dist suse-dist \
 suse-upload win-dist tarball-dist dok redhat-dok webserver clean clobber tags \
-install conectiva-spec conectiva-dist conectiva-upload debian-dist \
-debian-upload ensure-wdump ensure-jadebin ensure-dkprefix CONF_DEST LOG_DEST \
-PID_DEST check_doc install-strip uninstall GROUP_T java-activity-console
-
+install conectiva-spec conectiva-dist conectiva-upload CONF_DEST LOG_DEST \
+PID_DEST check_doc install-strip uninstall GROUP_T
 
 #############################################################################
-# Compile command
+# Define this explicitly because Solaris is broken!
 #############################################################################
-$(DIR_PRIVOXY_OBJ)/%.o: $(DIR_PRIVOXY_SRC)/%.c $(DIR_PRIVOXY_OBJ)
+%.o: %.c
        $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
 
-$(DIR_PRIVOXY_OBJ)/%.o: $(DIR_PRIVOXY_SRC_PCRE)/%.c $(DIR_PRIVOXY_OBJ)
-       $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
-
-$(DIR_PRIVOXY_OBJ):
-       $(CHMOD) $(DIR_MODE) $(MKDIR)
-       $(MKDIR) obj
 
 #############################################################################
 # Strip master copy comments from default.action:
@@ -355,40 +322,6 @@ dist-check:
            if [ "$$answer" != "yes i am sure" ]; then exit 1; fi \
          fi;
 
-#############################################################################
-# One-time warning for unstable trunk version
-#############################################################################
-user-warned-once:
-       @if [ ! -f .user-has-been-warned ]; then \
-           $(ECHO) "****************************************************"; \
-           $(ECHO) "***                                              ***"; \
-           $(ECHO) "***       WARNING: LOTS OF TROUBLE AHEAD!        ***"; \
-           $(ECHO) "***       -------------------------------        ***"; \
-           $(ECHO) "***                                              ***"; \
-           $(ECHO) "*** You are about to compile the trunk (aka CVS  ***"; \
-           $(ECHO) "*** HEAD) version of Privoxy which contains a    ***"; \
-           $(ECHO) "*** zillion known bugs that are already fixed    ***"; \
-           $(ECHO) "*** in the stable branch, along with unfinished  ***"; \
-           $(ECHO) "*** features which will annoy you to death.      ***"; \
-           $(ECHO) "***                                              ***"; \
-           $(ECHO) "*** Unless you are developing or alpha-testing   ***"; \
-           $(ECHO) "*** Privoxy, THIS VERSION IS NOT FOR YOU! It is  ***"; \
-           $(ECHO) "*** UNSTABLE, LEAKY, UNDOCUMENTED, UNSUPPORTED!  ***"; \
-           $(ECHO) "***                                              ***"; \
-           $(ECHO) "*** If the latest release from www.privoxy.org   ***"; \
-           $(ECHO) "*** doesn't satisfy your bleeding-edge fetish,   ***"; \
-           $(ECHO) "*** check out the stable branch from CVS using   ***"; \
-           $(ECHO) "*** -r v_3_0_branch or use a snapshot from       ***"; \
-           $(ECHO) "*** http://www.oesterhelt.org/privoxy-snapshots/ ***"; \
-           $(ECHO) "***                                              ***"; \
-           $(ECHO) "*****************************************************"; \
-           $(ECHO) "Type \"yes i am sure\" if you are sure that you"; \
-           $(ECHO) -n "really want to proceed: "; \
-           read answer; \
-           if [ "$$answer" != "yes i am sure" ]; then exit 1; fi; \
-           touch .user-has-been-warned; \
-         fi;
-
 
 #############################################################################
 # create tar.gz from CVS:
@@ -400,6 +333,7 @@ user-warned-once:
 # This creates a tar.gz and spec-file for a Red Hat 6.x version.
 #############################################################################
 create-snapshot:
+       TMPDIR=$(shell mktemp -d /tmp/$(PROGRAM).XXXXXX)
        @tag=`cvs -d $(CVSROOT) status Makefile | awk ' /Sticky Tag/ { print $$3 } '` 2> /dev/null; \
        [ x"$$tag" = x"(none)" ] && tag=HEAD; \
        echo "*** Creating package from $$tag!"; \
@@ -424,10 +358,10 @@ create-snapshot:
        fi; \
        $(RM) $(TMPFILE); \
        cd $(TMPDIR)/current; \
-       $(TAR) --exclude=".cvsignore" --exclude="CVS" --exclude="privoxy-suse.spec" \
-                -czf $(TMPDIR)/$(PROGRAM)-rh-$(VERSION).tar.gz .; \
-       $(TAR) --exclude=".cvsignore" --exclude="CVS" --exclude="privoxy-rh.spec" \
-                -czf $(TMPDIR)/$(PROGRAM)-suse-$(VERSION).tar.gz .
+       $(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude \
+               "privoxy-suse.spec" -czf $(TMPDIR)/$(PROGRAM)-rh-$(VERSION).tar.gz .; \
+       $(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude \
+               "privoxy-rh.spec" -czf $(TMPDIR)/$(PROGRAM)-suse-$(VERSION).tar.gz .
        @$(MV) -f $(TMPDIR)/$(PROGRAM)-rh-$(VERSION).tar.gz .
        @$(MV) -f $(TMPDIR)/$(PROGRAM)-suse-$(VERSION).tar.gz .
        @$(RM) -rf $(TMPDIR)
@@ -444,9 +378,8 @@ create-snapshot:
 create-archive:
        make SNAPVERSION=$(SNAPVERSION) create-snapshot
 
-
 #############################################################################
-# RPM specific stuff (SuSE or Redhat, ..)
+# RPM specifice stuff (SuSE or Redhat, ..)
 #############################################################################
 rpm-stuff: dist-check clean clobber 
        for dir in RPMS SRPMS BUILD SOURCES SPECS; do \
@@ -493,8 +426,8 @@ conectiva-spec:
 #############################################################################
 conectiva-dist: rpm-stuff conectiva-spec
 
-       $(TAR) --exclude=".cvsignore" --exclude="CVS" --exclude="privoxy-suse.spec" --exclude="privoxy-rh.spec" --exclude="PACKAGERS" -czf $(TAR_ARCH) .
-       $(RPM) --clean -ta  $(TAR_ARCH)
+       $(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude "privoxy-suse.spec" --exclude "privoxy-rh.spec" --exclude "PACKAGERS" -czf $(TAR_ARCH) .
+       $(RPMBUILD) --clean -ta  $(TAR_ARCH)
        if [ -f $(TAR_ARCH) ]; then  $(RM) $(TAR_ARCH); fi
 
 conectiva-upload: check-release
@@ -505,14 +438,14 @@ conectiva-upload: check-release
 #############################################################################
 redhat-dist: rpm-stuff
        echo $(CONFIG_FILES)
-       $(TAR) --exclude=".cvsignore" --exclude="CVS" --exclude="privoxy-suse.spec" --exclude="privoxy-cl.spec" --exclude="PACKAGERS" -czf $(TAR_ARCH) .
+       $(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude "privoxy-suse.spec" --exclude "privoxy-cl.spec" --exclude "PACKAGERS" -czf $(TAR_ARCH) .
        $(RPMBUILD) --clean -ta  $(TAR_ARCH)
        if [ -f $(TAR_ARCH) ]; then  $(RM) $(TAR_ARCH); fi
 
 # For testing build issues only! Use redhat-dist for official releases.
 redhat-test: 
        echo $(CONFIG_FILES)
-       $(TAR) --exclude=".cvsignore" --exclude="CVS" --exclude="privoxy-suse.spec" --exclude="privoxy-cl.spec" --exclude="PACKAGERS" -czf $(TAR_ARCH) .
+       $(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude "privoxy-suse.spec" --exclude "privoxy-cl.spec" --exclude "PACKAGERS" -czf $(TAR_ARCH) .
        $(RPMBUILD) --clean -tb  $(TAR_ARCH)
        if [ -f $(TAR_ARCH) ]; then  $(RM) $(TAR_ARCH); fi
        @echo "WARNING: This target is only for testing. Use redhat-dist for releases!!!"
@@ -529,6 +462,17 @@ redhat-upload: check-release
        @$(ECHO) -------------------------------------------------------
      # w3m http://sourceforge.net/project/admin/editpackages.php?group_id=11118
 
+
+#############################################################################
+# Creates a Red Hat sourcepackage from CVS (not from the current sources
+# on disk)
+#############################################################################
+redhat-srpm: 
+       make create-archive
+       $(MV) $(PROGRAM)-rh-$(VERSION).tar.gz $(PROGRAM)-$(VERSION).tar.gz
+       $(RPMBUILD) -ts --nodeps $(PROGRAM)-$(VERSION).tar.gz
+
+
 #############################################################################
 # suse distribution. works fine. no need to be root. 
 #############################################################################
@@ -543,7 +487,7 @@ suse-dist: rpm-stuff
 #      exit 1;\
 #      fi
 
-       $(TAR) --exclude=".cvsignore" --exclude="CVS" --exclude="privoxy-rh.spec" --exclude="privoxy-cl.spec" --exclude="PACKAGERS" -czf $(TAR_ARCH) .
+       $(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude "privoxy-rh.spec" --exclude "privoxy-cl.spec" --exclude "PACKAGERS" -czf $(TAR_ARCH) .
        $(RPM) --clean -ta  $(TAR_ARCH)
        if [ -f $(TAR_ARCH) ]; then  $(RM) $(TAR_ARCH); fi
 
@@ -579,7 +523,6 @@ suse-clean:
        $(RM) /usr/sbin/rcprivoxy
        $(RM) /usr/share/man/man1/privoxy.1.gz
 
-
 #############################################################################
 # generic distribution
 #############################################################################
@@ -591,14 +534,14 @@ gen-dist: dist-check
        $(STRIP_PROG) $(PROGRAM)
        $(LN) -s current ../privoxy-$(VERSION)-$(CODE_STATUS)
 # add program
-       (cd .. && $(TAR) --exclude="PACKAGERS" -cvhf privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$(PROGRAM))
+       (cd .. && $(TAR) -cvhf --exclude "PACKAGERS" privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$(PROGRAM))
 # add config files
        for foo in $(CONFIG_FILES); do \
-               (cd .. && $(TAR) --exclude="PACKAGERS" -uvhf privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \
+               (cd .. && $(TAR) -uvhf --exclude "PACKAGERS" privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \
        done; 
 # add documentation
        for foo in $(DOC_FILES); do \
-               (cd .. && $(TAR) --exclude="PACKAGERS" -uvhf privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \
+               (cd .. && $(TAR) -uvhf --exclude "PACKAGERS" privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \
        done;
 # and zip the archive
        $(RM) ../privoxy-$(VERSION)-$(CODE_STATUS)
@@ -642,16 +585,9 @@ hpux-upload:
 # debian distribution
 #############################################################################
 debian-dist:
-       @$(ECHO) Creating Debian package.  Will exist in parent directory.
-       dpkg-buildpackage -rfakeroot -us -uc
+       @$(ECHO) coming soon. 
 debian-upload:
-       ncftpput -u anonymous -p ijbswa-developers@lists.sourceforge.net upload.sourceforge.net /incoming ../privoxy_$(shell dpkg-parsechangelog | grep "Version" | sed "s/Version: //")_$(shell dpkg --print-architecture).deb
-       @$(ECHO) -------------------------------------------------------
-       @$(ECHO) Now goto
-       @$(ECHO) http://sourceforge.net/project/admin/editpackages.php?group_id=11118
-       @$(ECHO) ... and release the files.
-       @$(ECHO) -------------------------------------------------------
-
+       @$(ECHO) coming soon. 
 
 #############################################################################
 # macosx distribution
@@ -685,10 +621,7 @@ freebsd-clean: gen-clean
 # Windows distribution
 #############################################################################
 win-dist:
-       @$(ECHO) RTFM.  You shouldn't run configure before making
-       @$(ECHO) the Windows release, so you need to start again from
-       @$(ECHO) a clean CVS export.
-       @false
+       $(ECHO) Not implemented.
 
 
 #############################################################################
@@ -700,7 +633,8 @@ tarball-dist: dist-check clean clobber
        $(LN) -s current ../privoxy-$(VERSION)-$(CODE_STATUS)
 
        for i in `find . -type f -a -not \( -path "*/CVS*" -o -name ".*" \
-       -o -path "*/debian/*" -o -path "*/actions/*" -o -name "*.php" -o -name "PACKAGERS" \)`; do \
+       -o -path "*/debian/*" -o -path "*/actions/*" -o -name "*.php" -o \
+       -name "PACKAGERS" -o -path "*/pdf/*" \)`; do \
           files="$$files privoxy-$(VERSION)-$(CODE_STATUS)/$$i"; \
        done &&  \
        cd .. && $(TAR) -cvhf privoxy-$(VERSION)-$(CODE_STATUS)-src.tar $$files ; \
@@ -722,13 +656,6 @@ tarball-upload:
 tarball-clean:
        $(RM) ../privoxy-$(VERSION)-$(CODE_STATUS)-src.tar.gz
 
-#############################################################################
-# java Activity Console 
-#############################################################################
-java-activity-console:
-       javac -classpath $(DIR_PRIVOXY_SRC_JAVA):$(CLASSPATH) $(DIR_PRIVOXY_SRC)/java/org/privoxy/activityconsole/*.java
-       jar -cvfm ActivityConsole.jar $(DIR_PRIVOXY_SRC_JAVA)/org/privoxy/activityconsole/acon.manifest -C $(DIR_PRIVOXY_SRC_JAVA) org/privoxy/activityconsole
-
 #############################################################################
 #
 # Documentation
@@ -737,9 +664,231 @@ java-activity-console:
 #
 #############################################################################
 
-
-dok:
-       cd $(DOC_DIR) && $(MAKE)
+# developer manual
+dok-devel: 
+       $(RM) doc/webserver/developer-manual/*.html
+       $(RM) -r doc/source/developer-manual
+       mkdir -p doc/text doc/source/developer-manual
+       cd doc/source/developer-manual && $(DB) ../developer-manual.sgml && cd .. && cp developer-manual/*.html ../webserver/developer-manual/
+       cd doc/source && $(DB) -V nochunks developer-manual.sgml > tmp.html && $(WDUMP) tmp.html > ../text/developer-manual.txt && $(RM) -r tmp.html developer-manual
+
+# user manual
+dok-user: 
+       $(RM) doc/webserver/user-manual/*.html
+       $(RM) -r doc/source/user-manual/
+       mkdir -p doc/text doc/source/user-manual
+       cd doc/source/user-manual && $(DB) -iuser-man ../user-manual.sgml && cd .. && cp user-manual/*.html ../webserver/user-manual/
+       cd doc/source && $(DB) -iuser-man -V nochunks user-manual.sgml > tmp.html && $(WDUMP) tmp.html > ../text/user-manual.txt && $(RM) -r tmp.html user-manual
+
+# faq
+dok-faq: 
+       $(RM) doc/webserver/faq/*.html
+       $(RM) -r doc/source/faq
+       mkdir -p doc/text doc/source/faq
+       cd doc/source/faq && $(DB) ../faq.sgml && cd .. && cp faq/*.html ../webserver/faq/
+       cd doc/source && $(DB) -V nochunks faq.sgml > tmp.html && $(WDUMP) tmp.html > ../text/faq.txt && $(RM) -r tmp.html faq
+
+# man page, one variation. Try to use the next target, just 'make man'. 
+dok-man: 
+       $(RM) doc/man/* doc/webserver/man-page/*.html
+ifneq ($(MAN2HTML),false)
+       $(ECHO) "<html><head><title>Privoxy Man page</title><link rel=\"stylesheet\" type=\"text/css\" href=\"../p_web.css\"></head><body><H2>NAME</H2>" > doc/webserver/man-page/privoxy-man-page.html
+       man ./privoxy.1 | $(MAN2HTML) -bare >> doc/webserver/man-page/privoxy-man-page.html
+       $(ECHO) "</body></html>" >> doc/webserver/man-page/privoxy-man-page.html
+else
+       $(MAKE) groff2html
+endif
+
+# Build man page from sgml. This requires the SGMLSpm perl module.
+# See CPAN, or your favorite perl repository. This is the preferred 
+# target for man page generation!
+man: dok-release
+       mkdir -p doc/source/temp && cd doc/source/temp && $(RM) * ;\
+       nsgmls ../privoxy-man-page.sgml  | sgmlspl ../../../utils/docbook2man/docbook2man-spec.pl &&\
+       perl -pi.bak -e 's/ <URL:.*>//; s/\[ /\[/g' privoxy.1 ;\
+       $(DB) ../privoxy-man-page.sgml && $(MV) -f privoxy.1 ../../../privoxy.1
+
+# For those with man2html ala RH7s.
+man2html:
+       mkdir -p doc/webserver/man-page
+ifneq ($(MAN2HTML),false)
+       $(MAN2HTML) privoxy.1 |grep -v "^Content-type" > tmp.html
+       $(PERL) -pi.bak -e 's/<A .*Contents<\/A>//; s/<A .*man2html<\/A>/man2html/' tmp.html
+       $(PERL) -pi.bak -e 's/(<\/HEAD>)/<LINK REL=\"STYLESHEET\" TYPE=\"text\/css\" HREF=\"..\/p_doc.css\"><\/HEAD>/' tmp.html
+# Twice because my version of man2html is pulling in commas and periods in URLs.
+       $(PERL) -pi.bak -e 's/(<A.*),(">)/$$1$$2/g' tmp.html
+       $(PERL) -pi.bak -e 's,\.">,">,g' tmp.html
+# Get rid of spurious \a from conversion. (How to do this with perl?)
+       $(SED) -e 's/\a//g' tmp.html > doc/webserver/man-page/privoxy-man-page.html && $(RM) tmp.*
+else
+       $(MAKE) groff2html
+endif
+
+
+# Otherwise we get plain groff conversion.
+groff2html:
+       $(G2H_CMD) ./privoxy.1 | $(SED) -e 's@</head>@<link REL="STYLESHEET" TYPE="text/css" HREF="../p_doc.css"></head>@' > doc/webserver/man-page/privoxy-man-page.html
+
+
+# readme page and INSTALL file
+dok-readme: dok-release
+       cd doc/source && $(DB)-notoc -V nochunks readme.sgml > tmp.html &&\
+       $(WDUMP) tmp.html > ../../README ;\
+       $(DB)-notoc -V nochunks install.sgml > tmp.html &&\
+       $(WDUMP) tmp.html > ../../INSTALL ;\
+       $(RM) tmp.*
+
+# index.sgml is used to create both the Home Page, and a local index
+# for documentation, etc.
+#
+# index.html for webserver:
+dok-webserver: 
+       cd doc/source/webserver && $(DB)-notoc -ip-homepage -V nochunks index.sgml > ../../webserver/index.html
+       $(PERL) -pi.bak -e 's/..\/p_doc.css/p_doc.css/;\
+     s/<\/HEAD/\n<meta name=\"description\" content=\"Privoxy helps consumers reduce unwanted junk email and protect their privacy from direct marketing companies.\"><\/HEAD/;\
+       s/<\/HEAD/\n<meta name="MSSmartTagsPreventParsing" content="TRUE"><\/HEAD/;\
+       s/\.\d\. //;\
+       s/__copy/&copy;/'\
+     doc/webserver/index.html && $(RM) doc/webserver/*.bak
+
+# privoxy-index.html for local documentation:
+dok-index: 
+       cd doc/source/webserver && $(DB)-notoc -ip-index -V nochunks index.sgml > ../../webserver/privoxy-index.html
+       $(PERL) -pi.bak -e 's/..\/p_doc.css/p_doc.css/;\
+     s/<\/HEAD/\n<meta name=\"description\" content=\"Privoxy helps consumers reduce unwanted junk email and protect their privacy from direct marketing companies.\"><\/HEAD/;\
+       s/<\/HEAD/\n<meta name="MSSmartTagsPreventParsing" content="TRUE"><\/HEAD/;\
+       s/\.\d\. //;\
+       s/__copy/&copy;/' \
+     doc/webserver/privoxy-index.html && $(RM) doc/webserver/*.bak
+
+# Main documentation target.
+dok: dok-release dok-devel dok-user dok-faq dok-readme dok-webserver dok-authors dok-index
+       @$(ECHO) Documentation created.
+
+#
+# an alternative to the above dok. disabled man page creation for the moment
+#
+redhat-dok: dok-release dok-devel dok-user dok-faq redhat-readme dok-webserver dok-authors
+       @$(ECHO) Documentation created.
+
+## Make README
+redhat-readme: 
+       cd doc/source && $(DB)-notoc -V nochunks readme.sgml > tmp.html && $(WDUMP) \
+         tmp.html > ../../README && $(RM) -r tmp.html
+
+## Make AUTHORS file
+dok-authors: 
+       cd doc/source && $(DB) -V nochunks authors.sgml > tmp.html && $(WDUMP) \
+         tmp.html > ../../AUTHORS && $(RM) tmp.html
+
+# Set doc entities for VERSION and CODE_STATUS in sgml docs. Toggle content
+# exceptions accordingly. This needs to go before any doc building (doh).
+dok-release:
+       @$(ECHO) Setting doc version and status to $(VERSION), $(CODE_STATUS)
+       @$(PERL) -pi.bak -e 's/<!entity +p-version.*>/<!entity p-version "$(VERSION)">/;\
+     s/<!entity +p-status.*>/<!entity p-status "$(CODE_STATUS)">/' \
+     doc/source/*sgml doc/source/*/*sgml
+       $(RM) -r doc/source/*bak doc/source/*/*bak
+ifeq ($(CODE_STATUS),stable)
+       @$(ECHO) Setting docs to stable $(VERSION)
+       @$(PERL) -pi.bak -e 's/<!entity +% +p-stable.*>/<!entity % p-stable "INCLUDE">/;\
+     s/<!entity +% +p-not-stable.*>/<!entity % p-not-stable "IGNORE">/' \
+     doc/source/*sgml doc/source/*/*sgml
+       $(RM) -r doc/source/*bak doc/source/*/*bak
+else
+       @$(ECHO) Setting docs to not stable $(VERSION)
+       @$(PERL) -pi.bak -e 's/<!entity +% +p-stable.*>/<!entity % p-stable "IGNORE">/;\
+     s/<!entity +% +p-not-stable.*>/<!entity % p-not-stable "INCLUDE">/' \
+     doc/source/*sgml doc/source/*/*sgml
+       $(RM) -r doc/source/*bak doc/source/*/*bak
+endif
+
+# Generate single page html. Used only for creating pdf docs (ATM).
+# Currently using: See http://www.easysw.com/htmldoc/pdf-o-matic.php.
+# If using this generator, remember U-M has a couple of graphics in 
+# a parallel directory.
+#
+dok-shtml: dok-release 
+       mkdir -p doc/source/temp # this directory not in cvs
+       cd doc/source && $(DB) -iuser-man -V nochunks user-manual.sgml > temp/privoxy-user-manual.html
+       cd doc/source && $(DB) -V nochunks developer-manual.sgml > temp/privoxy-developer-manual.html
+       cd doc/source && $(DB) -V nochunks faq.sgml > temp/privoxy-faq.html
+# one could use html2ps and ps2pdf. well, that does not work. htmlps produces incorrect output.
+
+# Make pdf docs from single page html. Requires htmldoc, see
+# (http://www.easysw.com/htmldoc/). Note: 1.8.20 has a TOC bug.
+# PDF docs are uploaded to webserver as zip archive.
+dok-pdf: dok-shtml
+       @$(ECHO) -n "starting htmldoc version: ";
+       if htmldoc --version ; then : ; \
+          else $(ECHO) "WARNING: could not get htmldoc version" ; fi
+       cd utils/ldp_print && $(RM) *html *bak *jpg *tmp *pdf *zip
+       cp -f doc/source/temp/*html doc/webserver/images/*jpg utils/ldp_print
+       cd utils/ldp_print ;\
+       $(PERL) -pi.bak -e 's/\.\.\/images\///; s/(<\/?)SUB/$$1small/i;\
+                           s/\.\.\/user-manual\/index\.html/privoxy-user-manual.pdf/;\
+                                       s/\.\.\/developer-manual\/index\.html/privoxy-developer-manual.pdf/;\
+                                       s/\.\.\/faq\/index\.html/privoxy-faq.pdf/' *.html ;\
+       for i in developer-manual user-manual faq; do \
+               ./ldp_print privoxy-$$i.html ;\
+               $(ECHO) DONE: privoxy-$$i.pdf ;\
+       done ;\
+       $(MV) *.pdf  ../../doc/pdf ;\
+       $(RM) -r *html *bak *jpg *pdf *zip ../../doc/source/temp
+
+# Create release announcement in text and html, with short and long versions.
+# This is a standalone target, and must be invoked directly.
+# announce: dok-release
+#      mkdir -p $(DOC_TMP)
+#      cd $(DOC_TMP) && cp -f ../announce.sgml . && $(DB) -iannounce-big announce.sgml &&\
+#      mv -f index.html announce.html && $(WDUMP) announce.html > announce.txt
+#      cd $(DOC_TMP) && $(DB) announce.sgml &&\
+#      mv -f index.html announce-mini.html && $(WDUMP) announce-mini.html > announce-mini.txt &&\
+#      mv -f *html *txt ../../.. 
+#      rm -fr $(DOC_TMP)
+
+# The main Privoxy config file, generated from sgml sources. 
+# NOTE: This will require some hand editing. The new file is outputted 
+# as config.new so that problem sections can be compared to previous
+# version. This is hardcored to w3m for html/text conversion. Also, 
+# requires the shell util 'fmt'.
+config-file: dok-release
+       cd doc/source && $(DB)-notoc -iconfig-file -V nochunks config.sgml > __tmp.html &&\
+       w3m -dump __tmp.html |fmt -w 70 > ../../config.new && $(RM) -r __tmp.*
+       $(PERL) -pi.bak -e 's/^1\. \@\@TITLE\@\@/     /i;\
+                     /^\d\.\d\.\s+/ && tr/[a-z]/[A-Z]/;\
+                     $$header_len=0 unless $$hit_header;\
+                     if ($$hit_header) {\
+                        print "#  ";\
+                        for ($$i=1; $$i < $$header_len; $$i++) {print "=";}\
+                        print "\n";\
+                     };\
+                     $$hit_header=0;\
+                     $$hit_header=1 if m/^(\d\.)(\d\.)(\d\.)?\s/ && s/^(\d\.)//;\
+                     $$header_len = length($$_);\
+                                s/^/#  /;  /^#  #{12,}/ && s/^#  #/####/;\
+                     s/^.*$$// if $$hit_option;\
+                     $$hit_option=0;\
+                     s/^\n//;  s/^#\s*-{20,}//; s/ *$$//;\
+                     $$hit_option=1 if s/^#\s+@@//;'   config.new
+       $(RM) *.bak
+       @$(ECHO)  "****************************************************"
+       @$(ECHO)  "The output file is config.new."
+       @$(ECHO)  "Now -- you need to hand edit the results!!!"
+       @$(ECHO)  "In particular, check the Debug levels, the"
+       @$(ECHO)  "permit-access, forward & socks examples and the"
+       @$(ECHO)  "various user-manual examples, which all"
+       @$(ECHO)  "probably got hammered."
+       @$(ECHO)  "****************************************************"
+
+# config file, alternate verison using lynx (perl stuff unfinished). Lynx
+# does not do so good a job.
+config-file-alt: 
+       cd doc/source && $(ECHO) -e ".h2 JUSTIFY\\nJUSTIFY:FALSE" > __tmp.lynx_cfg &&\
+       $(DB)-notoc -iconfig-file -V nochunks config.sgml > __tmp.html &&\
+       lynx -cfg=__tmp.lynx_cfg -width=78 -dump __tmp.html > ../../config.new && $(RM) -r __tmp.*
+       $(PERL) -pi -e 's/^(   )//;\
+                       s/:$\/:\n/' config.new
 
 #############################################################################
 #
@@ -781,82 +930,89 @@ web-actions: tidy
        @ssh ijbswa.sourceforge.net 'find /home/groups/i/ij/ijbswa/htdocs/actions/ -type f | xargs chmod 664 2>/dev/null'
        @ssh ijbswa.sourceforge.net 'chmod 666 /home/groups/i/ij/ijbswa/htdocs/actions/results/actions-feedback.txt 2>/dev/null'
 
+## 
+dok-put:
+       tar --exclude ".cvsignore" --exclude "CVS" --exclude "source" --exclude ".htaccess" \
+            --exclude "obsolete" --exclude "actions" --exclude "*.zip" --exclude "robots.txt"\
+               doc/* INSTALL LICENSE AUTHORS README \
+               -czf $(DOC_FILE) ;\
+               $(ECHO) "Uploading doc package ..." ;\
+               scp $(DOC_FILE) ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/docs/
+               @ssh ijbswa.sourceforge.net 'chmod 775 /home/groups/i/ij/ijbswa/htdocs/docs/*gz 2>/dev/null; true'
+               $(RM) $(DOC_FILE)
+
+dok-get:
+       cd /tmp ;\
+       $(WGET) http://privoxy.org/docs/$(DOC_FILE) ;\
+       $(TAR) -zxvf $(DOC_FILE)
+
+
 #############################################################################
 # Source file dependencies
 #############################################################################
 
-$(DIR_PRIVOXY_OBJ)/actions.@OBJEXT@:   $(DIR_PRIVOXY_SRC)/actions.c   $(DIR_PRIVOXY_SRC)/actions.h   $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/jcc.h       $(DIR_PRIVOXY_SRC)/list.h    $(DIR_PRIVOXY_SRC)/loaders.h   $(DIR_PRIVOXY_SRC)/miscutil.h  $(DIR_PRIVOXY_SRC)/actionlist.h
-$(DIR_PRIVOXY_OBJ)/cgi.@OBJEXT@:       $(DIR_PRIVOXY_SRC)/cgi.c       $(DIR_PRIVOXY_SRC)/cgi.h       $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/cgiedit.h $(DIR_PRIVOXY_SRC)/cgisimple.h $(DIR_PRIVOXY_SRC)/list.h    $(DIR_PRIVOXY_SRC)/pcrs.h      $(DIR_PRIVOXY_SRC)/encode.h    $(DIR_PRIVOXY_SRC)/ssplit.h     $(DIR_PRIVOXY_SRC)/jcc.h      $(DIR_PRIVOXY_SRC)/filters.h  $(DIR_PRIVOXY_SRC)/actions.h $(DIR_PRIVOXY_SRC)/errlog.h    $(DIR_PRIVOXY_SRC)/miscutil.h
-$(DIR_PRIVOXY_OBJ)/cgiedit.@OBJEXT@:   $(DIR_PRIVOXY_SRC)/cgiedit.c   $(DIR_PRIVOXY_SRC)/cgiedit.h   $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/cgi.h     $(DIR_PRIVOXY_SRC)/list.h      $(DIR_PRIVOXY_SRC)/pcrs.h    $(DIR_PRIVOXY_SRC)/encode.h    $(DIR_PRIVOXY_SRC)/ssplit.h    $(DIR_PRIVOXY_SRC)/jcc.h        $(DIR_PRIVOXY_SRC)/filters.h  $(DIR_PRIVOXY_SRC)/actions.h  $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/miscutil.h
-$(DIR_PRIVOXY_OBJ)/cgisimple.@OBJEXT@: $(DIR_PRIVOXY_SRC)/cgisimple.c $(DIR_PRIVOXY_SRC)/cgisimple.h $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/cgi.h     $(DIR_PRIVOXY_SRC)/list.h      $(DIR_PRIVOXY_SRC)/pcrs.h    $(DIR_PRIVOXY_SRC)/encode.h    $(DIR_PRIVOXY_SRC)/ssplit.h    $(DIR_PRIVOXY_SRC)/jcc.h        $(DIR_PRIVOXY_SRC)/filters.h  $(DIR_PRIVOXY_SRC)/actions.h  $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/miscutil.h
-$(DIR_PRIVOXY_OBJ)/deanimate.@OBJEXT@: $(DIR_PRIVOXY_SRC)/deanimate.c $(DIR_PRIVOXY_SRC)/deanimate.h $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS)
-$(DIR_PRIVOXY_OBJ)/encode.@OBJEXT@:    $(DIR_PRIVOXY_SRC)/encode.c    $(DIR_PRIVOXY_SRC)/encode.h    $(DIR_PRIVOXY_SRC)/config.h
-$(DIR_PRIVOXY_OBJ)/errlog.@OBJEXT@:    $(DIR_PRIVOXY_SRC)/errlog.c    $(DIR_PRIVOXY_SRC)/errlog.h    $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) @WIN_ONLY@$(DIR_PRIVOXY_SRC)/w32log.h
-$(DIR_PRIVOXY_OBJ)/filters.@OBJEXT@:   $(DIR_PRIVOXY_SRC)/filters.c   $(DIR_PRIVOXY_SRC)/filters.h   $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/encode.h    $(DIR_PRIVOXY_SRC)/gateway.h $(DIR_PRIVOXY_SRC)/jbsockets.h $(DIR_PRIVOXY_SRC)/jcc.h       $(DIR_PRIVOXY_SRC)/loadcfg.h    $(DIR_PRIVOXY_SRC)/parsers.h  $(DIR_PRIVOXY_SRC)/ssplit.h   $(DIR_PRIVOXY_SRC)/cgi.h     $(DIR_PRIVOXY_SRC)/deanimate.h @WIN_ONLY@$(DIR_PRIVOXY_SRC)/win32.h 
-$(DIR_PRIVOXY_OBJ)/gateway.@OBJEXT@:   $(DIR_PRIVOXY_SRC)/gateway.c   $(DIR_PRIVOXY_SRC)/gateway.h   $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/jbsockets.h $(DIR_PRIVOXY_SRC)/jcc.h     $(DIR_PRIVOXY_SRC)/loadcfg.h
-$(DIR_PRIVOXY_OBJ)/jbsockets.@OBJEXT@: $(DIR_PRIVOXY_SRC)/jbsockets.c $(DIR_PRIVOXY_SRC)/jbsockets.h $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/filters.h
-$(DIR_PRIVOXY_OBJ)/jcc.@OBJEXT@:       $(DIR_PRIVOXY_SRC)/jcc.c       $(DIR_PRIVOXY_SRC)/jcc.h       $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/filters.h   $(DIR_PRIVOXY_SRC)/gateway.h $(DIR_PRIVOXY_SRC)/jbsockets.h $(DIR_PRIVOXY_SRC)/killpopup.h $(DIR_PRIVOXY_SRC)/loadcfg.h    $(DIR_PRIVOXY_SRC)/loaders.h  $(DIR_PRIVOXY_SRC)/miscutil.h $(DIR_PRIVOXY_SRC)/parsers.h @WIN_ONLY@$(DIR_PRIVOXY_SRC)/w32log.h    $(DIR_PRIVOXY_SRC)/win32.h $(DIR_PRIVOXY_SRC)/cgi.h
-$(DIR_PRIVOXY_OBJ)/killpopup.@OBJEXT@: $(DIR_PRIVOXY_SRC)/killpopup.c $(DIR_PRIVOXY_SRC)/killpopup.h $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/jcc.h     $(DIR_PRIVOXY_SRC)/loadcfg.h
-$(DIR_PRIVOXY_OBJ)/list.@OBJEXT@:      $(DIR_PRIVOXY_SRC)/list.c      $(DIR_PRIVOXY_SRC)/list.h      $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/list.h    $(DIR_PRIVOXY_SRC)/miscutil.h
-$(DIR_PRIVOXY_OBJ)/loadcfg.@OBJEXT@:   $(DIR_PRIVOXY_SRC)/loadcfg.c   $(DIR_PRIVOXY_SRC)/loadcfg.h   $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/filters.h   $(DIR_PRIVOXY_SRC)/gateway.h $(DIR_PRIVOXY_SRC)/jbsockets.h $(DIR_PRIVOXY_SRC)/jcc.h       $(DIR_PRIVOXY_SRC)/killpopup.h  $(DIR_PRIVOXY_SRC)/loaders.h  $(DIR_PRIVOXY_SRC)/miscutil.h $(DIR_PRIVOXY_SRC)/parsers.h @WIN_ONLY@$(DIR_PRIVOXY_SRC)/w32log.h    $(DIR_PRIVOXY_SRC)/win32.h
-$(DIR_PRIVOXY_OBJ)/loaders.@OBJEXT@:   $(DIR_PRIVOXY_SRC)/loaders.c   $(DIR_PRIVOXY_SRC)/loaders.h   $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/encode.h    $(DIR_PRIVOXY_SRC)/filters.h $(DIR_PRIVOXY_SRC)/gateway.h   $(DIR_PRIVOXY_SRC)/jcc.h       $(DIR_PRIVOXY_SRC)/loadcfg.h    $(DIR_PRIVOXY_SRC)/miscutil.h $(DIR_PRIVOXY_SRC)/parsers.h  $(DIR_PRIVOXY_SRC)/ssplit.h
-$(DIR_PRIVOXY_OBJ)/miscutil.@OBJEXT@:  $(DIR_PRIVOXY_SRC)/miscutil.c  $(DIR_PRIVOXY_SRC)/miscutil.h  $(DIR_PRIVOXY_SRC)/config.h
-$(DIR_PRIVOXY_OBJ)/parsers.@OBJEXT@:   $(DIR_PRIVOXY_SRC)/parsers.c   $(DIR_PRIVOXY_SRC)/parsers.h   $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/encode.h    $(DIR_PRIVOXY_SRC)/filters.h $(DIR_PRIVOXY_SRC)/jbsockets.h $(DIR_PRIVOXY_SRC)/jcc.h       $(DIR_PRIVOXY_SRC)/loadcfg.h    $(DIR_PRIVOXY_SRC)/loaders.h  $(DIR_PRIVOXY_SRC)/miscutil.h $(DIR_PRIVOXY_SRC)/ssplit.h
-$(DIR_PRIVOXY_OBJ)/ssplit.@OBJEXT@:    $(DIR_PRIVOXY_SRC)/ssplit.c    $(DIR_PRIVOXY_SRC)/ssplit.h    $(DIR_PRIVOXY_SRC)/config.h                   $(DIR_PRIVOXY_SRC)/miscutil.h
-$(DIR_PRIVOXY_OBJ)/urlmatch.@OBJEXT@:  $(DIR_PRIVOXY_SRC)/urlmatch.c  $(DIR_PRIVOXY_SRC)/urlmatch.h  $(DIR_PRIVOXY_SRC)/config.h $(PROJECT_H_DEPS) $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/miscutil.h  $(DIR_PRIVOXY_SRC)/ssplit.h
+actions.@OBJEXT@:   actions.c   actions.h   config.h $(PROJECT_H_DEPS) errlog.h jcc.h list.h loaders.h miscutil.h actionlist.h ssplit.h
+cgi.@OBJEXT@:       cgi.c       cgi.h       config.h $(PROJECT_H_DEPS) cgiedit.h cgisimple.h list.h pcrs.h encode.h ssplit.h jcc.h filters.h actions.h errlog.h miscutil.h
+cgiedit.@OBJEXT@:   cgiedit.c   cgiedit.h   config.h $(PROJECT_H_DEPS) cgi.h list.h pcrs.h encode.h ssplit.h jcc.h filters.h actions.h errlog.h miscutil.h
+cgisimple.@OBJEXT@: cgisimple.c cgisimple.h config.h $(PROJECT_H_DEPS) cgi.h list.h pcrs.h encode.h ssplit.h jcc.h filters.h actions.h errlog.h miscutil.h
+deanimate.@OBJEXT@: deanimate.c deanimate.h config.h $(PROJECT_H_DEPS)
+encode.@OBJEXT@:    encode.c    encode.h    config.h
+errlog.@OBJEXT@:    errlog.c    errlog.h    config.h $(PROJECT_H_DEPS) @WIN_ONLY@w32log.h
+filters.@OBJEXT@:   filters.c   filters.h   config.h $(PROJECT_H_DEPS) errlog.h encode.h gateway.h jbsockets.h jcc.h loadcfg.h parsers.h ssplit.h cgi.h deanimate.h @WIN_ONLY@win32.h 
+gateway.@OBJEXT@:   gateway.c   gateway.h   config.h $(PROJECT_H_DEPS) errlog.h jbsockets.h jcc.h loadcfg.h
+jbsockets.@OBJEXT@: jbsockets.c jbsockets.h config.h $(PROJECT_H_DEPS) filters.h
+jcc.@OBJEXT@:       jcc.c       jcc.h       config.h $(PROJECT_H_DEPS) errlog.h filters.h gateway.h jbsockets.h killpopup.h loadcfg.h loaders.h miscutil.h parsers.h @WIN_ONLY@w32log.h win32.h cgi.h
+killpopup.@OBJEXT@: killpopup.c killpopup.h config.h $(PROJECT_H_DEPS) jcc.h loadcfg.h
+list.@OBJEXT@:      list.c      list.h      config.h $(PROJECT_H_DEPS) list.h miscutil.h
+loadcfg.@OBJEXT@:   loadcfg.c   loadcfg.h   config.h $(PROJECT_H_DEPS) errlog.h filters.h gateway.h jbsockets.h jcc.h killpopup.h loaders.h miscutil.h parsers.h @WIN_ONLY@w32log.h win32.h
+loaders.@OBJEXT@:   loaders.c   loaders.h   config.h $(PROJECT_H_DEPS) errlog.h encode.h filters.h gateway.h jcc.h loadcfg.h miscutil.h parsers.h ssplit.h
+miscutil.@OBJEXT@:  miscutil.c  miscutil.h  config.h
+parsers.@OBJEXT@:   parsers.c   parsers.h   config.h $(PROJECT_H_DEPS) errlog.h encode.h filters.h jbsockets.h jcc.h loadcfg.h loaders.h miscutil.h ssplit.h
+ssplit.@OBJEXT@:    ssplit.c    ssplit.h    config.h miscutil.h
+urlmatch.@OBJEXT@:  urlmatch.c  urlmatch.h  config.h $(PROJECT_H_DEPS) errlog.h miscutil.h ssplit.h
+
+# GNU regex
+gnu_regex.@OBJEXT@: gnu_regex.c gnu_regex.h config.h
 
 # PCRS
-$(DIR_PRIVOXY_OBJ)/pcrs.@OBJEXT@: $(DIR_PRIVOXY_SRC)/pcrs.c $(DIR_PRIVOXY_SRC_PCRE)/pcre.h $(DIR_PRIVOXY_SRC)/pcrs.h $(DIR_PRIVOXY_SRC)/config.h
+pcrs.@OBJEXT@: pcrs.c pcrs.h config.h pcre/pcre.h 
 
 # PCRE
-$(DIR_PRIVOXY_OBJ)/get.@OBJEXT@:        $(DIR_PRIVOXY_SRC_PCRE)/get.c        $(DIR_PRIVOXY_SRC_PCRE)/config.h $(DIR_PRIVOXY_SRC_PCRE)/internal.h $(DIR_PRIVOXY_SRC_PCRE)/pcre.h
-$(DIR_PRIVOXY_OBJ)/maketables.@OBJEXT@: $(DIR_PRIVOXY_SRC_PCRE)/maketables.c $(DIR_PRIVOXY_SRC_PCRE)/config.h $(DIR_PRIVOXY_SRC_PCRE)/internal.h $(DIR_PRIVOXY_SRC_PCRE)/pcre.h
-$(DIR_PRIVOXY_OBJ)/pcre.@OBJEXT@:       $(DIR_PRIVOXY_SRC_PCRE)/pcre.c       $(DIR_PRIVOXY_SRC_PCRE)/config.h $(DIR_PRIVOXY_SRC_PCRE)/internal.h $(DIR_PRIVOXY_SRC_PCRE)/pcre.h $(DIR_PRIVOXY_SRC_PCRE)/chartables.c 
-$(DIR_PRIVOXY_OBJ)/pcreposix.@OBJEXT@:  $(DIR_PRIVOXY_SRC_PCRE)/pcreposix.c  $(DIR_PRIVOXY_SRC_PCRE)/config.h $(DIR_PRIVOXY_SRC_PCRE)/internal.h $(DIR_PRIVOXY_SRC_PCRE)/pcre.h $(DIR_PRIVOXY_SRC_PCRE)/pcreposix.h
-$(DIR_PRIVOXY_OBJ)/study.@OBJEXT@:      $(DIR_PRIVOXY_SRC_PCRE)/study.c      $(DIR_PRIVOXY_SRC_PCRE)/config.h $(DIR_PRIVOXY_SRC_PCRE)/internal.h $(DIR_PRIVOXY_SRC_PCRE)/pcre.h
+pcre/get.@OBJEXT@:        pcre/get.c        pcre/config.h pcre/internal.h pcre/pcre.h
+pcre/maketables.@OBJEXT@: pcre/maketables.c pcre/config.h pcre/internal.h pcre/pcre.h
+pcre/pcre.@OBJEXT@:       pcre/pcre.c       pcre/config.h pcre/internal.h pcre/pcre.h pcre/chartables.c 
+pcre/pcreposix.@OBJEXT@:  pcre/pcreposix.c  pcre/config.h pcre/internal.h pcre/pcre.h pcre/pcreposix.h
+pcre/study.@OBJEXT@:      pcre/study.c      pcre/config.h pcre/internal.h pcre/pcre.h
 
 # An auxiliary program makes the PCRE default character table source
 
-$(DIR_PRIVOXY_SRC_PCRE)/chartables.c:   $(DIR_PRIVOXY_OBJ)/dftables@EXEEXT@
-               $(DIR_PRIVOXY_SRC_PCRE)/dftables@EXEEXT@ >$(DIR_PRIVOXY_SRC_PCRE)/chartables.c
+pcre/chartables.c:   pcre/dftables@EXEEXT@
+               pcre/dftables@EXEEXT@ >pcre/chartables.c
 
-$(DIR_PRIVOXY_OBJ)/dftables@EXEEXT@:       $(DIR_PRIVOXY_SRC_PCRE)/dftables.c $(DIR_PRIVOXY_SRC_PCRE)/maketables.c $(DIR_PRIVOXY_SRC_PCRE)/pcre.h $(DIR_PRIVOXY_SRC_PCRE)/internal.h $(DIR_PRIVOXY_SRC_PCRE)/config.h
-               $(CC) -o $(DIR_PRIVOXY_SRC_PCRE)/dftables@EXEEXT@ $(CFLAGS) $(DIR_PRIVOXY_SRC_PCRE)/dftables.c
+pcre/dftables@EXEEXT@:       pcre/dftables.c pcre/maketables.c pcre/pcre.h pcre/internal.h pcre/config.h
+               $(CC) -o pcre/dftables@EXEEXT@ $(CFLAGS) pcre/dftables.c
 
 # Win32
-$(DIR_PRIVOXY_OBJ)/w32log.@OBJEXT@:      $(DIR_PRIVOXY_SRC)/config.h  $(DIR_PRIVOXY_SRC)/errlog.h  $(DIR_PRIVOXY_SRC)/jcc.h         $(DIR_PRIVOXY_SRC)/loadcfg.h    $(DIR_PRIVOXY_SRC)/miscutil.h  $(DIR_PRIVOXY_SRC)/pcrs.h    $(DIR_PRIVOXY_SRC)/project.h  $(DIR_PRIVOXY_SRC)/w32log.c  $(DIR_PRIVOXY_SRC)/w32log.h     $(DIR_PRIVOXY_SRC)/w32taskbar.h      $(DIR_PRIVOXY_SRC)/win32.h  $(DIR_PRIVOXY_SRC_PCRE)/pcre.h  $(DIR_PRIVOXY_SRC_PCRE)/pcreposix.h
-$(DIR_PRIVOXY_OBJ)/win32.@OBJEXT@:       $(DIR_PRIVOXY_SRC)/config.h  $(DIR_PRIVOXY_SRC)/jcc.h     $(DIR_PRIVOXY_SRC)/loadcfg.h     $(DIR_PRIVOXY_SRC)/pcrs.h       $(DIR_PRIVOXY_SRC)/project.h   $(DIR_PRIVOXY_SRC)/w32log.h  $(DIR_PRIVOXY_SRC)/win32.c    $(DIR_PRIVOXY_SRC)/win32.h   $(DIR_PRIVOXY_SRC_PCRE)/pcre.h  $(DIR_PRIVOXY_SRC_PCRE)/pcreposix.h
-$(DIR_PRIVOXY_OBJ)/w32taskbar.@OBJEXT@:  $(DIR_PRIVOXY_SRC)/config.h  $(DIR_PRIVOXY_SRC)/w32log.h  $(DIR_PRIVOXY_SRC)/w32taskbar.c  $(DIR_PRIVOXY_SRC)/w32taskbar.h
-
-$(DIR_PRIVOXY_OBJ)/w32res.res: $(DIR_PRIVOXY_SRC)/w32res.rc \
-                $(DIR_PRIVOXY_SRC)/w32res.h \
-                $(DIR_PRIVOXY_SRC)/config.h \
-                $(DIR_PRIVOXY_SRC)/icons/ico00001.ico \
-                $(DIR_PRIVOXY_SRC)/icons/ico00002.ico \
-                $(DIR_PRIVOXY_SRC)/icons/ico00003.ico \
-                $(DIR_PRIVOXY_SRC)/icons/ico00004.ico \
-                $(DIR_PRIVOXY_SRC)/icons/ico00005.ico \
-                $(DIR_PRIVOXY_SRC)/icons/ico00006.ico \
-                $(DIR_PRIVOXY_SRC)/icons/ico00007.ico \
-                $(DIR_PRIVOXY_SRC)/icons/ico00008.ico \
-                $(DIR_PRIVOXY_SRC)/icons/idle.ico \
-                $(DIR_PRIVOXY_SRC)/icons/privoxy.ico
+w32log.@OBJEXT@: w32log.c errlog.h config.h jcc.h loadcfg.h miscutil.h pcre/pcre.h pcre/pcreposix.h pcrs.h project.h w32log.h w32taskbar.h win32.h
+w32taskbar.@OBJEXT@: w32taskbar.c config.h w32log.h w32taskbar.h
+win32.@OBJEXT@: win32.c config.h jcc.h loadcfg.h pcre/pcre.h pcre/pcreposix.h pcrs.h project.h w32log.h win32.h
+
+w32.res: w32.rc w32res.h icons/ico00001.ico icons/ico00002.ico icons/ico00003.ico icons/ico00004.ico icons/ico00005.ico icons/ico00006.ico icons/ico00007.ico icons/ico00008.ico icons/idle.ico icons/privoxy.ico config.h
        windres -D__MINGW32__=0.2 -O coff -i $< -o $@
 
 # AmigaOS
-@AMIGAOS_ONLY@OBJS += $(DIR_PRIVOXY_OBJ)/amiga.@OBJEXT@
+@AMIGAOS_ONLY@OBJS += amiga.o
 @AMIGAOS_ONLY@CFLAGS += -D__AMIGAVERSION__=\"$(VERSION_MAJOR).$(VERSION_MINOR)$(VERSION_POINT)\" -D__AMIGADATE__=\"`date +%d.%m.%Y`\" -W -m68020 -noixemul -fbaserel -msmall-code
 @AMIGAOS_ONLY@LDFLAGS += -m68020 -noixemul -fbaserel
 @AMIGAOS_ONLY@LIBS = -lm /gg/lib/libb/libm020/libnix/swapstack.o
-$(DIR_PRIVOXY_OBJ)/amiga.@OBJEXT@: $(DIR_PRIVOXY_SRC)/amiga.c $(DIR_PRIVOXY_SRC)/amiga.h $(DIR_PRIVOXY_SRC)/config.h
+@AMIGAOS_ONLY@amiga.o: amiga.c amiga.h config.h
 
 
 $(PROGRAM): $(OBJS) $(W32_FILES)
        $(LD) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)
 
 clean:
-       $(RM) a.out $(OBJS) $(W32_FILES) $(W32_INIS) $(PROGRAM) \
-       default.action `find . -name TAGS -o -name tags`
+       $(RM) a.out $(OBJS) $(W32_FILES) $(W32_INIS) $(PROGRAM) default.action `find . -name TAGS -o -name tags` 
 
 tidy:
        $(RM) `find . -name "*~"`
@@ -864,9 +1020,9 @@ tidy:
        $(RM) `find . -name ".\#*"`
 
 clobber: tidy
-       $(RM) GNUmakefile configure src/config.h.in src/config.h config.cache config.status config.log logfile \
-              privoxy.log core *.tar.gz *.tar privoxy-cl.spec $(DOC_DIR)/ldp.dsl \
-                   $(DOC_DIR)/GNUmakefile
+       $(RM) GNUmakefile configure config.h.in config.h config.cache config.status config.log logfile \
+              privoxy.log core *.tar.gz *.tar privoxy-cl.spec doc/source/ldp.dsl
+       $(RM) -r autom4te.cache
 
 #
 # FIXME: What is all this? 
@@ -982,8 +1138,8 @@ install: CONF_DEST LOG_DEST PID_DEST check_doc GROUP_T
        $(MV) config.updated config 
 
        @# Install the config support files. Test for root install, and abort 
-       @# if there is no privoxy user, and no other user or group was enabled
-       @# during configure.
+       @# if there is no privoxy user, and no other user was enabled during 
+       @# configure. Later, install init script if appropriate.
        @$(ECHO) Installing templates to $(CONF_DEST)/templates
        @for i in `find templates -type f`; do \
                $(INSTALL) $(INSTALL_T) $$i $(CONF_DEST)/templates ;\
@@ -1189,172 +1345,117 @@ coffee:
 ## end:
 
 # $Log: GNUmakefile.in,v $
-# Revision 1.138  2003/10/17 17:51:58  oes
-# Added a one-time warning for compiling CVS HEAD
-#
-# Revision 1.137  2003/01/18 19:04:58  david__schmidt
-# Build support for the Java Activity Console - build with 'make java-activity-console', run with 'java -jar ActivityConsole.jar'
-#
-# Revision 1.136  2002/12/28 04:10:21  david__schmidt
-# Initial drop of dashboard instrumentation - enabled with
-# --enable-activity-console
-#
-# Revision 1.135  2002/11/04 05:11:05  hal9
-# Just a clean up of overly verbose output from install/uninstall.
-#
-# Revision 1.134  2002/10/28 06:01:39  hal9
-# Make uninstall: cp -v problems on SF Solaris.
-#
-# Revision 1.133  2002/10/28 02:12:22  hal9
-# Make install/uninstall:
-# - More cleanup of variables
-# - Make the minimum requirement for root install, an available non-root GROUP.
-#   If a privoxy user exists (and no other USER is specified), then the files
-#   that require write access are installed as group owned by privoxy. FIXME:
-#   There has to be a cleaner way to do this.
-# - Uninstall now saves configuration files to /tmp.
-#
-# Revision 1.132  2002/10/24 22:24:58  hal9
-# Make install: Minor clean up for variable handling.
-#
-# Revision 1.131  2002/10/23 07:00:21  agotneja
-# added a chmod on mkinstalldirs just before using it, otherwise it
-# will fail when running make for the first time.
-#
-# Revision 1.130  2002/10/22 05:49:14  hal9
-# Make install:
-# - /bin/sh on Solaris does not handle: ! test.
-# - Remove some unused doc variables.
-# - Make configs group writable.
-#
-# Revision 1.129  2002/10/20 07:15:12  hal9
-# Getting near the end (I hope) of install target updates:
-# - Rewrite RH init script to reflect configured values.
-# - Test for USER=root as well as UID=0
-# - Test for invalid group (probably needs more work).
-# - Add /usr to /usr/local test for when to install init scripts, etc.
-# - More testing on previous changes.
-#
-# Revision 1.128  2002/10/18 05:36:32  hal9
-# More install target fixes:
-# - Quick fix of log ownership on root install (lightly tested). If this goes
-#   true to form, then the fix will break something else :(
-# - Fix what looks like was invalid user on Slack if root install and
-#   we use an existing privoxy user. No way to test this.
-# See FIXMEs.
-#
-# Revision 1.127  2002/10/18 00:58:07  hal9
-# More install/uninstall/install-strip updates:
-# - Don't install gzipped man page (Solaris again).
-# - Don't overwrite existing config files, and install new versions as *.new.
-#   Fix permissions/ownership here too.
-# - Better testing before removing directories.
-# - Some better messages during install, ie 'Preserving configs', etc.
-# - Better handling of install-strip to fix previous problem of trying to strip
-#   init scripts.
-# - Crude test for valid USER in case is set on command line.
-# - Force immediate exit on some errors (eg invalid group).
-#
-# Revision 1.126  2002/10/16 05:38:00  hal9
-# More make install/uninstall updates:
-# -Make compatible with install-sh with does not support -b flag, and can only
-#  handle one file at a time (sigh).
-# -Manually save existing config files, if they exist.
-# -Fix install-strip so does not try to strip init scripts.
-#
-# Revision 1.125  2002/10/15 05:53:34  hal9
-# A few more cleanups:
-# -use mkinstalldirs consistently.
-# -Install init script and logrotate only is prefix=/usr/local (installed to
-#  system dir /etc instead of /usr/local...)
-# -Test for directory existence before removing to avoid misleading error
-#  messages.
-#
-# Revision 1.124  2002/10/13 19:58:09  hal9
-# Hopefully, this is final updates for install and uninstall targets.
-# - Fix typo in chown syntax
-# - chmod on mkinstalldirs to make it executable (is there a better way?).
-# - Cleanup comments, and revert most of previous output cleanup changes.
-# - Include all HTML docs, since there are cross links between these.
-# - Improved group handling (still some potential problems, see FIXME).
-# - Update PHONY targets.
-# - Uninstall was not removing CONF and LOG destinations in some situations.
-# - Various other minor cleanups.
-#
-# Revision 1.123  2002/10/12 06:05:41  hal9
-# WIP: This is mostly to fix various problems encountered on SF CF Solaris
-# servers for the install target only. This did not handle /[^C]*, test -e, not
-# quoting within tests (ie [ `id $(USER)` = `id` ] needs quoting) in some
-# situations, and does not support id -u (with the id in $PATH, but there is
-# another...). Also, cleaned up output. Needs testing. I am unable to test the
-# root install stuff either. It installs now at least (not tested further).
-# A few other nits.
-#
-# Revision 1.122  2002/10/11 06:03:08  hal9
-# Really install FAQ this time, and not u-m in two locations. Include images
-# for u-m.
-#
-# Revision 1.120  2002/10/10 20:39:27  dessent
-#
-#
-# Fixes for Win32 GUI build (added "$(DIR_PRIVOXY_SRC)/" to dependencies list)
-#
-# Revision 1.119  2002/09/23 03:42:41  hal9
-# This is higuita's make install/uninstall patch. Needs testing please!!!
-#
-# Revision 1.118  2002/09/11 08:22:37  oes
-# Fixed path (C_HDRS are in src/ now)
-#
-# Revision 1.117  2002/09/06 23:33:35  hal9
-# Fix clobber for config.h and config.h.in are in src now.
-#
-# Revision 1.116  2002/09/06 05:22:57  hal9
-# Adapt make webserver target to 3.0 for pdf uploading.
-#
-# Revision 1.115  2002/09/05 19:13:04  hal9
-# Migrate Karstens make snapshot stuff (not tested).
-#
-# Revision 1.114  2002/09/05 11:58:30  oes
-# Synced in some changes fromm the stable branch:
-#   From Revision 1.104.2.14  2002/08/10 11:19:37  oes:
-#    - Add dependency: pcrs.o deps on config.h
-#   Revision 1.104.2.9  2002/07/26 15:17:02  oes
-#    - Added generation of default.action from defaul.action.master
-#    - Deleted obsolete re_filterfile.txt generation
-#
-# Revision 1.113  2002/07/30 21:50:25  hal9
-# Add redhat-test target, and migrate the RPM_PACKAGEV stuff from 3.0 branch.
-#
-# Revision 1.112  2002/06/28 18:30:10  jongfoster
-# Fixing bugs compiling PCRE
-#
-# Revision 1.111  2002/06/05 00:26:21  hal9
-# Move all doc build stuff to doc/source/GNUmakefile, leaving a 'make dok'
-# target only in toplevel. Add DOC_STATUS variable so docs can be built without
-# touching sgml source.
-#
-# Revision 1.110  2002/06/04 14:51:48  jongfoster
-# Updating for new paths:
-# - Source files in src/
-# - Object files in obj/
-#
-# Revision 1.109  2002/05/28 09:16:15  oes
-# Added comment for -notoc kludge
-#
-# Revision 1.108  2002/05/28 03:56:08  hal9
-# make dok-index target for privoxy-index.html. Fix *bak dead soldiers in
-# doc/webserver.
-#
-# Revision 1.107  2002/05/27 23:26:33  mal0rd
-# Made doc-generation configuration automatic.
-# References to DB2HTML were removed, not used.
-# --with-docbook now only needed if in odd path.
-#
-# Revision 1.106  2002/05/26 04:55:11  mal0rd
-# Added debian-dist and debian-upload targets.  Also documented usage.
-#
-# Revision 1.105  2002/05/25 22:48:19  hal9
-# Add -notoc to README build (per oes's dsl magic).
+# Revision 1.104.2.28  2004/06/10 17:06:05  hal9
+# Fix bug #959617, by moving TMPDIR var to create-snapshot target, which is the
+# only place it is used.
+#
+# Revision 1.104.2.27  2004/02/07 16:11:10  oes
+# Make clobber remove the autom4te.cache dir.
+# Closes BR #889300
+#
+# Revision 1.104.2.26  2004/01/31 16:32:25  oes
+# Adding a check for an htmldoc variant from the debian diff
+#
+# Revision 1.104.2.25  2004/01/31 01:15:33  oes
+# Fixed a typo; updated copyright notice
+#
+# Revision 1.104.2.24  2003/12/03 10:30:02  oes
+# - Added new dependency: actions.c -> ssplit.h
+# - Excluded PDF docs from src tarball
+#
+# Revision 1.104.2.23  2003/04/20 17:28:52  hal9
+# Strip trailing spaces from config-file generation, bug #724596.
+#
+# Revision 1.104.2.22  2003/03/28 03:32:01  hal9
+# Minor changes for Privoxy home page:
+#  - Handle &copy; more sanely
+#  - include link to announce.txt
+# Also, disable 'make announce' target.
+#
+# Revision 1.104.2.21  2002/11/04 07:04:03  hal9
+# Catch up with main trunk install/uninstall. Quiet output, etc.
+#
+# Revision 1.104.2.20  2002/10/25 02:44:22  hal9
+# Port of make install, etc from main trunk. Needs testing! Add Slackware
+# support, and other related changes. Update related docs.
+#
+# Revision 1.104.2.19  2002/09/26 22:50:02  hal9
+# New user-manual examples in config-file are getting wrapped. Add warning.
+#
+# Revision 1.104.2.18  2002/08/23 12:22:40  oes
+# Added warning to broken install target
+#
+# Revision 1.104.2.17  2002/08/16 03:19:34  hal9
+# More (minor) cleanup of html before pdf processing to make some relative
+# links work as pdf -> pdf. Upload pdf as zip archive now.
+#
+# Revision 1.104.2.16  2002/08/14 16:43:27  hal9
+# Added pdf docs to make webserver target.
+#
+# Revision 1.104.2.15  2002/08/11 20:02:41  hal9
+# New targets for man page (make man) and pdf (make dok-pdf) targets.
+#
+# Revision 1.104.2.14  2002/08/10 11:19:37  oes
+# - Make -Ipcre (again) conditional on STATIC_PCRE
+# - $(RPMBUILD) -> $(RPM) for SuSE
+# - Add dependency: pcrs.o deps on config.h
+#
+# Revision 1.104.2.13  2002/08/07 15:13:54  hal9
+# Remove pdf2 target, and make it dok-shtml (single page html for pdf
+# conversion).
+#
+# Revision 1.104.2.12  2002/08/06 11:29:36  oes
+# Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
+#
+# Revision 1.104.2.11  2002/07/30 19:38:11  hal9
+# Add redhat-test target for testing purposes only. Fix RPM_PACKAGEV to what
+# *I think* it was supposed to be (was breaking upload targets since it was
+# set to RPM_VERSION).
+#
+# Revision 1.104.2.10  2002/07/27 22:56:53  kick_
+# cleanups of the redhat-srpm target
+#
+# Revision 1.104.2.9  2002/07/26 15:17:02  oes
+# - Added generation of default.action from defaul.action.master
+# - Deleted obsolete re_filterfile.txt generation
+#
+# Revision 1.104.2.8  2002/07/12 10:04:32  kick_
+# added helper targets to the makefile. They shouldn't break anything, but
+# make my life a lot easier.
+#
+# The new rpm has been splitted into two parts, one for package installation/
+# removal, one for package building.
+# Therefore rpm -ta isn't a valid command anymore and needs to be replaced
+# by rpmbuild -ta  (this is backwards compatible)
+#
+# Revision 1.104.2.7  2002/06/07 00:23:47  hal9
+# Fixing a quirk of man2html (on my system) that pulls punctuation into URLs,
+# thus breaking them completely.
+#
+# Revision 1.104.2.6  2002/06/02 03:26:25  hal9
+# Update CONFIG_FILES (ie update basic.action, etc), and also DOC_FILES (exclude
+# index.html and team/index.html)
+#
+# Revision 1.104.2.5  2002/05/30 15:35:01  hal9
+# This is more cleanup on the make config-file target. Most issues for
+# automatic generation are taken care of. There are still some problems
+# that require hand editing. Namely, some of the examples that are > 80 chars.
+#
+# Revision 1.104.2.4  2002/05/29 02:12:17  hal9
+# Ooops...forgot about perl -pi cygwin problem. Add -pi.bak. Also, the
+# new target is 'make config-file', _not_ make config.
+#
+# Revision 1.104.2.3  2002/05/29 02:05:48  hal9
+# 'make config' target added (WIP) for future generation of config file from
+# text in u-m so the two are in sync. New generated config, which requires
+# some hand editing for the time being.
+#
+# Revision 1.104.2.2  2002/05/28 02:32:55  hal9
+# New target 'make dok-index' for privoxy-index.html. Also, fixed *.bak files
+# not being cleaned up in doc/webserver.
+#
+# Revision 1.104.2.1  2002/05/26 17:19:34  hal9
+# Remove Table of Contents from readme with oes's dsl trick.
 #
 # Revision 1.104  2002/05/24 00:03:49  oes
 # Use p_doc.css for the Homepage for consistency
diff --git a/INSTALL b/INSTALL
index 18ec272..0ab1e84 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,6 @@
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/doc/source/install.sgml,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/INSTALL,v $
  *
  * Purpose     :  INSTALL file to help with installing from source.
  *
 
 -------------------------------------------------------------------------------
 
-This file describes installing Privoxy from source. If you are installing a
-pre-built binary installation, you should probably read the appropriate section
-in User Manual.
-
 To build Privoxy from source, autoconf, GNU make (gmake), and, of course, a C
 compiler like gcc are required.
 
 When building from a source tarball (either release version or nightly CVS
 tarball), first unpack the source:
 
- tar xzvf privoxy-3.1.1-beta-src* [.tgz or .tar.gz]                            
- cd privoxy-3.1.1-beta                                                         
+ tar xzvf privoxy-3.0.3-src* [.tgz or .tar.gz]
+ cd privoxy-3.0.3
+
 
 For retrieving the current CVS sources, you'll need CVS installed. Note that
 sources from CVS are development quality, and may not be stable, or well
 tested. To download CVS source:
 
-  cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login          
-  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co current 
-  cd current                                                                         
+  cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
+  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co current
+  cd current
+
 
 This will create a directory named current/, which will contain the source
 tree.
 
-You can also check out any Privoxy "branch", just exchange the current name
-with the wanted branch name (Example: v_3_0_branch for the 3.0 cvs tree).
-
-It is also strongly recommended to not run Privoxy as root, and instead it is
-suggested to create a "privoxy" user and group for this purpose. See your local
-documentation for the correct command line to do this.
-
-/etc/passwd might then look like:
-
-  privoxy:*:7777:7777:privoxy proxy:/no/home:/no/shell                         
+Then, in either case, to build from unpacked tarball or CVS source:
 
-And then /etc/group, like:
+ autoheader
+ autoconf
+ ./configure      # (--help to see options)
+ make             # (the make from gnu, gmake for *BSD)
+ su
+ make -n install  # (to see where all the files will go)
+ make install     # (to really install)
 
-  privoxy:*:7777:                                                              
 
-Some binary packages may do this for you.
-
-Then, to build from either unpacked tarball or CVS source:
-
- autoheader                                                                    
- autoconf                                                                      
- ./configure      # (--help to see options)                                    
- make             # (the make from GNU, sometimes called gmake)                
- su                                                                            
- make -n install  # (to see where all the files will go)                       
- make -s install  # (to really install, -s to silence output)                  
-
-If you have GNU make, you can have the first four steps automatically done for
+If you have gnu make, you can have the first four steps automatically done for
 you by just typing:
 
-  make                                                                         
+  make
 
-in the freshly downloaded or unpacked source directory.
 
-WARNING: If installing as root, the install will fail unless a non-root user or
-group is specified, or a privoxy user and group already exist on the system. If
-a non-root user is specified, and no group, then the installation will try to
-also use a group of the same name as "user". If a group is specified (and no
-user), then the support files will be installed as writable by that group, and
-owned by the user running the installation.
-
-configure accepts --with-user and --with-group options for setting user and
-group ownership of the configuration files (which need to be writable by the
-daemon). The specified user must already exist. When starting Privoxy, it
-should be run as this same user to insure write access to configuration and log
-files.
-
-Alternately, you can specify user and group on the make command line, but be
-sure both already exist:
-
- make -s install  USER=privoxy GROUP=privoxy                                   
-
-The default installation path for make install is /usr/local. This may of
-course be customized with the various ./configure path options. If you are
-doing a root install to anywhere else besides /usr/local, be sure to set the
-appropriate paths with the correct configure options (./configure --help).
-
-If you do install to /usr/local, the install will use sysconfdir=$prefix/etc/
-privoxy by default. All other destinations, and the direct usage of
---sysconfdir flag behave like normal, i.e. will not add the extra privoxy
-directory. This is for a safer install, as there may already exist another
-program that uses a file with the "config" name, and thus makes /usr/local/etc
-cleaner.
-
-If installing to /usr/local, the docs will go by default to $prefix/share/doc.
-But if this directory doesn't exist, it will then try $prefix/doc and install
-there before creating a new $prefix/share/doc just for Privoxy.
-
-Again, if the installs goes to /usr/local, the localstatedir (ie: var/) will
-default to /var instead of $prefix/var so the logs will go to /var/log/privoxy
-/, and the pid file will be created in /var/run/privoxy.pid.
-
-make install will attempt to set the correct values in config (main
-configuration file). You may want to check this to make sure all values are
-correct. If appropriate, an init script will be installed, but it is up to the
-user to determine how and where to start Privoxy. The init script should be
-checked for correct paths and values, if anything other than a default install
-is done.
-
-If install finds previous versions of any configuration files, these will not
-be overwritten, and the new ones will be installed with a "new" extension. You
-will then need to manually update the installed configuration files as needed.
-All template files will be overwritten. If you have customized, local
-templates, you should save these first. If a previous version of Privoxy is
-already running, you will have to restart it manually.
+in the freshly downloaded or unpacked source directory.
 
 For more detailed instructions on how to build Redhat and SuSE RPMs, Windows
 self-extracting installers, building on platforms with special requirements
 etc, please consult the developer manual.
 
-The simplest command line to start Privoxy is $path/privoxy --user=privoxy
-$path/etc/privoxy/config. See privoxy --usage, or the man page, for other
-options, and configuration.
+For binary RPM installation, and other platforms, see the user-manual as well.
 
diff --git a/LICENSE b/LICENSE
index 09aa295..ddc3d60 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,8 +1,4 @@
-   Copyright (C) 2001, 2002 Privoxy Developers <developers@privoxy.org>, 
-   and licensed under the GNU General Public License.
-
-
-              GNU GENERAL PUBLIC LICENSE
+                   GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991
 
  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
index 9b91452..e506703 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.9 2002/10/23 06:14:09 agotneja Exp $
+# $Id: Makefile,v 1.5.2.2 2002/10/25 02:44:23 hal9 Exp $
 #
 # Written by and Copyright (C) 2001 the SourceForge
 # Privoxy team. http://www.privoxy.org/
 # Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 # $Log: Makefile,v $
-# Revision 1.9  2002/10/23 06:14:09  agotneja
-# Added FreeBSD checks to stop people from using the default 'make'
+# Revision 1.5.2.2  2002/10/25 02:44:23  hal9
+# Port of make install, etc from main trunk. Needs testing! Add Slackware
+# support, and other related changes. Update related docs.
 #
-# Revision 1.8  2002/10/23 05:41:45  agotneja
-# Added checks for Solaris 'make' command, and more extensive checks that
-# the user is running GNU make.
-#
-# Revision 1.7  2002/10/22 02:22:18  hal9
-# Look for gmake first, and fall back to make. More Solaris trouble.
-#
-# Revision 1.6  2002/09/05 14:35:17  oes
+# Revision 1.5.2.1  2002/08/05 17:46:13  oes
 # Change make to gmake to fix auto-build on Solaris
 #
 # Revision 1.5  2002/04/11 12:51:34  oes
 
 #############################################################################
 
-# This script will first try to use the GNU make command, then the standard
-# make command, checking whether the command returns 'GNU' as part of its
-# version string. Amend this to point to your GNU make command if it is
-# not in your path.
-# Further tests; 
-#   GNU  'make' sets the MAKE_VERSION variable
-#   Solaris 'make' sets the HOST_ARCH variable
-#   FreeBSD 'make' sets the MACHINE_ARCH variable
-# We check if this isn't GNU but matches one of the above we error out
-
 GNU_MAKE_CMD = gmake
 MAKE_CMD     = make
 
@@ -113,7 +97,6 @@ error:
 
 .PHONY: error
 
-
 #############################################################################
 
 ## Local Variables:
diff --git a/README b/README
index 1a0bfc1..b2f4884 100644 (file)
--- a/README
+++ b/README
@@ -1,10 +1,10 @@
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/doc/source/readme.sgml,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/README,v $
  *
  * Purpose     :  README file to give a short intro.
  *
- * Copyright   :  Written by and Copyright (C) 2001,2002 the SourceForge
+ * Copyright   :  Written by and Copyright (C) 2001 - 2004  the SourceForge
  *                Privoxy team. http://www.privoxy.org/
  *
  *                Based on the Internet Junkbuster originally written
  *
  *********************************************************************/
 
-This README is included with the development version of Privoxy 3.1.1, which
-will someday become Privoxy v3.2. See http://www.privoxy.org/ for more
-information. The current code level is technically alpha, but is not yet
-significantly different from the 3.0.0 stable branch at this time (other 
-than more bugs).
-
-There is not much reason to actually run this branch unless you want to help 
-chase bugs, or with development.
+This README is included with Privoxy 3.0.3. See http://www.privoxy.org/ for
+more information. The current code maturity level is "stable".
 
 -------------------------------------------------------------------------------
 
 Privoxy is a web proxy with advanced filtering capabilities for protecting
-privacy, filtering web page content, managing cookies, controlling access, and
+privacy, modifying web page content, managing cookies, controlling access, and
 removing ads, banners, pop-ups and other obnoxious Internet junk. Privoxy has a
 very flexible configuration and can be customized to suit individual needs and
 tastes. Privoxy has application for both stand-alone systems and multi-user
@@ -55,6 +49,16 @@ Privoxy is based on Internet Junkbuster (tm).
 
 1. IMPORTANT CHANGES
 
+MORE NEWS! January 2004, Privoxy 3.0.3 is released. This is the another
+maintenance release of Privoxy which fixes more bugs, further refines the
+configuration and works around some known third-party problems. See the
+ChangeLog for complete details. Upgrading from 3.0.2 is recommended.
+
+NEWS! March 2003, Privoxy 3.0.2 is released. This is the first maintenance
+release of Privoxy. There are no significant new features in this release. Some
+bugs are fixed, and some existing features have been enhanced. See ChangeLog
+for details. Upgrading from 3.0.0 is recommended.
+
 REALLY BIG NEWS! August 2002: The long-awaited, oft-delayed stable version of
 Privoxy 3.0 is finally released! This is way behind schedule, but better late
 than never. The developers all hope the wait was worth it.
@@ -81,7 +85,7 @@ User Manual, for other installation types.
 3. RUN
 
 privoxy [--help] [--version] [--no-daemon] [--pidfile PIDFILE] [--user USER
-[.GROUP]] [config_file]
+[.GROUP]] [--chroot] [config_file]
 
 See the man page or User Manual for an explanation of each option, and other
 configuration and usage issues.
@@ -110,29 +114,23 @@ Junkbuster v2.0.x. The User Manual has an explanation of all configuration
 options, and examples: http://www.privoxy.org/user-manual/.
 
 Be sure to set your browser(s) for HTTP/HTTPS Proxy at <IP>:<Port>, or whatever
-you specify in the config file under 'listen-address'. DEFAULT is localhost:
-8118. Note that Privoxy ONLY proxies HTTP (and HTTPS) traffic. Do not try it
-with FTP or other protocols for the simple reason it does not work.
+you specify in the config file under 'listen-address'. DEFAULT is
+localhost:8118. Note that Privoxy ONLY proxies HTTP (and HTTPS) traffic. Do not
+try it with FTP or other protocols for the simple reason it does not work.
 
 The actions list can be configured via the web interface accessed via http://
 p.p/, as well other options.
 
-All configuration files are subject to unannounced changes during the
-development process.
-
 -------------------------------------------------------------------------------
 
 5. DOCUMENTATION
 
-There should be documentation in the 'doc' subdirectory, but it is not
-completed at this point. In particular, see the User Manual there, the FAQ, and
-those interested in Privoxy development, should look at developer-manual.
+There should be documentation in the 'doc' subdirectory. In particular, see the
+User Manual there, the FAQ, and those interested in Privoxy development, should
+look at developer-manual.
 
-The most up to date source of information on the current development version,
-may still be either comments in the source code, or the included configuration
-files. The source and configuration files are all well commented. The main
-configuration files are: 'config', 'default.action', and 'default.filter' in
-the toplevel source directory.
+The source and configuration files are all well commented. The main
+configuration files are: 'config', 'default.action', and 'default.filter'.
 
 Included documentation may vary according to platform and packager. All
 documentation is posted on http://www.privoxy.org, in case you don't have it,
@@ -150,7 +148,7 @@ with the best support:
 
 6.1. Get Support
 
-For casual users, our support forum at SourceForge is probably best suited: 
+For casual users, our support forum at SourceForge is probably best suited:
 http://sourceforge.net/tracker/?group_id=11118&atid=211118
 
 All users are of course welcome to discuss their issues on the users mailing
@@ -173,7 +171,7 @@ debugging. If you are using your own custom configuration, please try the stock
 configs to see if the problem is configuration related.
 
 If not using the latest version, chances are that the bug has been found and
-fixed in the meantime. We would appreciate if you could take the time to 
+fixed in the meantime. We would appreciate if you could take the time to
 upgrade to the latest version (or even the latest CVS snapshot) and verify your
 bug, but this is not required for reporting.
 
index 815f3f8..0bc0daa 100644 (file)
  *
  * Revisions   :
  *    $Log: acconfig.h,v $
- *    Revision 1.30  2002/09/06 12:14:12  oes
- *    Added missing preproc symbols PCRE*_H_IN_SUBDIR
+ *    Revision 1.27.2.4  2003/12/17 16:34:40  oes
+ *    Cosmetics
  *
- *    Revision 1.29  2002/09/04 12:03:18  oes
- *    re-enable build on older setups
+ *    Revision 1.27.2.3  2003/03/27 16:03:19  oes
+ *    Another shot at Bug #707467
  *
+ *    Revision 1.27.2.2  2003/03/21 14:39:12  oes
+ *    Presumably fixed Bug #707467 by defining unix ifdef __unix__
+ *
+ *    Revision 1.27.2.1  2002/08/10 11:22:31  oes
+ *    - Add two AC_DEFINEs that indicate if the pcre*.h headers
+ *      are located in a pcre/ subdir to the include path.
  *
  *    Revision 1.27  2002/04/25 19:13:57  morcego
  *    Removed RPM release number declaration on configure.in
  */
 #undef STATIC_PCRS
 
-/* 
- * Does pcre.h need to be included as <pcre/pcre.h>?
- */
-#undef PCRE_H_IN_SUBDIR
-
-/* 
- * Does pcreposix.h need to be included as <pcre/pcre.h>?
- */
-#undef PCREPOSIX_H_IN_SUBDIR
-
 /*
  * Allows the use of an ACL to control access to the proxy by IP address.
  */
 #undef HAVE_GETHOSTBYADDR_R_7_ARGS
 #undef HAVE_GETHOSTBYADDR_R_5_ARGS
 
-/* Define if you have gmtime_r and localtime_r with a signature
+/* Defined if you have gmtime_r and localtime_r with a signature
  * of (struct time *, struct tm *)
  */
 #undef HAVE_GMTIME_R
  */
 #undef socklen_t
 
+/* Define if pcre.h must be included as <pcre/pcre.h>
+ */
+#undef PCRE_H_IN_SUBDIR
+
+/* Define if pcreposix.h must be included as <pcre/pcreposix.h>
+ */
+#undef PCREPOSIX_H_IN_SUBDIR
 
 @BOTTOM@
 
 
 /*
  * On OpenBSD and maybe also FreeBSD, gcc doesn't define the cpp
- * symbol unix; it defines __unix__
+ * symbol unix; it defines __unix__ and sometimes not even that:
  */
-#if defined(__unix__) && !defined(unix)
+#if ( defined(__unix__) || defined(__NetBSD__) ) && !defined(unix)
 #define unix 1
 #endif
 
similarity index 93%
rename from src/actionlist.h
rename to actionlist.h
index ce5f5fe..1e06364 100644 (file)
@@ -1,6 +1,6 @@
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/src/actionlist.h,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/actionlist.h,v $
  *
  * Purpose     :  Master list of supported actions.
  *                Not really a header, since it generates code.
  *
  * Revisions   :
  *    $Log: actionlist.h,v $
- *    Revision 2.2  2002/09/12 14:05:14  oes
+ *    Revision 1.17.2.3  2004/10/03 12:53:32  david__schmidt
+ *    Add the ability to check jpeg images for invalid
+ *    lengths of comment blocks.  Defensive strategy
+ *    against the exploit:
+ *       Microsoft Security Bulletin MS04-028
+ *       Buffer Overrun in JPEG Processing (GDI+) Could
+ *       Allow Code Execution (833987)
+ *    Enabled with +inspect-jpegs in actions files.
+ *
+ *    Revision 1.17.2.2  2002/09/25 15:25:25  oes
  *    Added more aliases for prehistoric action names
  *
- *    Revision 2.1  2002/09/04 14:52:18  oes
- *    Synced with the stable branch:
- *       Revision 1.17.2.1  2002/08/02 12:50:47  oes
- *       Consistency with docs: Change default name for action from hide-referer to hide-referrer
- *
- *    Revision 2.0  2002/06/04 14:34:21  jongfoster
- *    Moving source files to src/
+ *    Revision 1.17.2.1  2002/08/02 12:50:47  oes
+ *    Consistency with docs: Change default name for action from hide-referer to hide-referrer
  *
  *    Revision 1.17  2002/05/14 21:25:55  oes
  *    Renamed prevent-(setting/reading)-cookies to crunch-(incoming/outgoing)-cookies
similarity index 92%
rename from src/actions.c
rename to actions.c
index 977f116..dc33b9f 100644 (file)
+++ b/actions.c
@@ -1,7 +1,7 @@
-const char actions_rcs[] = "$Id: actions.c,v 2.0 2002/06/04 14:34:21 jongfoster Exp $";
+const char actions_rcs[] = "$Id: actions.c,v 1.32.2.6 2006/01/29 23:10:56 david__schmidt Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/src/actions.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/actions.c,v $
  *
  * Purpose     :  Declares functions to work with actions files
  *                Functions declared include: FIXME
@@ -33,10 +33,27 @@ const char actions_rcs[] = "$Id: actions.c,v 2.0 2002/06/04 14:34:21 jongfoster
  *
  * Revisions   :
  *    $Log: actions.c,v $
- *    Revision 2.0  2002/06/04 14:34:21  jongfoster
- *    Moving source files to src/
+ *    Revision 1.32.2.6  2006/01/29 23:10:56  david__schmidt
+ *    Multiple filter file support
  *
- *    Revision 1.33  2002/05/26 12:14:19  roro
+ *    Revision 1.32.2.5  2005/06/09 01:18:41  david__schmidt
+ *    Tweaks to conditionally include pthread.h if FEATURE_PTHREAD is enabled -
+ *    this becomes important when jcc.h gets included later down the line.
+ *
+ *    Revision 1.32.2.4  2003/12/03 10:33:11  oes
+ *    - Implemented Privoxy version requirement through
+ *      for-privoxy-version= statement in {{settings}}
+ *      block
+ *    - Fix for unchecked out-of-memory condition
+ *
+ *    Revision 1.32.2.3  2003/02/28 12:52:10  oes
+ *    Fixed memory leak reported by Dan Price in Bug #694713
+ *
+ *    Revision 1.32.2.2  2002/11/20 14:36:55  oes
+ *    Extended unload_current_actions_file() to multiple AFs.
+ *    Thanks to Oliver Stoeneberg for the hint.
+ *
+ *    Revision 1.32.2.1  2002/05/26 12:13:16  roro
  *    Change unsigned to unsigned long in actions_name struct.  This closes
  *    SourceForge Bug #539284.
  *
@@ -191,6 +208,10 @@ const char actions_rcs[] = "$Id: actions.c,v 2.0 2002/06/04 14:34:21 jongfoster
 #include <assert.h>
 #include <stdlib.h>
 
+#ifdef FEATURE_PTHREAD
+#include <pthread.h>
+#endif
+
 #include "project.h"
 #include "jcc.h"
 #include "list.h"
@@ -201,6 +222,7 @@ const char actions_rcs[] = "$Id: actions.c,v 2.0 2002/06/04 14:34:21 jongfoster
 #include "encode.h"
 #include "urlmatch.h"
 #include "cgi.h"
+#include "ssplit.h"
 
 const char actions_h_rcs[] = ACTIONS_H_VERSION;
 
@@ -215,26 +237,27 @@ const char actions_h_rcs[] = ACTIONS_H_VERSION;
  * an enumerated type (well, the preprocessor equivalent).  Here are
  * the values:
  */
-#define AV_NONE       0 /**< Action type: +bool-action or -bool-action */
-#define AV_ADD_STRING 1 /**< Action type: +string-action{string} */
-#define AV_REM_STRING 2 /**< Action type: -string-action */
-#define AV_ADD_MULTI  3 /**< Action type: +multi-action{string} */
-#define AV_REM_MULTI  4 /**< Action type: -multi-action{string} or -multi-action */
-
-/**
- * A structure holding information about a single built-in action string.
+#define AV_NONE       0 /* +opt -opt */
+#define AV_ADD_STRING 1 /* +stropt{string} */
+#define AV_REM_STRING 2 /* -stropt */
+#define AV_ADD_MULTI  3 /* +multiopt{string} +multiopt{string2} */
+#define AV_REM_MULTI  4 /* -multiopt{string} -multiopt          */
+
+/*
+ * We need a structure to hold the name, flag changes,
+ * type, and string index.
  */
 struct action_name
 {
-   const char * name;    /**< Action name */
-   unsigned long mask;   /**< A bit set to "0" = remove action */
-   unsigned long add;    /**< A bit set to "1" = add action */
-   int takes_value;      /**< An AV_... constant */
-   int index;            /**< Index into strings[] or multi[] */
+   const char * name;
+   unsigned long mask;   /* a bit set to "0" = remove action */
+   unsigned long add;    /* a bit set to "1" = add action */
+   int takes_value;      /* an AV_... constant */
+   int index;            /* index into strings[] or multi[] */
 };
 
-/**
- * The array of all built-in action strings.
+/*
+ * And with those building blocks in place, here's the array.
  */
 static const struct action_name action_names[] =
 {
@@ -266,15 +289,6 @@ static const struct action_name action_names[] =
 };
 
 
-/**
- * The currently loaded actions files.
- */
-static struct file_list *current_actions_file[MAX_ACTION_FILES]  = {
-   NULL, NULL, NULL, NULL, NULL,
-   NULL, NULL, NULL, NULL, NULL
-};
-
-
 static int load_one_actions_file(struct client_state *csp, int fileid);
 
 
@@ -868,6 +882,12 @@ void free_current_action (struct current_action_spec *src)
 }
 
 
+static struct file_list *current_actions_file[MAX_AF_FILES]  = {
+   NULL, NULL, NULL, NULL, NULL,
+   NULL, NULL, NULL, NULL, NULL
+};
+
+
 #ifdef FEATURE_GRACEFUL_TERMINATION
 /*********************************************************************
  *
@@ -883,10 +903,15 @@ void free_current_action (struct current_action_spec *src)
  *********************************************************************/
 void unload_current_actions_file(void)
 {
-   if (current_actions_file)
+   int i;
+
+   for (i = 0; i < MAX_AF_FILES; i++)
    {
-      current_actions_file->unloader = unload_actions_file;
-      current_actions_file = NULL;
+      if (current_actions_file[i])
+      {
+         current_actions_file[i]->unloader = unload_actions_file;
+         current_actions_file[i] = NULL;
+      }
    }
 }
 #endif /* FEATURE_GRACEFUL_TERMINATION */
@@ -965,7 +990,7 @@ int load_actions_file(struct client_state *csp)
    int i;
    int result;
 
-   for (i = 0; i < MAX_ACTION_FILES; i++)
+   for (i = 0; i < MAX_AF_FILES; i++)
    {
       if (csp->config->actions_file[i])
       {
@@ -985,23 +1010,6 @@ int load_actions_file(struct client_state *csp)
    return 0;
 }
 
-
-/** load_one_actions_file() parser status: At start of file. */
-#define MODE_START_OF_FILE 1
-
-/** load_one_actions_file() parser status: In "{{settings}}" block. */
-#define MODE_SETTINGS      2
-
-/** load_one_actions_file() parser status: In "{{description}}" block. */
-#define MODE_DESCRIPTION   3
-
-/** load_one_actions_file() parser status: In "{{alias}}" block. */
-#define MODE_ALIAS         4
-
-/** load_one_actions_file() parser status: In "{+some-actions}" block. */
-#define MODE_ACTIONS       5
-
-
 /*********************************************************************
  *
  * Function    :  load_one_actions_file
@@ -1024,6 +1032,11 @@ static int load_one_actions_file(struct client_state *csp, int fileid)
     * Note: Keep these in the order they occur in the file, they are
     * sometimes tested with <=
     */
+#define MODE_START_OF_FILE 1
+#define MODE_SETTINGS      2
+#define MODE_DESCRIPTION   3
+#define MODE_ALIAS         4
+#define MODE_ACTIONS       5
 
    int mode = MODE_START_OF_FILE;
 
@@ -1244,9 +1257,44 @@ static int load_one_actions_file(struct client_state *csp, int fileid)
       {
          /*
           * Part of the {{settings}} block.
-          * Ignore for now, but we may want to read & check permissions
-          * when we go multi-user.
+          * For now only serves to check if the file's minimum Privoxy
+          * version requirement is met, but we may want to read & check
+          * permissions when we go multi-user.
           */
+         if (!strncmp(buf, "for-privoxy-version=", 20))
+         {
+            char *version_string, *fields[3];
+            int num_fields;
+
+            if ((version_string = strdup(buf + 20)) == NULL)
+            {
+               fclose(fp);
+               log_error(LOG_LEVEL_FATAL,
+                         "can't load actions file '%s': out of memory!",
+                         csp->config->actions_file[fileid]);
+               return 1; /* never get here */
+            }
+            
+            num_fields = ssplit(version_string, ".", fields, 3, TRUE, FALSE);
+
+            if (num_fields < 1 || atoi(fields[0]) == 0)
+            {
+               log_error(LOG_LEVEL_ERROR,
+                 "While loading actions file '%s': invalid line (%lu): %s",
+                  csp->config->actions_file[fileid], linenum, buf);
+            }
+            else if (                      atoi(fields[0]) > VERSION_MAJOR
+                     || (num_fields > 1 && atoi(fields[1]) > VERSION_MINOR)
+                     || (num_fields > 2 && atoi(fields[2]) > VERSION_POINT))
+            {
+               fclose(fp);
+               log_error(LOG_LEVEL_FATAL,
+                         "Actions file '%s', line %lu requires newer Privoxy version: %s",
+                         csp->config->actions_file[fileid], linenum, buf );
+               return 1; /* never get here */
+            }
+            free(version_string);
+         }
       }
       else if (mode == MODE_DESCRIPTION)
       {
@@ -1309,7 +1357,14 @@ static int load_one_actions_file(struct client_state *csp, int fileid)
             return 1; /* never get here */
          }
 
-         new_alias->name = strdup(buf);
+         if ((new_alias->name = strdup(buf)) == NULL)
+         {
+            fclose(fp);
+            log_error(LOG_LEVEL_FATAL,
+               "can't load actions file '%s': out of memory!",
+               csp->config->actions_file[fileid]);
+            return 1; /* never get here */
+         }
 
          strcpy(actions_buf, start);
 
@@ -1381,6 +1436,7 @@ static int load_one_actions_file(struct client_state *csp, int fileid)
    fclose(fp);
 
    free_action(cur_action);
+   freez(cur_action);
 
    free_alias_list(alias_list);
 
similarity index 92%
rename from src/actions.h
rename to actions.h
index c0513ff..3f5c62d 100644 (file)
+++ b/actions.h
@@ -1,9 +1,9 @@
 #ifndef ACTIONS_H_INCLUDED
 #define ACTIONS_H_INCLUDED
-#define ACTIONS_H_VERSION "$Id: actions.h,v 2.0 2002/06/04 14:34:21 jongfoster Exp $"
+#define ACTIONS_H_VERSION "$Id: actions.h,v 1.12 2002/05/06 07:56:50 oes Exp $"
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/src/actions.h,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/actions.h,v $
  *
  * Purpose     :  Declares functions to work with actions files
  *                Functions declared include: FIXME
@@ -35,9 +35,6 @@
  *
  * Revisions   :
  *    $Log: actions.h,v $
- *    Revision 2.0  2002/06/04 14:34:21  jongfoster
- *    Moving source files to src/
- *
  *    Revision 1.12  2002/05/06 07:56:50  oes
  *    Made actions_to_html independent of FEATURE_CGI_EDIT_ACTIONS
  *
@@ -107,14 +104,12 @@ struct client_state;
 
 
 
-/**
- * This structure is used to hold user-defined aliases
- */
+/* This structure is used to hold user-defined aliases */
 struct action_alias
 {
-   const char * name;            /**< Alias name.  */
-   struct action_spec action[1]; /**< Alias value. */
-   struct action_alias * next;   /**< Next alias in list */
+   const char * name;
+   struct action_spec action[1];
+   struct action_alias * next;
 };
 
 
similarity index 95%
rename from src/amiga.c
rename to amiga.c
index 97d9f75..ccd021e 100644 (file)
+++ b/amiga.c
@@ -1,7 +1,7 @@
-const char amiga_rcs[] = "$Id: amiga.c,v 2.0 2002/06/04 14:34:21 jongfoster Exp $";
+const char amiga_rcs[] = "$Id: amiga.c,v 1.9 2002/03/26 22:29:54 swa Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/src/amiga.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/amiga.c,v $
  *
  * Purpose     :  Amiga-specific declarations.
  *
@@ -28,9 +28,6 @@ const char amiga_rcs[] = "$Id: amiga.c,v 2.0 2002/06/04 14:34:21 jongfoster Exp
  *
  * Revisions   :
  *    $Log: amiga.c,v $
- *    Revision 2.0  2002/06/04 14:34:21  jongfoster
- *    Moving source files to src/
- *
  *    Revision 1.9  2002/03/26 22:29:54  swa
  *    we have a new homepage!
  *
@@ -232,7 +229,7 @@ void free (void *m)
 
 void *realloc (void *old, size_t ns)
 {
-   void *new_buf;
+   void *new;
    LONG osize, *o = old;
    LONG nsize = ns;
 
@@ -245,9 +242,9 @@ void *realloc (void *old, size_t ns)
    {
       return old;
    }
-   if ((new_buf = malloc(nsize)))
+   if ((new = malloc(nsize)))
    {
-      ULONG *n = new_buf;
+      ULONG *n = new;
 
       osize >>= 2;
       while(osize--)
@@ -256,7 +253,7 @@ void *realloc (void *old, size_t ns)
       }
       free(old);
    }
-   return new_buf;
+   return new;
 }
 
 void __memCleanUp (void)
similarity index 98%
rename from src/amiga.h
rename to amiga.h
index b52a551..4d13690 100644 (file)
+++ b/amiga.h
@@ -4,7 +4,7 @@
 #define AMIGA_H_VERSION "$Id: amiga.h,v 1.9 2002/03/26 22:29:54 swa Exp $"
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/amiga.h,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/amiga.h,v $
  *
  * Purpose     :  Amiga-specific declarations.
  *
diff --git a/src/cgi.c b/cgi.c
similarity index 87%
rename from src/cgi.c
rename to cgi.c
index 034f872..1db93f8 100644 (file)
--- a/src/cgi.c
+++ b/cgi.c
@@ -1,7 +1,7 @@
-const char cgi_rcs[] = "$Id: cgi.c,v 2.3 2002/11/12 16:19:18 oes Exp $";
+const char cgi_rcs[] = "$Id: cgi.c,v 1.70.2.13 2004/02/17 13:30:23 oes Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/src/cgi.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/cgi.c,v $
  *
  * Purpose     :  Declares functions to intercept request, generate
  *                html or gif answers, and to compose HTTP resonses.
@@ -38,19 +38,71 @@ const char cgi_rcs[] = "$Id: cgi.c,v 2.3 2002/11/12 16:19:18 oes Exp $";
  *
  * Revisions   :
  *    $Log: cgi.c,v $
- *    Revision 2.3  2002/11/12 16:19:18  oes
- *    Fix: g_bToggleIJB was used outside #ifdef FEATURE_TOGGLE
- *
- *    Revision 2.2  2002/09/04 15:17:28  oes
- *    Synced with the stable branch:
- *        Revision 1.70.2.1  2002/08/05 11:17:46  oes
- *        Fixed Bug #587820, i.e. added workaround for IE bug that includes fragment identifier in (cgi) query
- *
- *    Revision 2.1  2002/06/04 17:55:24  jongfoster
- *    Adding comments
- *
- *    Revision 2.0  2002/06/04 14:34:21  jongfoster
- *    Moving source files to src/
+ *    Revision 1.70.2.13  2004/02/17 13:30:23  oes
+ *    Moved cgi_error_disabled() from cgiedit.c to
+ *    cgi.c to re-enable build with --disable-editor.
+ *    Fixes Bug #892744. Thanks to Matthew Fischer
+ *    for spotting.
+ *
+ *    Revision 1.70.2.12  2003/12/17 16:33:16  oes
+ *     - Added new function cgi_redirect to handle creation of
+ *       HTTP redirect messages formerly repeated in the code.
+ *     - Send cgi_error_disabled instead of cgi_error_404 when
+ *       referrer check fails
+ *     - Dynamic content now gets Expires header field with date
+ *       in the past
+ *
+ *    Revision 1.70.2.11  2003/10/23 12:29:26  oes
+ *    Bugfix: Transparent PNG was not transparent. Thanks to
+ *    Dan Razzell of Starfish Systems for notice and new PNG.
+ *
+ *    Revision 1.70.2.10  2003/06/06 07:54:25  oes
+ *    Security fix: dspatch_known_cgi no longer considers an empty
+ *    referrer safe for critical CGIs, since malicious links could
+ *    reside on https:// locations which browsers don't advertize as
+ *    referrers. Closes bug #749916, thanks to Jeff Epler for the
+ *    hint. Goodbye One-Click[tm] toggling :-(
+ *
+ *    Revision 1.70.2.9  2003/05/08 15:11:31  oes
+ *    Nit
+ *
+ *    Revision 1.70.2.8  2003/04/29 13:33:51  oes
+ *    Killed a compiler warning on OSX
+ *
+ *    Revision 1.70.2.7  2003/04/03 13:50:58  oes
+ *    - Don't call cgi_error_disabled ifndef FEATURE_CGI_EDIT_ACTIONS
+ *      (fixes bug #710056)
+ *    - Show toggle info only if we have it
+ *
+ *    Revision 1.70.2.6  2003/03/12 01:26:25  david__schmidt
+ *    Move declaration of struct tm dummy outside of a control block so it is
+ *    accessible later on during snprintf in get_http_time.
+ *
+ *    Revision 1.70.2.5  2003/03/11 11:53:58  oes
+ *    Cosmetic: Renamed cryptic variable
+ *
+ *    Revision 1.70.2.4  2003/03/07 03:41:03  david__schmidt
+ *    Wrapping all *_r functions (the non-_r versions of them) with mutex semaphores for OSX.  Hopefully this will take care of all of those pesky crash reports.
+ *
+ *    Revision 1.70.2.3  2002/11/28 18:14:32  oes
+ *    Disable access to critical CGIs via untrusted referrers.
+ *    This prevents users from being tricked by malicious websites
+ *    into making unintentional configuration changes:
+ *
+ *     - Added flag to each cgi_dispatcher that allows or denies
+ *       external linking
+ *     - Introduced proviorical function that greps for the
+ *       referrer header before regular header parsing happens
+ *     - Added safety check to dispatch_known_cgi. CGI is called
+ *       if (cgi harmless || no referrer || we are referrer).
+ *       Else a) toggle calls are modified not to change status and
+ *       b) all other calls are denied.
+ *
+ *    Revision 1.70.2.2  2002/11/12 16:20:37  oes
+ *    Added missing #ifdef FEATURE_TOGGLE around g_bToggleIJB; fixes bug #636651
+ *
+ *    Revision 1.70.2.1  2002/08/05 11:17:46  oes
+ *    Fixed Bug #587820, i.e. added workaround for IE bug that includes fragment identifier in (cgi) query
  *
  *    Revision 1.70  2002/05/19 11:33:20  jongfoster
  *    If a CGI error was not handled, and propogated back to
@@ -428,126 +480,138 @@ const char cgi_rcs[] = "$Id: cgi.c,v 2.3 2002/11/12 16:19:18 oes Exp $";
 #include "cgiedit.h"
 #endif /* def FEATURE_CGI_EDIT_ACTIONS */
 #include "loadcfg.h"
-/* loadcfg.h is for g_bToggleIJB only */
+/* loadcfg.h is for global_toggle_state only */
 #ifdef FEATURE_PTHREAD
 #include <pthread.h>
 #include "jcc.h"
 /* jcc.h is for mutex semaphore globals only */
 #endif /* def FEATURE_PTHREAD */
-
 const char cgi_h_rcs[] = CGI_H_VERSION;
 
-/**
- * List of CGI functions: name, handler, description.
+/*
+ * List of CGI functions: name, handler, description
  * Note: Do NOT use single quotes in the description;
  *       this will break the dynamic "blocked" template!
  */
 static const struct cgi_dispatcher cgi_dispatchers[] = {
    { "",
          cgi_default,
-         "Privoxy main page" },
+         "Privoxy main page",
+         TRUE },
 #ifdef FEATURE_GRACEFUL_TERMINATION
    { "die", 
          cgi_die,  
          "<b>Shut down</b> - <em class=\"warning\">Do not deploy this build in a production environment, "
-         "this is a one click Denial Of Service attack!!!</em>" }, 
+        "this is a one click Denial Of Service attack!!!</em>",
+         FALSE }, 
 #endif
    { "show-status", 
          cgi_show_status,  
-         "View & change the current configuration" }, 
+#ifdef FEATURE_CGI_EDIT_ACTIONS
+        "View & change the current configuration",
+#else
+        "View the current configuration",
+#endif
+         TRUE }, 
    { "show-version", 
          cgi_show_version,  
-         "View the source code version numbers" }, 
+         "View the source code version numbers",
+          TRUE }, 
    { "show-request", 
          cgi_show_request,  
-         "View the request headers." }, 
+         "View the request headers.",
+         TRUE }, 
    { "show-url-info",
          cgi_show_url_info, 
-         "Look up which actions apply to a URL and why"  },
+         "Look up which actions apply to a URL and why",
+         TRUE },
 #ifdef FEATURE_CGI_EDIT_ACTIONS
    { "toggle",
          cgi_toggle, 
-         "Toggle Privoxy on or off" },
-
+         "Toggle Privoxy on or off",
+         FALSE },
    { "edit-actions", /* Edit the actions list */
          cgi_edit_actions, 
-         NULL },
+         NULL, FALSE },
    { "eaa", /* Shortcut for edit-actions-add-url-form */
          cgi_edit_actions_add_url_form, 
-         NULL },
+         NULL, FALSE },
    { "eau", /* Shortcut for edit-actions-url-form */
          cgi_edit_actions_url_form, 
-         NULL },
+         NULL, FALSE },
    { "ear", /* Shortcut for edit-actions-remove-url-form */
          cgi_edit_actions_remove_url_form, 
-         NULL },
+         NULL, FALSE },
+   { "eal", /* Shortcut for edit-actions-list */
+         cgi_edit_actions_list, 
+         NULL, FALSE },
    { "eafu", /* Shortcut for edit-actions-for-url */
          cgi_edit_actions_for_url, 
-         NULL },
+         NULL, FALSE },
    { "eas", /* Shortcut for edit-actions-submit */
          cgi_edit_actions_submit, 
-         NULL },
+         NULL, FALSE },
    { "easa", /* Shortcut for edit-actions-section-add */
          cgi_edit_actions_section_add, 
-         NULL },
+         NULL, FALSE  },
    { "easr", /* Shortcut for edit-actions-section-remove */
          cgi_edit_actions_section_remove, 
-         NULL },
+         NULL, FALSE  },
    { "eass", /* Shortcut for edit-actions-section-swap */
          cgi_edit_actions_section_swap, 
-         NULL },
+         NULL, FALSE  },
    { "edit-actions-for-url",
          cgi_edit_actions_for_url, 
-         NULL /* Edit the actions for (a) specified URL(s) */ },
+         NULL, FALSE  /* Edit the actions for (a) specified URL(s) */ },
    { "edit-actions-list",
          cgi_edit_actions_list, 
-         NULL /* Edit the actions list */ },
+         NULL, TRUE /* Edit the actions list */ },
    { "edit-actions-submit",
          cgi_edit_actions_submit, 
-         NULL /* Change the actions for (a) specified URL(s) */ },
+         NULL, FALSE /* Change the actions for (a) specified URL(s) */ },
    { "edit-actions-url",
          cgi_edit_actions_url, 
-         NULL /* Change a URL pattern in the actionsfile */ },
+         NULL, FALSE /* Change a URL pattern in the actionsfile */ },
    { "edit-actions-url-form",
          cgi_edit_actions_url_form, 
-         NULL /* Form to change a URL pattern in the actionsfile */ },
+         NULL, FALSE /* Form to change a URL pattern in the actionsfile */ },
    { "edit-actions-add-url",
          cgi_edit_actions_add_url, 
-         NULL /* Add a URL pattern to the actionsfile */ },
+         NULL, FALSE /* Add a URL pattern to the actionsfile */ },
    { "edit-actions-add-url-form",
          cgi_edit_actions_add_url_form, 
-         NULL /* Form to add a URL pattern to the actionsfile */ },
+         NULL, FALSE /* Form to add a URL pattern to the actionsfile */ },
    { "edit-actions-remove-url",
          cgi_edit_actions_remove_url, 
-         NULL /* Remove a URL pattern from the actionsfile */ },
+         NULL, FALSE /* Remove a URL pattern from the actionsfile */ },
    { "edit-actions-remove-url-form",
          cgi_edit_actions_remove_url_form, 
-         NULL /* Form to remove a URL pattern from the actionsfile */ },
+         NULL, FALSE /* Form to remove a URL pattern from the actionsfile */ },
    { "edit-actions-section-add",
          cgi_edit_actions_section_add, 
-         NULL /* Remove a section from the actionsfile */ },
+         NULL, FALSE /* Remove a section from the actionsfile */ },
    { "edit-actions-section-remove",
          cgi_edit_actions_section_remove, 
-         NULL /* Remove a section from the actionsfile */ },
+         NULL, FALSE /* Remove a section from the actionsfile */ },
    { "edit-actions-section-swap",
          cgi_edit_actions_section_swap, 
-         NULL /* Swap two sections in the actionsfile */ },
+         NULL, FALSE /* Swap two sections in the actionsfile */ },
 #endif /* def FEATURE_CGI_EDIT_ACTIONS */
    { "robots.txt", 
          cgi_robots_txt,  
-         NULL /* Sends a robots.txt file to tell robots to go away. */ }, 
+         NULL, TRUE /* Sends a robots.txt file to tell robots to go away. */ }, 
    { "send-banner",
          cgi_send_banner, 
-         NULL /* Send a built-in image */ },
+         NULL, TRUE /* Send a built-in image */ },
    { "send-stylesheet",
          cgi_send_stylesheet, 
-         NULL /* Send templates/cgi-style.css */ },
+         NULL, TRUE /* Send templates/cgi-style.css */ },
    { "t",
          cgi_transparent_image, 
-         NULL /* Send a transparent image (short name) */ },
+         NULL, TRUE /* Send a transparent image (short name) */ },
    { NULL, /* NULL Indicates end of list and default page */
          cgi_error_404,
-         NULL /* Unknown CGI page */ }
+         NULL, TRUE /* Unknown CGI page */ }
 };
 
 
@@ -577,17 +641,15 @@ const char image_pattern_data[] =
  */
 const char image_blank_data[] =
  "\211\120\116\107\015\012\032\012\000\000\000\015\111\110\104\122"
- "\000\000\000\004\000\000\000\004\010\006\000\000\000\251\361\236"
- "\176\000\000\000\007\164\111\115\105\007\322\003\013\020\073\070"
- "\013\025\036\203\000\000\000\011\160\110\131\163\000\000\013\022"
- "\000\000\013\022\001\322\335\176\374\000\000\000\004\147\101\115"
- "\101\000\000\261\217\013\374\141\005\000\000\000\033\111\104\101"
- "\124\170\332\143\070\161\342\304\207\377\377\377\347\302\150\006"
- "\144\016\210\146\040\250\002\000\042\305\065\221\270\027\131\110"
+ "\000\000\000\001\000\000\000\001\001\003\000\000\000\045\333\126"
+ "\312\000\000\000\003\120\114\124\105\377\377\377\247\304\033\310"
+ "\000\000\000\001\164\122\116\123\000\100\346\330\146\000\000\000"
+ "\001\142\113\107\104\000\210\005\035\110\000\000\000\012\111\104"
+ "\101\124\170\001\143\140\000\000\000\002\000\001\163\165\001\030"
  "\000\000\000\000\111\105\116\104\256\102\140\202";
 #else
 
-/**
+/*
  * Checkerboard pattern, as a GIF.
  */
 const char image_pattern_data[] =
@@ -597,7 +659,7 @@ const char image_pattern_data[] =
    "\054\000\000\000\000\004\000\004\000\000\002\005\104\174\147"
    "\270\005\000\073";
 
-/**
+/*
  * 1x1 transparant GIF.
  */
 const char image_blank_data[] =
@@ -606,27 +668,12 @@ const char image_blank_data[] =
    "\000\001\000\000\002\002D\001\000;";
 #endif
 
-/**
- * The size of the image_pattern, in bytes.
- */
 const size_t image_pattern_length = sizeof(image_pattern_data) - 1;
-
-/**
- * The size of the image_blank, in bytes.
- */
 const size_t image_blank_length   = sizeof(image_blank_data) - 1;
 
 
-/**
- * The "Out of memory" CGI response.  This is statically allocated
- * and is initialized at startup, for obvious reasons.  It's
- * read-only.  finish_http_response() and free_http_response()
- * have been special-cased to do nothing if they are passed
- * this structure.
- */
 static struct http_response cgi_error_memory_response[1];
 
-
 static struct http_response *dispatch_known_cgi(struct client_state * csp,
                                                 const char * path);
 static struct map *parse_cgi_parameters(char *argstring);
@@ -683,7 +730,7 @@ struct http_response *dispatch_cgi(struct client_state *csp)
       else if (*path != '\0')
       {
          /*
-          * wierdness: URL is /configXXX, where XXX is some string
+          * weirdness: URL is /configXXX, where XXX is some string
           * Do *NOT* intercept.
           */
          return NULL;
@@ -703,6 +750,42 @@ struct http_response *dispatch_cgi(struct client_state *csp)
 }
 
 
+/*********************************************************************
+ *
+ * Function    :  grep_cgi_referrer
+ *
+ * Description :  Ugly provisorical fix that greps the value of the
+ *                referer HTTP header field out of a linked list of
+ *                strings like found at csp->headers. Will disappear
+ *                in Privoxy 3.1.
+ *
+ *                FIXME: csp->headers ought to be csp->http->headers
+ *                FIXME: Parsing all client header lines should
+ *                       happen right after the request is received!
+ *
+ * Parameters  :
+ *          1  :  csp = Current client state (buffers, headers, etc...)
+ *
+ * Returns     :  pointer to value (no copy!), or NULL if none found.
+ *
+ *********************************************************************/
+char *grep_cgi_referrer(struct client_state *csp)
+{
+   struct list_entry *p;
+
+   for (p = csp->headers->first; p != NULL; p = p->next)
+   {
+      if (p->str == NULL) continue;
+      if (strncmpic(p->str, "Referer: ", 9) == 0)
+      {
+         return ((p->str) + 9);
+      }
+   }
+   return NULL;
+
+}
+
+
 /*********************************************************************
  * 
  * Function    :  dispatch_known_cgi
@@ -731,6 +814,7 @@ static struct http_response *dispatch_known_cgi(struct client_state * csp,
    struct http_response *rsp;
    char *query_args_start;
    char *path_copy;
+   char *referrer;
    jb_err err;
 
    if (NULL == (path_copy = strdup(path)))
@@ -754,7 +838,6 @@ static struct http_response *dispatch_known_cgi(struct client_state * csp,
       return cgi_error_memory();
    }
 
-
    /*
     * At this point:
     * path_copy        = CGI call name
@@ -773,15 +856,45 @@ static struct http_response *dispatch_known_cgi(struct client_state * csp,
    log_error(LOG_LEVEL_CLF, "%s - - [%T] \"%s\" 200 3", 
                             csp->ip_addr_str, csp->http->cmd); 
 
-   /* Find and start the right CGI function*/
+   /* 
+    * Find and start the right CGI function
+    */
    d = cgi_dispatchers;
    for (;;)
    {
       if ((d->name == NULL) || (strcmp(path_copy, d->name) == 0))
       {
-         err = (d->handler)(csp, rsp, param_list);
+         /*
+          * If the called CGI is either harmless, or referred
+          * from a trusted source, start it.
+          */
+         if (d->harmless
+             || ((NULL != (referrer = grep_cgi_referrer(csp)))
+                 && (0 == strncmp(referrer, "http://config.privoxy.org/", 26)))
+             )
+         {
+            err = (d->handler)(csp, rsp, param_list);
+         }
+         else
+         {
+            /*
+             * Else, modify toggle calls so that they only display
+             * the status, and deny all other calls.
+             */
+            if (0 == strcmp(path_copy, "toggle"))
+            {
+               unmap(param_list, "set");
+               err = (d->handler)(csp, rsp, param_list);
+            }
+            else
+            {
+               err = cgi_error_disabled(csp, rsp);
+            }
+         }
+
          free(path_copy);
          free_map(param_list);
+
          if (err == JB_ERR_CGI_PARAMS)
          {
             err = cgi_error_bad_param(csp, rsp);
@@ -807,8 +920,8 @@ static struct http_response *dispatch_known_cgi(struct client_state * csp,
       d++;
    }
 }
-
-
+   
+        
 /*********************************************************************
  *
  * Function    :  parse_cgi_parameters
@@ -1135,6 +1248,42 @@ struct http_response *error_response(struct client_state *csp,
 }
 
 
+/*********************************************************************
+ *
+ * Function    :  cgi_error_disabled
+ *
+ * Description :  CGI function that is called to generate an error
+ *                response if the actions editor or toggle CGI are
+ *                accessed despite having being disabled at compile-
+ *                or run-time.
+ *
+ * Parameters  :
+ *          1  :  csp = Current client state (buffers, headers, etc...)
+ *          2  :  rsp = http_response data structure for output
+ *
+ * CGI Parameters : none
+ *
+ * Returns     :  JB_ERR_OK on success
+ *                JB_ERR_MEMORY on out-of-memory error.
+ *
+ *********************************************************************/
+jb_err cgi_error_disabled(struct client_state *csp,
+                          struct http_response *rsp)
+{
+   struct map *exports;
+
+   assert(csp);
+   assert(rsp);
+
+   if (NULL == (exports = default_exports(csp, NULL)))
+   {
+      return JB_ERR_MEMORY;
+   }
+
+   return template_fill_for_cgi(csp, "cgi-error-disabled", exports, rsp);
+}
+
+
 /*********************************************************************
  *
  * Function    :  cgi_init_error_messages
@@ -1382,6 +1531,42 @@ jb_err cgi_error_bad_param(struct client_state *csp,
 }
 
 
+/*********************************************************************
+ *
+ * Function    :  cgi_redirect 
+ *
+ * Description :  CGI support function to generate a HTTP redirect
+ *                message
+ *
+ * Parameters  :
+ *          1  :  rsp = http_response data structure for output
+ *          2  :  target = string with the target URL
+ *
+ * CGI Parameters : None
+ *
+ * Returns     :  JB_ERR_OK on success
+ *                JB_ERR_MEMORY on out-of-memory error.  
+ *
+ *********************************************************************/
+jb_err cgi_redirect (struct http_response * rsp, const char *target)
+{
+   jb_err err;
+
+   assert(rsp);
+   assert(target);
+
+   err = enlist_unique_header(rsp->headers, "Location", target);
+
+   rsp->status = strdup("302 Local Redirect from Privoxy");
+   if (rsp->status == NULL)
+   {
+      return JB_ERR_MEMORY;
+   }
+
+   return err;
+}
+
+
 /*********************************************************************
  *
  * Function    :  add_help_link
@@ -1587,7 +1772,7 @@ struct http_response *finish_http_response(struct http_response *rsp)
       get_http_time(0, buf);
       if (!err) err = enlist_unique_header(rsp->headers, "Date", buf);
       if (!err) err = enlist_unique_header(rsp->headers, "Last-Modified", buf);
-      if (!err) err = enlist_unique_header(rsp->headers, "Expires", buf);
+      if (!err) err = enlist_unique_header(rsp->headers, "Expires", "Sat, 17 Jun 2000 12:00:00 GMT");
    }
 
 
@@ -1989,7 +2174,9 @@ struct map *default_exports(const struct client_state *csp, const char *caller)
    if (!err) err = map(exports, "user-manual",   1, csp->config->usermanual ,1);
    if (!err) err = map(exports, "actions-help-prefix", 1, ACTIONS_HELP_PREFIX ,1);
 #ifdef FEATURE_TOGGLE
-   if (!err) err = map_conditional(exports, "enabled-display", g_bToggleIJB);
+   if (!err) err = map_conditional(exports, "enabled-display", global_toggle_state);
+#else
+   if (!err) err = map_block_killer(exports, "can-toggle");
 #endif
 
    snprintf(buf, 20, "%d", csp->config->hport);
diff --git a/src/cgi.h b/cgi.h
similarity index 92%
rename from src/cgi.h
rename to cgi.h
index 813d1e8..ebbc392 100644 (file)
--- a/src/cgi.h
+++ b/cgi.h
@@ -1,9 +1,9 @@
 #ifndef CGI_H_INCLUDED
 #define CGI_H_INCLUDED
-#define CGI_H_VERSION "$Id: cgi.h,v 1.29 2002/05/19 11:33:21 jongfoster Exp $"
+#define CGI_H_VERSION "$Id: cgi.h,v 1.29.2.2 2004/02/17 13:30:23 oes Exp $"
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/cgi.h,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/cgi.h,v $
  *
  * Purpose     :  Declares functions to intercept request, generate
  *                html or gif answers, and to compose HTTP resonses.
  *
  * Revisions   :
  *    $Log: cgi.h,v $
+ *    Revision 1.29.2.2  2004/02/17 13:30:23  oes
+ *    Moved cgi_error_disabled() from cgiedit.c to
+ *    cgi.c to re-enable build with --disable-editor.
+ *    Fixes Bug #892744. Thanks to Matthew Fischer
+ *    for spotting.
+ *
+ *    Revision 1.29.2.1  2003/12/17 16:33:28  oes
+ *    Added prototype of new function cgi_redirect
+ *
  *    Revision 1.29  2002/05/19 11:33:21  jongfoster
  *    If a CGI error was not handled, and propogated back to
  *    dispatch_known_cgi(), then it was assumed to be "out of memory".
@@ -205,12 +214,16 @@ extern jb_err template_fill_for_cgi(struct client_state *csp,
 
 extern void cgi_init_error_messages(void);
 extern struct http_response *cgi_error_memory(void);
+extern jb_err cgi_redirect (struct http_response * rsp, const char *target);
+
 extern jb_err cgi_error_no_template(struct client_state *csp,
                                     struct http_response *rsp,
                                     const char *template_name);
 extern jb_err cgi_error_bad_param(struct client_state *csp,
                                   struct http_response *rsp);
-jb_err cgi_error_unknown(struct client_state *csp,
+extern jb_err cgi_error_disabled(struct client_state *csp,
+                                 struct http_response *rsp);
+extern jb_err cgi_error_unknown(struct client_state *csp,
                          struct http_response *rsp,
                          jb_err error_to_report);
 
similarity index 94%
rename from src/cgiedit.c
rename to cgiedit.c
index 3f22c23..49e6cf9 100644 (file)
+++ b/cgiedit.c
@@ -1,7 +1,7 @@
-const char cgiedit_rcs[] = "$Id: cgiedit.c,v 2.1 2002/09/04 15:21:18 oes Exp $";
+const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.41.2.12 2006/01/30 15:16:25 david__schmidt Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa//current/src/cgiedit.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/cgiedit.c,v $
  *
  * Purpose     :  CGI-based actionsfile editor.
  *
@@ -42,16 +42,49 @@ const char cgiedit_rcs[] = "$Id: cgiedit.c,v 2.1 2002/09/04 15:21:18 oes Exp $";
  *
  * Revisions   :
  *    $Log: cgiedit.c,v $
- *    Revision 2.1  2002/09/04 15:21:18  oes
- *    Synced with the stable branch:
- *        Revision 1.41.2.2  2002/08/05 20:02:59  oes
- *        Bugfix: "Insert new section at top" did not work properly if first non-comment line in file was of type FILE_LINE_ACTION
+ *    Revision 1.41.2.12  2006/01/30 15:16:25  david__schmidt
+ *    Remove a little residual debugging info
  *
- *        Revision 1.41.2.1  2002/08/02 12:43:14  oes
- *        Fixed bug #588514: first_time now set on a per-string basis in actions_from_radio; javascriptify now called on copies
+ *    Revision 1.41.2.11  2006/01/29 23:10:56  david__schmidt
+ *    Multiple filter file support
  *
- *    Revision 2.0  2002/06/04 14:34:21  jongfoster
- *    Moving source files to src/
+ *    Revision 1.41.2.10  2005/07/04 03:13:43  david__schmidt
+ *    Undo some damaging memory leak patches
+ *
+ *    Revision 1.41.2.9  2005/07/04 00:31:04  david__schmidt
+ *    Removing a double free
+ *
+ *    Revision 1.41.2.8  2005/05/07 21:50:54  david__schmidt
+ *    A few memory leaks plugged (mostly on error paths)
+ *
+ *    Revision 1.41.2.7  2004/02/17 13:30:23  oes
+ *    Moved cgi_error_disabled() from cgiedit.c to
+ *    cgi.c to re-enable build with --disable-editor.
+ *    Fixes Bug #892744. Thanks to Matthew Fischer
+ *    for spotting.
+ *
+ *    Revision 1.41.2.6  2003/12/18 08:13:48  oes
+ *    One line lost in last commit
+ *
+ *    Revision 1.41.2.5  2003/12/17 16:33:47  oes
+ *     - All edit functions that redirect back to the list page
+ *       now use cgi_redirect
+ *     - All redirects now contain useless parameter "foo", whose
+ *       value are raw seconds since epoch, in order to force
+ *       Opera and Konqueror to properly reload the list. Closes
+ *       bug #859993
+ *
+ *    Revision 1.41.2.4  2003/03/11 11:53:59  oes
+ *    Cosmetic: Renamed cryptic variable
+ *
+ *    Revision 1.41.2.3  2002/11/12 15:01:41  oes
+ *    Fix: Don't free uninitialized struct editable_file
+ *
+ *    Revision 1.41.2.2  2002/08/05 20:02:59  oes
+ *    Bugfix: "Insert new section at top" did not work properly if first non-comment line in file was of type FILE_LINE_ACTION
+ *
+ *    Revision 1.41.2.1  2002/08/02 12:43:14  oes
+ *    Fixed bug #588514: first_time now set on a per-string basis in actions_from_radio; javascriptify now called on copies
  *
  *    Revision 1.41  2002/05/21 19:09:45  oes
  *     - Made Add/Edit/Remove URL Submit and Cancel
@@ -297,7 +330,7 @@ const char cgiedit_rcs[] = "$Id: cgiedit.c,v 2.1 2002/09/04 15:21:18 oes Exp $";
 #include "errlog.h"
 #include "loaders.h"
 #include "loadcfg.h"
-/* loadcfg.h is for g_bToggleIJB only */
+/* loadcfg.h is for global_toggle_state only */
 #include "urlmatch.h"
 
 const char cgiedit_h_rcs[] = CGIEDIT_H_VERSION;
@@ -457,8 +490,6 @@ jb_err cgi_error_file(struct client_state *csp,
 jb_err cgi_error_file_read_only(struct client_state *csp,
                                 struct http_response *rsp,
                                 const char *filename);
-jb_err cgi_error_disabled(struct client_state *csp,
-                          struct http_response *rsp);
 
 /* Internal arbitrary config file support functions */
 static jb_err edit_read_file_lines(FILE *fp, struct file_line ** pfile, int *newline);
@@ -2394,40 +2425,6 @@ jb_err cgi_error_file_read_only(struct client_state *csp,
 }
 
 
-/*********************************************************************
- *
- * Function    :  cgi_error_disabled
- *
- * Description :  CGI function that is called if the actions editor
- *                is called although it's disabled in config
- *
- * Parameters  :
- *          1  :  csp = Current client state (buffers, headers, etc...)
- *          2  :  rsp = http_response data structure for output
- *
- * CGI Parameters : none
- *
- * Returns     :  JB_ERR_OK on success
- *                JB_ERR_MEMORY on out-of-memory error.
- *
- *********************************************************************/
-jb_err cgi_error_disabled(struct client_state *csp,
-                          struct http_response *rsp)
-{
-   struct map *exports;
-
-   assert(csp);
-   assert(rsp);
-
-   if (NULL == (exports = default_exports(csp, NULL)))
-   {
-      return JB_ERR_MEMORY;
-   }
-
-   return template_fill_for_cgi(csp, "cgi-error-disabled", exports, rsp);
-}
-
-
 /*********************************************************************
  *
  * Function    :  cgi_edit_actions
@@ -2457,20 +2454,9 @@ jb_err cgi_edit_actions(struct client_state *csp,
    }
 
    /* FIXME: Incomplete */
-   rsp->status = strdup("302 Local Redirect from Privoxy");
-   if (rsp->status == NULL)
-   {
-      return JB_ERR_MEMORY;
-   }
-   if (enlist_unique_header(rsp->headers, "Location",
-      CGI_PREFIX "edit-actions-list?f=default"))
-   {
-      free(rsp->status);
-      rsp->status = NULL;
-      return JB_ERR_MEMORY;
-   }
 
-   return JB_ERR_OK;
+   return cgi_redirect(rsp, CGI_PREFIX "edit-actions-list?f=default");
+
 }
 
 
@@ -2589,7 +2575,7 @@ jb_err cgi_edit_actions_list(struct client_state *csp,
       }
 
       buttons = strdup("");
-      for (i = 0; i < MAX_ACTION_FILES; i++)
+      for (i = 0; i < MAX_AF_FILES; i++)
       {
          if (((fl = csp->actions_list[i]) != NULL) && ((b = fl->f) != NULL))
          {
@@ -2987,8 +2973,8 @@ jb_err cgi_edit_actions_for_url(struct client_state *csp,
    struct file_line * cur_line;
    unsigned line_number;
    jb_err err;
-   struct file_list *filter_file;
    struct re_filterfile_spec *filter_group;
+   int i, have_filters = 0;
 
    if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
    {
@@ -3037,10 +3023,15 @@ jb_err cgi_edit_actions_for_url(struct client_state *csp,
 
    if (!err) err = actions_to_radio(exports, cur_line->data.action);
 
-   filter_file = csp->rlist;
-   filter_group = ((filter_file != NULL) ? filter_file->f : NULL);
-
-   if (!err) err = map_conditional(exports, "any-filters-defined", (filter_group != NULL));
+   for (i = 0; i < MAX_AF_FILES; i++)
+   {
+      if ((csp->rlist[i] != NULL) && (csp->rlist[i]->f != NULL))
+      {
+         if (!err) err = map_conditional(exports, "any-filters-defined", 1);
+         have_filters = 1;
+         break;
+      }
+   }
 
    if (err)
    {
@@ -3049,10 +3040,8 @@ jb_err cgi_edit_actions_for_url(struct client_state *csp,
       return err;
    }
 
-   if (filter_group == NULL)
-   {
+   if (0 == have_filters)
       err = map(exports, "filter-params", 1, "", 1);
-   }
    else
    {
       /* We have some entries in the filter list */
@@ -3076,69 +3065,75 @@ jb_err cgi_edit_actions_for_url(struct client_state *csp,
 
       result = strdup("");
 
-      for (;(!err) && (filter_group != NULL); filter_group = filter_group->next)
+      for (i = 0; i < MAX_AF_FILES; i++)
       {
-         char current_mode = 'x';
-         struct list_entry *filter_name;
-         char * this_line;
-         struct map *line_exports;
-         char number[20];
-
-         filter_name = cur_line->data.action->multi_add[ACTION_MULTI_FILTER]->first;
-         while ((filter_name != NULL)
-             && (0 != strcmp(filter_group->name, filter_name->str)))
+         if ((csp->rlist[i] != NULL) && (csp->rlist[i]->f != NULL))
          {
-              filter_name = filter_name->next;
-         }
-
-         if (filter_name != NULL)
-         {
-            current_mode = 'y';
-         }
-         else
-         {
-            filter_name = cur_line->data.action->multi_remove[ACTION_MULTI_FILTER]->first;
-            while ((filter_name != NULL)
-                && (0 != strcmp(filter_group->name, filter_name->str)))
-            {
-                 filter_name = filter_name->next;
-            }
-            if (filter_name != NULL)
+            filter_group = csp->rlist[i]->f;
+            for (;(!err) && (filter_group != NULL); filter_group = filter_group->next)
             {
-               current_mode = 'n';
-            }
-         }
+               char current_mode = 'x';
+               struct list_entry *filter_name;
+               char * this_line;
+               struct map *line_exports;
+               char number[20];
+
+               filter_name = cur_line->data.action->multi_add[ACTION_MULTI_FILTER]->first;
+               while ((filter_name != NULL)
+                   && (0 != strcmp(filter_group->name, filter_name->str)))
+               {
+                    filter_name = filter_name->next;
+               }
 
-         /* Generate a unique serial number */
-         snprintf(number, sizeof(number), "%x", index++);
-         number[sizeof(number) - 1] = '\0';
+               if (filter_name != NULL)
+               {
+                  current_mode = 'y';
+               }
+               else
+               {
+                  filter_name = cur_line->data.action->multi_remove[ACTION_MULTI_FILTER]->first;
+                  while ((filter_name != NULL)
+                      && (0 != strcmp(filter_group->name, filter_name->str)))
+                  {
+                       filter_name = filter_name->next;
+                  }
+                  if (filter_name != NULL)
+                  {
+                     current_mode = 'n';
+                  }
+               }
 
-         line_exports = new_map();
-         if (line_exports == NULL)
-         {
-            err = JB_ERR_MEMORY;
-            freez(result);
-         }
-         else
-         {
-            if (!err) err = map(line_exports, "index", 1, number, 1);
-            if (!err) err = map(line_exports, "name",  1, filter_group->name, 1);
-            if (!err) err = map(line_exports, "description",  1, filter_group->description, 1);
-            if (!err) err = map_radio(line_exports, "this-filter", "ynx", current_mode);
+               /* Generate a unique serial number */
+               snprintf(number, sizeof(number), "%x", index++);
+               number[sizeof(number) - 1] = '\0';
 
-            this_line = NULL;
-            if (!err)
-            {
-               this_line = strdup(filter_template);
-               if (this_line == NULL) err = JB_ERR_MEMORY;
-            }
-            if (!err) err = template_fill(&this_line, line_exports);
-            string_join(&result, this_line);
+               line_exports = new_map();
+               if (line_exports == NULL)
+               {
+                  err = JB_ERR_MEMORY;
+                  freez(result);
+               }
+               else
+               {
+                  if (!err) err = map(line_exports, "index", 1, number, 1);
+                  if (!err) err = map(line_exports, "name",  1, filter_group->name, 1);
+                  if (!err) err = map(line_exports, "description",  1, filter_group->description, 1);
+                  if (!err) err = map_radio(line_exports, "this-filter", "ynx", current_mode);
+
+                  this_line = NULL;
+                  if (!err)
+                  {
+                     this_line = strdup(filter_template);
+                     if (this_line == NULL) err = JB_ERR_MEMORY;
+                  }
+                  if (!err) err = template_fill(&this_line, line_exports);
+                  string_join(&result, this_line);
 
-            free_map(line_exports);
+                  free_map(line_exports);
+               }
+            }
          }
       }
-
       freez(filter_template);
 
       if (!err)
@@ -3196,7 +3191,7 @@ jb_err cgi_edit_actions_submit(struct client_state *csp,
    struct editable_file * file;
    struct file_line * cur_line;
    unsigned line_number;
-   char * target;
+   char target[1024];
    jb_err err;
    int index;
    const char * action_set_name;
@@ -3242,7 +3237,7 @@ jb_err cgi_edit_actions_submit(struct client_state *csp,
    get_string_param(parameters, "p", &action_set_name);
    if (action_set_name != NULL)
    {
-      for (index = 0; index < MAX_ACTION_FILES; index++)
+      for (index = 0; index < MAX_AF_FILES; index++)
       {
          if (((fl = csp->actions_list[index]) != NULL) && ((b = fl->f) != NULL))
          {
@@ -3384,29 +3379,12 @@ jb_err cgi_edit_actions_submit(struct client_state *csp,
       return err;
    }
 
-   target = strdup(CGI_PREFIX "edit-actions-list?f=");
-   string_append(&target, file->identifier);
-   string_join(&target, section_target(sectionid));
-
+   snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s#l%d",
+            (long) time(NULL), file->identifier, sectionid);
 
    edit_free_file(file);
 
-   if (target == NULL)
-   {
-      /* Out of memory */
-      return JB_ERR_MEMORY;
-   }
-
-   rsp->status = strdup("302 Local Redirect from Privoxy");
-   if (rsp->status == NULL)
-   {
-      free(target);
-      return JB_ERR_MEMORY;
-   }
-   err = enlist_unique_header(rsp->headers, "Location", target);
-   free(target);
-
-   return err;
+   return cgi_redirect(rsp, target);
 }
 
 
@@ -3445,9 +3423,13 @@ jb_err cgi_edit_actions_url(struct client_state *csp,
    struct file_line * cur_line;
    unsigned line_number;
    unsigned section_start_line_number = 0;
-   char * target;
+   char target[1024];
    jb_err err;
 
+   assert(csp);
+   assert(rsp);
+   assert(parameters);
+
    if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
    {
       return cgi_error_disabled(csp, rsp);
@@ -3518,28 +3500,12 @@ jb_err cgi_edit_actions_url(struct client_state *csp,
       return err;
    }
 
-   target = strdup(CGI_PREFIX "edit-actions-list?f=");
-   string_append(&target, file->identifier);
-   string_join(&target, section_target(section_start_line_number));
+   snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s#l%d",
+            (long) time(NULL), file->identifier, section_start_line_number);
 
    edit_free_file(file);
 
-   if (target == NULL)
-   {
-      /* Out of memory */
-      return JB_ERR_MEMORY;
-   }
-
-   rsp->status = strdup("302 Local Redirect from Privoxy");
-   if (rsp->status == NULL)
-   {
-      free(target);
-      return JB_ERR_MEMORY;
-   }
-   err = enlist_unique_header(rsp->headers, "Location", target);
-   free(target);
-
-   return err;
+   return cgi_redirect(rsp, target);
 }
 
 
@@ -3577,7 +3543,7 @@ jb_err cgi_edit_actions_add_url(struct client_state *csp,
    struct editable_file * file;
    struct file_line * cur_line;
    unsigned line_number;
-   char * target;
+   char target[1024];
    jb_err err;
 
    if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
@@ -3663,28 +3629,12 @@ jb_err cgi_edit_actions_add_url(struct client_state *csp,
       return err;
    }
 
-   target = strdup(CGI_PREFIX "edit-actions-list?f=");
-   string_append(&target, file->identifier);
-   string_join(&target, section_target(sectionid));
+   snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s#l%d",
+            (long) time(NULL), file->identifier, sectionid);
 
    edit_free_file(file);
 
-   if (target == NULL)
-   {
-      /* Out of memory */
-      return JB_ERR_MEMORY;
-   }
-
-   rsp->status = strdup("302 Local Redirect from Privoxy");
-   if (rsp->status == NULL)
-   {
-      free(target);
-      return JB_ERR_MEMORY;
-   }
-   err = enlist_unique_header(rsp->headers, "Location", target);
-   free(target);
-
-   return err;
+   return cgi_redirect(rsp, target);
 }
 
 
@@ -3721,7 +3671,7 @@ jb_err cgi_edit_actions_remove_url(struct client_state *csp,
    struct file_line * prev_line;
    unsigned line_number;
    unsigned section_start_line_number = 0;
-   char * target;
+   char target[1024];
    jb_err err;
 
    if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
@@ -3790,28 +3740,12 @@ jb_err cgi_edit_actions_remove_url(struct client_state *csp,
       return err;
    }
 
-   target = strdup(CGI_PREFIX "edit-actions-list?f=");
-   string_append(&target, file->identifier);
-   string_join(&target, section_target(section_start_line_number));
+   snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s#l%d",
+            (long) time(NULL), file->identifier, section_start_line_number);
 
    edit_free_file(file);
 
-   if (target == NULL)
-   {
-      /* Out of memory */
-      return JB_ERR_MEMORY;
-   }
-
-   rsp->status = strdup("302 Local Redirect from Privoxy");
-   if (rsp->status == NULL)
-   {
-      free(target);
-      return JB_ERR_MEMORY;
-   }
-   err = enlist_unique_header(rsp->headers, "Location", target);
-   free(target);
-
-   return err;
+   return cgi_redirect(rsp, target);
 }
 
 
@@ -3848,7 +3782,7 @@ jb_err cgi_edit_actions_section_remove(struct client_state *csp,
    struct file_line * cur_line;
    struct file_line * prev_line;
    unsigned line_number;
-   char * target;
+   char target[1024];
    jb_err err;
 
    if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
@@ -3928,27 +3862,12 @@ jb_err cgi_edit_actions_section_remove(struct client_state *csp,
       return err;
    }
 
-   target = strdup(CGI_PREFIX "edit-actions-list?f=");
-   string_append(&target, file->identifier);
+   snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s",
+            (long) time(NULL), file->identifier);
 
    edit_free_file(file);
 
-   if (target == NULL)
-   {
-      /* Out of memory */
-      return JB_ERR_MEMORY;
-   }
-
-   rsp->status = strdup("302 Local Redirect from Privoxy");
-   if (rsp->status == NULL)
-   {
-      free(target);
-      return JB_ERR_MEMORY;
-   }
-   err = enlist_unique_header(rsp->headers, "Location", target);
-   free(target);
-
-   return err;
+   return cgi_redirect(rsp, target);
 }
 
 
@@ -3986,7 +3905,7 @@ jb_err cgi_edit_actions_section_add(struct client_state *csp,
    struct editable_file * file;
    struct file_line * cur_line;
    unsigned line_number;
-   char * target;
+   char target[1024];
    jb_err err;
 
    if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
@@ -4112,27 +4031,12 @@ jb_err cgi_edit_actions_section_add(struct client_state *csp,
       return err;
    }
 
-   target = strdup(CGI_PREFIX "edit-actions-list?f=");
-   string_append(&target, file->identifier);
+   snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s",
+            (long) time(NULL), file->identifier);
 
    edit_free_file(file);
 
-   if (target == NULL)
-   {
-      /* Out of memory */
-      return JB_ERR_MEMORY;
-   }
-
-   rsp->status = strdup("302 Local Redirect from Privoxy");
-   if (rsp->status == NULL)
-   {
-      free(target);
-      return JB_ERR_MEMORY;
-   }
-   err = enlist_unique_header(rsp->headers, "Location", target);
-   free(target);
-
-   return err;
+   return cgi_redirect(rsp, target);
 }
 
 
@@ -4181,7 +4085,7 @@ jb_err cgi_edit_actions_section_swap(struct client_state *csp,
    struct file_line * line_end_section2;
    struct file_line * line_after_section2;
    unsigned line_number;
-   char * target;
+   char target[1024];
    jb_err err;
 
    if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
@@ -4316,27 +4220,12 @@ jb_err cgi_edit_actions_section_swap(struct client_state *csp,
       }
    } /* END if (section1 != section2) */
 
-   target = strdup(CGI_PREFIX "edit-actions-list?f=");
-   string_append(&target, file->identifier);
+   snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s",
+            (long) time(NULL), file->identifier);
 
    edit_free_file(file);
 
-   if (target == NULL)
-   {
-      /* Out of memory */
-      return JB_ERR_MEMORY;
-   }
-
-   rsp->status = strdup("302 Local Redirect from Privoxy");
-   if (rsp->status == NULL)
-   {
-      free(target);
-      return JB_ERR_MEMORY;
-   }
-   err = enlist_unique_header(rsp->headers, "Location", target);
-   free(target);
-
-   return err;
+   return cgi_redirect(rsp, target);
 }
 
 
@@ -4383,17 +4272,17 @@ jb_err cgi_toggle(struct client_state *csp,
    if (mode == 'E')
    {
       /* Enable */
-      g_bToggleIJB = 1;
+      global_toggle_state = 1;
    }
    else if (mode == 'D')
    {
       /* Disable */
-      g_bToggleIJB = 0;
+      global_toggle_state = 0;
    }
    else if (mode == 'T')
    {
       /* Toggle */
-      g_bToggleIJB = !g_bToggleIJB;
+      global_toggle_state = !global_toggle_state;
    }
 
    if (NULL == (exports = default_exports(csp, "toggle")))
similarity index 91%
rename from src/cgiedit.h
rename to cgiedit.h
index 821b528..7bb344d 100644 (file)
+++ b/cgiedit.h
@@ -1,9 +1,9 @@
 #ifndef CGIEDIT_H_INCLUDED
 #define CGIEDIT_H_INCLUDED
-#define CGIEDIT_H_VERSION "$Id: cgiedit.h,v 1.7 2002/03/26 22:29:54 swa Exp $"
+#define CGIEDIT_H_VERSION "$Id: cgiedit.h,v 1.7.2.2 2004/02/17 13:30:23 oes Exp $"
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/cgiedit.h,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/cgiedit.h,v $
  *
  * Purpose     :  CGI-based actionsfile editor.
  *                
  *
  * Revisions   :
  *    $Log: cgiedit.h,v $
+ *    Revision 1.7.2.2  2004/02/17 13:30:23  oes
+ *    Moved cgi_error_disabled() from cgiedit.c to
+ *    cgi.c to re-enable build with --disable-editor.
+ *    Fixes Bug #892744. Thanks to Matthew Fischer
+ *    for spotting.
+ *
+ *    Revision 1.7.2.1  2002/11/28 18:15:17  oes
+ *    Added cgi_error_disabled
+ *
  *    Revision 1.7  2002/03/26 22:29:54  swa
  *    we have a new homepage!
  *
@@ -134,9 +143,9 @@ extern jb_err cgi_edit_actions_section_add   (struct client_state *csp,
 extern jb_err cgi_edit_actions_section_swap  (struct client_state *csp,
                                               struct http_response *rsp,
                                               const struct map *parameters);
-extern jb_err cgi_toggle(struct client_state *csp,
-                         struct http_response *rsp,
-                         const struct map *parameters);
+extern jb_err cgi_toggle        (struct client_state *csp,
+                                 struct http_response *rsp,
+                                 const struct map *parameters);
 #endif /* def FEATURE_CGI_EDIT_ACTIONS */
 
 
similarity index 93%
rename from src/cgisimple.c
rename to cgisimple.c
index 92d0e3f..3db9ab1 100644 (file)
@@ -1,7 +1,7 @@
-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 2.2 2002/12/28 03:58:19 david__schmidt Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.35.2.7 2006/01/29 23:10:56 david__schmidt Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/src/cgisimple.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/cgisimple.c,v $
  *
  * Purpose     :  Simple CGIs to get information about Privoxy's
  *                status.
@@ -36,15 +36,33 @@ const char cgisimple_rcs[] = "$Id: cgisimple.c,v 2.2 2002/12/28 03:58:19 david__
  *
  * Revisions   :
  *    $Log: cgisimple.c,v $
- *    Revision 2.2  2002/12/28 03:58:19  david__schmidt
- *    Initial drop of dashboard instrumentation - enabled with
- *    --enable-activity-console
+ *    Revision 1.35.2.7  2006/01/29 23:10:56  david__schmidt
+ *    Multiple filter file support
  *
- *    Revision 2.1  2002/07/04 14:35:05  oes
+ *    Revision 1.35.2.6  2005/07/04 03:13:43  david__schmidt
+ *    Undo some damaging memory leak patches
+ *
+ *    Revision 1.35.2.5  2005/05/07 21:50:55  david__schmidt
+ *    A few memory leaks plugged (mostly on error paths)
+ *
+ *    Revision 1.35.2.4  2005/04/04 02:21:24  david__schmidt
+ *    Another instance of:
+ *    Don't show "Edit" buttons #ifndef FEATURE_CGI_EDIT_ACTIONS
+ *    Thanks to Magnus Holmgren for the patch
+ *
+ *    Revision 1.35.2.3  2003/12/17 16:34:15  oes
+ *     - Prevent line wrap beween "View/Edit" link buttons on status page
+ *     - Some (mostly irrelevant) fixes for Out-of-mem-case handling
+ *
+ *    Revision 1.35.2.2  2003/04/03 13:48:28  oes
+ *    Don't show "Edit" buttons #ifndef FEATURE_CGI_EDIT_ACTIONS
+ *
+ *    Revision 1.35.2.1  2002/07/04 15:02:38  oes
  *    Added ability to send redirects to send-banner CGI, so that it can completely mimic the image blocking action if called with type=auto
  *
- *    Revision 2.0  2002/06/04 14:34:21  jongfoster
- *    Moving source files to src/
+ *    Revision 1.35.2.1  2002/07/01 17:32:04  morcego
+ *    Applying patch from Andreas as provided by Hal on the list.
+ *    Message-ID: <20020701121218.V1606@feenix.burgiss.net>
  *
  *    Revision 1.35  2002/05/12 21:44:44  jongfoster
  *    Adding amiga.[ch] revision information, if on an amiga.
@@ -442,7 +460,6 @@ jb_err cgi_send_banner(struct client_state *csp,
                        const struct map *parameters)
 {
    char imagetype = lookup(parameters, "type")[0];
-   char *image_mimetype = BUILTIN_IMAGE_MIMETYPE;
 
    /*
     * If type is auto, then determine the right thing
@@ -474,10 +491,6 @@ jb_err cgi_send_banner(struct client_state *csp,
          {
             imagetype = 'p';
          }
-         else if (0 == strcmpic(p, "custom"))
-         {
-            imagetype = 'c';
-         }
 
          /*
           * If the action is to call this CGI, determine
@@ -530,12 +543,6 @@ jb_err cgi_send_banner(struct client_state *csp,
          rsp->body = bindup(image_blank_data, image_blank_length);
          rsp->content_length = image_blank_length;
       }
-      else if (imagetype == 'c')
-      {
-         rsp->body = bindup(csp->config->image_blocker_data, csp->config->image_blocker_length);
-         rsp->content_length = csp->config->image_blocker_length;
-         image_mimetype = csp->config->image_blocker_format;
-      }
       else
       {
          rsp->body = bindup(image_pattern_data, image_pattern_length);
@@ -546,11 +553,7 @@ jb_err cgi_send_banner(struct client_state *csp,
       {
          return JB_ERR_MEMORY;
       }
-      if (enlist(rsp->headers, "Content-Type: "))
-      {
-         return JB_ERR_MEMORY;
-      }
-      if (enlist(rsp->headers, image_mimetype))
+      if (enlist(rsp->headers, "Content-Type: " BUILTIN_IMAGE_MIMETYPE))
       {
          return JB_ERR_MEMORY;
       }
@@ -757,7 +760,7 @@ jb_err cgi_show_status(struct client_state *csp,
    switch (*(lookup(parameters, "file")))
    {
    case 'a':
-      if (!get_number_param(csp, parameters, "index", &i) && i < MAX_ACTION_FILES && csp->actions_list[i])
+      if (!get_number_param(csp, parameters, "index", &i) && i < MAX_AF_FILES && csp->actions_list[i])
       {
          filename = csp->actions_list[i]->filename;
          file_description = "Actions File";
@@ -765,9 +768,9 @@ jb_err cgi_show_status(struct client_state *csp,
       break;
 
    case 'f':
-      if (csp->rlist)
+      if (!get_number_param(csp, parameters, "index", &i) && i < MAX_AF_FILES && csp->rlist[i])
       {
-         filename = csp->rlist->filename;
+         filename = csp->rlist[i]->filename;
          file_description = "Filter File";
       }
       break;
@@ -882,19 +885,19 @@ jb_err cgi_show_status(struct client_state *csp,
     * FIXME: Shouldn't include hardwired HTML here, use line template instead!
     */
    s = strdup("");
-   for (i = 0; i < MAX_ACTION_FILES; i++)
+   for (i = 0; i < MAX_AF_FILES; i++)
    {
       if (((fl = csp->actions_list[i]) != NULL) && ((b = fl->f) != NULL))
       {
          if (!err) err = string_append(&s, "<tr><td>");
          if (!err) err = string_join(&s, html_encode(csp->actions_list[i]->filename));
-         snprintf(buf, 100, "</td><td class=\"buttons\"><a href=\"/show-status?file=actions&index=%d\">View</a> ", i);
+         snprintf(buf, 100, "</td><td class=\"buttons\"><a href=\"/show-status?file=actions&index=%d\">View</a>", i);
          if (!err) err = string_append(&s, buf);
 
 #ifdef FEATURE_CGI_EDIT_ACTIONS
          if (NULL == strstr(csp->actions_list[i]->filename, "standard.action") && NULL != csp->config->actions_file_short[i])
          {
-            snprintf(buf, 100, "<a href=\"/edit-actions-list?f=%s\">Edit</a>", csp->config->actions_file_short[i]);
+            snprintf(buf, 100, "&nbsp;&nbsp;<a href=\"/edit-actions-list?f=%s\">Edit</a>", csp->config->actions_file_short[i]);
             if (!err) err = string_append(&s, buf);
          }
 #endif
@@ -911,13 +914,29 @@ jb_err cgi_show_status(struct client_state *csp,
       if (!err) err = map(exports, "actions-filenames", 1, "<tr><td>None specified</td></tr>", 1);
    }
 
-   if (csp->rlist)
+   /* 
+    * List all re_filterfiles in use, together with view options.
+    * FIXME: Shouldn't include hardwired HTML here, use line template instead!
+    */
+   s = strdup("");
+   for (i = 0; i < MAX_AF_FILES; i++)
    {
-      if (!err) err = map(exports, "re-filter-filename", 1, html_encode(csp->rlist->filename), 0);
+      if (((fl = csp->rlist[i]) != NULL) && ((b = fl->f) != NULL))
+      {
+         if (!err) err = string_append(&s, "<tr><td>");
+         if (!err) err = string_join(&s, html_encode(csp->rlist[i]->filename));
+         snprintf(buf, 100, "</td><td class=\"buttons\"><a href=\"/show-status?file=filter&index=%d\">View</a>", i);
+         if (!err) err = string_append(&s, buf);
+         if (!err) err = string_append(&s, "</td></tr>\n");
+      }
+   }
+   if (*s != '\0')   
+   {
+      if (!err) err = map(exports, "re-filter-filename", 1, s, 0);
    }
    else
    {
-      if (!err) err = map(exports, "re-filter-filename", 1, "None specified", 1);
+      if (!err) err = map(exports, "re-filter-filename", 1, "<tr><td>None specified</td></tr>", 1);
       if (!err) err = map_block_killer(exports, "have-filterfile");
    }
 
@@ -1094,6 +1113,7 @@ jb_err cgi_show_url_info(struct client_state *csp,
 
       if (err == JB_ERR_MEMORY)
       {
+         free_http_request(url_to_query);
          free_current_action(action);
          free_map(exports);
          return JB_ERR_MEMORY;
@@ -1106,6 +1126,7 @@ jb_err cgi_show_url_info(struct client_state *csp,
          if (!err) err = map(exports, "final", 1, lookup(exports, "default"), 1);
 
          free_current_action(action);
+         free_http_request(url_to_query);
 
          if (err)
          {
@@ -1125,13 +1146,14 @@ jb_err cgi_show_url_info(struct client_state *csp,
          {
             free_current_action(action);
             free_map(exports);
+            free_http_request(url_to_query);
             return JB_ERR_MEMORY;
          }
       }
 
       matches = strdup("<table class=\"transparent\">");
 
-      for (i = 0; i < MAX_ACTION_FILES; i++)
+      for (i = 0; i < MAX_AF_FILES; i++)
       {
          if (NULL == csp->config->actions_file_short[i]
              || !strcmp(csp->config->actions_file_short[i], "standard")) continue;
@@ -1147,9 +1169,13 @@ jb_err cgi_show_url_info(struct client_state *csp,
                string_join  (&matches, html_encode(csp->config->actions_file_short[i]));
                snprintf(buf, 150, ".action <a class=\"cmd\" href=\"/show-status?file=actions&index=%d\">", i);
                string_append(&matches, buf);
-               string_append(&matches, "View</a> <a class=\"cmd\" href=\"/edit-actions-list?f=");
+               string_append(&matches, "View</a>");
+#ifdef FEATURE_CGI_EDIT_ACTIONS
+               string_append(&matches, " <a class=\"cmd\" href=\"/edit-actions-list?f=");
                string_join  (&matches, html_encode(csp->config->actions_file_short[i]));
-               string_append(&matches, "\">Edit</a></th></tr>\n");
+               string_append(&matches, "\">Edit</a>");
+#endif
+               string_append(&matches, "</th></tr>\n");
 
                hits = 0;
                b = b->next;
@@ -1434,9 +1460,6 @@ static char *show_rcs(void)
    SHOW_RCS(filters_rcs)
    SHOW_RCS(gateway_h_rcs)
    SHOW_RCS(gateway_rcs)
-#ifdef FEATURE_ACTIVITY_CONSOLE
-   SHOW_RCS(ipc_h_rcs)
-#endif /* def FEATURE_ACTIVITY_CONSOLE */
    SHOW_RCS(jbsockets_h_rcs)
    SHOW_RCS(jbsockets_rcs)
    SHOW_RCS(jcc_h_rcs)
@@ -1460,10 +1483,6 @@ static char *show_rcs(void)
    SHOW_RCS(project_h_rcs)
    SHOW_RCS(ssplit_h_rcs)
    SHOW_RCS(ssplit_rcs)
-#ifdef FEATURE_ACTIVITY_CONSOLE
-   SHOW_RCS(stats_h_rcs)
-   SHOW_RCS(stats_rcs)
-#endif /* def FEATURE_ACTIVITY_CONSOLE */
    SHOW_RCS(urlmatch_h_rcs)
    SHOW_RCS(urlmatch_rcs)
 #ifdef _WIN32
similarity index 98%
rename from src/cgisimple.h
rename to cgisimple.h
index 8f36749..2bfe562 100644 (file)
@@ -3,7 +3,7 @@
 #define CGISIMPLE_H_VERSION "$Id: cgisimple.h,v 1.11 2002/04/05 15:50:53 oes Exp $"
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/cgisimple.h,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/cgisimple.h,v $
  *
  * Purpose     :  Declares functions to intercept request, generate
  *                html or gif answers, and to compose HTTP resonses.
diff --git a/config b/config
index 5aac5a3..daee979 100644 (file)
--- a/config
+++ b/config
@@ -1,9 +1,9 @@
-#        Sample Configuration File for Privoxy v3.1.1
-#
-#  Copyright (C) 2001, 2002 Privoxy Developers http://privoxy.org
-#
-#  $Id: config,v 1.45 2003/09/22 00:33:01 david__schmidt Exp $
-#
+#        Sample Configuration File for Privoxy v3.0.x
+#  
+#  Copyright (C) 2001-2004 Privoxy Developers http://privoxy.org
+#  
+#  $Id: config,v 1.39.2.17 2006/01/31 11:52:32 david__schmidt Exp $
+#  
 ####################################################################
 #                                                                  #
 #                      Table of Contents                           #
 #        6. WINDOWS GUI OPTIONS                                    #
 #                                                                  #
 ####################################################################
-#
-#
+#  
+#  
 #  I. INTRODUCTION
 #   ===============
-#
+#  
 #  This file holds the Privoxy configuration. If you modify this file,
 #  you will need to send a couple of requests to the proxy before any
 #  changes take effect.
-#
+#  
 #  When starting Privoxy on Unix systems, give the name of this file as
 #  an argument. On Windows systems, Privoxy will look for this file
 #  with the name 'config.txt' in the same directory where Privoxy
 #  is installed.
-#
-#
+#  
+#  
 #  II. FORMAT OF THE CONFIGURATION FILE
 #  ====================================
-#
+#  
 #  Configuration lines consist of an initial keyword followed by a
 #  list of values, all separated by whitespace (any number of spaces
 #  or tabs). For example,
-#
+#  
 #  actionsfile default.action
-#
+#  
 #  Indicates that the actionsfile is named 'default.action'.
-#
+#  
 #  The '#' indicates a comment. Any part of a line following a '#'
 #  is ignored, except if the '#' is preceded by a '\'.
-#
+#  
 #  Thus, by placing a # at the start of an existing configuration line,
 #  you can make it a comment and it will be treated as if it weren't
 #  there. This is called "commenting out" an option and can be useful.
-#
+#  
 #  Note that commenting out and option and leaving it at its default
 #  are two completely different things! Most options behave very
 #  differently when unset.  See the the "Effect if unset" explanation
 #  in each option's description for details.
-#
+#  
 #  Long lines can be continued on the next line by using a `\' as the
 #  last character.
-#
+#  
 
-#
+#  
 #  1. CONFIGURATION AND LOG FILE LOCATIONS
 #  =======================================
-#
+#  
 #  Privoxy can (and normally does) use a number of other files for
 #  additional configuration, help and logging. This section of the
 #  configuration file tells Privoxy where to find those other files.
-#
+#  
 #  The user running Privoxy, must have read permission for all
 #  configuration files, and write permission to any files that would
 #  be modified, such as log files and actions files.
-#
+#  
 
-#
+#  
 #  1.1. confdir
 #  ============
-#
+#  
 #  Specifies:
-#
+#  
 #      The directory where the other configuration files are located
-#
+#  
 #  Type of value:
-#
+#  
 #      Path name
-#
+#  
 #  Default value:
-#
+#  
 #      /etc/privoxy (Unix) or Privoxy installation dir (Windows)
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Mandatory
-#
+#  
 #  Notes:
-#
+#  
 #      No trailing "/", please
-#
+#  
 #      When development goes modular and multi-user, the blocker,
 #      filter, and per-user config will be stored in subdirectories of
 #      "confdir". For now, the configuration directory structure is
 #      flat, except for confdir/templates, where the HTML templates
 #      for CGI output reside (e.g. Privoxy's 404 error page).
-#
+#  
 confdir .
 
-#
+#  
 #  1.2. logdir
 #  ===========
-#
+#  
 #  Specifies:
-#
+#  
 #      The directory where all logging takes place (i.e. where logfile
 #      and jarfile are located)
-#
+#  
 #  Type of value:
-#
+#  
 #      Path name
-#
+#  
 #  Default value:
-#
+#  
 #      /var/log/privoxy (Unix) or Privoxy installation dir (Windows)
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Mandatory
-#
+#  
 #  Notes:
-#
+#  
 #      No trailing "/", please
-#
+#  
 logdir .
 
-#
+#  
 #  1.3. actionsfile
 #  ================
-#
+#  
 #  Specifies:
-#
+#  
 #      The actions file(s) to use
-#
+#  
 #  Type of value:
-#
+#  
 #      File name, relative to confdir, without the .action suffix
-#
+#  
 #  Default values:
-#
+#  
 #        standard     # Internal purposes, no editing recommended
-#
+#  
 #        default      # Main actions file
-#
+#  
 #        user         # User customizations
-#
+#  
 #  Effect if unset:
-#
+#  
 #      No actions are taken at all. Simple neutral proxying.
-#
+#  
 #  Notes:
-#
+#  
 #      Multiple actionsfile lines are permitted, and are in fact
 #      recommended!
-#
+#  
 #      The default values include standard.action, which is used
 #      for internal purposes and should be loaded, default.action,
 #      which is the "main" actions file maintained by the developers,
 #      and user.action, where you can make your personal additions.
-#
+#  
 #      Actions files are where all the per site and per URL
 #      configuration is done for ad blocking, cookie management,
 #      privacy considerations, etc. There is no point in using Privoxy
 #      without at least one actions file.
-#
+#  
 actionsfile standard  # Internal purpose, recommended
 actionsfile default   # Main actions file
 actionsfile user      # User customizations
 
-#
+#  
 #  1.4. filterfile
 #  ===============
-#
+#  
 #  Specifies:
-#
-#      The filter file to use
-#
+#  
+#      The filter file(s) to use
+#  
 #  Type of value:
-#
+#  
 #      File name, relative to confdir
-#
+#  
 #  Default value:
-#
+#  
 #      default.filter (Unix) or default.filter.txt (Windows)
-#
+#  
 #  Effect if unset:
-#
+#  
 #      No textual content filtering takes place, i.e. all +filter{name}
 #      actions in the actions files are turned neutral.
-#
+#  
 #  Notes:
-#
-#      The filter file contains content modification rules that use
+#  
+#      The filter files contain content modification rules that use
 #      regular expressions. These rules permit powerful changes on the
 #      content of Web pages, e.g., you could disable your favorite
 #      JavaScript annoyances, re-write the actual displayed text,
-#      or just have some fun replacing "Microsoft" with "MicroSuck"
-#      wherever it appears on a Web page.
-#
+#      or just have some fun playing buzzword bingo with a web page.
+#  
 #      The +filter{name} actions rely on the relevant filter (name)
-#      to be defined in the filter file!
-#
+#      to be defined in a filter file!
+#  
 #      A pre-defined filter file called default.filter that contains
 #      a bunch of handy filters for common problems is included in the
 #      distribution. See the section on the filter action for a list.
+#      When adding your own, it is recommended you add them to the
+#      user.filter file.
 #
 filterfile default.filter
+#filterfile user.filter
 
-#
+#  
 #  1.5. logfile
 #  ============
-#
+#  
 #  Specifies:
-#
+#  
 #      The log file to use
-#
+#  
 #  Type of value:
-#
+#  
 #      File name, relative to logdir
-#
+#  
 #  Default value:
-#
+#  
 #      logfile (Unix) or privoxy.log (Windows)
-#
+#  
 #  Effect if unset:
-#
+#  
 #      No log file is used, all log messages go to the console (STDERR).
-#
+#  
 #  Notes:
-#
+#  
+#      The windows version will additionally log to the console.
+#  
 #      The logfile is where all logging and error messages are
 #      written. The level of detail and number of messages are set with
 #      the debug option (see below).  The logfile can be useful for
 #      tracking down a problem with Privoxy (e.g., it's not blocking
 #      an ad you think it should block) but in most cases you probably
 #      will never look at it.
-#
+#  
 #      Your logfile will grow indefinitely, and you will probably
 #      want to periodically remove it. On Unix systems, you can do
 #      this with a cron job (see "man cron"). For Red Hat, a logrotate
 #      script has been included.
-#
+#  
 #      On SuSE Linux systems, you can place a line like
 #      "/var/log/privoxy.* +1024k 644 nobody.nogroup" in /etc/logfiles,
 #      with the effect that cron.daily will automatically archive,
 #      gzip, and empty the log, when it exceeds 1M size.
-#
+#  
 #      Any log files must be writable by whatever user Privoxy is
 #      being run as (default on UNIX, user id is "privoxy").
-#
+#  
 logfile logfile
 
-#
+#  
 #  1.6. jarfile
 #  ============
-#
+#  
 #  Specifies:
-#
+#  
 #      The file to store intercepted cookies in
-#
+#  
 #  Type of value:
-#
+#  
 #      File name, relative to logdir
-#
+#  
 #  Default value:
-#
+#  
 #      jarfile (Unix) or privoxy.jar (Windows)
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Intercepted cookies are not stored at all.
-#
+#  
 #  Notes:
-#
+#  
 #      The jarfile may grow to ridiculous sizes over time.
-#
+#  
 jarfile jarfile
 
-#
+#  
 #  1.7. trustfile
 #  ==============
-#
+#  
 #  Specifies:
-#
+#  
 #      The trust file to use
-#
+#  
 #  Type of value:
-#
+#  
 #      File name, relative to confdir
-#
+#  
 #  Default value:
-#
+#  
 #      Unset (commented out). When activated: trust (Unix) or trust.txt
 #      (Windows)
-#
+#  
 #  Effect if unset:
-#
-#      The whole trust mechanism is turned off.
-#
+#  
+#      The entire trust mechanism is turned off.
+#  
 #  Notes:
-#
+#  
 #      The trust mechanism is an experimental feature for building
 #      white-lists and should be used with care. It is NOT recommended
 #      for the casual user.
-#
+#  
 #      If you specify a trust file, Privoxy will only allow access to
-#      sites that are named in the trustfile. You can also mark sites
-#      as trusted referrers (with +), with the effect that access
-#      to untrusted sites will be granted, if a link from a trusted
-#      referrer was used. The link target will then be added to the
-#      "trustfile". Possible applications include limiting Internet
-#      access for children.
-#
-#      If you use + operator in the trust file, it may grow considerably
-#      over time.
-#
+#      sites that are specified in the trustfile. Sites can be listed
+#      in one of two ways:
+#  
+#      Prepending a ~ character limits access to this site only (and
+#      any sub-paths within this site), e.g. ~www.example.com.
+#  
+#      Or, you can designate sites as trusted referrers, by prepending
+#      the name with a + character. The effect is that access to
+#      untrusted sites will be granted -- but only if a link from this
+#      trusted referrer was used. The link target will then be added
+#      to the "trustfile" so that future, direct accesses will be
+#      granted. Sites added via this mechanism do not become trusted
+#      referrers themselves (i.e. they are added with a ~ designation).
+#  
+#      If you use the + operator in the trust file, it may grow
+#      considerably over time.
+#  
+#      It is recommended that Privoxy be compiled with the
+#      --disable-force, --disable-toggle and --disable-editor options,
+#      if this feature is to be used.
+#  
+#      Possible applications include limiting Internet access for
+#      children.
+#  
 #trustfile trust
 
-#
-#  1.8. image-blocker-custom-file
-#  ==============
-#
-#  Specifies:
-#
-#      The custom image to display for blocked images when
-#      +set-image-blocker{custom} is in effect in an action file
-#
-#  Type of value:
-#
-#      File name, relative to confdir; can be a jpeg, png or gif image
-#
-#  Default value:
-#
-#      Unset
-#
-#  Effect if unset:
-#
-#      If a custom image is called for and it is unset, the "pattern"
-#      built-in image will be sent instead.  I.e. it is as if you had
-#      specified "+set-image-blocker{pattern}" instead of
-#      "+set-image-blocker{custom}".
-#
-#  Notes:
-#
-#      If the specified file signature is not found to be jpeg, png
-#      or gif, the the built-in "pattern" image will be sent instead.
-#
-#image-blocker-custom-file my-custom-image.jpg
-
-#
+#  
 #  2. LOCAL SET-UP DOCUMENTATION
 #  =============================
-#
+#  
 #  If you intend to operate Privoxy for more users than just yourself,
 #  it might be a good idea to let them know how to reach you, what
 #  you block and why you do that, your policies, etc.
-#
+#  
 
-#
+#  
 #  2.1. user-manual
 #  ================
-#
+#  
 #  Specifies:
-#
+#  
 #      Location of the Privoxy User Manual.
-#
+#  
 #  Type of value:
-#
+#  
 #      A fully qualified URI
-#
+#  
 #  Default value:
-#
+#  
 #      Unset
-#
+#  
 #  Effect if unset:
-#
+#  
 #      http://www.privoxy.org/version/user-manual/ will be used,
 #      where version is the Privoxy version.
-#
+#  
 #  Notes:
-#
+#  
 #      The User Manual URI is used for help links from some of the
 #      internal CGI pages. The manual itself is normally packaged
 #      with the binary distributions, so you probably want to set this
 #      to a locally installed copy. For multi-user setups, you could
 #      provide a copy on a local webserver for all your users and use
 #      the corresponding URL here.
-#
+#  
 #      Examples:
-#
+#  
 #      Unix, in local filesystem:
-#
-#      user-manual  file:///usr/share/doc/privoxy-2.9.18/user-manual/
-#
+#  
+#       user-manual file:///usr/share/doc/privoxy-3.0.1/user-manual/index.html
+#  
+#      Windows, in local filesystem, must use forward slash notation,
+#      and %20 to denote spaces in path names:
+#  
+#       user-manual file:///c:/some%20dir/privoxy/user-manual/index.html
+#  
+#      Windows, UNC notation (forward slashes required again):
+#  
+#       user-manual file://///some-server/some-path/privoxy/user-manual/index.html
+#  
 #      Any platform, on local webserver (called "local-webserver"):
-#
-#      user-manual  http://local-webserver/privoxy-user-manual/
-#
+#  
+#       user-manual  http://local-webserver/privoxy-user-manual/
+#  
 #      WARNING!!!
-#
+#  
 #          If set, this option should be the first option in the config
 #          file, because it is used while the config file is being read.
-#
+#  
 #user-manual http://www.privoxy.org/user-manual/
 
-#
+#  
 #  2.2. trust-info-url
 #  ===================
-#
+#  
 #  Specifies:
-#
+#  
 #      A URL to be displayed in the error page that users will see if
 #      access to an untrusted page is denied.
-#
+#  
 #  Type of value:
-#
+#  
 #      URL
-#
+#  
 #  Default value:
-#
+#  
 #      Two example URL are provided
-#
+#  
 #  Effect if unset:
-#
+#  
 #      No links are displayed on the "untrusted" error page.
-#
+#  
 #  Notes:
-#
+#  
 #      The value of this option only matters if the experimental trust
 #      mechanism has been activated. (See trustfile above.)
-#
+#  
 #      If you use the trust mechanism, it is a good idea to write
 #      up some on-line documentation about your trust policy and to
 #      specify the URL(s) here. Use multiple times for multiple URLs.
-#
+#  
 #      The URL(s) should be added to the trustfile as well, so users
 #      don't end up locked out from the information on why they were
 #      locked out in the first place!
-#
+#  
 trust-info-url  http://www.example.com/why_we_block.html
 trust-info-url  http://www.example.com/what_we_allow.html
 
-#
+#  
 #  2.3. admin-address
 #  ==================
-#
+#  
 #  Specifies:
-#
+#  
 #      An email address to reach the proxy administrator.
-#
+#  
 #  Type of value:
-#
+#  
 #      Email address
-#
+#  
 #  Default value:
-#
+#  
 #      Unset
-#
+#  
 #  Effect if unset:
-#
+#  
 #      No email address is displayed on error pages and the CGI user
 #      interface.
-#
+#  
 #  Notes:
-#
+#  
 #      If both admin-address and proxy-info-url are unset, the whole
 #      "Local Privoxy Support" box on all generated pages will not
 #      be shown.
-#
+#  
 #admin-address privoxy-admin@example.com
 
-#
+#  
 #  2.4. proxy-info-url
 #  ===================
-#
+#  
 #  Specifies:
-#
+#  
 #      A URL to documentation about the local Privoxy setup,
 #      configuration or policies.
-#
+#  
 #  Type of value:
-#
+#  
 #      URL
-#
+#  
 #  Default value:
-#
+#  
 #      Unset
-#
+#  
 #  Effect if unset:
-#
+#  
 #      No link to local documentation is displayed on error pages and
 #      the CGI user interface.
-#
+#  
 #  Notes:
-#
+#  
 #      If both admin-address and proxy-info-url are unset, the whole
 #      "Local Privoxy Support" box on all generated pages will not
 #      be shown.
-#
+#  
 #      This URL shouldn't be blocked ;-)
-#
+#  
 #proxy-info-url http://www.example.com/proxy-service.html
 
-#
+#  
 #  3. DEBUGGING
 #  ============
-#
+#  
 #  These options are mainly useful when tracing a problem. Note that
 #  you might also want to invoke Privoxy with the --no-daemon command
 #  line option when debugging.
-#
+#  
 
-#
+#  
 #  3.1. debug
 #  ==========
-#
+#  
 #  Specifies:
-#
+#  
 #      Key values that determine what information gets logged to
 #      the logfile.
-#
+#  
 #  Type of value:
-#
+#  
 #      Integer values
-#
+#  
 #  Default value:
-#
+#  
 #      12289 (i.e.: URLs plus informational and warning messages)
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Nothing gets logged.
-#
+#  
 #  Notes:
-#
+#  
 #      The available debug levels are:
-#
-#          debug         1 # show each GET/POST/CONNECT request
-#          debug         2 # show each connection status
-#          debug         4 # show I/O status
-#          debug         8 # show header parsing
-#          debug        16 # log all data into the logfile
-#          debug        32 # debug force feature
+#  
+#          debug         1 # show each GET/POST/CONNECT request 
+#          debug         2 # show each connection status 
+#          debug         4 # show I/O status 
+#          debug         8 # show header parsing 
+#          debug        16 # log all data into the logfile 
+#          debug        32 # debug force feature 
 #          debug        64 # debug regular expression filter
-#          debug       128 # debug fast redirects
-#          debug       256 # debug GIF de-animation
+#          debug       128 # debug fast redirects 
+#          debug       256 # debug GIF de-animation 
 #          debug       512 # Common Log Format
-#          debug      1024 # debug kill pop-ups
-#          debug      2048 # CGI user interface
+#          debug      1024 # debug kill pop-ups 
+#          debug      2048 # CGI user interface 
 #          debug      4096 # Startup banner and warnings.
 #          debug      8192 # Non-fatal errors
-#
+#  
 #      To select multiple debug levels, you can either add them or
 #      use multiple debug lines.
-#
+#  
 #      A debug level of 1 is informative because it will show you each
 #      request as it happens. 1, 4096 and 8192 are highly recommended
 #      so that you will notice when things go wrong. The other levels
 #      are probably only of interest if you are hunting down a specific
 #      problem. They can produce a hell of an output (especially 16).
-#
+#  
 #      The reporting of fatal errors (i.e. ones which crash Privoxy)
 #      is always on and cannot be disabled.
-#
+#  
 #      If you want to use CLF (Common Log Format), you should set
 #      "debug 512" ONLY and not enable anything else.
-#
+#  
 debug   1    # show each GET/POST/CONNECT request
 debug   4096 # Startup banner and warnings
 debug   8192 # Errors - *we highly recommended enabling this*
 
-#
+#  
 #  3.2. single-threaded
 #  ====================
-#
+#  
 #  Specifies:
-#
+#  
 #      Whether to run only one server thread
-#
+#  
 #  Type of value:
-#
+#  
 #      None
-#
+#  
 #  Default value:
-#
+#  
 #      Unset
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Multi-threaded (or, where unavailable: forked) operation,
 #      i.e. the ability to serve multiple requests simultaneously.
-#
+#  
 #  Notes:
-#
+#  
 #      This option is only there for debug purposes and you should
 #      never need to use it. It will drastically reduce performance.
-#
+#  
 #single-threaded
 
-#
+#  
 #  4. ACCESS CONTROL AND SECURITY
 #  ==============================
-#
+#  
 #  This section of the config file controls the security-relevant
 #  aspects of Privoxy's configuration.
-#
+#  
 
-#
+#  
 #  4.1. listen-address
 #  ===================
-#
+#  
 #  Specifies:
-#
+#  
 #      The IP address and TCP port on which Privoxy will listen for
 #      client requests.
-#
+#  
 #  Type of value:
-#
+#  
 #      [IP-Address]:Port
-#
+#  
 #  Default value:
-#
+#  
 #      127.0.0.1:8118
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Bind to 127.0.0.1 (localhost), port 8118. This is suitable and
 #      recommended for home users who run Privoxy on the same machine
 #      as their browser.
-#
+#  
 #  Notes:
-#
+#  
 #      You will need to configure your browser(s) to this proxy address
 #      and port.
-#
+#  
 #      If you already have another service running on port 8118, or
 #      if you want to serve requests from other machines (e.g. on your
 #      local network) as well, you will need to override the default.
-#
+#  
 #      If you leave out the IP address, Privoxy will bind to all
 #      interfaces (addresses) on your machine and may become reachable
 #      from the Internet. In that case, consider using access control
 #      lists (ACL's, see below), and/or a firewall.
-#
+#  
 #      If you open Privoxy to untrusted users, you will also want
 #      to turn off the enable-edit-actions and enable-remote-toggle
 #      options!
-#
+#  
 #  Example:
-#
+#  
 #      Suppose you are running Privoxy on a machine which has the
 #      address 192.168.0.1 on your local private network (192.168.0.0)
 #      and has another outside connection with a different address. You
 #      want it to serve requests from inside only:
-#
+#  
 #        listen-address  192.168.0.1:8118
-#
-listen-address  127.0.0.1:8118
+#  
+listen-address  :8118
 
-#
+#  
 #  4.2. toggle
 #  ===========
-#
+#  
 #  Specifies:
-#
+#  
 #      Initial state of "toggle" status
-#
+#  
 #  Type of value:
-#
+#  
 #      1 or 0
-#
+#  
 #  Default value:
-#
+#  
 #      1
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Act as if toggled on
-#
+#  
 #  Notes:
-#
+#  
 #      If set to 0, Privoxy will start in "toggled off" mode,
 #      i.e. behave like a normal, content-neutral proxy where all ad
 #      blocking, filtering, etc are disabled. See enable-remote-toggle
 #      below. This is not really useful anymore, since toggling is
 #      much easier via the web interface than via editing the conf file.
-#
+#  
 #      The windows version will only display the toggle icon in the
 #      system tray if this option is present.
-#
+#  
 toggle  1
 
-#
+#  
 #  4.3. enable-remote-toggle
 #  =========================
-#
+#  
 #  Specifies:
-#
+#  
 #      Whether or not the web-based toggle feature may be used
-#
+#  
 #  Type of value:
-#
+#  
 #      0 or 1
-#
+#  
 #  Default value:
-#
+#  
 #      1
-#
+#  
 #  Effect if unset:
-#
+#  
 #      The web-based toggle feature is disabled.
-#
+#  
 #  Notes:
-#
+#  
 #      When toggled off, Privoxy acts like a normal, content-neutral
 #      proxy, i.e.  it acts as if none of the actions applied to
 #      any URL.
-#
+#  
 #      For the time being, access to the toggle feature can not be
 #      controlled separately by "ACLs" or HTTP authentication, so that
 #      everybody who can access Privoxy (see "ACLs" and listen-address
 #      above) can toggle it for all users. So this option is not
 #      recommended for multi-user environments with untrusted users.
-#
+#  
 #      Note that you must have compiled Privoxy with support for this
 #      feature, otherwise this option has no effect.
-#
+#  
 enable-remote-toggle  1
 
-#
+#  
 #  4.4. enable-edit-actions
 #  ========================
-#
+#  
 #  Specifies:
-#
+#  
 #      Whether or not the web-based actions file editor may be used
-#
+#  
 #  Type of value:
-#
+#  
 #      0 or 1
-#
+#  
 #  Default value:
-#
+#  
 #      1
-#
+#  
 #  Effect if unset:
-#
+#  
 #      The web-based actions file editor is disabled.
-#
+#  
 #  Notes:
-#
+#  
 #      For the time being, access to the editor can not be controlled
 #      separately by "ACLs" or HTTP authentication, so that everybody
 #      who can access Privoxy (see "ACLs" and listen-address above)
 #      can modify its configuration for all users. So this option is
 #      not recommended for multi-user environments with untrusted users.
-#
+#  
 #      Note that you must have compiled Privoxy with support for this
 #      feature, otherwise this option has no effect.
-#
+#  
 enable-edit-actions 1
 
-#
+#  
 #  4.5. ACLs: permit-access and deny-access
 #  ========================================
-#
+#  
 #  Specifies:
-#
+#  
 #      Who can access what.
-#
+#  
 #  Type of value:
-#
+#  
 #      src_addr[/src_masklen] [dst_addr[/dst_masklen]]
-#
+#  
 #      Where src_addr and dst_addr are IP addresses in dotted decimal
 #      notation or valid DNS names, and src_masklen and dst_masklen are
 #      subnet masks in CIDR notation, i.e. integer values from 2 to 30
 #      representing the length (in bits) of the network address. The
 #      masks and the whole destination part are optional.
-#
+#  
 #  Default value:
-#
+#  
 #      Unset
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Don't restrict access further than implied by listen-address
-#
+#  
 #  Notes:
-#
+#  
 #      Access controls are included at the request of ISPs and systems
 #      administrators, and are not usually needed by individual
 #      users. For a typical home user, it will normally suffice to
 #      ensure that Privoxy only listens on the localhost (127.0.0.1)
 #      or internal (home) network address by means of the listen-address
 #      option.
-#
+#  
 #      Please see the warnings in the FAQ that this proxy is not
 #      intended to be a substitute for a firewall or to encourage
 #      anyone to defer addressing basic security weaknesses.
-#
+#  
 #      Multiple ACL lines are OK. If any ACLs are specified, then
 #      the Privoxy talks only to IP addresses that match at least one
 #      permit-access line and don't match any subsequent deny-access
 #      line. In other words, the last match wins, with the default
 #      being deny-access.
-#
+#  
 #      If Privoxy is using a forwarder (see forward below) for a
 #      particular destination URL, the dst_addr that is examined is
 #      the address of the forwarder and NOT the address of the ultimate
 #      target. This is necessary because it may be impossible for the
 #      local Privoxy to determine the IP address of the ultimate target
 #      (that's often what gateways are used for).
-#
+#  
 #      You should prefer using IP addresses over DNS names, because
 #      the address lookups take time. All DNS names must resolve! You
 #      can not use domain patterns like "*.org" or partial domain
 #      names. If a DNS name resolves to multiple IP addresses, only
 #      the first one is used.
-#
+#  
 #      Denying access to particular sites by ACL may have undesired
 #      side effects if the site in question is hosted on a machine
 #      which also hosts other sites.
-#
+#  
 #  Examples:
-#
+#  
 #      Explicitly define the default behavior if no ACL and
 #      listen-address are set: "localhost" is OK. The absence of a
 #      dst_addr implies that all destination addresses are OK:
-#
+#  
 #        permit-access  localhost
-#
+#  
 #      Allow any host on the same class C subnet as www.privoxy.org
 #      access to nothing but www.example.com:
-#
+#  
 #        permit-access  www.privoxy.org/24 www.example.com/32
-#
+#  
 #      Allow access from any host on the 26-bit subnet 192.168.45.64
 #      to anywhere, with the exception that 192.168.45.73 may not
 #      access www.dirty-stuff.example.com:
-#
-#        permit-access  192.168.45.64/26
+#  
+#        permit-access  192.168.45.64/26 
 #        deny-access    192.168.45.73     www.dirty-stuff.example.com
-#
+#  
 
-#
+#  
 #  4.6. buffer-limit
 #  =================
-#
+#  
 #  Specifies:
-#
+#  
 #      Maximum size of the buffer for content filtering.
-#
+#  
 #  Type of value:
-#
+#  
 #      Size in Kbytes
-#
+#  
 #  Default value:
-#
+#  
 #      4096
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Use a 4MB (4096 KB) limit.
-#
+#  
 #  Notes:
-#
+#  
 #      For content filtering, i.e. the +filter and +deanimate-gif
 #      actions, it is necessary that Privoxy buffers the entire document
 #      body. This can be potentially dangerous, since a server could
 #      just keep sending data indefinitely and wait for your RAM to
 #      exhaust -- with nasty consequences.  Hence this option.
-#
+#  
 #      When a document buffer size reaches the buffer-limit, it is
 #      flushed to the client unfiltered and no further attempt to filter
 #      the rest of the document is made. Remember that there may be
 #      multiple threads running, which might require up to buffer-limit
 #      Kbytes each, unless you have enabled "single-threaded" above.
-#
+#  
 buffer-limit 4096
 
-#
+#  
 #  5. FORWARDING
 #  =============
-#
+#  
 #  This feature allows routing of HTTP requests through a chain
 #  of multiple proxies. It can be used to better protect privacy
 #  and confidentiality when accessing specific domains by routing
@@ -900,191 +896,179 @@ buffer-limit 4096
 #  proxy to speed up browsing. Or chaining to a parent proxy may be
 #  necessary because the machine that Privoxy runs on has no direct
 #  Internet access.
-#
+#  
 #  Also specified here are SOCKS proxies. Privoxy supports the SOCKS
 #  4 and SOCKS 4A protocols.
-#
+#  
 
-#
+#  
 #  5.1. forward
 #  ============
-#
+#  
 #  Specifies:
-#
+#  
 #      To which parent HTTP proxy specific requests should be routed.
-#
+#  
 #  Type of value:
-#
+#  
 #      target_pattern http_parent[:port]
-#
+#  
 #      where target_pattern is a URL pattern that specifies to which
 #      requests (i.e. URLs) this forward rule shall apply. Use /
 #      to denote "all URLs".  http_parent[:port] is the DNS name or
 #      IP address of the parent HTTP proxy through which the requests
 #      should be forwarded, optionally followed by its listening port
 #      (default: 8080). Use a single dot (.) to denote "no forwarding".
-#
+#  
 #  Default value:
-#
+#  
 #      Unset
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Don't use parent HTTP proxies.
-#
+#  
 #  Notes:
-#
+#  
 #      If http_parent is ".", then requests are not forwarded to
 #      another HTTP proxy but are made directly to the web servers.
-#
+#  
 #      Multiple lines are OK, they are checked in sequence, and the
 #      last match wins.
-#
+#  
 #  Examples:
-#
+#  
 #      Everything goes to an example anonymizing proxy, except SSL on
 #      port 443 (which it doesn't handle):
-#
-#        forward   /      anon-proxy.example.org:8080
+#  
+#        forward   /      anon-proxy.example.org:8080 
 #        forward   :443   .
-#
+#  
 #      Everything goes to our example ISP's caching proxy, except for
 #      requests to that ISP's sites:
-#
+#  
 #        forward   /                  caching-proxy.example-isp.net:8000
 #        forward   .example-isp.net   .
-#
+#  
 
-#
+#  
 #  5.2. forward-socks4 and forward-socks4a
 #  =======================================
-#
+#  
 #  Specifies:
-#
+#  
 #      Through which SOCKS proxy (and to which parent HTTP proxy)
 #      specific requests should be routed.
-#
+#  
 #  Type of value:
-#
+#  
 #      target_pattern socks_proxy[:port] http_parent[:port]
-#
+#  
 #      where target_pattern is a URL pattern that specifies to which
 #      requests (i.e. URLs) this forward rule shall apply. Use / to
 #      denote "all URLs".  http_parent and socks_proxy are IP addresses
 #      in dotted decimal notation or valid DNS names (http_parent may
 #      be "." to denote "no HTTP forwarding"), and the optional port
 #      parameters are TCP ports, i.e. integer values from 1 to 64535
-#
+#  
 #  Default value:
-#
+#  
 #      Unset
-#
+#  
 #  Effect if unset:
-#
+#  
 #      Don't use SOCKS proxies.
-#
+#  
 #  Notes:
-#
+#  
 #      Multiple lines are OK, they are checked in sequence, and the
 #      last match wins.
-#
+#  
 #      The difference between forward-socks4 and forward-socks4a
 #      is that in the SOCKS 4A protocol, the DNS resolution of the
 #      target hostname happens on the SOCKS server, while in SOCKS 4
 #      it happens locally.
-#
+#  
 #      If http_parent is ".", then requests are not forwarded to another
 #      HTTP proxy but are made (HTTP-wise) directly to the web servers,
 #      albeit through a SOCKS proxy.
-#
+#  
 #  Examples:
-#
+#  
 #      From the company example.com, direct connections are made to all
 #      "internal" domains, but everything outbound goes through their
 #      ISP's proxy by way of example.com's corporate SOCKS 4A gateway
 #      to the Internet.
-#
-#        forward-socks4a   /              socks-gw.example.com:1080   www-cache.example-isp.net:8080
+#  
+#        forward-socks4a   /              socks-gw.example.com:1080   www-cache.example-isp.net:8080 
 #        forward           .example.com   .
-#
+#  
 #      A rule that uses a SOCKS 4 gateway for all destinations but no
 #      HTTP parent looks like this:
-#
+#  
 #        forward-socks4   /               socks-gw.example.com:1080  .
-#
+#  
 
-#
+#  
 #  6. WINDOWS GUI OPTIONS
 #  ======================
-#
+#  
 #  Privoxy has a number of options specific to the Windows GUI
 #  interface:
-#
+#  
 
 #  If "activity-animation" is set to 1, the Privoxy icon will animate
 #  when "Privoxy" is active. To turn off, set to 0.
-#
+#  
 #activity-animation   1
 
 #  If "log-messages" is set to 1, Privoxy will log messages to the
 #  console window:
-#
+#  
 #log-messages   1
 
 #  If "log-buffer-size" is set to 1, the size of the log buffer,
 #  i.e. the amount of memory used for the log messages displayed in
 #  the console window, will be limited to "log-max-lines" (see below).
-#
+#  
 #  Warning: Setting this to 0 will result in the buffer to grow
 #  infinitely and eat up all your memory!
-#
+#  
 #log-buffer-size 1
 
 #  log-max-lines is the maximum number of lines held in the log
 #  buffer. See above.
-#
+#  
 #log-max-lines 200
 
 #  If "log-highlight-messages" is set to 1, Privoxy will highlight
 #  portions of the log messages with a bold-faced font:
-#
+#  
 #log-highlight-messages 1
 
 #  The font used in the console window:
-#
+#  
 #log-font-name Comic Sans MS
 
 #  Font size used in the console window:
-#
+#  
 #log-font-size 8
 
 #  "show-on-task-bar" controls whether or not Privoxy will appear as
 #  a button on the Task bar when minimized:
-#
+#  
 #show-on-task-bar 0
 
 #  If "close-button-minimizes" is set to 1, the Windows close button
 #  will minimize Privoxy instead of closing the program (close with
 #  the exit option on the File menu).
-#
+#  
 #close-button-minimizes 1
 
 #  The "hide-console" option is specific to the MS-Win console version
 #  of Privoxy.  If this option is used, Privoxy will disconnect from
 #  and hide the command console.
-#
+#  
 #hide-console
 
-#  The experimental "activity-console-address" option is used to
-#  specify where statistical information should be sent for monitoring
-#  by the activity console.
-#
-#activity-console-address 127.0.0.1:8119
-
-#  The experimental "activity-console-update-freq" option is used to
-#  specify how often (in seconds) statistics should be forwarded to the
-#  activity console.
-#
-#activity-console-update-freq 5
-
-#
+#  
index e36526a..e9130b3 100644 (file)
@@ -1,8 +1,8 @@
 dnl Process this file with autoconf to produce a configure script.
 dnl 
-dnl $Id: configure.in,v 1.88 2003/03/23 02:15:51 hal9 Exp $
+dnl $Id: configure.in,v 1.68.2.20 2004/01/31 16:31:46 oes Exp $
 dnl 
-dnl Written by and Copyright (C) 2001, 2002 the SourceForge
+dnl Written by and Copyright (C) 2001 - 2004 the SourceForge
 dnl Privoxy team. http://www.privoxy.org/
 dnl
 dnl Based on the Internet Junkbuster originally written
@@ -28,78 +28,69 @@ dnl or write to the Free Software Foundation, Inc., 59
 dnl Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 dnl 
 dnl $Log: configure.in,v $
-dnl Revision 1.88  2003/03/23 02:15:51  hal9
-dnl Apply Docbook/FreeBSD patch from a.go at tiscali.nl. Thanks!
+dnl Revision 1.68.2.20  2004/01/31 16:31:46  oes
+dnl Resetting version info to 0.0.0 UNRELEASED
 dnl
-dnl Revision 1.87  2002/12/28 04:10:22  david__schmidt
-dnl Initial drop of dashboard instrumentation - enabled with
-dnl --enable-activity-console
+dnl Revision 1.68.2.19  2004/01/30 09:26:03  oes
+dnl Added docbook paths for debian sarge; set status for release
 dnl
-dnl Revision 1.86  2002/12/13 23:47:10  hal9
-dnl Add openbsd special flags per gunner at styx2002.no-ip.org
+dnl Revision 1.68.2.18  2003/12/08 15:10:29  oes
+dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
 dnl
-dnl Revision 1.85  2002/11/27 12:40:54  oes
-dnl Fixed broken handling of pre-set CFLAGS
+dnl Revision 1.68.2.17  2003/10/18 18:41:26  david__schmidt
+dnl Update to remain buildable on OS/2 - remove the failures
+dnl due to missing unixisms
 dnl
-dnl Revision 1.84  2002/10/24 22:24:57  hal9
-dnl Make install: Minor clean up for variable handling.
+dnl Revision 1.68.2.16  2003/03/26 16:05:14  oes
+dnl Marked as 0.0.0 UNRELEASED
 dnl
-dnl Revision 1.83  2002/10/24 16:32:41  hal9
-dnl echo -n does not work with true /bin/sh. Use AC_MSG_CHECKING for docbook stuff.
+dnl Revision 1.68.2.15  2003/03/26 00:25:00  oes
+dnl Bump version for 3.0.2
 dnl
-dnl Revision 1.82  2002/09/27 04:24:07  hal9
-dnl Minor change of "! test" to "test -ne" for Solaris.
+dnl Revision 1.68.2.14  2003/03/25 13:27:12  hal9
+dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
 dnl
-dnl Revision 1.81  2002/09/27 00:38:44  hal9
-dnl Some general cleanup of the user/group stuff. Including remove up to ':' to
-dnl make Linux (?) compatible with other *nix. Better AC output stuff.
+dnl Revision 1.68.2.13  2003/03/18 19:38:57  oes
+dnl Set version info for 3.0.1 release
 dnl
-dnl Revision 1.80  2002/09/26 18:47:46  hal9
-dnl This is most of Al's patch for --with-user and --with-group which tests that
-dnl these are valid values, if specified. If not specified, they are left empty.
+dnl Revision 1.68.2.12  2003/03/07 03:41:04  david__schmidt
+dnl Wrapping all *_r functions (the non-_r versions of them) with mutex semaphores for OSX.  Hopefully this will take care of all of those pesky crash reports.
 dnl
-dnl Revision 1.79  2002/09/07 02:11:06  hal9
-dnl Remove some testing stuff inadvertantly left in.
+dnl Revision 1.68.2.11  2003/03/06 15:22:37  oes
+dnl Fixed minor shell syntax bug
 dnl
-dnl Revision 1.78  2002/09/06 23:18:08  hal9
-dnl Migrate PCRE_H_IN_SUBDIR from 3.0 branch for pcre/pcre.h on RH, etc.
+dnl Revision 1.68.2.10  2003/01/08 16:39:41  oes
+dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
 dnl
-dnl Revision 1.77  2002/09/06 13:23:03  oes
-dnl Removed non-functional test for gcc support for -pthread
+dnl Revision 1.68.2.9  2002/12/13 23:47:45  hal9
+dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
 dnl
-dnl Revision 1.76  2002/09/05 14:52:17  oes
-dnl Synced in some changes fromm the stable branch:
-dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
+dnl Revision 1.68.2.8  2002/11/27 12:55:26  oes
+dnl Fixed broken handling of pre-set CFLAGS
 dnl
-dnl Revision 1.75  2002/09/04 12:19:33  oes
-dnl Resurrected acconfig.h and removed double quotes from AC_DEFINE params to enable build on older systems
+dnl Revision 1.68.2.7  2002/10/25 02:44:22  hal9
+dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
+dnl support, and other related changes. Update related docs.
 dnl
-dnl Revision 1.74  2002/09/03 17:31:33  oes
-dnl Added workaround for very strange behaviour of AC_PROG_CC, which sets CFLAGS to -g -O2 if empty
+dnl Revision 1.68.2.6  2002/09/25 15:35:15  oes
+dnl Marking as non-release
 dnl
-dnl Revision 1.73  2002/06/05 00:26:21  hal9
-dnl Move all doc build stuff to doc/source/GNUmakefile, leaving a 'make dok'
-dnl target only in toplevel. Add DOC_STATUS variable so docs can be built without
-dnl touching sgml source.
+dnl Revision 1.68.2.5  2002/08/25 23:37:00  hal9
+dnl Getting ready for 3.0 release.
 dnl
-dnl Revision 1.72  2002/06/04 15:52:25  jongfoster
-dnl Removing need for acconfig.h (apparently using acconfig.h is an
-dnl obsolete coding style).
-dnl Moving the DocBook stuff together
+dnl Revision 1.68.2.4  2002/08/10 11:21:57  oes
+dnl - Set Version to 2.9.20 (beta)
+dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
+dnl   are located in a pcre/ subdir to the include path.
 dnl
-dnl Revision 1.71  2002/06/04 14:51:49  jongfoster
-dnl Updating for new paths:
-dnl - Source files in src/
-dnl - Object files in obj/
+dnl Revision 1.68.2.3  2002/08/06 11:29:36  oes
+dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
 dnl
-dnl Revision 1.70  2002/05/27 23:26:34  mal0rd
-dnl Made doc-generation configuration automatic.
-dnl References to DB2HTML were removed, not used.
-dnl --with-docbook now only needed if in odd path.
+dnl Revision 1.68.2.2  2002/07/30 19:36:09  hal9
+dnl Bump version to 2.9.17.
 dnl
-dnl Revision 1.69  2002/05/25 18:11:49  jongfoster
-dnl Wahay!!! 3.0.x has branched!
-dnl New development version is 3.1.1 alpha
+dnl Revision 1.68.2.1  2002/07/26 15:21:12  oes
+dnl  Bumped version number for 2.9.16 freeze
 dnl
 dnl Revision 1.68  2002/05/25 16:54:54  jongfoster
 dnl Detect if the compiler supports -pthread.
@@ -443,9 +434,10 @@ dnl =================================================================
 dnl AutoConf Initialization
 dnl =================================================================
 
-AC_REVISION($Revision: 1.88 $)
-AC_INIT(src/jcc.c)
-if test ! -f src/config.h.in; then
+AC_REVISION($Revision: 1.68.2.20 $)
+AC_INIT(jcc.c)
+
+if test ! -f config.h.in; then
    echo "You need to run autoheader first. "
    echo -n "Shall I do this for you now? (y/n) "
    read answer
@@ -456,21 +448,44 @@ if test ! -f src/config.h.in; then
   fi
 fi  
 
-AC_CONFIG_HEADER([src/config.h])
+AC_CONFIG_HEADER([config.h])
 AC_CANONICAL_HOST
 
+dodk=auto
+DKPREFIX=none
+AC_ARG_WITH(docbook, dnl
+  --with-docbook=[[yes|no|directory]]  
+                           Enable docbook documentation creation 
+                          (default = yes, for gnu and linux),[dnl
+case "$with_docbook" in
+yes) dodk=yes;;
+no) dodk=no;;
+*) 
+       dodk=yes
+       DKPREFIX=$withval
+       ;;
+esac
+])
+DB2HTML=false
+AC_ARG_WITH(db2html, dnl
+  --with-db2html=<path/executable>
+                          Set the location of the docbook to html converter
+                          (default = search),[dnl
+DB2HTML=$withval
+])
 
 dnl =================================================================
 dnl Application version number
 dnl =================================================================
 
-VERSION_MAJOR=3
-VERSION_MINOR=1
-VERSION_POINT=1
-CODE_STATUS="alpha"
+VERSION_MAJOR=0
+VERSION_MINOR=0
+VERSION_POINT=0
+CODE_STATUS="UNRELEASED"
 
 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
-dnl used for CGI output
+dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
+dnl whenever CVS in a stable branch differs from the last release.
 
 dnl =================================================================
 dnl Substitute the version numbers
@@ -480,19 +495,13 @@ AC_SUBST(VERSION_MAJOR)
 AC_SUBST(VERSION_MINOR)
 AC_SUBST(VERSION_POINT)
 AC_SUBST(CODE_STATUS)
-AC_SUBST(SYSCONFDIR)
 
 dnl
-AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR},
-  [Version number - Major (X._._).])
-AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR},
-  [Version number - Minor (_.X._).])
-AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT},
-  [Version number - Point (_._.X).])
-AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}",
-  [Version number, as a string.])
-AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}",
-  [Status of the code: "alpha", "beta" or "stable".])
+AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
+AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
+AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
+AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
+AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
 
 dnl =================================================================
 dnl Checks for programs needed to build.
@@ -500,7 +509,7 @@ dnl =================================================================
 
 dnl Keep AC_PROG_CC from setting its own defaults:
 if test "X$CFLAGS" = "X"; then
-   CFLAGS = " "
+   CFLAGS=" "
 fi
 
 AC_PROG_CC
@@ -551,17 +560,23 @@ dnl =================================================================
 dnl Check for user and group validity
 dnl =================================================================
 
-$ID privoxy >/dev/null 2>/dev/null
-if test $? -ne 0 ; then
- AC_MSG_WARN(There is no user 'privoxy' on this system)
-fi
-AC_MSG_CHECKING([for user])
-AC_ARG_WITH(user,
+
+if test "$EMXOS2" = yes; then
+  echo "Skipping user and group validity stuff.";
+
+else
+
+  $ID privoxy >/dev/null 2>/dev/null
+  if test $? -ne 0 ; then
+   AC_MSG_WARN(There is no user 'privoxy' on this system)
+  fi
+  AC_MSG_CHECKING([for user])
+  AC_ARG_WITH(user,
         [  --with-user=privoxy          Set user under which privoxy will run],
         [
                 if test "x$withval" != "xyes"; then
                   if test $ID = no ; then
-                    AC_MSG_WARN(There is no 'id' program on this system)
+                    AC_MSG_ERROR(There is no 'id' program on this system)
                   else
                     AC_MSG_RESULT($with_user)
                     $ID $with_user 2>/dev/null >/dev/null
@@ -577,17 +592,17 @@ AC_ARG_WITH(user,
         ],
         [
           if test $ID = no ; then
-            AC_MSG_WARN(There is no 'id' program on this system)
+            AC_MSG_ERROR(There is no 'id' programm on this system)
           else
             AC_MSG_RESULT(none specified)
             USER=$with_user
           fi
         ]
-)
-AC_SUBST(USER)
+  )
+  AC_SUBST(USER)
 
-AC_MSG_CHECKING([for group])
-AC_ARG_WITH(group,
+  AC_MSG_CHECKING([for group])
+  AC_ARG_WITH(group,
         [  --with-group=privoxy         Set group for privoxy],
         [ 
                 if test "x$withval" != "xyes"; then
@@ -614,14 +629,16 @@ AC_ARG_WITH(group,
         ],
         [
           if test $BGROUPS = no ; then
-            AC_MSG_WARN(There is no 'groups' program on this system)
+            AC_MSG_ERROR(There is no 'groups' programm on this system)
           else
             AC_MSG_RESULT(none specified)
             GROUP=$with_group;
           fi
         ]
-)
-AC_SUBST(GROUP)
+  )
+  AC_SUBST(GROUP)
+
+fi
 
 dnl =================================================================
 dnl additional gcc flags
@@ -658,6 +675,17 @@ else
   fi
 fi
 
+if test $dodk = auto; then
+       dodk=no
+       if test $target_type = unix; then
+               case "$host_os" in
+               linux* | gnu*)
+                       dodk=yes
+               ;;
+               esac
+       fi
+fi
+
 dnl Decide what to do based on target_type
 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
 dnl This is because we don't know yet whether pthread is enabled.
@@ -686,6 +714,90 @@ else
 fi
 AC_SUBST(WIN_ONLY)
 
+dnl Checking which text html browser we have avaliable
+if test $dodk != no; then
+       AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
+       if test "$WDUMP" = false; then
+               AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
+       fi
+       if test $DB2HTML = false; then
+               dnl We need to clean the variable, otherwise AC_CHECK_PROGS
+               dnl will fail   
+               DB2HTML=""
+               AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
+       fi
+fi
+AC_SUBST(WDUMP)
+AC_SUBST(DB2HTML)
+
+dnl If we use rpm, we need to check where %_topdir is
+AC_CHECK_PROGS(RPMBIN,rpm,false)
+if test $RPMBIN != false; then
+               RPM_BASE=`rpm --eval "%{_topdir}"`
+               if test "$RPM_BASE" = ""; then
+                       RPM_BASE=/usr/src/redhat
+               fi
+fi
+AC_SUBST(RPM_BASE)
+
+dnl Check for jade, so we can build the documentation
+AC_CHECK_PROGS(JADEBIN,jade openjade,false)
+AC_SUBST(JADEBIN)
+
+dnl Check for man2html for docs.
+AC_CHECK_PROGS(MAN2HTML,man2html,false)
+AC_SUBST(MAN2HTML)
+
+dnl Set doc status flag for conditional content inclusions
+DOC_STATUS=p-not-stable
+if  test $CODE_STATUS = stable; then
+     DOC_STATUS="p-stable"
+fi
+AC_SUBST(DOC_STATUS)
+
+dnl Checking for the docbook.dsl stylesheet file
+dnl It is still not portable (directory slash)
+JADECAT=""
+if test $dodk = yes; then
+  if test $DKPREFIX = none; then
+    for i in /usr/share/sgml/docbook/dsssl-stylesheets \
+             /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
+             /usr/local/share/sgml/docbook/dsssl/modular \
+             /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
+             ; do
+dnl  echo -n does not fly with /bin/sh.
+dnl      echo -n "checking for $i/html/docbook.dsl..."
+      AC_MSG_CHECKING([for $i])
+      if test -f $i/html/docbook.dsl; then
+        echo "yes"
+        DKPREFIX=$i
+        break
+      else
+        echo "no"
+      fi
+    done
+# where are the catalogs?
+    for i in /usr/share/sgml/CATALOG.docbk30 \
+             /usr/share/sgml/CATALOG.docbk31 \
+             /usr/share/sgml/CATALOG.docbk31 \
+             /usr/local/share/sgml/docbook/3.0/docbook.cat \
+             /usr/local/share/sgml/docbook/3.1/docbook.cat \
+             /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
+             ; do
+dnl     echo -n "checking for $i..."
+      AC_MSG_CHECKING([for $i])
+      if test -f $i; then
+        echo "yes"
+        JADECAT="$JADECAT -c $i"
+      else
+        echo "no"
+      fi
+    done
+  fi
+fi
+AC_SUBST(JADECAT)
+AC_SUBST(DKPREFIX)
+
 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
 old_CFLAGS_nospecial=$CFLAGS
 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
@@ -713,16 +825,22 @@ fi])
 
 if test $have_pthread = yes; then
   PTHREAD_ONLY=
-  AC_DEFINE(FEATURE_PTHREAD,1,
-  [Define to use POSIX threads instead of native threads.])
+  AC_DEFINE(FEATURE_PTHREAD)
   echo Using POSIX threads
   if test "$GCC" = "yes"; then
     # Set a GCC specific switch:
     if test "$target_type" = "unix"; then
-      # This compiler switch makes GCC on Linux thread-safe
-      # However, it's not supported on most other OS.
-      PTHREAD_LIB=
-      SPECIAL_CFLAGS="-pthread"
+      ac_jgf_save_CFLAGS=$CFLAGS
+      CFLAGS="$CFLAGS -pthread"
+      AC_TRY_LINK([#include <pthread.h>],
+        [void *p = pthread_create;],
+        [
+          # This compiler switch makes GCC on Linux thread-safe
+          # However, it's not supported on most other OS.
+          PTHREAD_LIB=
+          SPECIAL_CFLAGS="-pthread"
+        ])
+      CFLAGS=$ac_jgf_save_CFLAGS
     fi
   fi
 else
@@ -750,8 +868,7 @@ AC_CHECK_FUNC(gethostbyaddr_r, [
     int l, bl, t, e;
     (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
   ], [
-    AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS,1,
-      [Define if gethostbyaddr_r() exists and takes 8 arguments])
+    AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
     AC_MSG_RESULT([8 args])
   ], [
     AC_TRY_COMPILE([
@@ -762,8 +879,7 @@ AC_CHECK_FUNC(gethostbyaddr_r, [
       int l, bl, t, e;
       (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
     ], [
-      AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS,1,
-      [Define if gethostbyaddr_r() exists and takes 7 arguments])
+      AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
       AC_MSG_RESULT([7 args])
     ], [
       AC_TRY_COMPILE([
@@ -775,8 +891,7 @@ AC_CHECK_FUNC(gethostbyaddr_r, [
         int l, t;
         (void) gethostbyaddr_r(a, l, t, h, d)
       ], [
-        AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS,1,
-      [Define if gethostbyaddr_r() exists and takes 5 arguments])
+        AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
         AC_MSG_RESULT([5 args])
       ], [
         AC_MSG_RESULT(unrecognised)
@@ -797,8 +912,7 @@ AC_CHECK_FUNC(gethostbyname_r, [
     int bl, e;
     (void) gethostbyname_r(n, h, b, bl, &r, &e)
   ], [
-    AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS,1,
-      [Define if gethostbyname_r() exists and takes 6 arguments])
+    AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
     AC_MSG_RESULT([6 args])
   ], [
     AC_TRY_COMPILE([
@@ -809,8 +923,7 @@ AC_CHECK_FUNC(gethostbyname_r, [
       int bl, e;
       (void) gethostbyname_r(n, h, b, bl, &e)
     ], [
-      AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS,1,
-      [Define if gethostbyname_r() exists and takes 5 arguments])
+      AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
       AC_MSG_RESULT([5 args])
     ], [
       AC_TRY_COMPILE([
@@ -821,8 +934,7 @@ AC_CHECK_FUNC(gethostbyname_r, [
         char *n,
         (void) gethostbyname_r(n, h, d)
       ], [
-        AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS,1,
-      [Define if gethostbyname_r() exists and takes 3 arguments])
+        AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
         AC_MSG_RESULT([3 args])
       ], [
         AC_MSG_RESULT(unrecognised)
@@ -843,8 +955,7 @@ AC_CHECK_FUNC(gmtime_r, [
     (void) gmtime_r(t, tm)
   ], [
     AC_MSG_RESULT(ok)
-    AC_DEFINE(HAVE_GMTIME_R,1,
-      [Define if gmtime_r(struct time *, struct tm *) exists])
+    AC_DEFINE(HAVE_GMTIME_R)
   ], [
     AC_MSG_RESULT(unrecognised)
   ])
@@ -862,8 +973,7 @@ AC_CHECK_FUNC(localtime_r, [
     (void) localtime_r(t, tm)
   ], [
     AC_MSG_RESULT(ok)
-    AC_DEFINE(HAVE_LOCALTIME_R,1,
-      [Define if localtime_r(struct time *, struct tm *) exists])
+    AC_DEFINE(HAVE_LOCALTIME_R)
   ], [
     AC_MSG_RESULT(unrecognised)
   ])
@@ -875,9 +985,9 @@ dnl =================================================================
 dnl Solaris specific
 dnl FIXME: Not tested on Solaris yet...
 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
-dnl     make these checks generic, e.g.:
+dnl    make these checks generic, e.g.:
 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
-dnl     (Moritz Barsnick <moritz@barsnick.net>)
+dnl    (Moritz Barsnick <moritz@barsnick.net>)
 dnl =================================================================
 
 
@@ -885,8 +995,7 @@ SOCKET_LIB=
 
 case "$host" in
 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
-            AC_DEFINE(__EXTENSIONS__,1,
-              [Define to 1 on Solaris.  Do not define on other platforms.])
+            AC_DEFINE(__EXTENSIONS__)
             if test "$GCC" = "yes"; then
               # Set a GCC specific switch:
               # This compiler switch makes Solaris thread-safe
@@ -907,9 +1016,9 @@ dnl =================================================================
 
 AC_MSG_CHECKING([for socklen_t])
 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
-        AC_MSG_RESULT([no])
-        AC_DEFINE(socklen_t,int,
-                [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
+       AC_MSG_RESULT([no])
+       AC_DEFINE(socklen_t,int,
+               [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
 
 
 dnl =================================================================
@@ -1025,8 +1134,7 @@ dnl =================================================================
 dnl Always defined
 dnl =================================================================
 
-AC_DEFINE(__MT__,1,
-  [Always define this, for thread safety on some platforms.])
+AC_DEFINE(__MT__)
 
 dnl =================================================================
 dnl Features
@@ -1034,161 +1142,86 @@ dnl =================================================================
 
 AC_ARG_ENABLE(toggle,
 [  --disable-toggle         Don't support temporary disable],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_TOGGLE,1,
-    [ Allow Privoxy to be "disabled" so it is just a normal non-blocking
-      non-anonymizing proxy.  This is useful if you're trying to access a
-      blocked or broken site - just change the setting in the config file,
-      or use the handy "Disable" menu option in the Windows GUI. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_TOGGLE)
+fi],AC_DEFINE(FEATURE_TOGGLE))
 
 AC_ARG_ENABLE(force,
 [  --disable-force          Don't allow single-page disable],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_FORCE_LOAD,1,
-    [ Bypass filtering for 1 page only. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_FORCE_LOAD)
+fi],AC_DEFINE(FEATURE_FORCE_LOAD))
 
 AC_ARG_ENABLE(fast-redirects,
 [  --disable-fast-redirects Don't support fast redirects],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_FAST_REDIRECTS,1,
-    [ Locally redirect remote script-redirect URLs. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_FAST_REDIRECTS)
+fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
 
 AC_ARG_ENABLE(killpopup,
 [  --disable-killpopup      Never block popups],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_KILL_POPUPS,1,
-    [ Kills JavaScript popups - window.open, onunload, etc. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_KILL_POPUPS)
+fi],AC_DEFINE(FEATURE_KILL_POPUPS))
 
 AC_ARG_ENABLE(stats,
 [  --disable-stats          Don't keep statistics],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_STATISTICS,1,
-    [ Enables statistics function. ])
-fi
-
-AC_ARG_ENABLE(activity-console,
-[  --enable-activity-console    Gather and send extended statistics to the activity console],
-[enableval2=$enableval],
-[enableval2=no])
-if test $enableval2 = yes; then
-  ACTIVITY_ONLY=
-  AC_DEFINE(FEATURE_ACTIVITY_CONSOLE,1,
-    [ Enables sending statistics to the activity console. This is currently
-      experimental, and will require some porting work for a few more platforms. ])
-  else
-    ACTIVITY_ONLY=#
-fi
-AC_SUBST(ACTIVITY_ONLY)
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_STATISTICS)
+fi],AC_DEFINE(FEATURE_STATISTICS))
 
 AC_ARG_ENABLE(ie-images,
-[  --enable-ie-images      Don't auto-detect whether a request from MS Internet
-                           Explorer is for an image or HTML.],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE,1,
-    [ Detect image requests automatically for MSIE.  Will fall back to
-      other image-detection methods (i.e. ´´+image´´ action) for other
-      browsers.
-
-      You must also define FEATURE_IMAGE_BLOCKING to use this feature.
-
-      It detects the following header pair as an image request:
-      ´´User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)´´,
-      ´´Accept: * / *´´.
-
-      And the following as a HTML request:
-      User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0),
-      Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, * / *.
-
-      And no, I haven't got that backwards - IE is being wierd.
-
-      Known limitations: 
-      1) If you press shift-reload on a blocked HTML page, you get
-         the image blocked page, not the HTML ´´blocked´´ page.
-      2) Once an image ´´blocked´´ page has been sent, viewing it 
-         in it's own browser window *should* bring up the HTML
-         ´´blocked´´ page, but it doesn't.  You need to clear the 
-         browser cache to get the HTML version again.
-
-      These limitations are due to IE making inconsistent choices
-      about which ´´Accept:´´ header to send. ])
-fi
+[  --enable-ie-images       Enable a quick but not always reliable auto-detect whether requests from
+                           MS Internet Explorer are for an image or not.],
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
+fi],)
 
 AC_ARG_ENABLE(image-blocking,
 [  --disable-image-blocking Don't try to figure out whether a request is 
                            for an image or HTML - assume HTML.],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_IMAGE_BLOCKING,1,
-    [ Allow blocking using images as well as HTML.
-      If you do not define this then everything is blocked as HTML.
-      Note that this is required if you want to use FEATURE_IMAGE_DETECT_MSIE. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_IMAGE_BLOCKING)
+fi],
+AC_DEFINE(FEATURE_IMAGE_BLOCKING))
 
 AC_ARG_ENABLE(acl-files,
 [  --disable-acl-files      Prevents the use of ACL files to control access to
                            the proxy by IP address.],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_ACL,1,
-    [ Define to 1 to allow the use of an ACL to control access to the proxy by IP address. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_ACL)
+fi],
+AC_DEFINE(FEATURE_ACL))
 
 AC_ARG_ENABLE(trust-files,
 [  --disable-trust-files    Prevents the use of trust files.],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_TRUST,1,
-    [ Define to 1 to allow the use of trust files. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_TRUST)
+fi],
+AC_DEFINE(FEATURE_TRUST))
 
 AC_ARG_ENABLE(jar-files,
 [  --disable-jar-files      Prevents the use of jar files to capture cookies.],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_COOKIE_JAR,1,
-    [ Define to 1 to allow the user to capture cookies. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_COOKIE_JAR)
+fi],
+AC_DEFINE(FEATURE_COOKIE_JAR))
 
 AC_ARG_ENABLE(editor,
 [  --disable-editor         Prevents the use of the web-based actions file
                            editor and web-based temporary disable setting.],
-[enableval2=$enableval],
-[enableval2=yes])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS,1,
-    [ Define to 1 to enable the web-based configuration (actions file) editor.
-      If you have a shared proxy, you might want to turn this off. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
+fi],
+AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
 
 AC_ARG_ENABLE(no-gifs,
 [  --enable-no-gifs         Use politically correct PNG format instead of GIF
                            for built-in images. May not work with all browsers.],
-[enableval2=$enableval],
-[enableval2=no])
-if test $enableval2 = yes; then
-  AC_DEFINE(FEATURE_NO_GIFS,1,
-    [ Define to 1 to use PNG instead of GIF for built-in images. ])
-fi
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_NO_GIFS)
+fi])
+
 
 dnl pcre/pcrs is needed for CGI anyway, so
 dnl the choice is only between static and
@@ -1217,12 +1250,7 @@ if test $have_pcre = "yes"; then
 else
   echo "using built-in static pcre"
   pcre_dyn=no
-  AC_DEFINE(STATIC_PCRE,1,
-    [Define to 1 if PCRE should be statically built in instead of linking
-     with libpcre.
-     (This is determined by configure depending on the availiability of
-     libpcre and user preferences). The name is ugly, but pcre needs it.
-     Don't try to change this here! Use configure instead.])
+  AC_DEFINE(STATIC_PCRE)
   STATIC_PCRE_ONLY=
 fi
 
@@ -1236,129 +1264,13 @@ if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
   LIBS="$LIBS -lpcrs"
 else
   echo "using built-in static pcrs"
-  AC_DEFINE(STATIC_PCRS,1,
-    [Define to 1 if PCRS should be statically built in instead of linking
-     with libpcrs.
-     (This is determined by configure depending on the availiability of
-     libpcrs and user preferences).
-     Don't try to change this here! Use configure instead.])
+  AC_DEFINE(STATIC_PCRS)
   STATIC_PCRS_ONLY=
 fi
 
 AC_SUBST(STATIC_PCRE_ONLY)
 AC_SUBST(STATIC_PCRS_ONLY)
 
-dnl =================================================================
-dnl DocBook stuff
-dnl =================================================================
-
-AC_ARG_WITH(docbook, dnl
-  --with-docbook=<directory>    
-                           Set the location of the dsssl stylesheet
-                           (default = search),[dnl
-DKPREFIX=$withval
-])
-
-dnl Check for jade, so we can build the documentation
-dnl Openjade is preferred according to docs, but jade
-dnl is *much* faster.
-AC_CHECK_PROGS(JADEBIN,jade openjade,false)
-AC_SUBST(JADEBIN)
-
-dnl Checking for the docbook.dsl stylesheet file
-dnl It is still not portable (directory slash)
-dnl   ^ Why not?  All systems use / don't they?
-dnl   Windows certainly can.  Is this a Mac or
-dnl   Amiga issue?  -- Jon  /dsssl/docbook/html/docbook.dsl
-DKPREFIXCOPY=$DKPREFIX
-DKPREFIX=false
-for i in $DKPREFIXCOPY /usr/share/sgml/docbook/stylesheet/dsssl/modular \
-        /usr/share/sgml/docbook/dsssl-stylesheets /usr/share/sgml/docbkdsl \
-        /usr/share/sgml/docbook-dsssl /usr/local/share/sgml/docbook/dsssl/modular; do
-dnl  echo -n does not fly with /bin/sh.
-dnl      echo -n "checking for $i/html/docbook.dsl..."
-      AC_MSG_CHECKING([for $i])
-        if test -f $i/html/docbook.dsl; then
-                echo "yes"
-                DKPREFIX=$i
-                break 
-        else
-                echo "no"
-        fi
-done
-AC_SUBST(DKPREFIX)
-
-JADECAT=""
-dnl where are the catalogs?
-for i in /usr/share/sgml/CATALOG.docbk30 \
-         /usr/share/sgml/CATALOG.docbk31 \
-        /usr/local/share/sgml/docbook/3.0/docbook.cat \
-        /usr/local/share/sgml/docbook/3.1/docbook.cat \
-        ; do
-dnl     echo -n "checking for $i..."
-      AC_MSG_CHECKING([for $i])
-        if test -f $i; then
-                echo "yes"
-                JADECAT="$JADECAT -c $i"
-        else
-                echo "no"
-        fi
-done
-AC_SUBST(JADECAT)
-
-dnl NOT USED?
-dnl DB2HTML=false
-dnl AC_ARG_WITH(db2html, dnl
-dnl  --with-db2html=<path/executable>
-dnl                          Set the location of the docbook to html converter
-dnl                           (default = search),[dnl
-dnl DB2HTML=$withval
-dnl ])
-dnl if ! test -x $DB2HTML; then
-dnl     DB2HTML=""
-dnl fi
-dnl 
-dnl Check for a docbook -> HTML converter
-dnl AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
-dnl AC_SUBST(DB2HTML)
-
-dnl Check for a text browser that supports -dump
-AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
-AC_SUBST(WDUMP)
-
-dnl Check for man2html for docs.
-AC_CHECK_PROGS(MAN2HTML,man2html,false)
-AC_SUBST(MAN2HTML)
-
-dnl Set doc status, used for conditional content inclusions
-DOC_STATUS=""
-if  test $CODE_STATUS = alpha; then
-     DOC_STATUS="-ip-alpha -ip-not-stable"
-fi
-if  test $CODE_STATUS = beta; then
-     DOC_STATUS="-ip-beta -ip-not-stable"
-fi
-if  test $CODE_STATUS = stable; then
-     DOC_STATUS="-ip-stable"
-fi
-echo "checking for doc status flags... $DOC_STATUS"
-AC_SUBST(DOC_STATUS)
-
-dnl =================================================================
-dnl RPM stuff
-dnl =================================================================
-
-dnl If we use rpm, we need to check where %_topdir is
-AC_CHECK_PROGS(RPMBIN,rpm,false)
-if test $RPMBIN != false; then
-                RPM_BASE=`rpm --eval "%{_topdir}"`
-                if test "$RPM_BASE" = ""; then
-                        RPM_BASE=/usr/src/redhat
-                fi
-fi
-AC_SUBST(RPM_BASE)
-
-
 dnl =================================================================
 dnl Final cleanup and output
 dnl =================================================================
@@ -1370,5 +1282,4 @@ AC_SUBST(SPECIAL_CFLAGS)
 
 AC_SUBST(PTHREAD_LIB)
 
-AC_OUTPUT(GNUmakefile doc/source/ldp.dsl doc/source/GNUmakefile)
-
+AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)
similarity index 97%
rename from src/cygwin.h
rename to cygwin.h
index 1ed69f6..c57602e 100644 (file)
+++ b/cygwin.h
@@ -3,7 +3,7 @@
 #define CYGWIN_H_VERSION "$Id: cygwin.h,v 1.4 2002/03/26 22:29:54 swa Exp $"
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/cygwin.h,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/cygwin.h,v $
  *
  * Purpose     :  The windows.h file seems to be a *tad* different, so I
  *                will bridge the gaps here.  Perhaps I should convert the
similarity index 94%
rename from src/deanimate.c
rename to deanimate.c
index b411f90..b9592e8 100644 (file)
@@ -1,7 +1,7 @@
-const char deanimate_rcs[] = "$Id: deanimate.c,v 2.1 2002/08/26 11:06:27 sarantis Exp $";
+const char deanimate_rcs[] = "$Id: deanimate.c,v 1.12.2.1 2004/10/03 12:53:32 david__schmidt Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/src/deanimate.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/deanimate.c,v $
  *
  * Purpose     :  Declares functions to manipulate binary images on the
  *                fly.  High-level functions include:
@@ -40,11 +40,14 @@ const char deanimate_rcs[] = "$Id: deanimate.c,v 2.1 2002/08/26 11:06:27 saranti
  *
  * Revisions   :
  *    $Log: deanimate.c,v $
- *    Revision 2.1  2002/08/26 11:06:27  sarantis
- *    Fix typo failiure -> failure
- *
- *    Revision 2.0  2002/06/04 14:34:21  jongfoster
- *    Moving source files to src/
+ *    Revision 1.12.2.1  2004/10/03 12:53:32  david__schmidt
+ *    Add the ability to check jpeg images for invalid
+ *    lengths of comment blocks.  Defensive strategy
+ *    against the exploit:
+ *       Microsoft Security Bulletin MS04-028
+ *       Buffer Overrun in JPEG Processing (GDI+) Could
+ *       Allow Code Execution (833987)
+ *    Enabled with +inspect-jpegs in actions files.
  *
  *    Revision 1.12  2002/05/12 21:36:29  jongfoster
  *    Correcting function comments
@@ -139,7 +142,7 @@ void buf_free(struct binbuffer *buf)
  *          2  :  length = Desired minimum size
  *                
  *
- * Returns     :  0 on success, 1 on failure.
+ * Returns     :  0 on success, 1 on failiure.
  *
  *********************************************************************/
 int buf_extend(struct binbuffer *buf, size_t length)
@@ -180,7 +183,7 @@ int buf_extend(struct binbuffer *buf, size_t length)
  *          2  :  dst = Pointer to the destination binbuffer
  *          3  :  length = Number of bytes to be copied
  *
- * Returns     :  0 on success, 1 on failure.
+ * Returns     :  0 on success, 1 on failiure.
  *
  *********************************************************************/
 int buf_copy(struct binbuffer *src, struct binbuffer *dst, size_t length)
@@ -226,7 +229,7 @@ int buf_copy(struct binbuffer *src, struct binbuffer *dst, size_t length)
  *          1  :  src = Pointer to the source binbuffer
  *          2  :  offset = Offset to the desired byte
  *
- * Returns     :  The byte on success, or 0 on failure
+ * Returns     :  The byte on success, or 0 on failiure
  *
  *********************************************************************/
 unsigned char buf_getbyte(struct binbuffer *src, size_t offset)
@@ -255,7 +258,7 @@ unsigned char buf_getbyte(struct binbuffer *src, size_t offset)
  * Parameters  :
  *          1  :  buf = Pointer to the binbuffer
  *
- * Returns     :  0 on success, or 1 on failure
+ * Returns     :  0 on success, or 1 on failiure
  *
  *********************************************************************/
 int gif_skip_data_block(struct binbuffer *buf)
@@ -294,7 +297,7 @@ int gif_skip_data_block(struct binbuffer *buf)
  *          1  :  src = Pointer to the source binbuffer
  *          2  :  dst = Pointer to the destination binbuffer
  *
- * Returns     :  0 on success, or 1 on failure
+ * Returns     :  0 on success, or 1 on failiure
  *
  *********************************************************************/
 int gif_extract_image(struct binbuffer *src, struct binbuffer *dst)
@@ -359,7 +362,7 @@ int gif_extract_image(struct binbuffer *src, struct binbuffer *dst)
  *          3  :  get_first_image = Flag: If set, get the first image
  *                                        If unset (default), get the last
  *
- * Returns     :  0 on success, or 1 on failure
+ * Returns     :  0 on success, or 1 on failiure
  *
  *********************************************************************/
 int gif_deanimate(struct binbuffer *src, struct binbuffer *dst, int get_first_image)
@@ -525,7 +528,7 @@ write:
  * Parameters  :
  *          1  :  src = Pointer to the image binbuffer
  *
- * Returns     :  0 on success, or 1 on failure
+ * Returns     :  0 on success, or 1 on failiure
  *
  *********************************************************************/
 int jpeg_inspect(struct binbuffer *src, struct binbuffer *dst)
similarity index 86%
rename from src/deanimate.h
rename to deanimate.h
index f0aed46..71cb547 100644 (file)
@@ -1,9 +1,9 @@
 #ifndef DEANIMATE_H_INCLUDED
 #define DEANIMATE_H_INCLUDED
-#define DEANIMATE_H_VERSION "$Id: deanimate.h,v 2.0 2002/06/04 14:34:21 jongfoster Exp $"
+#define DEANIMATE_H_VERSION "$Id: deanimate.h,v 1.8.2.1 2004/10/03 12:53:32 david__schmidt Exp $"
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/src/deanimate.h,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/deanimate.h,v $
  *
  * Purpose     :  Declares functions to manipulate binary images on the
  *                fly.  High-level functions include:
  *
  * Revisions   :
  *    $Log: deanimate.h,v $
- *    Revision 2.0  2002/06/04 14:34:21  jongfoster
- *    Moving source files to src/
+ *    Revision 1.8.2.1  2004/10/03 12:53:32  david__schmidt
+ *    Add the ability to check jpeg images for invalid
+ *    lengths of comment blocks.  Defensive strategy
+ *    against the exploit:
+ *       Microsoft Security Bulletin MS04-028
+ *       Buffer Overrun in JPEG Processing (GDI+) Could
+ *       Allow Code Execution (833987)
+ *    Enabled with +inspect-jpegs in actions files.
  *
  *    Revision 1.8  2002/03/26 22:29:54  swa
  *    we have a new homepage!
diff --git a/debian/.gitignore b/debian/.gitignore
deleted file mode 100644 (file)
index 0bf51c7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-files
-privoxy
-privoxy.postinst.debhelper
-privoxy.postrm.debhelper
-privoxy.prerm.debhelper
-privoxy.substvars
-
index 1e13c06..738b98a 100644 (file)
@@ -7,5 +7,16 @@ privoxy for Debian
   want to use these features, you can enable them in
   /etc/privoxy/config and do a "/etc/init.d/privoxy restart".
 
+- A patch was applied to access the local copy of the user manual
+  (/usr/share/doc/privoxy/user-manual/*) was applied.  With the option
+   user-manual /usr/share/doc/privoxy/user-manual
+  in /etc/privoxy/config this is activated and the manual can be
+  accessed as http://config.privoxy.org/user-manual
+
+- A patch was applied to use multiple filter files.  So you can leave
+  /etc/privoxy/default.filter untouched and use a local file like
+  /etc/privoxy/user.filter for your local changes (you have to enable
+  this file using a second filterfile directive in /etc/privoxy/config).
+
 Roland Rosenfeld <roland@debian.org>
-$Id$
+$Id: README.Debian,v 1.1.2.3 2006/07/02 11:06:24 roro Exp $
index 4865bc2..804eefc 100644 (file)
-privoxy (3.1.1-3) unstable; urgency=low
-
-  * New build based on CVS as of 2003-03-01.
+privoxy (3.0.3-2-1) unstable; urgency=low
+
+  * New upstream version 3.0.3-2.
+  * Add debian/watch file.
+  * Remove parts of 13_memory.dpatch, which seem to be free too much
+    memory (Closes: #353110, #354611).
+
+ -- Roland Rosenfeld <roland@debian.org>  Mon, 27 Feb 2006 23:28:52 +0100
+
+privoxy (3.0.3-6) unstable; urgency=low
+
+  * Now hopefully really redirect all output of logrotate to /dev/null
+    (Closes: #314868).
+  * Migrate all patches to dpatch mechanism.
+  * Upgrade to debhelper 5.
+  * Call htmldoc with parameter --no-embedfonts to keep PDF files small.
+  * Build-Depends on htmldoc (>= 1.8.25-1), because older versions caused
+    broken PDF documentation on 64bit systems.
+  * Fix some typos in user-manual.
+  * Add multiple filter file support (from CVS) (Closes: #201177).
+  * Fix some memory leaks, mallocs, double frees (from CVS).
+  * Remove CVS $-tags from config files to make it easier for users to
+    keep the configuration in a VCS (Closes: #350799).
+  * Remove trailing spaces from all config files now.
+  * Build man page (and HTML version of it) at build time.
+
+ -- Roland Rosenfeld <roland@debian.org>  Sat, 11 Feb 2006 21:27:14 +0100
+
+privoxy (3.0.3-5) unstable; urgency=low
+
+  * Redirect output of restart script in logrotate to /dev/null
+    (Closes: #314868).
+  * Upgrade to Standards-Version 3.6.2:
+    - Recommends: doc-base
+  * Build-Depends on autotools-dev and copy config.guess and config.sub
+    from there on every build (Closes: #332767).
+  * After dechunking remove the "chunked"-header instead of replacing it
+    by an d"identity" header. Thanks to Michael Shields for reporting this
+    (Closes: #318683).
+  * Update address of FSF in copyright file.
+
+ -- Roland Rosenfeld <roland@debian.org>  Sun,  9 Oct 2005 13:44:55 +0200
+
+privoxy (3.0.3-4) unstable; urgency=low
+
+  * Stop converting entities to 8bit chars in the documentation 
+    (Closes: #203697).
+  * Fix typos ('persistant' and 'Januar') in man page and man page sources
+    (Closes: #302145).
+  * Restart privoxy in logrotate script instead of sendig a kill -HUP, to
+    triggering reopen of log files (Closes: #285059).
+  * Apply patch by Jindrich Makovicka to fix race conditions in log
+    writing functions (Closes: #299662).
+  * Stop hiding referrer for www.petitiononline.com/mod_perl/signed.cgi,
+    because this site does not work otherwise (Closes: #250407).
+
+ -- Roland Rosenfeld <roland@debian.org>  Sun, 15 May 2005 15:28:56 +0200
+
+privoxy (3.0.3-3) unstable; urgency=low
+
+  * Now really remove multiproxy.org from all documentation, not only from
+    the config file (Closes: #198953). 
+
+ -- Roland Rosenfeld <roland@debian.org>  Sun, 15 Feb 2004 23:11:29 +0100
+
+privoxy (3.0.3-2) unstable; urgency=low
+
+  * no banners-by-side on "/valid-" images, because that's usually from
+    validator.w3.org (Closes: #221009).
+  * Upgrade to Standards-Version 3.6.1 (no changes).
+  * Add Homepage URL to the package description.
+  * If the privoxy user is already existing as a non-system user in
+    postinst, this no longer fails, but deletes the non-system user before
+    adding it again as a system user (Closes: #232724).
+  * Use deluser instead of userdel in postrm.
+  * Redirect stderr of privoxy to /var/log/privoxy/errfile to avoid
+    problems with kept open file descriptors (Closes: #200712).
+  * Remove comment from config file, which points to list of open proxies
+    at multiproxy.org (Closes: #198953).
+
+ -- Roland Rosenfeld <roland@debian.org>  Sun, 15 Feb 2004 15:13:27 +0100
+
+privoxy (3.0.3-1) unstable; urgency=low
+
+  * New upstream version 3.0.3.
+    - This introduces workarounds for server (PHP <4.2.3) bugs including
+      the "blank page" problem (Closes: #215231).
+    - Avoid the conversion of "open" in scripts to "PrivoxyWindowOpen"
+      (Closes: #197995). 
+    - "advocancy" is no longer blocked (Closes: #202042).
+    - Fixed yet another two memory leaks (Closes: #215911).
+  * Stop backup of pdf directory, because it is no longer contained in the
+    upstream package.
+  * Create doc/pdf, which is missing upstream.
+  * disable filter{unsolicited-popups} for www.perl.com/language/newdocs/pod/ 
+    to avoid problems with "PrivoxyWindowOpen" in Perl manuals
+    (Closes: #195311).
+  * Apply patch make privoxy compilable on woody where htmldoc --version
+    doesn't exist (Closes: #216524).
+
+ -- Roland Rosenfeld <roland@debian.org>  Sat, 31 Jan 2004 11:25:53 +0100
+
+privoxy (3.0.2-5) unstable; urgency=low
+
+  * Merge corrections from upstream default.action 1.7.
+    - demoronizer filter (which caused trouble on non latin1 charsets) is
+      now switched off by default (Closes: #202234).
+
+ -- Roland Rosenfeld <roland@debian.org>  Tue,  9 Sep 2003 21:31:51 +0200
+
+privoxy (3.0.2-4) unstable; urgency=low
+
+  * Add a versioned build dependency on htmldoc (>= 1.8.20), because there
+    seem to be some options mission in the old 1.8.17 (Closes: #192457).
+  * Merge rotation of logfile and jarfile in logrotate script.
+  * Test whether /var/run/privoxy.pid is existing and don't bother when no
+    privoxy is running in logrotate script (Closes: #191838).
+  * Remove /var/run/privoxy.pid on privoxy stop in init.d script.
+  * Mention apt-get instead of dpkg in user-manual (Closes: #189239).
+  * Remove trailing whitespace from text versions of user-manual,
+    developer-manual and faq (Closes: #192566).
+
+ -- Roland Rosenfeld <roland@debian.org>  Fri,  9 May 2003 08:21:30 +0200
+
+privoxy (3.0.2-3) unstable; urgency=low
+
+  * Stop filtering favicon.ico, which may cause trouble (Closes: #188947).
+  * Send SIGHUP to privoxy instead of touching /etc/provoxy/config in
+    logrotate script to tell privoxy that the logfiles were rotated
+    (Closes: #189240).
+  * Remove trailing spaces from config file (Closes: #189240).
+  * Install man page as privoxy(8) instead of privoxy(1), because this is
+    a system binary.
   * Build HTML, text, and PDF versions of the documentation from source.
+  * Fix setting of dodk in configure.in.
+  * Add option "--linkcolor #0000ff" to htmldoc call in ldp_print to be
+    independent of ~/.htmldocrc color setting.
   * Mention PDF and text version of the documentation in doc-base files.
   * Install PDF version of the documentation, too.
   * Install HTML version of the man page, too.
 
- -- Roland Rosenfeld <roland@debian.org>  Sat,  1 Mar 2003 13:54:32 +0100
+ -- Roland Rosenfeld <roland@debian.org>  Mon, 21 Apr 2003 11:11:31 +0200
+
+privoxy (3.0.2-2) unstable; urgency=low
 
-privoxy (3.1.1-2) unstable; urgency=low
+  * Don't apply any filters to {bugs|lists}.debian.org (Closes: #186537).
+  * Prepend "http://config.privoxy.org" before "/user-manual/" to always
+    get a correct URL for the local user-manual (also on 404 error pages).
+    (Closes SF-719724).
 
-  * Stop creating documentation, it's usually available upstream and can
-    be used as is without depending on docbook and the like.
-  * Added LICENSE, pdfs, privoxy-index and HTMLized man-page from package.
-    The LICENSE is already mentioned in debian/copyright (adding a
-    separate file conflicts with the policy), the man page is available in
-    nroff format and the PDFs are not better than the HTML version.
+ -- Roland Rosenfeld <roland@debian.org>  Sun, 13 Apr 2003 12:49:15 +0200
 
- -- Roland Rosenfeld <roland@debian.org>  Fri,  6 Sep 2002 18:37:19 +0200
+privoxy (3.0.2-1) unstable; urgency=low
 
-privoxy (3.1.1-1) unstable; urgency=low
+  * New upstream version 3.0.2.
+  * Update Standards-Version to 3.5.9 (no changes).
 
-  * Removed build dependency on w3m.
-  * Removed ./configure argument for docbook, moving the path to the
-    configure.in.
-  * Added LICENSE, pdfs, privoxy-index and HTMLized man-page
+ -- Roland Rosenfeld <roland@debian.org>  Wed, 26 Mar 2003 19:45:07 +0100
 
- -- Devin Bayer <devin@elektrono.com>  Tue, 28 May 2002 21:21:48 -0400
+privoxy (3.0.0-6) unstable; urgency=low
 
-privoxy (3.1.1-0) unstable; urgency=low
+  * Fixed a bug in local user-manual patch, which failed when accessing
+    http://config.privoxy.org/user-manual/ (without a file name).
 
-  * Added debian-dist and debian-upload targets to the top level makefile.
-    debian-dist runs "dpkg-buildpackage -rfakeroot -us -uc" so that
-    any debian user can build it.
-  * Removed build dependency on docbook, leaving generation of docs to
-    another target or makefile.
-  
- -- Devin Bayer <devin@elektrono.com>  Sat, 25 May 2002 22:49:30 -0400
+ -- Roland Rosenfeld <roland@debian.org>  Sun,  2 Mar 2003 13:40:48 +0100
 
 privoxy (3.0.0-5) unstable; urgency=low
 
index b8626c4..7ed6ff8 100644 (file)
@@ -1 +1 @@
-4
+5
index f7e81ea..cd43c6c 100644 (file)
@@ -2,12 +2,13 @@ Source: privoxy
 Section: web
 Priority: optional
 Maintainer: Roland Rosenfeld <roland@debian.org>
-Build-Depends: debhelper (>= 4.0.0), autoconf, libpcre3-dev, jade, docbook-dsssl, w3m, sp, sgmlspl, groff, htmldoc
-Standards-Version: 3.5.8
+Build-Depends: debhelper (>= 5.0.0), autoconf, autotools-dev, libpcre3-dev, jade, docbook-dsssl, w3m, sp, sgmlspl, groff, htmldoc (>= 1.8.25-1), man2html, dpatch
+Standards-Version: 3.6.2
 
 Package: privoxy
 Architecture: any
-Depends: ${shlibs:Depends}, logrotate, adduser
+Depends: ${shlibs:Depends}, ${misc:Depends}, logrotate, adduser
+Recommends: doc-base
 Description: Privacy enhancing HTTP Proxy
  Privoxy is a web proxy with advanced filtering capabilities for
  protecting privacy, filtering web page content, managing cookies,
@@ -17,3 +18,5 @@ Description: Privacy enhancing HTTP Proxy
  has application for both stand-alone systems and multi-user networks.
  .
  Privoxy is based on Internet Junkbuster (tm).
+ .
+  Homepage: http://www.privoxy.org/
index 2ae2775..4b0ed5e 100644 (file)
@@ -1,19 +1,18 @@
+
 This package was debianized by Roland Rosenfeld <roland@debian.org> on
 Fri, 29 Mar 2002 11:52:03 +0100.
 
-It was downloaded from http://privoxy.org/ and
+It was downloaded from http://www.privoxy.org/ and
 http://sourceforge.net/project/showfiles.php?group_id=11118
 
 Upstream Authors: ijbswa-developers@lists.sourceforge.net
 
-Current Project developers:
+Current Development Team:
 
- Stefan Waldherr
- Andreas Oesterhelt
+ Hal Burgiss (docs)
  Jon Foster
-
- Markus Breitenbach
- Thomas Steudten
+ Andreas Oesterhelt
+ David Schmidt (OS/2, Mac OSX ports)
 
 Originally developed by:
 
@@ -42,8 +41,8 @@ Copyright:     Written by and Copyright (C) 2001 the SourceForge
                The GNU General Public License should be included with
                this file.  If not, you can view it at
                http://www.gnu.org/copyleft/gpl.html
-               or write to the Free Software Foundation, Inc., 59
-               Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+               or write to the Free Software Foundation, Inc., 
+               51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 
 The complete GNU General Public License can be found at
 /usr/share/common-licenses/GPL
index 4d21c6e..1828834 100644 (file)
@@ -14,4 +14,3 @@ Files: /usr/share/doc/privoxy/user-manual.txt.gz
 
 Format: pdf
 Files: /usr/share/doc/privoxy/privoxy-user-manual.pdf
-
index 012668d..9fc1a8f 100644 (file)
@@ -17,13 +17,14 @@ case "$1" in
        echo -n "Starting $DESC: "
        start-stop-daemon --oknodo --start --quiet --pidfile $PIDFILE \
            --exec $DAEMON -- --pidfile $PIDFILE --user $OWNER $CONFIGFILE \
-           2>/dev/null
+           2>> /var/log/privoxy/errorfile
        echo "$NAME."
        ;;
   stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
                --exec $DAEMON
+       rm -f $PIDFILE
        echo "$NAME."
        ;;
   #reload)
@@ -44,12 +45,14 @@ case "$1" in
        #       option to the "reload" entry above. If not, "force-reload" is
        #       just the same as "restart".
        #
-       echo "Restarting $DESC: "
+       echo -n "Restarting $DESC: "
        start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
                --exec $DAEMON
        sleep 1
        start-stop-daemon --oknodo --start --quiet --pidfile $PIDFILE \
-           --exec $DAEMON -- --pidfile $PIDFILE --user $OWNER $CONFIGFILE
+           --exec $DAEMON -- --pidfile $PIDFILE --user $OWNER $CONFIGFILE \
+           2>> /var/log/privoxy/errorfile
+       echo "$NAME."
        ;;
   *)
        N=/etc/init.d/$NAME
index d230a8b..a110e93 100644 (file)
@@ -1,21 +1,17 @@
-/var/log/privoxy/logfile {
+/var/log/privoxy/logfile /var/log/privoxy/jarfile /var/log/privoxy/errorfile {
        create 0640 privoxy adm
        missingok
        weekly
        rotate 7
        compress
+       sharedscripts
        postrotate
-               touch /etc/privoxy/config
-       endscript
-}
-
-/var/log/privoxy/jarfile {
-       create 0640 privoxy adm
-       missingok
-       weekly
-       rotate 7
-       compress
-       postrotate
-               touch /etc/privoxy/config
+               if [ -x /usr/sbin/invoke-rc.d ]; then
+                       invoke-rc.d privoxy restart > /dev/null
+               else
+                       if [ -f /var/run/privoxy.pid ]; then
+                               /etc/init.d/privoxy restart > /dev/null
+                       fi
+               fi
        endscript
 }
index 6670965..51ec110 100644 (file)
@@ -1 +1 @@
-privoxy.1
+privoxy.8
diff --git a/debian/patches/00list b/debian/patches/00list
new file mode 100644 (file)
index 0000000..6c2fb3f
--- /dev/null
@@ -0,0 +1,14 @@
+01_local_usermanual.dpatch
+02_linkcolor.dpatch
+04_nomultiproxy.dpatch
+05_defaut_action.dpatch
+06_8bit_manual.dpatch
+07_typos.dpatch
+08_log_pthread.dpatch
+09_no_identity.dpatch
+10_backup_doc.dpatch
+11_backup_autotools.dpatch
+12_multiple-filters.dpatch
+13_memory.dpatch
+14_config.dpatch
+15_mansection8.dpatch
diff --git a/debian/patches/01_local_usermanual.dpatch b/debian/patches/01_local_usermanual.dpatch
new file mode 100644 (file)
index 0000000..a5c51fa
--- /dev/null
@@ -0,0 +1,211 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 01_local_usermanual.dpatch by Roland Rosenfeld <roland@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Add new "cgi" user-manual, which sends the user manual to the client
+## DP: and activate it in config file (Closes: #148128).
+
+@DPATCH@
+diff -urNad privoxy~/cgi.c privoxy/cgi.c
+--- privoxy~/cgi.c     2006-02-11 23:44:26.000000000 +0100
++++ privoxy/cgi.c      2006-02-11 23:44:34.000000000 +0100
+@@ -609,6 +609,9 @@
+    { "t",
+          cgi_transparent_image, 
+          NULL, TRUE /* Send a transparent image (short name) */ },
++   { "user-manual",
++         cgi_send_user_manual,
++         NULL, TRUE /* Send user-manual */ },
+    { NULL, /* NULL Indicates end of list and default page */
+          cgi_error_404,
+          NULL, TRUE /* Unknown CGI page */ }
+@@ -821,21 +824,28 @@
+    {
+       return cgi_error_memory();
+    }
+-
+    query_args_start = path_copy;
+-   while (*query_args_start && *query_args_start != '?')
++   while (*query_args_start && *query_args_start != '?' && *query_args_start != '/')
+    {
+       query_args_start++;
+    }
+-   if (*query_args_start == '?')
++   if (*query_args_start == '/') 
+    {
+       *query_args_start++ = '\0';
+-   }
+-
+-   if (NULL == (param_list = parse_cgi_parameters(query_args_start)))
+-   {
+-      free(path_copy);
+-      return cgi_error_memory();
++      if ((param_list = new_map()))
++      {
++         map(param_list, "file", 1, url_decode(query_args_start), 0);
++      }
++   } else {
++      if (*query_args_start == '?')
++      {
++         *query_args_start++ = '\0';
++      }
++      if (NULL == (param_list = parse_cgi_parameters(query_args_start)))
++      {
++         free(path_copy);
++         return cgi_error_memory();
++      }
+    }
+    /*
+@@ -1597,7 +1607,13 @@
+    if (!item) return NULL;
+    result = strdup("<a href=\"");
+-   string_append(&result, config->usermanual);
++   if (config->usermanual[0] == '/') {
++      string_append(&result, "http://");
++      string_append(&result, CGI_SITE_2_HOST);
++      string_append(&result, "/user-manual/");
++   } else {
++      string_append(&result, config->usermanual);
++   }
+    string_append(&result, ACTIONS_HELP_PREFIX);
+    string_join  (&result, string_toupper(item));
+    string_append(&result, "\">");
+@@ -2171,7 +2187,11 @@
+    if (!err) err = map(exports, "default-cgi",   1, html_encode(CGI_PREFIX), 0);
+    if (!err) err = map(exports, "menu",          1, make_menu(caller), 0);
+    if (!err) err = map(exports, "code-status",   1, CODE_STATUS, 1);
+-   if (!err) err = map(exports, "user-manual",   1, csp->config->usermanual ,1);
++   if (csp->config->usermanual[0] == '/') {
++      if (!err) err = map(exports, "user-manual",   1, "http://"CGI_SITE_2_HOST"/user-manual/" ,1);
++   } else {
++      if (!err) err = map(exports, "user-manual",   1, csp->config->usermanual ,1);
++   }
+    if (!err) err = map(exports, "actions-help-prefix", 1, ACTIONS_HELP_PREFIX ,1);
+ #ifdef FEATURE_TOGGLE
+    if (!err) err = map_conditional(exports, "enabled-display", global_toggle_state);
+diff -urNad privoxy~/cgisimple.c privoxy/cgisimple.c
+--- privoxy~/cgisimple.c       2006-02-11 23:44:26.000000000 +0100
++++ privoxy/cgisimple.c        2006-02-11 23:44:34.000000000 +0100
+@@ -642,6 +642,89 @@
+    return JB_ERR_OK;
+ }
++/*********************************************************************
++ *
++ * Function    :  cgi_send_user_manual
++ *
++ * Description :  CGI function that sends a user manual HTML file
++ *
++ * Parameters  :
++ *          1  :  csp = Current client state (buffers, headers, etc...)
++ *          2  :  rsp = http_response data structure for output
++ *          3  :  parameters = map of cgi parameters
++ *
++ * CGI Parameters : file=name.html, the mane of the HTML file
++ *                  (relative to user-manual from config)
++ *
++ * Returns     :  JB_ERR_OK on success
++ *                JB_ERR_MEMORY on out-of-memory error.  
++ *
++ *********************************************************************/
++jb_err cgi_send_user_manual(struct client_state *csp,
++                            struct http_response *rsp,
++                            const struct map *parameters)
++{
++   const char * filename;
++   char *full_path;
++   FILE *fp;
++   char buf[BUFFER_SIZE];
++
++   assert(csp);
++   assert(rsp);
++   assert(parameters);
++
++   get_string_param(parameters, "file", &filename);
++   /* Check paramter for hack attempts */
++   if (filename && strchr(filename, '/')) {
++      return JB_ERR_CGI_PARAMS;
++   }
++   if (filename && strstr(filename, "..")) {
++      return JB_ERR_CGI_PARAMS;
++   }
++
++   full_path = make_path(csp->config->usermanual, 
++                         filename?filename:"index.html");
++   if (full_path == NULL)
++   {
++      return JB_ERR_MEMORY;
++   }
++
++   /* Allocate buffer */
++   rsp->body = strdup("");
++   if (rsp->body == NULL)
++   {
++      free(full_path);
++      return JB_ERR_MEMORY;
++   }
++
++   /* Open user-manual file */
++   if (NULL == (fp = fopen(full_path, "r")))
++   {
++      log_error(LOG_LEVEL_ERROR, "Cannot open user-manual file %s: %E", full_path);
++      free(full_path);
++      free(rsp->body);
++      return JB_ERR_FILE;
++   }
++   free(full_path);
++
++   /* Read file and write it out */
++   while (fgets(buf, BUFFER_SIZE, fp))
++   {
++      if (string_append(&rsp->body, buf))
++      {
++         fclose(fp);
++         return JB_ERR_MEMORY;
++      }
++   }
++   fclose(fp);
++
++   if (enlist(rsp->headers, "Content-Type: text/html"))
++   {
++      return JB_ERR_MEMORY;
++   }
++
++   return JB_ERR_OK;
++}
+ /*********************************************************************
+diff -urNad privoxy~/cgisimple.h privoxy/cgisimple.h
+--- privoxy~/cgisimple.h       2006-02-11 23:44:26.000000000 +0100
++++ privoxy/cgisimple.h        2006-02-11 23:44:34.000000000 +0100
+@@ -128,6 +128,9 @@
+ extern jb_err cgi_send_stylesheet(struct client_state *csp,
+                                   struct http_response *rsp,
+                                   const struct map *parameters);
++extern jb_err cgi_send_user_manual(struct client_state *csp,
++                                   struct http_response *rsp,
++                                   const struct map *parameters);
+ #ifdef FEATURE_GRACEFUL_TERMINATION
+ extern jb_err cgi_die (struct client_state *csp,
+diff -urNad privoxy~/loadcfg.c privoxy/loadcfg.c
+--- privoxy~/loadcfg.c 2006-02-11 23:44:26.000000000 +0100
++++ privoxy/loadcfg.c  2006-02-11 23:44:34.000000000 +0100
+@@ -1579,7 +1579,13 @@
+     * link to it's section in the user-manual
+     */
+    buf = strdup("\n<br><a href=\"");
+-   string_append(&buf, config->usermanual);
++   if (config->usermanual[0] == '/') {
++      string_append(&buf, "http://");
++      string_append(&buf, CGI_SITE_2_HOST);
++      string_append(&buf, "/user-manual/");
++   } else {
++      string_append(&buf, config->usermanual);
++   }
+    string_append(&buf, CONFIG_HELP_PREFIX);
+    string_join  (&buf, string_toupper(command));
+    string_append(&buf, "\">");
diff --git a/debian/patches/02_linkcolor.dpatch b/debian/patches/02_linkcolor.dpatch
new file mode 100644 (file)
index 0000000..160778d
--- /dev/null
@@ -0,0 +1,19 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_linkcolor.dpatch by Roland Rosenfeld <roland@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Run htmldoc with --linkcolor #0000ff and --no-embedfonts
+
+@DPATCH@
+diff -urNad privoxy~/utils/ldp_print/ldp_print privoxy/utils/ldp_print/ldp_print
+--- privoxy~/utils/ldp_print/ldp_print 2006-02-05 22:03:58.000000000 +0100
++++ privoxy/utils/ldp_print/ldp_print  2006-02-05 22:12:43.000000000 +0100
+@@ -54,7 +54,7 @@
+ my($cmd) = "htmldoc --size universal --bodyfont helvetica --fontsize 8 " .
+            "-t pdf -f ${fname_wo_ext}.pdf --firstpage p1 --titlefile title.html" .
+-           " body.html --footer c.1";
++           " body.html --footer c.1 --linkcolor #0000ff --no-embedfonts";
+ # For postscript output; append onto the above cmd string:
+ #
diff --git a/debian/patches/04_nomultiproxy.dpatch b/debian/patches/04_nomultiproxy.dpatch
new file mode 100644 (file)
index 0000000..2a451a1
--- /dev/null
@@ -0,0 +1,59 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_multiproxy.dpatch by Roland Rosenfeld <roland@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: emove comment from config file and FAQ, which points to list of
+## DP: open proxies at multiproxy.org (Closes: #198953).
+
+@DPATCH@
+diff -urNad privoxy~/config privoxy/config
+--- privoxy~/confi