CVS commit: pkgsrc/www/privoxy

"Thomas Klausner" <[email protected]>
Newsgroups gmane.os.netbsd.devel.pkgsrc.cvs
Message-ID <[email protected]>
Module Name:	pkgsrc
Committed By:	wiz
Date:		Thu Aug 13 18:17:58 UTC 2026

Modified Files:
	pkgsrc/www/privoxy: Makefile PLIST distinfo options.mk
Added Files:
	pkgsrc/www/privoxy/patches: patch-GNUmakefile.in patch-config
	    patch-configure.in patch-man_privoxy.8 patch-man_uagen.1
	    patch-tools_uagen.pl
Removed Files:
	pkgsrc/www/privoxy/patches: patch-aa patch-ab patch-ac patch-ag

Log Message:
privoxy: update to 4.2.0.

Provided by Stepan Ipatov in pkgsrc-wip.

Privoxy 4.2.0 fixes a couple of bugs and brings general improvements
such as support for elliptic-curve keys.

Two potential security problems have been reported and addressed.


To generate a diff of this commit:
cvs rdiff -u -r1.72 -r1.73 pkgsrc/www/privoxy/Makefile
cvs rdiff -u -r1.14 -r1.15 pkgsrc/www/privoxy/PLIST
cvs rdiff -u -r1.28 -r1.29 pkgsrc/www/privoxy/distinfo
cvs rdiff -u -r1.1 -r1.2 pkgsrc/www/privoxy/options.mk
cvs rdiff -u -r0 -r1.1 pkgsrc/www/privoxy/patches/patch-GNUmakefile.in \
    pkgsrc/www/privoxy/patches/patch-config \
    pkgsrc/www/privoxy/patches/patch-configure.in \
    pkgsrc/www/privoxy/patches/patch-man_privoxy.8 \
    pkgsrc/www/privoxy/patches/patch-man_uagen.1 \
    pkgsrc/www/privoxy/patches/patch-tools_uagen.pl
cvs rdiff -u -r1.4 -r0 pkgsrc/www/privoxy/patches/patch-aa
cvs rdiff -u -r1.9 -r0 pkgsrc/www/privoxy/patches/patch-ab
cvs rdiff -u -r1.3 -r0 pkgsrc/www/privoxy/patches/patch-ac
cvs rdiff -u -r1.5 -r0 pkgsrc/www/privoxy/patches/patch-ag

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
(unnamed) (text/x-diff, 33.3 KB)
Modified files:

Index: pkgsrc/www/privoxy/Makefile
diff -u pkgsrc/www/privoxy/Makefile:1.72 pkgsrc/www/privoxy/Makefile:1.73
--- pkgsrc/www/privoxy/Makefile:1.72	Thu May 29 13:24:48 2025
+++ pkgsrc/www/privoxy/Makefile	Thu Aug 13 18:17:58 2026
@@ -1,8 +1,7 @@
-# $NetBSD: Makefile,v 1.72 2025/05/29 13:24:48 khorben Exp $
+# $NetBSD: Makefile,v 1.73 2026/08/13 18:17:58 wiz Exp $
 
 DISTNAME=	${PKGNAME_NOREV}-stable-src
-PKGNAME=	privoxy-3.0.29
-PKGREVISION=	4
+PKGNAME=	privoxy-4.2.0
 CATEGORIES=	www
 MASTER_SITES=	https://www.privoxy.org/sf-download-mirror/Sources/${PKGVERSION_NOREV}%20(stable)/
 
@@ -11,65 +10,90 @@ HOMEPAGE=	https://www.privoxy.org/
 COMMENT=	Web proxy with advanced filtering capabilities
 LICENSE=	gnu-gpl-v2
 
-.include "../../mk/bsd.prefs.mk"
+WRKSRC=		${WRKDIR}/${PKGNAME_NOREV}-stable
 
-PRIVOXY_USER?=		privoxy
-PRIVOXY_GROUP?=		privoxy
-PKG_GROUPS_VARS+=	PRIVOXY_GROUP
-PKG_USERS_VARS+=	PRIVOXY_USER
+.include "options.mk"
+.include "../../mk/bsd.prefs.mk"
 
-PKG_SYSCONFSUBDIR?=	privoxy
+PKG_SYSCONFSUBDIR=	privoxy
+PRIVOXY_EGDIR=		${PREFIX}/share/examples/${PKGBASE}
+PRIVOXY_DOCDIR=		${PREFIX}/share/doc/${PKGBASE}
+PRIVOXY_LOGDIR=		${VARBASE}/log/privoxy
 
-RCD_SCRIPTS=		privoxy
-PKG_GROUPS=		${PRIVOXY_GROUP}
-PKG_USERS=		${PRIVOXY_USER}:${PRIVOXY_GROUP}
+USE_TOOLS+=		gmake mktemp autoconf autoheader perl:run
 
-EGDIR=			${PREFIX}/share/examples/privoxy
+SUBST_CLASSES+=		paths
+SUBST_FILES.paths=	config man/privoxy.8 man/uagen.1 tools/uagen.pl
+SUBST_VARS.paths=	PREFIX VARBASE PKG_SYSCONFDIR PRIVOXY_LOGDIR PRIVOXY_DOCDIR
+SUBST_STAGE.paths=	pre-configure
 
-CPPFLAGS+=		-Dunix
+REPLACE_PERL+=		tools/privoxy-log-parser.pl \
+			tools/privoxy-regression-test.pl \
+			tools/url-pattern-translator.pl \
+			tools/uagen.pl
 
-WRKSRC=			${WRKDIR}/${PKGNAME_NOREV}-stable
+GNU_CONFIGURE=		YES
+CONFIGURE_ARGS+=	--localstatedir=${VARBASE}
+CONFIGURE_ARGS+=	--sysconfdir=${PRIVOXY_EGDIR}
+CONFIGURE_ARGS+=	--with-user=${PRIVOXY_USER:Q}
+CONFIGURE_ARGS+=	--with-group=${PRIVOXY_GROUP:Q}
 
-USE_FEATURES=		snprintf
-USE_TOOLS+=		gmake mktemp autoconf autoheader
-BUILD_DEFS+=		VARBASE
 MAKE_FILE=		GNUmakefile
 
-USE_TOOLS+=		perl
+BUILD_DEFS+=			VARBASE
+PRIVOXY_USER=			privoxy
+PRIVOXY_GROUP=			privoxy
+PRIVOXY_HOME=			${VARBASE}/lib/privoxy
+PKG_USERS_VARS+=		PRIVOXY_USER
+PKG_GROUPS_VARS+=		PRIVOXY_GROUP
+PKG_GROUPS=			${PRIVOXY_GROUP}
+PKG_USERS=			${PRIVOXY_USER}:${PRIVOXY_GROUP}
+PKG_GECOS.${PRIVOXY_USER}=	Privoxy user
 
-PTHREAD_AUTO_VARS=	yes
-PTHREAD_OPTS+=		require
+OWN_DIRS_PERMS+=	${PRIVOXY_HOME} ${PRIVOXY_USER} ${PRIVOXY_GROUP} 0770
 
-GNU_CONFIGURE=		YES
-CONFIGURE_ARGS+=	--localstatedir=${VARBASE:Q}
-CONFIGURE_ARGS+=	--sysconfdir=${EGDIR:Q}
-CONFIGURE_ARGS+=	--with-user=${PRIVOXY_USER:Q}
-CONFIGURE_ARGS+=	--with-group=${PRIVOXY_GROUP:Q}
-CONFIGURE_ARGS+=	--enable-compression
+FILES_SUBST+=		PRIVOXY_USER=${PRIVOXY_USER:Q}
+.if ${INIT_SYSTEM} == "rc.d"
+RCD_SCRIPTS+=		privoxy
+.endif
 
 USER_GROUP=		${PRIVOXY_USER} ${PRIVOXY_GROUP}
 
-.for i in \
-    config trust default.action user.action user.filter default.filter match-all.action
-CONF_FILES_PERMS+=	${EGDIR}/${i} ${PKG_SYSCONFDIR}/${i} ${USER_GROUP} 0660
-.endfor
+OWN_DIRS_PERMS+=	${PKG_SYSCONFDIR}/templates ${USER_GROUP} 0755
 
-OWN_DIRS_PERMS+=	/var/log/privoxy ${USER_GROUP} 0775
-CONF_FILES_PERMS+=	/dev/null /var/log/privoxy/logfile ${USER_GROUP} 0660
+PRIVOXY_CONF_FILES=	config default.action default.filter \
+			match-all.action trust user.action user.filter
 
-FILES_SUBST+=		PRIVOXY_USER=${PRIVOXY_USER:Q}
+PRIVOXY_TEMPLATE_FILES=	blocked cgi-error-404 cgi-error-bad-param \
+			cgi-error-disabled cgi-error-file \
+			cgi-error-file-read-only cgi-error-modified \
+			cgi-error-parse cgi-style.css client-tags \
+			connect-failed connection-timeout default \
+			edit-actions-add-url-form edit-actions-for-url \
+			edit-actions-for-url-filter \
+			edit-actions-for-url-string-action mod-title \
+			edit-actions-list edit-actions-list-button \
+			edit-actions-list-section edit-actions-list-url \
+			edit-actions-remove-url-form edit-actions-url-form \
+			forwarding-failed mod-local-help \
+			mod-support-and-service mod-unstable-warning \
+			no-server-data no-such-domain show-request show-status \
+			show-status-file show-url-info toggle toggle-mini \
+			untrusted url-info-osd.xml wpad.dat
 
-SUBST_CLASSES+=		paths
-SUBST_FILES.paths=	config
-SUBST_VARS.paths=	PKG_SYSCONFDIR
-SUBST_STAGE.paths=	pre-configure
+.for f in ${PRIVOXY_CONF_FILES}
+CONF_FILES+=		${PRIVOXY_EGDIR}/${f} ${PKG_SYSCONFDIR}/${f}
+.endfor
 
-.include "options.mk"
+.for f in ${PRIVOXY_TEMPLATE_FILES}
+CONF_FILES+=		${PRIVOXY_EGDIR}/templates/${f} ${PKG_SYSCONFDIR}/templates/${f}
+.endfor
+
+OWN_DIRS_PERMS+=	${PRIVOXY_LOGDIR} ${USER_GROUP} 0755
 
 pre-configure:
 	cd ${WRKSRC} && autoheader && autoconf
 
-.include "../../devel/pcre/buildlink3.mk"
-.include "../../devel/zlib/buildlink3.mk"
+.include "../../devel/pcre2/buildlink3.mk"
 .include "../../mk/pthread.buildlink3.mk"
 .include "../../mk/bsd.pkg.mk"

Index: pkgsrc/www/privoxy/PLIST
diff -u pkgsrc/www/privoxy/PLIST:1.14 pkgsrc/www/privoxy/PLIST:1.15
--- pkgsrc/www/privoxy/PLIST:1.14	Thu Feb  4 16:29:14 2021
+++ pkgsrc/www/privoxy/PLIST	Thu Aug 13 18:17:58 2026
@@ -1,5 +1,11 @@
-@comment $NetBSD: PLIST,v 1.14 2021/02/04 16:29:14 wiz Exp $
-man/man1/privoxy.1
+@comment $NetBSD: PLIST,v 1.15 2026/08/13 18:17:58 wiz Exp $
+bin/privoxy-log-parser
+bin/privoxy-regression-test
+bin/uagen
+man/man1/privoxy-log-parser.1
+man/man1/privoxy-regression-test.1
+man/man1/uagen.1
+man/man8/privoxy.8
 sbin/privoxy
 share/doc/privoxy/AUTHORS
 share/doc/privoxy/ChangeLog
@@ -23,7 +29,10 @@ share/doc/privoxy/faq/installation.html
 share/doc/privoxy/faq/misc.html
 share/doc/privoxy/faq/trouble.html
 share/doc/privoxy/index.html
+share/doc/privoxy/man-page/privoxy-log-parser.1.html
 share/doc/privoxy/man-page/privoxy-man-page.html
+share/doc/privoxy/man-page/privoxy-regression-test.1.html
+share/doc/privoxy/man-page/uagen.1.html
 share/doc/privoxy/p_doc.css
 share/doc/privoxy/user-manual/actions-file.html
 share/doc/privoxy/user-manual/appendix.html
@@ -33,6 +42,7 @@ share/doc/privoxy/user-manual/contact.ht
 share/doc/privoxy/user-manual/copyright.html
 share/doc/privoxy/user-manual/files-in-use.jpg
 share/doc/privoxy/user-manual/filter-file.html
+share/doc/privoxy/user-manual/howto.html
 share/doc/privoxy/user-manual/index.html
 share/doc/privoxy/user-manual/installation.html
 share/doc/privoxy/user-manual/introduction.html
@@ -65,6 +75,7 @@ share/examples/privoxy/templates/default
 share/examples/privoxy/templates/edit-actions-add-url-form
 share/examples/privoxy/templates/edit-actions-for-url
 share/examples/privoxy/templates/edit-actions-for-url-filter
+share/examples/privoxy/templates/edit-actions-for-url-string-action
 share/examples/privoxy/templates/edit-actions-list
 share/examples/privoxy/templates/edit-actions-list-button
 share/examples/privoxy/templates/edit-actions-list-section
@@ -86,7 +97,7 @@ share/examples/privoxy/templates/toggle
 share/examples/privoxy/templates/toggle-mini
 share/examples/privoxy/templates/untrusted
 share/examples/privoxy/templates/url-info-osd.xml
+share/examples/privoxy/templates/wpad.dat
 share/examples/privoxy/trust
 share/examples/privoxy/user.action
 share/examples/privoxy/user.filter
-@pkgdir share/doc/privoxy/images

Index: pkgsrc/www/privoxy/distinfo
diff -u pkgsrc/www/privoxy/distinfo:1.28 pkgsrc/www/privoxy/distinfo:1.29
--- pkgsrc/www/privoxy/distinfo:1.28	Tue Oct 26 11:30:26 2021
+++ pkgsrc/www/privoxy/distinfo	Thu Aug 13 18:17:58 2026
@@ -1,9 +1,11 @@
-$NetBSD: distinfo,v 1.28 2021/10/26 11:30:26 nia Exp $
+$NetBSD: distinfo,v 1.29 2026/08/13 18:17:58 wiz Exp $
 
-BLAKE2s (privoxy-3.0.29-stable-src.tar.gz) = a153b3e25d0f286d342bd06384f41030f645e6a3a334a3be67b3edf08323c0a3
-SHA512 (privoxy-3.0.29-stable-src.tar.gz) = 2f483a37d697738815f4c58a775fbf116a34ac5e0e74d19814252c5ff1572350181066d468327189faf20c92d808d551b0017a9525ec98276330ee539554c1ba
-Size (privoxy-3.0.29-stable-src.tar.gz) = 1830550 bytes
-SHA1 (patch-aa) = d5296d7440b92b76c28136453d098c617d4e439b
-SHA1 (patch-ab) = c54a5845ad76d36ea281697cce17237d1d2ee0bd
-SHA1 (patch-ac) = 2d1a1efc53b4cd017d3ce21080adf1bfcc5cc97c
-SHA1 (patch-ag) = 64957682dbb3ff8b78ef47cc936d591facf9eb3a
+BLAKE2s (privoxy-4.2.0-stable-src.tar.gz) = 80f41f73a6b47eef30bfe5c7fe3332e37c0bcfe212e13b190477e04b90731e9d
+SHA512 (privoxy-4.2.0-stable-src.tar.gz) = e727a16ead5759e3e976d42558ad0c0af137a7f74d8ccc83ed53a34320654362489a77d3bd54c9b4d5b84c5b4ecf8e375d2c1d0e3108eb26acce3014dfbefdb0
+Size (privoxy-4.2.0-stable-src.tar.gz) = 1791064 bytes
+SHA1 (patch-GNUmakefile.in) = b8b5d36d63c5b522d46580462cf08d4131fdbaa9
+SHA1 (patch-config) = a111b0d25be9166d64632e8c3b4b5ef61a6f0cb1
+SHA1 (patch-configure.in) = ffbfaf2d1347d9ac7430500078d678ad0e8c7059
+SHA1 (patch-man_privoxy.8) = 3ec0da5655f9ae94b648b9d04511f4e18079fa89
+SHA1 (patch-man_uagen.1) = da9026d395b659bc0634520c0d0bf9365314a8ed
+SHA1 (patch-tools_uagen.pl) = 0f2c1ba3ff40baba1ea2afac1279b776ae3ff505

Index: pkgsrc/www/privoxy/options.mk
diff -u pkgsrc/www/privoxy/options.mk:1.1 pkgsrc/www/privoxy/options.mk:1.2
--- pkgsrc/www/privoxy/options.mk:1.1	Wed Mar 21 23:18:09 2018
+++ pkgsrc/www/privoxy/options.mk	Thu Aug 13 18:17:58 2026
@@ -1,9 +1,9 @@
-# $NetBSD: options.mk,v 1.1 2018/03/21 23:18:09 gdt Exp $
+# $NetBSD: options.mk,v 1.2 2026/08/13 18:17:58 wiz Exp $
 #
 
 PKG_OPTIONS_VAR=		PKG_OPTIONS.privoxy
-PKG_SUPPORTED_OPTIONS+=		inet6
-PKG_SUGGESTED_OPTIONS+=		inet6
+PKG_SUPPORTED_OPTIONS+=		inet6 zlib zstd
+PKG_SUGGESTED_OPTIONS+=		inet6 zlib zstd
 
 .include "../../mk/bsd.options.mk"
 
@@ -12,3 +12,17 @@ CONFIGURE_ARGS+=	--enable-ipv6-support
 .else
 CONFIGURE_ARGS+=	--disable-ipv6-support
 .endif
+
+.if !empty(PKG_OPTIONS:Mzlib)
+CONFIGURE_ARGS+=	--enable-zlib --enable-compression
+.include "../../devel/zlib/buildlink3.mk"
+.else
+CONFIGURE_ARGS+=	--disable-zlib --disable-compression
+.endif
+
+.if !empty(PKG_OPTIONS:Mzstd)
+CONFIGURE_ARGS+=	--with-zstd
+.include "../../archivers/zstd/buildlink3.mk"
+.else
+CONFIGURE_ARGS+=	--without-zstd
+.endif

Added files:

Index: pkgsrc/www/privoxy/patches/patch-GNUmakefile.in
diff -u /dev/null pkgsrc/www/privoxy/patches/patch-GNUmakefile.in:1.1
--- /dev/null	Thu Aug 13 18:17:58 2026
+++ pkgsrc/www/privoxy/patches/patch-GNUmakefile.in	Thu Aug 13 18:17:58 2026
@@ -0,0 +1,120 @@
+$NetBSD: patch-GNUmakefile.in,v 1.1 2026/08/13 18:17:58 wiz Exp $
+
+Drop user/group existence checks; pkgsrc handles their creation.
+
+--- GNUmakefile.in.orig	2026-06-02 15:06:25.000000000 +0000
++++ GNUmakefile.in
+@@ -858,16 +858,6 @@ install-strip:
+ # Perhaps the whole user/group validation should be done here, and simplified.
+ PROGRAM_V = Privoxy $(VERSION) $(CODE_STATUS)
+ install: CONF_DEST LOG_DEST PID_DEST check_doc GROUP_T
+-	@# Quick test for valid USER.
+-	@if [ -n "$(USER)" ]; then \
+-		$(ID) $(USER) >/dev/null || exit 1;\
+-	fi
+-	@# Test for valid group. FIXME. USER does not have to belong to GROUP
+-	@# for file ownership purposes.
+-# 	if [ -n "$(GROUP_T)" ] && [ -n "$(USER)" ] && ! $(GROUPS) $(USER) | $(GREP) "\<$(GROUP_T)\>" >/dev/null; then \
+-# 		$(ECHO) Group $(GROUP_T) for User $(USER) is invalid && exit 1 ;\
+-# 	fi
+-
+ 	@$(ECHO) "Creating directories, and preparing $(PROGRAM_V) installation"
+ 	$(CHMOD) $(DIR_MODE) $(MKDIR)
+ 	@$(MKDIR) $(DESTDIR)$(BIN_DEST) $(DESTDIR)$(SBIN_DEST) \
+@@ -945,93 +935,24 @@ install: CONF_DEST LOG_DEST PID_DEST che
+ 		$(INSTALL) $(INSTALL_T) $$i $(DESTDIR)$(CONF_DEST)/templates ;\
+ 	done
+ 
+-	@# FIXME: group/user validation is overly convoluted.
+-	@# If superuser install ... we require a minimum of group ownership
+-	@# of those files the daemon writes to, to be non-root owned.
+-	@if [ "`$(ID) |sed 's/(.*//' |sed 's/.*=//'`" = "0" ] ;then\
+-		if [ x$(USER) = x ] || [ $(USER) = root ]; then \
+-			if [ x$(GROUP) = x ] || [ $(GROUP) = root ]; then \
+-				if [ "`$(ID) privoxy`" ] && \
+-					$(GROUPS) privoxy | $(SED) 's/^.*://' |$(GREP) "\<privoxy\>" >/dev/null; then \
+-					$(ECHO) "Warning: Setting group owner to privoxy";\
+-					GROUP_T=privoxy ;\
+-				else \
+-					$(ECHO)  "******************************************************************" ;\
+-					$(ECHO)  " WARNING! Installing config files as root!" ;\
+-					$(ECHO)  " It is strongly recommended to run $(PROGRAM) as a non-root user," ;\
+-					$(ECHO)  " and to install the config files as that user and/or group!" ;\
+-					$(ECHO)  " Please read INSTALL, and create a privoxy user and group!" ;\
+-					$(ECHO)  "*******************************************************************" ;\
+-					GROUP_T=$(GROUP) ;\
+-				fi ;\
+-			else \
+-				GROUP_T=$(GROUP) ;\
+-			fi ;\
+-			if [ x$(GROUP_T) != x ]; then \
+-				INSTALL_CONF="$(INSTALL_R) -g $$GROUP_T " ;\
+-			else \
+-				INSTALL_CONF="$(INSTALL_R)" ;\
+-			fi ;\
+-		else \
+-			$(ECHO) "Superuser install, installing config files as $(USER):$(GROUP_T)" ;\
+-			INSTALL_CONF="$(INSTALL_R) -o $(USER) -g $(GROUP_T)" ;\
+-			GROUP_T=$(GROUP_T) ;\
+-		fi ;\
+-	else \
+-		if [ ! "`id $(USER)`" = "`id`" ] ;then \
+-			$(ECHO) "** WARNING ** current install user different from configured user!!" ;\
+-			$(ECHO) "Edit may fail." ;\
+-		fi ;\
+-		INSTALL_CONF="$(INSTALL_R)" ;\
+-	fi ;\
+ 	$(ECHO) Installing configuration files to $(DESTDIR)$(CONF_DEST);\
+ 	for i in $(CONFIGS); do \
+ 		if [ "$$i" = "default.action" ] || [ "$$i" = "default.filter" ] ; then \
+ 			$(RM) $(DESTDIR)$(CONF_DEST)/$$i ;\
+ 			$(ECHO) Installing fresh $$i;\
+-			$(INSTALL) $$INSTALL_CONF $$i $(DESTDIR)$(CONF_DEST) || exit 1;\
++			$(INSTALL) $(INSTALL_T) $$i $(DESTDIR)$(CONF_DEST) || exit 1;\
+ 		elif [ -s "$(DESTDIR)$(CONF_DEST)/$$i" ]; then \
+ 			$(ECHO) Installing $$i as $$i.new ;\
+-			$(INSTALL) $$INSTALL_CONF $$i $(DESTDIR)$(CONF_DEST)/$$i.new || exit 1;\
++			$(INSTALL) $(INSTALL_T) $$i $(DESTDIR)$(CONF_DEST)/$$i.new || exit 1;\
+ 			NEW=1;\
+ 		else \
+-			$(INSTALL) $$INSTALL_CONF $$i $(DESTDIR)$(CONF_DEST) || exit 1;\
++			$(INSTALL) $(INSTALL_T) $$i $(DESTDIR)$(CONF_DEST) || exit 1;\
+ 		fi ;\
+ 	done ;\
+ 	if [ -n "$$NEW" ]; then \
+ 		$(CHMOD) $(RWD_MODE) $(DESTDIR)$(CONF_DEST)/*.new || exit 1 ;\
+ 		$(ECHO) "Warning: Older config files are preserved. Check new versions for changes!" ;\
+ 	fi ;\
+-	[ ! -f $(DESTDIR)$(LOG_DEST)/logfile ] && $(ECHO) Creating logfiles in $(DESTDIR)$(LOG_DEST) || \
+-		$(ECHO) Checking logfiles in $(DESTDIR)$(LOG_DEST) ;\
+-		$(TOUCH) $(DESTDIR)$(LOG_DEST)/logfile || exit 1 ;\
+-	if [ x$$USER != x ]; then \
+-		$(CHOWN) $$USER $(DESTDIR)$(LOG_DEST)/logfile || \
+-		$(ECHO) "** WARNING ** current install user different from configured user. Logging may fail!!" ;\
+-	fi ;\
+-	if [ x$$GROUP_T != x ]; then \
+-		$(CHGRP) $$GROUP_T $(DESTDIR)$(LOG_DEST)/logfile || \
+-		$(ECHO) "** WARNING ** current install user different from configured user. Logging may fail!!" ;\
+-	fi ;\
+-	$(CHMOD) $(RWD_MODE) $(DESTDIR)$(LOG_DEST)/logfile || exit 1 ;\
+-	if [ "$(prefix)" = "/usr/local" ] || [ "$(prefix)" = "/usr" ]; then \
+-		if [ -f /etc/slackware-version ] && [ -d /etc/rc.d/ ] && [ -w /etc/rc.d/ ] ; then \
+-               $(SED) 's+%PROGRAM%+$(PROGRAM)+' slackware/rc.privoxy.in | \
+-               $(SED) 's+%SBIN_DEST%+$(SBIN_DEST)+' | \
+-               $(SED) 's+%CONF_DEST%+$(CONF_DEST)+' | \
+-               $(SED) 's+%USER%+$(USER)+' | \
+-               $(SED) 's+%GROUP%+$(GROUP_T)+' >slackware/rc.privoxy ;\
+-			$(INSTALL) $(INSTALL_P) slackware/rc.privoxy $(DESTDIR)/etc/rc.d/ ;\
+-               $(ECHO) "Installing for Slackware." ;\
+-               $(ECHO) "Don't forget to add the rc.privoxy to rc.local if you want it started at every boot" ;\
+-		elif [ -d $(DESTDIR)/etc/init.d ] && [ -w $(DESTDIR)/etc/init.d ] ; then \
+-			$(ECHO) "Installing generic init script to $(DESTDIR)/etc/init.d/privoxy" ;\
+-			$(ECHO) "Please check that the PATHs are correct, and edit if needed." ;\
+-			$(INSTALL) $(INSTALL_P) privoxy-generic.init $(DESTDIR)/etc/init.d/privoxy ;\
+-		fi ;\
+-	else \
+-		$(ECHO) "No init script installed, install it manually if needed" ;\
+-	fi
+ 	$(RM) config.base config.tmp
+ 	@# mmmmm, good.
+ 	@$(ECHO) "$(PROGRAM_V) installation succeeded!"
Index: pkgsrc/www/privoxy/patches/patch-config
diff -u /dev/null pkgsrc/www/privoxy/patches/patch-config:1.1
--- /dev/null	Thu Aug 13 18:17:58 2026
+++ pkgsrc/www/privoxy/patches/patch-config	Thu Aug 13 18:17:58 2026
@@ -0,0 +1,75 @@
+$NetBSD: patch-config,v 1.1 2026/08/13 18:17:58 wiz Exp $
+
+Replace hardcoded paths with paths configured by pkgsrc.
+
+--- config.orig	2026-06-02 15:06:25.000000000 +0000
++++ config
+@@ -109,7 +109,7 @@
+ #      The best all purpose solution is simply to put the full local
+ #      PATH to where the User Manual is located:
+ #
+-#        user-manual  /usr/share/doc/privoxy/user-manual
++#        user-manual  @PRIVOXY_DOCDIR@/user-manual
+ #
+ #      The User Manual is then available to anyone with access to
+ #      Privoxy, by following the built-in URL: http://
+@@ -249,7 +249,7 @@
+ #
+ #  Default value:
+ #
+-#      /etc/privoxy (Unix) or Privoxy installation dir (Windows)
++#      @PKG_SYSCONFDIR@ (Unix) or Privoxy installation dir (Windows)
+ #
+ #  Effect if unset:
+ #
+@@ -259,7 +259,7 @@
+ #
+ #      No trailing "/", please.
+ #
+-confdir .
++confdir @PKG_SYSCONFDIR@
+ #
+ #  2.2. templdir
+ #  ==============
+@@ -334,7 +334,7 @@ confdir .
+ #
+ #  Default value:
+ #
+-#      /var/log/privoxy (Unix) or Privoxy installation dir (Windows)
++#      @PRIVOXY_LOGDIR@ (Unix) or Privoxy installation dir (Windows)
+ #
+ #  Effect if unset:
+ #
+@@ -344,7 +344,7 @@ confdir .
+ #
+ #      No trailing "/", please.
+ #
+-logdir .
++logdir @PRIVOXY_LOGDIR@
+ #
+ #  2.5. actionsfile
+ #  =================
+@@ -2483,9 +2483,9 @@ socket-timeout 300
+ #
+ #  Example:
+ #
+-#      ca-directory /usr/local/etc/privoxy/CA
++#      ca-directory @PKG_SYSCONFDIR@/CA
+ #
+-#ca-directory /usr/local/etc/privoxy/CA
++#ca-directory @PKG_SYSCONFDIR@/CA
+ #
+ #  7.2. ca-cert-file
+ #  ==================
+@@ -2650,9 +2650,9 @@ socket-timeout 300
+ #      +-----------------------------------------------------+
+ #  Example:
+ #
+-#      certificate-directory /usr/local/var/privoxy/certs
++#      certificate-directory @VARBASE@/privoxy/certs
+ #
+-#certificate-directory /usr/local/var/privoxy/certs
++#certificate-directory @VARBASE@/privoxy/certs
+ #
+ #  7.6. elliptic-curve-keys
+ #  =========================
Index: pkgsrc/www/privoxy/patches/patch-configure.in
diff -u /dev/null pkgsrc/www/privoxy/patches/patch-configure.in:1.1
--- /dev/null	Thu Aug 13 18:17:58 2026
+++ pkgsrc/www/privoxy/patches/patch-configure.in	Thu Aug 13 18:17:58 2026
@@ -0,0 +1,361 @@
+$NetBSD: patch-configure.in,v 1.1 2026/08/13 18:17:58 wiz Exp $
+
+Drop user/group existence checks; pkgsrc handles their creation.
+Improve detection of gethostbyaddr_r and gethostbyname_r by using 
+compile-time checks with implicit function declarations disabled.
+
+--- configure.in.orig	2026-06-02 15:06:25.000000000 +0000
++++ configure.in
+@@ -189,30 +189,12 @@ if test "$host_os" = haiku; 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_ERROR(There is no 'id' program on this system)
+-                  else
+-                    AC_MSG_RESULT($with_user)
+-                    $ID $with_user 2>/dev/null >/dev/null
+-                    if test $? -eq 0 ; then
+-                      USER=$with_user;
+-                    else
+-                      AC_MSG_ERROR(There is no user '$with_user' on this system)
+-                    fi
+-                  fi
+-                  else
+-                   AC_MSG_ERROR(We need a user if you give me this parameter)
+-                fi
++                AC_MSG_RESULT($with_user)
++                USER=$with_user;
+         ],
+         [
+           if test $ID = no ; then
+@@ -229,29 +211,8 @@ else
+   AC_ARG_WITH(group,
+         [  --with-group=privoxy         Set group for privoxy],
+         [
+-                if test "x$withval" != "xyes"; then
+-                  if test $BGROUPS = no ; then
+-                    AC_MSG_ERROR(There is no 'groups' program on this system)
+-                  else
+-                    AC_MSG_RESULT($with_group)
+-                    $BGROUPS $USER >/dev/null
+-                    if test $? -eq 0 ; then
+-                      for i in `$BGROUPS $USER | sed 's/.*: //' 2>/dev/null`; do
+-                        if test "x$i" = "x$with_group" ; then
+-                          GROUP=$with_group
+-                          break
+-                        fi
+-                      done
+-                      if test "x$GROUP" != "x$with_group" ; then
+-                        AC_MSG_ERROR(The given value '$withval' does not match group entry)
+-                      fi
+-                    else
+-                      AC_MSG_ERROR(There is no group entry for user '$USER')
+-                    fi
+-                  fi
+-                else
+-                   AC_MSG_ERROR(We need a group if you give me this parameter)
+-                fi
++                AC_MSG_RESULT($with_group)
++                GROUP=$with_group
+         ],
+         [
+           if test $BGROUPS = no ; then
+@@ -523,92 +484,192 @@ dnl ====================================
+ dnl Next line needed to find the gethost*_r functions on Solaris
+ AC_CHECK_LIB(nsl, gethostbyname)
+ 
+-AC_CHECK_FUNC(gethostbyaddr_r, [
+-  AC_MSG_CHECKING([signature of gethostbyaddr_r])
+-  AC_TRY_COMPILE([
+-#   include <netdb.h>
+-  ], [
+-    struct hostent *h, *hp;
+-    char *a, *b;
+-    int l, bl, t, e;
+-    (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
+-  ], [
+-    AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
+-    AC_MSG_RESULT([8 args])
+-  ], [
+-    AC_TRY_COMPILE([
+-#     include <netdb.h>
+-    ], [
+-      struct hostent *h;
+-      char *a, *b;
+-      int l, bl, t, e;
+-      (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
+-    ], [
+-      AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
+-      AC_MSG_RESULT([7 args])
+-    ], [
+-      AC_TRY_COMPILE([
+-#       include <netdb.h>
+-      ], [
+-        struct hostent_data *d;
+-        struct hostent *h;
+-        char a,
+-        int l, t;
+-        (void) gethostbyaddr_r(a, l, t, h, d)
+-      ], [
+-        AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
+-        AC_MSG_RESULT([5 args])
+-      ], [
+-        AC_MSG_RESULT(unrecognised)
+-      ])
+-    ])
+-  ])
+-], [
+-  AC_MSG_RESULT(no)
+-])
++AC_MSG_CHECKING([for gethostbyaddr_r])
++AC_COMPILE_IFELSE(
++  [AC_LANG_PROGRAM(
++    [[
++      #include <netdb.h>
++      #if defined(__GNUC__) || defined(__clang__)
++      #pragma GCC diagnostic error "-Wimplicit-function-declaration"
++      #endif
++    ]],
++    [[
++      (void)gethostbyaddr_r;
++    ]]
++  )],
++  [
++    AC_MSG_RESULT([yes])
++    AC_MSG_CHECKING([signature of gethostbyaddr_r])
++
++    AC_COMPILE_IFELSE(
++      [AC_LANG_PROGRAM(
++        [[
++          #include <netdb.h>
++        ]],
++        [[
++          struct hostent *h, *hp;
++          char *a, *b;
++          int l, bl, t, e;
++          (void)gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e);
++        ]]
++      )],
++      [
++        AC_DEFINE([HAVE_GETHOSTBYADDR_R], [1],
++          [Define if gethostbyaddr_r is available.])
++        AC_DEFINE([HAVE_GETHOSTBYADDR_R_8_ARGS], [1],
++          [Define if gethostbyaddr_r has 8 arguments.])
++        AC_MSG_RESULT([8 args])
++      ],
++      [
++        AC_COMPILE_IFELSE(
++          [AC_LANG_PROGRAM(
++            [[
++              #include <netdb.h>
++            ]],
++            [[
++              struct hostent *h;
++              char *a, *b;
++              int l, bl, t, e;
++              (void)gethostbyaddr_r(a, l, t, h, b, bl, &e);
++            ]]
++          )],
++          [
++            AC_DEFINE([HAVE_GETHOSTBYADDR_R], [1],
++              [Define if gethostbyaddr_r is available.])
++            AC_DEFINE([HAVE_GETHOSTBYADDR_R_7_ARGS], [1],
++              [Define if gethostbyaddr_r has 7 arguments.])
++            AC_MSG_RESULT([7 args])
++          ],
++          [
++            AC_COMPILE_IFELSE(
++              [AC_LANG_PROGRAM(
++                [[
++                  #include <netdb.h>
++                ]],
++                [[
++                  struct hostent_data *d;
++                  struct hostent *h;
++                  char *a;
++                  int l, t;
++                  (void)gethostbyaddr_r(a, l, t, h, d);
++                ]]
++              )],
++              [
++                AC_DEFINE([HAVE_GETHOSTBYADDR_R], [1],
++                  [Define if gethostbyaddr_r is available.])
++                AC_DEFINE([HAVE_GETHOSTBYADDR_R_5_ARGS], [1],
++                  [Define if gethostbyaddr_r has 5 arguments.])
++                AC_MSG_RESULT([5 args])
++              ],
++              [
++                AC_MSG_RESULT([unrecognised])
++                AC_MSG_WARN(
++                  [gethostbyaddr_r is declared, but its signature is unrecognised]
++                )
++              ]
++            )
++          ]
++        )
++      ]
++    )
++  ],
++  [
++    AC_MSG_RESULT([no])
++  ]
++)
+ 
+-AC_CHECK_FUNC(gethostbyname_r, [
+-  AC_MSG_CHECKING([signature of gethostbyname_r])
+-  AC_TRY_COMPILE([
+-#   include <netdb.h>
+-  ], [
+-    struct hostent *h, *r;
+-    char *n, *b;
+-    int bl, e;
+-    (void) gethostbyname_r(n, h, b, bl, &r, &e)
+-  ], [
+-    AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
+-    AC_MSG_RESULT([6 args])
+-  ], [
+-    AC_TRY_COMPILE([
+-#     include <netdb.h>
+-    ], [
+-      struct hostent *h;
+-      char *n, *b;
+-      int bl, e;
+-      (void) gethostbyname_r(n, h, b, bl, &e)
+-    ], [
+-      AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
+-      AC_MSG_RESULT([5 args])
+-    ], [
+-      AC_TRY_COMPILE([
+-#       include <netdb.h>
+-      ], [
+-        struct hostent_data *d;
+-        struct hostent *h;
+-        char *n,
+-        (void) gethostbyname_r(n, h, d)
+-      ], [
+-        AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
+-        AC_MSG_RESULT([3 args])
+-      ], [
+-        AC_MSG_RESULT(unrecognised)
+-      ])
+-    ])
+-  ])
+-], [
+-  AC_MSG_RESULT(no)
+-])
++AC_MSG_CHECKING([for gethostbyname_r])
++AC_COMPILE_IFELSE(
++  [AC_LANG_PROGRAM(
++    [[
++      #include <netdb.h>
++      #if defined(__GNUC__) || defined(__clang__)
++      #pragma GCC diagnostic error "-Wimplicit-function-declaration"
++      #endif
++    ]],
++    [[
++      (void)gethostbyname_r;
++    ]]
++  )],
++  [
++    AC_MSG_RESULT([yes])
++    AC_MSG_CHECKING([signature of gethostbyname_r])
++
++    AC_COMPILE_IFELSE(
++      [AC_LANG_PROGRAM(
++        [[
++          #include <netdb.h>
++        ]],
++        [[
++          struct hostent *h, *r;
++          char *n, *b;
++          int bl, e;
++          (void)gethostbyname_r(n, h, b, bl, &r, &e);
++        ]]
++      )],
++      [
++        AC_DEFINE([HAVE_GETHOSTBYNAME_R], [1],
++          [Define if gethostbyname_r is available.])
++        AC_DEFINE([HAVE_GETHOSTBYNAME_R_6_ARGS], [1],
++          [Define if gethostbyname_r has 6 arguments.])
++        AC_MSG_RESULT([6 args])
++      ],
++      [
++        AC_COMPILE_IFELSE(
++          [AC_LANG_PROGRAM(
++            [[
++              #include <netdb.h>
++            ]],
++            [[
++              struct hostent *h;
++              char *n, *b;
++              int bl, e;
++              (void)gethostbyname_r(n, h, b, bl, &e);
++            ]]
++          )],
++          [
++            AC_DEFINE([HAVE_GETHOSTBYNAME_R], [1],
++              [Define if gethostbyname_r is available.])
++            AC_DEFINE([HAVE_GETHOSTBYNAME_R_5_ARGS], [1],
++              [Define if gethostbyname_r has 5 arguments.])
++            AC_MSG_RESULT([5 args])
++          ],
++          [
++            AC_COMPILE_IFELSE(
++              [AC_LANG_PROGRAM(
++                [[
++                  #include <netdb.h>
++                ]],
++                [[
++                  struct hostent_data *d;
++                  struct hostent *h;
++                  char *n;
++                  (void)gethostbyname_r(n, h, d);
++                ]]
++              )],
++              [
++                AC_DEFINE([HAVE_GETHOSTBYNAME_R], [1],
++                  [Define if gethostbyname_r is available.])
++                AC_DEFINE([HAVE_GETHOSTBYNAME_R_3_ARGS], [1],
++                  [Define if gethostbyname_r has 3 arguments.])
++                AC_MSG_RESULT([3 args])
++              ],
++              [
++                AC_MSG_RESULT([unrecognised])
++                AC_MSG_WARN(
++                  [gethostbyname_r is declared, but its signature is unrecognised]
++                )
++              ]
++            )
++          ]
++        )
++      ]
++    )
++  ],
++  [
++    AC_MSG_RESULT([no])
++  ]
++)
+ 
+ AC_CHECK_FUNC(gmtime_r, [
+   AC_MSG_CHECKING([signature of gmtime_r])
+@@ -779,9 +840,7 @@ AC_CHECK_FUNCS([ \
+  calloc \
+  getcwd \
+  gethostbyaddr \
+- gethostbyaddr_r \
+  gethostbyname \
+- gethostbyname_r \
+  gettimeofday \
+  inet_ntoa \
+  memchr \
Index: pkgsrc/www/privoxy/patches/patch-man_privoxy.8
diff -u /dev/null pkgsrc/www/privoxy/patches/patch-man_privoxy.8:1.1
--- /dev/null	Thu Aug 13 18:17:58 2026
+++ pkgsrc/www/privoxy/patches/patch-man_privoxy.8	Thu Aug 13 18:17:58 2026
@@ -0,0 +1,42 @@
+$NetBSD: patch-man_privoxy.8,v 1.1 2026/08/13 18:17:58 wiz Exp $
+
+Replace hardcoded paths with paths configured by pkgsrc.
+
+--- man/privoxy.8.orig	2026-06-02 15:06:25.000000000 +0000
++++ man/privoxy.8
+@@ -122,7 +122,7 @@ be used for locally defined exceptions t
+ \fImatch-all.action\fR and \fIdefault.action\fR,
+ and \fIuser.filter\fR for locally defined filters. These are
+ well commented.  On Unix and Unix-like systems, these are located in
+-\fI/etc/privoxy/\fR by default.
++\fI@PKG_SYSCONFDIR@/\fR by default.
+ .PP
+ \fBPrivoxy\fR uses the concept of \fBactions\fR
+ in order to manipulate the data stream between the browser and remote sites.
+@@ -145,16 +145,16 @@ features and notes on upgrading.
+ .SH "FILES"
+ 
+ .nf
+- \fI/usr/sbin/privoxy\fR
+- \fI/etc/privoxy/config\fR
+- \fI/etc/privoxy/match-all.action\fR
+- \fI/etc/privoxy/default.action\fR
+- \fI/etc/privoxy/user.action\fR
+- \fI/etc/privoxy/default.filter\fR
+- \fI/etc/privoxy/user.filter\fR
+- \fI/etc/privoxy/trust\fR
+- \fI/etc/privoxy/templates/*\fR
+- \fI/var/log/privoxy/logfile\fR
++ \fI@PREFIX@/sbin/privoxy\fR
++ \fI@PKG_SYSCONFDIR@/config\fR
++ \fI@PKG_SYSCONFDIR@/match-all.action\fR
++ \fI@PKG_SYSCONFDIR@/default.action\fR
++ \fI@PKG_SYSCONFDIR@/user.action\fR
++ \fI@PKG_SYSCONFDIR@/default.filter\fR
++ \fI@PKG_SYSCONFDIR@/user.filter\fR
++ \fI@PKG_SYSCONFDIR@/trust\fR
++ \fI@PKG_SYSCONFDIR@/templates/*\fR
++ \fI@PRIVOXY_LOGDIR@/logfile\fR
+ .fi
+ .PP
+ Various other files should be included, but may vary depending on platform
Index: pkgsrc/www/privoxy/patches/patch-man_uagen.1
diff -u /dev/null pkgsrc/www/privoxy/patches/patch-man_uagen.1:1.1
--- /dev/null	Thu Aug 13 18:17:58 2026
+++ pkgsrc/www/privoxy/patches/patch-man_uagen.1	Thu Aug 13 18:17:58 2026
@@ -0,0 +1,24 @@
+$NetBSD: patch-man_uagen.1,v 1.1 2026/08/13 18:17:58 wiz Exp $
+
+Replace hardcoded paths with paths configured by pkgsrc.
+
+--- man/uagen.1.orig	2026-06-02 15:06:25.000000000 +0000
++++ man/uagen.1
+@@ -91,7 +91,7 @@ used by many Mozilla browsers.
+ .SH OPTIONS
+ .IX Header "OPTIONS"
+ \&\fB\-\-action\-file\fR \fIaction_file\fR Privoxy action file to write the
+-generated actions into. Default is /etc/privoxy/user\-agent.action.
++generated actions into. Default is @PKG_SYSCONFDIR@/user\-agent.action.
+ .PP
+ \&\fB\-\-action\-injection\fR Don\*(Aqt generate a new action file from scratch,
+ but read an old one and just replace the action values. Useful
+@@ -124,7 +124,7 @@ User\-Agent, by default the chosen langu
+ \&\fBhide\-accept\-language\fR parameter.
+ .PP
+ \&\fB\-\-logfile\fR \fIlogfile\fR Logfile to save error messages and the generated
+-User\-Agents. Default is /var/log/uagen.log.
++User\-Agents. Default is @VARBASE@/log/uagen.log.
+ .PP
+ \&\fB\-\-loop\fR Don\*(Aqt exit after the generation of the action file. Sleep for
+ a while and generate a new one instead. Useful if you don\*(Aqt have \fBcron\fR\|(8).
Index: pkgsrc/www/privoxy/patches/patch-tools_uagen.pl
diff -u /dev/null pkgsrc/www/privoxy/patches/patch-tools_uagen.pl:1.1
--- /dev/null	Thu Aug 13 18:17:58 2026
+++ pkgsrc/www/privoxy/patches/patch-tools_uagen.pl	Thu Aug 13 18:17:58 2026
@@ -0,0 +1,26 @@
+$NetBSD: patch-tools_uagen.pl,v 1.1 2026/08/13 18:17:58 wiz Exp $
+
+Replace hardcoded paths with paths configured by pkgsrc.
+
+--- tools/uagen.pl.orig	2026-08-12 13:09:18.065429443 +0000
++++ tools/uagen.pl
+@@ -41,8 +41,8 @@ use constant {
+ 
+    UAGEN_VERSION       => 'uagen 1.2.7',
+ 
+-   UAGEN_LOGFILE       => '/var/log/uagen.log',
+-   ACTION_FILE         => '/etc/privoxy/user-agent.action',
++   UAGEN_LOGFILE       => '@VARBASE@/log/uagen.log',
++   ACTION_FILE         => '@PKG_SYSCONFDIR@/user-agent.action',
+    MOZILLA_PREFS_FILE  => '',
+    SILENT              =>  0,
+    NO_LOGGING          =>  0,
+@@ -477,7 +477,7 @@ used by many Mozilla browsers.
+ =head1 OPTIONS
+ 
+ B<--action-file> I<action_file> Privoxy action file to write the
+-generated actions into. Default is /etc/privoxy/user-agent.action.
++generated actions into. Default is @PKG_SYSCONFDIR@/user-agent.action.
+ 
+ B<--action-injection> Don't generate a new action file from scratch,
+ but read an old one and just replace the action values. Useful
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.