pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/security/zoneminder



Module Name:    pkgsrc
Committed By:   gdt
Date:           Tue Aug 25 16:42:21 UTC 2020

Modified Files:
        pkgsrc/security/zoneminder: Makefile PLIST distinfo
        pkgsrc/security/zoneminder/files: zoneminder.conf
        pkgsrc/security/zoneminder/patches: patch-Makefile_am
            patch-configure_ac patch-scripts_zm_in patch-src_zm__event.cpp
            patch-src_zm__monitor.cpp patch-src_zm__rtp__source.cpp
            patch-src_zm__thread.h patch-src_zm__timer.h
            patch-src_zm__utils.cpp patch-src_zm__utils.h
            patch-src_zm_comms_cpp patch-src_zm_comms_h patch-src_zm_logger_cpp
            patch-src_zm_signal_cpp patch-src_zm_thread_cpp patch-src_zmc_cpp
            patch-src_zmf.cpp patch-src_zmu.cpp patch-web_Makefile.am
Added Files:
        pkgsrc/security/zoneminder/patches:
            patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
Removed Files:
        pkgsrc/security/zoneminder/patches: patch-src_zm__image.cpp
            patch-src_zm__stream.cpp patch-src_zm_ffmpeg_camera_cpp

Log Message:
security/zoneminder: Update to 1.29.0

This is the last version that supports autoconf, and this update is
only because it's a reasonable benefit/cost tradeoff as an
intermediaate step.  Tested on netbsd-9/earmv7hf-el.

Upstream chanages:
  many bug fixes and improvements
  zoneminder API
  Multiserver
  limted ONVIF support

See more at
https://github.com/ZoneMinder/zoneminder/releases/tag/v1.29.0-rc2 and
before and after.

Note that when updating, one must run zmupdate to modify the db schema.


To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 pkgsrc/security/zoneminder/Makefile
cvs rdiff -u -r1.5 -r1.6 pkgsrc/security/zoneminder/PLIST
cvs rdiff -u -r1.15 -r1.16 pkgsrc/security/zoneminder/distinfo
cvs rdiff -u -r1.2 -r1.3 pkgsrc/security/zoneminder/files/zoneminder.conf
cvs rdiff -u -r1.3 -r1.4 pkgsrc/security/zoneminder/patches/patch-Makefile_am \
    pkgsrc/security/zoneminder/patches/patch-scripts_zm_in \
    pkgsrc/security/zoneminder/patches/patch-src_zm__timer.h \
    pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h
cvs rdiff -u -r1.4 -r1.5 \
    pkgsrc/security/zoneminder/patches/patch-configure_ac \
    pkgsrc/security/zoneminder/patches/patch-src_zm__thread.h
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
cvs rdiff -u -r1.2 -r1.3 \
    pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm__utils.h \
    pkgsrc/security/zoneminder/patches/patch-src_zm_comms_cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm_thread_cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zmc_cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zmf.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp
cvs rdiff -u -r1.1 -r0 \
    pkgsrc/security/zoneminder/patches/patch-src_zm__image.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm__stream.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm_ffmpeg_camera_cpp
cvs rdiff -u -r1.1 -r1.2 \
    pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp \
    pkgsrc/security/zoneminder/patches/patch-web_Makefile.am
cvs rdiff -u -r1.5 -r1.6 \
    pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/security/zoneminder/Makefile
diff -u pkgsrc/security/zoneminder/Makefile:1.51 pkgsrc/security/zoneminder/Makefile:1.52
--- pkgsrc/security/zoneminder/Makefile:1.51    Mon Aug 17 20:20:01 2020
+++ pkgsrc/security/zoneminder/Makefile Tue Aug 25 16:42:21 2020
@@ -1,17 +1,21 @@
-# $NetBSD: Makefile,v 1.51 2020/08/17 20:20:01 leot Exp $
+# $NetBSD: Makefile,v 1.52 2020/08/25 16:42:21 gdt Exp $
 
-# See wip/zoneminder for a draft update to 1.29.0.
-PKGNAME=       ${DISTNAME:S/ZoneMinder-/zoneminder-/}
-DISTNAME=      ZoneMinder-1.28.1
-PKGREVISION=   23
+VERSION=       1.29.0
+# Sometimes the distfile unpacks to ZoneMinder and sometimes zoneminder.
+NAME_DIST=     ZoneMinder
+NAME_LOWER=    zoneminder
+PKGREVISION=   2
+
+PKGNAME=       ${DISTNAME:S/${NAME_DIST}-/${NAME_LOWER}-/}
+DISTNAME=      ${NAME_DIST}-${VERSION}
+WRKSRC=                ${WRKDIR}/${NAME_LOWER}-${VERSION}
 CATEGORIES=    security
-MASTER_SITES=  ${MASTER_SITE_GITHUB:=ZoneMinder/}
-GITHUB_PROJECT=        ZoneMinder
+MASTER_SITES=  ${MASTER_SITE_GITHUB:=${NAME_DIST}/}
+GITHUB_PROJECT=        ${NAME_DIST}
 GITHUB_TYPE=   tag
 GITHUB_TAG=    v${PKGVERSION_NOREV}
 
 MAINTAINER=    dsainty%NetBSD.org@localhost
-#MAINTAINER+=  gdt%NetBSD.org@localhost
 HOMEPAGE=      https://www.zoneminder.com/
 COMMENT=       Video camera security and surveillance solution
 LICENSE=       gnu-gpl-v2
@@ -21,7 +25,6 @@ EXTRACT_USING=        gtar
 
 DEPENDS+=      netpbm-[0-9]*:../../graphics/netpbm
 
-# This PHP 5.6 limitation is only to match the limitation in php-mysql
 PHP_VERSIONS_ACCEPTED= 56
 
 PKG_OPTIONS_VAR=       PKG_OPTIONS.zoneminder
@@ -38,7 +41,7 @@ USE_TOOLS+=   aclocal autoconf autoheader 
 # configuration.  We take the view that if an installation can be
 # reasonably configured to use a module, that module should be a
 # dependency, absent some reason that it is so heavyweight that it
-# should be an option.
+# shoudl be an option.
 
 # MIME::Entity is needed from p5-MIME-tools
 # LWP::UserAgent is needed from p5-libwww
@@ -57,13 +60,18 @@ CONFIGURE_ARGS+=    --sysconfdir=${PKG_SYSC
 
 ZM_HTTPD_ROOT=         share/zoneminder/htdocs
 PLIST_SUBST+=          ZM_HTTPD_ROOT=${ZM_HTTPD_ROOT:Q}
+PRINT_PLIST_AWK+=      { gsub(/${ZM_HTTPD_ROOT:S|/|\\/|g}/, "$${ZM_HTTPD_ROOT}") }
 OWN_DIRS+=             ${ZM_HTTPD_ROOT:Q}
 
 ZM_HTTPD_CGIBIN=       libexec/zoneminder/cgi-bin
 PLIST_SUBST+=          ZM_HTTPD_CGIBIN=${ZM_HTTPD_CGIBIN:Q}
+PRINT_PLIST_AWK+=      { gsub(/${ZM_HTTPD_CGIBIN:S|/|\\/|g}/, "$${ZM_HTTPD_CGIBIN}") }
 BUILD_DEFS+=           ZM_HTTPD_CGIBIN
 OWN_DIRS+=             ${ZM_HTTPD_CGIBIN:Q}
 
+# Omit patchfiles from PLIST.
+PRINT_PLIST_AWK+=      /.orig$$/ { next; }
+
 INSTALLATION_DIRS+=    share/zoneminder ${ZM_HTTPD_ROOT}
 INSTALLATION_DIRS+=    libexec/zoneminder ${ZM_HTTPD_CGIBIN}
 
@@ -173,13 +181,15 @@ REPLACE_PERL+=    scripts/zmx10.pl.in
 #
 
 CHECK_INTERPRETER_SKIP+=       bin/zmsystemctl.pl
-EXTRA_PERL+=                   scripts/zmsystemctl.pl.in
 
-SUBST_CLASSES+=                        systemd-perl
-SUBST_MESSAGE.systemd-perl=    Adjusting systemd pkexec perl.
-SUBST_STAGE.systemd-perl=      pre-configure
-SUBST_FILES.systemd-perl=      scripts/zmsystemctl.pl.in
-SUBST_SED.systemd-perl=                -e 's|/usr/bin/perl|${PERL5}|g'
+#EXTRA_PERL+=                  scripts/zmsystemctl.pl.in
+
+# \todo: Re-enable this, because it seems ok.
+#SUBST_CLASSES+=                       systemd-perl
+#SUBST_MESSAGE.systemd-perl=   Adjusting systemd pkexec perl.
+#SUBST_STAGE.systemd-perl=     pre-configure
+#SUBST_FILES.systemd-perl=     scripts/zmsystemctl.pl.in
+#SUBST_SED.systemd-perl=               -e 's|/usr/bin/perl|${PERL5}|g'
 
 
 SUBST_CLASSES+=                        dbpaths-path
@@ -197,7 +207,7 @@ SUBST_SED.dbpaths-path+=    -e 's|/cgi-bin/
 SUBST_CLASSES+=                        script-path
 SUBST_MESSAGE.script-path=     Adjusting paths in scripts.
 SUBST_STAGE.script-path=       pre-configure
-SUBST_FILES.script-path=       ${REPLACE_PERL} ${EXTRA_PERL:Nscripts/zmsystemctl.pl.in}
+SUBST_FILES.script-path=       ${REPLACE_PERL} ${EXTRA_PERL}
 SUBST_SED.script-path=         -e "s|^\\([\$$]ENV{PATH} *= *'\\).*';\$$|\\1${PREFIX}/bin:/bin:/usr/bin';|g"
 
 SUBST_CLASSES+=                files
@@ -212,6 +222,7 @@ PLIST_VARS+=                rcd
 .if ${INIT_SYSTEM} == "rc.d"
 PLIST.rcd=             yes
 .endif
+PRINT_PLIST_AWK+=      { gsub(/^.+\/examples\/rc.d/, "$${PLIST.rcd}&"); }
 
 .if ${OPSYS} == "NetBSD" && exists(/usr/include/execinfo.h)
 LIBS+=         -lexecinfo
@@ -219,7 +230,6 @@ LIBS+=              -lexecinfo
 
 post-extract:
        ${CP} ${FILESDIR}/zoneminder.conf ${WRKSRC}/zoneminder.conf
-       ${RM} ${WRKSRC}/version
 
 pre-configure:
        set -e; cd ${WRKSRC}; \
@@ -248,8 +258,8 @@ post-install:
        ${INSTALL_SCRIPT} ${WRKSRC}/scripts/zm ${DESTDIR}${PREFIX}/share/examples/rc.d/zoneminder
 .endif
        ${INSTALL_DATA} ${WRKSRC}/db/*.sql ${DESTDIR}${PREFIX}/share/zoneminder/db/
-       rmdir ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/events || true
-       rmdir ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/images || true
+       rmdir ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/events || ${TRUE}
+       rmdir ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/images || ${TRUE}
        ${LN} -s ${ZM_CACHE}/temp ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/temp
        ${LN} -s ${ZM_CACHE}/events ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/events
        ${LN} -s ${ZM_CACHE}/images ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/images

Index: pkgsrc/security/zoneminder/PLIST
diff -u pkgsrc/security/zoneminder/PLIST:1.5 pkgsrc/security/zoneminder/PLIST:1.6
--- pkgsrc/security/zoneminder/PLIST:1.5        Tue Aug 25 16:12:53 2020
+++ pkgsrc/security/zoneminder/PLIST    Tue Aug 25 16:42:21 2020
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.5 2020/08/25 16:12:53 gdt Exp $
+@comment $NetBSD: PLIST,v 1.6 2020/08/25 16:42:21 gdt Exp $
 ${PERL5_SUB_INSTALLVENDORARCH}/auto/ZoneMinder/.packlist
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Base.pm
@@ -6,30 +6,35 @@ ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/ConfigAdmin.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/ConfigData.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/3S.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/AxisV2.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI8608W_Y2k.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI8620_Y2k.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI8908W.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI8918W.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI9821W_Y2k.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI9831W.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/LoftekSentinel.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/M8640.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Ncs370.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PanasonicIP.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PelcoD.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PelcoP.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/SPP1802SWPTZ.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/SkyIPCam7xx.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/TVIP862.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Toshiba_IK_WB11A.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Visca.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Wanscam.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/mjpgStreamer.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/onvif.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Database.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/General.pm
-${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/General.pm.orig
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Logger.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Memory.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Memory/Mapped.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Memory/Shared.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Server.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel/File.pm
 ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel/Handle.pm
@@ -45,16 +50,20 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMi
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::ConfigAdmin.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::ConfigData.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::3S.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::AxisV2.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI8608W_Y2k.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI8620_Y2k.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI8908W.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI8918W.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI9821W_Y2k.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI9831W.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::M8640.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Ncs370.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PanasonicIP.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PelcoD.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PelcoP.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::SPP1802SWPTZ.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::SkyIPCam7xx.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::TVIP862.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Toshiba_IK_WB11A.3
@@ -65,6 +74,7 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMi
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::General.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Logger.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Memory.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Server.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel::File.3
 ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel::Handle.3
@@ -91,6 +101,8 @@ ${ZM_HTTPD_ROOT}/graphics/favicon.ico
 ${ZM_HTTPD_ROOT}/graphics/spinner.gif
 ${ZM_HTTPD_ROOT}/graphics/transparent.gif
 ${ZM_HTTPD_ROOT}/images
+${ZM_HTTPD_ROOT}/includes/Monitor.php
+${ZM_HTTPD_ROOT}/includes/Server.php
 ${ZM_HTTPD_ROOT}/includes/actions.php
 ${ZM_HTTPD_ROOT}/includes/config.php
 ${ZM_HTTPD_ROOT}/includes/control_functions.php
@@ -122,9 +134,93 @@ ${ZM_HTTPD_ROOT}/lang/pt_br.php
 ${ZM_HTTPD_ROOT}/lang/ro_ro.php
 ${ZM_HTTPD_ROOT}/lang/ru_ru.php
 ${ZM_HTTPD_ROOT}/lang/se_se.php
-${ZM_HTTPD_ROOT}/skins/classic/css/control.css
-${ZM_HTTPD_ROOT}/skins/classic/css/export.css
-${ZM_HTTPD_ROOT}/skins/classic/css/skin.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/control.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/skin.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/console.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/control.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/controlcaps.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/devices.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/event.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/events.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/filter.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/frame.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/frames.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/groups.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/log.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/monitor.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montage.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montage_2wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montage_3wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montage_3wide50enlarge.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montage_4wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montage_freeform.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/options.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/stats.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/timeline.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/timeline.css.php
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/video.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/watch.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/zone.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/control.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/skin.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/console.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/control.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/controlcaps.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/devices.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/event.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/events.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/filter.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/frame.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/frames.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/groups.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/log.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/monitor.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage_2wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage_3wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage_3wide50enlarge.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage_4wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage_freeform.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/options.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/stats.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/timeline.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/timeline.css.php
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/video.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/watch.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/zone.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/control.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/skin.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/console.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/control.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/controlcaps.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/devices.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/event.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/events.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/filter.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/frame.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/frames.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/groups.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/log.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/monitor.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_2wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_3wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_3wide50enlarge.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_4wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_freeform.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/options.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/stats.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/timeline.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/timeline.css.php
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/video.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/watch.css
+${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/zone.css
 ${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-d.gif
 ${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-dl.gif
 ${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-dr.gif
@@ -149,6 +245,9 @@ ${ZM_HTTPD_ROOT}/skins/classic/includes/
 ${ZM_HTTPD_ROOT}/skins/classic/includes/functions.php
 ${ZM_HTTPD_ROOT}/skins/classic/includes/init.php
 ${ZM_HTTPD_ROOT}/skins/classic/includes/timeline_functions.php
+${ZM_HTTPD_ROOT}/skins/classic/js/classic.js
+${ZM_HTTPD_ROOT}/skins/classic/js/dark.js
+${ZM_HTTPD_ROOT}/skins/classic/js/flat.js
 ${ZM_HTTPD_ROOT}/skins/classic/js/skin.js
 ${ZM_HTTPD_ROOT}/skins/classic/js/skin.js.php
 ${ZM_HTTPD_ROOT}/skins/classic/skin.php
@@ -160,32 +259,6 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/con
 ${ZM_HTTPD_ROOT}/skins/classic/views/controlcap.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/controlcaps.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/controlpreset.php
-${ZM_HTTPD_ROOT}/skins/classic/views/css/console.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/control.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/controlcaps.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/devices.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/event.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/events.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/export.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/filter.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/frame.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/frames.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/groups.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/log.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/monitor.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/montage.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/montage_2wide.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/montage_3wide.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/montage_3wide50enlarge.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/montage_4wide.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/montage_freeform.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/options.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/stats.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/timeline.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/timeline.css.php
-${ZM_HTTPD_ROOT}/skins/classic/views/css/video.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/watch.css
-${ZM_HTTPD_ROOT}/skins/classic/views/css/zone.css
 ${ZM_HTTPD_ROOT}/skins/classic/views/cycle.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/device.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/devices.php
@@ -231,6 +304,7 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/js/
 ${ZM_HTTPD_ROOT}/skins/classic/views/js/monitorprobe.js
 ${ZM_HTTPD_ROOT}/skins/classic/views/js/montage.js
 ${ZM_HTTPD_ROOT}/skins/classic/views/js/montage.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/onvifprobe.js
 ${ZM_HTTPD_ROOT}/skins/classic/views/js/options.js.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/js/postlogin.js.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/js/state.js
@@ -254,9 +328,11 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/mon
 ${ZM_HTTPD_ROOT}/skins/classic/views/monitorprobe.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/montage.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/none.php
+${ZM_HTTPD_ROOT}/skins/classic/views/onvifprobe.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/optionhelp.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/options.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/postlogin.php
+${ZM_HTTPD_ROOT}/skins/classic/views/server.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/settings.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/state.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/stats.php
@@ -268,152 +344,6 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/vid
 ${ZM_HTTPD_ROOT}/skins/classic/views/watch.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/zone.php
 ${ZM_HTTPD_ROOT}/skins/classic/views/zones.php
-${ZM_HTTPD_ROOT}/skins/flat/css/control.css
-${ZM_HTTPD_ROOT}/skins/flat/css/export.css
-${ZM_HTTPD_ROOT}/skins/flat/css/skin.css
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-d.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-dl.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-dr.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-l-d.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-l-u.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-l.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-r.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-s-d.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-s-u.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-u.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-ul.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/arrow-ur.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/center.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/point-g.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/point-o.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/point-r.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/seq-d.gif
-${ZM_HTTPD_ROOT}/skins/flat/graphics/seq-u.gif
-${ZM_HTTPD_ROOT}/skins/flat/includes/config.php
-${ZM_HTTPD_ROOT}/skins/flat/includes/control_functions.php
-${ZM_HTTPD_ROOT}/skins/flat/includes/export_functions.php
-${ZM_HTTPD_ROOT}/skins/flat/includes/functions.php
-${ZM_HTTPD_ROOT}/skins/flat/includes/init.php
-${ZM_HTTPD_ROOT}/skins/flat/includes/timeline_functions.php
-${ZM_HTTPD_ROOT}/skins/flat/js/skin.js
-${ZM_HTTPD_ROOT}/skins/flat/js/skin.js.php
-${ZM_HTTPD_ROOT}/skins/flat/skin.php
-${ZM_HTTPD_ROOT}/skins/flat/views/Makefile.am
-${ZM_HTTPD_ROOT}/skins/flat/views/bandwidth.php
-${ZM_HTTPD_ROOT}/skins/flat/views/blank.php
-${ZM_HTTPD_ROOT}/skins/flat/views/console.php
-${ZM_HTTPD_ROOT}/skins/flat/views/control.php
-${ZM_HTTPD_ROOT}/skins/flat/views/controlcap.php
-${ZM_HTTPD_ROOT}/skins/flat/views/controlcaps.php
-${ZM_HTTPD_ROOT}/skins/flat/views/controlpreset.php
-${ZM_HTTPD_ROOT}/skins/flat/views/css/console.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/control.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/controlcaps.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/devices.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/event.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/events.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/export.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/filter.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/frame.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/frames.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/groups.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/log.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/monitor.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/montage.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/montage_2wide.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/montage_3wide.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/montage_3wide50enlarge.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/montage_4wide.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/montage_freeform.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/options.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/stats.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/timeline.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/timeline.css.php
-${ZM_HTTPD_ROOT}/skins/flat/views/css/video.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/watch.css
-${ZM_HTTPD_ROOT}/skins/flat/views/css/zone.css
-${ZM_HTTPD_ROOT}/skins/flat/views/cycle.php
-${ZM_HTTPD_ROOT}/skins/flat/views/device.php
-${ZM_HTTPD_ROOT}/skins/flat/views/devices.php
-${ZM_HTTPD_ROOT}/skins/flat/views/donate.php
-${ZM_HTTPD_ROOT}/skins/flat/views/error.php
-${ZM_HTTPD_ROOT}/skins/flat/views/event.php
-${ZM_HTTPD_ROOT}/skins/flat/views/eventdetail.php
-${ZM_HTTPD_ROOT}/skins/flat/views/events.php
-${ZM_HTTPD_ROOT}/skins/flat/views/export.php
-${ZM_HTTPD_ROOT}/skins/flat/views/filter.php
-${ZM_HTTPD_ROOT}/skins/flat/views/filtersave.php
-${ZM_HTTPD_ROOT}/skins/flat/views/frame.php
-${ZM_HTTPD_ROOT}/skins/flat/views/frames.php
-${ZM_HTTPD_ROOT}/skins/flat/views/function.php
-${ZM_HTTPD_ROOT}/skins/flat/views/group.php
-${ZM_HTTPD_ROOT}/skins/flat/views/groups.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/Makefile.am
-${ZM_HTTPD_ROOT}/skins/flat/views/js/console.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/console.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/control.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/controlpreset.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/controlpreset.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/cycle.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/cycle.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/devices.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/donate.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/donate.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/event.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/event.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/events.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/events.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/export.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/export.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/filter.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/filter.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/group.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/groups.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/log.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/login.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/monitor.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/monitor.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/monitorpreset.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/monitorprobe.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/montage.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/montage.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/options.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/postlogin.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/state.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/state.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/timeline.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/timeline.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/user.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/version.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/version.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/video.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/video.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/watch.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/watch.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/js/zone.js
-${ZM_HTTPD_ROOT}/skins/flat/views/js/zone.js.php
-${ZM_HTTPD_ROOT}/skins/flat/views/log.php
-${ZM_HTTPD_ROOT}/skins/flat/views/login.php
-${ZM_HTTPD_ROOT}/skins/flat/views/logout.php
-${ZM_HTTPD_ROOT}/skins/flat/views/monitor.php
-${ZM_HTTPD_ROOT}/skins/flat/views/monitorpreset.php
-${ZM_HTTPD_ROOT}/skins/flat/views/monitorprobe.php
-${ZM_HTTPD_ROOT}/skins/flat/views/montage.php
-${ZM_HTTPD_ROOT}/skins/flat/views/none.php
-${ZM_HTTPD_ROOT}/skins/flat/views/optionhelp.php
-${ZM_HTTPD_ROOT}/skins/flat/views/options.php
-${ZM_HTTPD_ROOT}/skins/flat/views/postlogin.php
-${ZM_HTTPD_ROOT}/skins/flat/views/settings.php
-${ZM_HTTPD_ROOT}/skins/flat/views/state.php
-${ZM_HTTPD_ROOT}/skins/flat/views/stats.php
-${ZM_HTTPD_ROOT}/skins/flat/views/status.php
-${ZM_HTTPD_ROOT}/skins/flat/views/timeline.php
-${ZM_HTTPD_ROOT}/skins/flat/views/user.php
-${ZM_HTTPD_ROOT}/skins/flat/views/version.php
-${ZM_HTTPD_ROOT}/skins/flat/views/video.php
-${ZM_HTTPD_ROOT}/skins/flat/views/watch.php
-${ZM_HTTPD_ROOT}/skins/flat/views/zone.php
-${ZM_HTTPD_ROOT}/skins/flat/views/zones.php
 ${ZM_HTTPD_ROOT}/skins/mobile/css/skin.css
 ${ZM_HTTPD_ROOT}/skins/mobile/includes/config.php
 ${ZM_HTTPD_ROOT}/skins/mobile/includes/control_functions.php
@@ -444,20 +374,12 @@ ${ZM_HTTPD_ROOT}/skins/xml/views/console
 ${ZM_HTTPD_ROOT}/skins/xml/views/none.php
 ${ZM_HTTPD_ROOT}/skins/xml/views/notfound.png
 ${ZM_HTTPD_ROOT}/temp
-${ZM_HTTPD_ROOT}/tools/mootools/mootools-core-1.3.2-nc.js
-${ZM_HTTPD_ROOT}/tools/mootools/mootools-core-1.3.2-yc.js
+${ZM_HTTPD_ROOT}/tools/mootools/mootools-core-1.4.5-compat.js
 ${ZM_HTTPD_ROOT}/tools/mootools/mootools-core.js
-${ZM_HTTPD_ROOT}/tools/mootools/mootools-more-1.3.2.1-nc.js
-${ZM_HTTPD_ROOT}/tools/mootools/mootools-more-1.3.2.1-yc.js
+${ZM_HTTPD_ROOT}/tools/mootools/mootools-more-1.5.1.js
 ${ZM_HTTPD_ROOT}/tools/mootools/mootools-more.js
 ${ZM_HTTPD_ROOT}/views/file.php
 ${ZM_HTTPD_ROOT}/views/image.php
-@pkgdir ${ZM_HTTPD_ROOT}/skins/classic/ajax
-@pkgdir ${ZM_HTTPD_ROOT}/skins/classic/lang
-@pkgdir ${ZM_HTTPD_ROOT}/skins/mobile/ajax
-@pkgdir ${ZM_HTTPD_ROOT}/skins/mobile/graphics
-@pkgdir ${ZM_HTTPD_ROOT}/skins/mobile/lang
-@pkgdir ${ZM_HTTPD_ROOT}/sounds
 bin/zma
 bin/zmaudit.pl
 bin/zmc
@@ -481,6 +403,7 @@ share/examples/zoneminder/apache/zonemin
 share/examples/zoneminder/config/zm.conf
 share/zoneminder/db/test.monitor.sql
 share/zoneminder/db/zm_create.sql
+share/zoneminder/db/zm_update-${PKGVERSION}.sql
 share/zoneminder/db/zm_update-0.0.1.sql
 share/zoneminder/db/zm_update-0.9.10.sql
 share/zoneminder/db/zm_update-0.9.11.sql
@@ -530,3 +453,15 @@ share/zoneminder/db/zm_update-1.27.0.sql
 share/zoneminder/db/zm_update-1.27.99.0.sql
 share/zoneminder/db/zm_update-1.28.0.sql
 share/zoneminder/db/zm_update-1.28.1.sql
+share/zoneminder/db/zm_update-1.28.100.sql
+share/zoneminder/db/zm_update-1.28.101.sql
+share/zoneminder/db/zm_update-1.28.102.sql
+share/zoneminder/db/zm_update-1.28.103.sql
+share/zoneminder/db/zm_update-1.28.104.sql
+share/zoneminder/db/zm_update-1.28.105.sql
+share/zoneminder/db/zm_update-1.28.106.sql
+share/zoneminder/db/zm_update-1.28.107.sql
+share/zoneminder/db/zm_update-1.28.108.sql
+share/zoneminder/db/zm_update-1.28.109.sql
+share/zoneminder/db/zm_update-1.28.110.sql
+share/zoneminder/db/zm_update-1.28.99.sql

Index: pkgsrc/security/zoneminder/distinfo
diff -u pkgsrc/security/zoneminder/distinfo:1.15 pkgsrc/security/zoneminder/distinfo:1.16
--- pkgsrc/security/zoneminder/distinfo:1.15    Sun Jul 12 16:58:42 2020
+++ pkgsrc/security/zoneminder/distinfo Tue Aug 25 16:42:21 2020
@@ -1,34 +1,32 @@
-$NetBSD: distinfo,v 1.15 2020/07/12 16:58:42 gdt Exp $
+$NetBSD: distinfo,v 1.16 2020/08/25 16:42:21 gdt Exp $
 
-SHA1 (ZoneMinder-1.28.1.tar.gz) = 3e173ae1aac529b60d79a5fc668c107f0679d0a2
-RMD160 (ZoneMinder-1.28.1.tar.gz) = b3cc305656cb5b73d4ac0e21fe937c237467cdd1
-SHA512 (ZoneMinder-1.28.1.tar.gz) = 0ae29870e12b7ad0852510a17439df49dd35245aa1486a5d0ff71e17dbf89840d08c65b4485c93739f1fbcc253599162e28e0382c28927aa84cd734248587ea1
-Size (ZoneMinder-1.28.1.tar.gz) = 3864811 bytes
-SHA1 (patch-Makefile_am) = ae6f2f3c6825a44be019ad5dc0b45929c85d4ba9
-SHA1 (patch-configure_ac) = 110a7a10506ba931369904d777dec5cc2185f556
+SHA1 (ZoneMinder-1.29.0.tar.gz) = 1e1fb9aeb7f482c27b4275ad84556b6c3910e4dc
+RMD160 (ZoneMinder-1.29.0.tar.gz) = d744a68552651489cc17f369c11baa3cc45621ff
+SHA512 (ZoneMinder-1.29.0.tar.gz) = 4716e0788db29880eeafc817fe63662d07c3b805214b4d2eb29b346dd3493b0215c9e79370e3414220c812065eefbe253548a70d8128c253aa4535f66f9544df
+Size (ZoneMinder-1.29.0.tar.gz) = 9302624 bytes
+SHA1 (patch-Makefile_am) = d3b66d8d741b739e2e6b354cef29881d8bcde31c
+SHA1 (patch-configure_ac) = 689230f4d7526ab3d47142b111102b9bc4ff409c
 SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm) = 841d897662958698a4dfcb95dd5bc43bb5fed568
-SHA1 (patch-scripts_zm_in) = 8f59085bb9293afa7aeb268000c75988e5371c66
+SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm) = b97c104f6ac102fc4510eb0977169375cdd97197
+SHA1 (patch-scripts_zm_in) = a05727261bb8be6b707e9a14ae4ff52ea3770d51
 SHA1 (patch-src_Makefile_am) = 0f6571c9d5a3e688544f93d687d266e1b71f0f43
-SHA1 (patch-src_zm__event.cpp) = 5258e89486b1152f0ddcac9b0a6fd68b70f24256
-SHA1 (patch-src_zm__image.cpp) = 0cb4f56bdf2f4fb99ec673b5a4f81589a7bdfdb0
-SHA1 (patch-src_zm__monitor.cpp) = dcc3816686a6a7c375d4716d3663b4c922c90439
+SHA1 (patch-src_zm__event.cpp) = 83d0d3f5de5d3a7b1ea81917bd9c5264c8129637
+SHA1 (patch-src_zm__monitor.cpp) = 4a0f2bd9a180092e3aa7ba8c0626e0907d45ab32
 SHA1 (patch-src_zm__rtp__ctrl.h) = 052b41bf09d41d1d5f980db011603b3b04f6142f
-SHA1 (patch-src_zm__rtp__source.cpp) = 5341938eefe5def49dc8f3e3b760d86cabd17772
+SHA1 (patch-src_zm__rtp__source.cpp) = 50d2621b474de5defb94b019ba2084f67a5b2665
 SHA1 (patch-src_zm__sdp.cpp) = ed89bc14ae557281bb43baca9c90b78d801d8eb1
-SHA1 (patch-src_zm__stream.cpp) = 64655550ff36576377cfdea918fe85253428e227
-SHA1 (patch-src_zm__thread.h) = 67dbd1e9c19df63fd120344cc8a36d663a724409
-SHA1 (patch-src_zm__timer.h) = 38080d08b5834e3dae713e81488944887ce5848b
-SHA1 (patch-src_zm__utils.cpp) = f6a109296146822014d57d39094390adcc5df760
-SHA1 (patch-src_zm__utils.h) = dbda8ba527f08b0337f6d2afa155ce4adc733e1e
-SHA1 (patch-src_zm_comms_cpp) = d40932a3d0ae4375a649f200d973995d56aa71c7
-SHA1 (patch-src_zm_comms_h) = baeb73040ff3ba862f23ad6301de7daba182456e
-SHA1 (patch-src_zm_ffmpeg_camera_cpp) = 6ead5f9afbe984aab14fee337093fd0269c6e9d8
-SHA1 (patch-src_zm_logger_cpp) = c4d33648d28962fb0e211277caa8c5b1f829538a
+SHA1 (patch-src_zm__thread.h) = a2af2ae87ba07cd51695c73082f8da319ff5f9a7
+SHA1 (patch-src_zm__timer.h) = 218dfae75b8c9a7b0c5542a2437b350743d11e5f
+SHA1 (patch-src_zm__utils.cpp) = f0e15990b7f801303259af8c9b86731b74327fe6
+SHA1 (patch-src_zm__utils.h) = 4ffb7eafa8602076766fd4ae00be797866a229d9
+SHA1 (patch-src_zm_comms_cpp) = bd3c3e6dd4d11ea0845d2da662e99169cd6e6680
+SHA1 (patch-src_zm_comms_h) = 75ceba7e2c725c02a09cb2203a94142b1a987bce
+SHA1 (patch-src_zm_logger_cpp) = f8f11cd1a969435d727186b816aec612d74e55db
 SHA1 (patch-src_zm_remote_camera_h) = 0d4bd7dae0188df7e463586250ac2ed530230f3d
-SHA1 (patch-src_zm_signal_cpp) = fa11938f55ccd50a1a9e949d6b58dd07773f2690
-SHA1 (patch-src_zm_thread_cpp) = c5f64697c3024c6c382f9ae2c5dbe9c21b529b6e
-SHA1 (patch-src_zmc_cpp) = d1046ddfad3a88bdd30501237834ec9e9fbc4c83
-SHA1 (patch-src_zmf.cpp) = 162f84029cec11203de8216ff0802b65bdfdd714
-SHA1 (patch-src_zmu.cpp) = c83283c1ac38e7c39201f72099b9830d84566c41
-SHA1 (patch-web_Makefile.am) = ddb3815fa1b1799658034789302c8d3840f2b894
+SHA1 (patch-src_zm_signal_cpp) = 0e53c30d408cf926d9a1f05a683e10cd8b9f2d8e
+SHA1 (patch-src_zm_thread_cpp) = f6e603bbf505fc0ed6f3a8150613687c5dab0df0
+SHA1 (patch-src_zmc_cpp) = 9fee2df53603a26a086fc2d8a56b29e4059f3ed1
+SHA1 (patch-src_zmf.cpp) = a69ef31d3b9fa31081e32fd4db15e12627c75bc5
+SHA1 (patch-src_zmu.cpp) = 3c3bd2b82a19d50c91f8b6ad311caf9a195af120
+SHA1 (patch-web_Makefile.am) = e1568a9960590f8b2deb74c7068d1a2b91169a47
 SHA1 (patch-web_ajax_stream_php) = e8f811e63bedec03345b74db72c3d8014b3cc7f6

Index: pkgsrc/security/zoneminder/files/zoneminder.conf
diff -u pkgsrc/security/zoneminder/files/zoneminder.conf:1.2 pkgsrc/security/zoneminder/files/zoneminder.conf:1.3
--- pkgsrc/security/zoneminder/files/zoneminder.conf:1.2        Tue Jun 18 12:36:59 2019
+++ pkgsrc/security/zoneminder/files/zoneminder.conf    Tue Aug 25 16:42:21 2020
@@ -7,6 +7,7 @@ ScriptAlias /zm/cgi-bin/ "@ZM_HTTPD_CGIB
 <Directory "@ZM_HTTPD_CGIBIN@">
   <RequireAny>
     Require ip 127.0.0.1
+    Require ip 172.16.32.0/24
   </RequireAny>
 </Directory>
 
@@ -18,5 +19,6 @@ Alias /zm "@ZM_HTTPD_ROOT@"
   DirectoryIndex index.php
   <RequireAny>
     Require ip 127.0.0.1
+    Require ip 172.16.32.0/24
   </RequireAny>
 </Directory>

Index: pkgsrc/security/zoneminder/patches/patch-Makefile_am
diff -u pkgsrc/security/zoneminder/patches/patch-Makefile_am:1.3 pkgsrc/security/zoneminder/patches/patch-Makefile_am:1.4
--- pkgsrc/security/zoneminder/patches/patch-Makefile_am:1.3    Sun Apr  5 08:51:08 2015
+++ pkgsrc/security/zoneminder/patches/patch-Makefile_am        Tue Aug 25 16:42:21 2020
@@ -1,11 +1,11 @@
-$NetBSD: patch-Makefile_am,v 1.3 2015/04/05 08:51:08 dsainty Exp $
+$NetBSD: patch-Makefile_am,v 1.4 2020/08/25 16:42:21 gdt Exp $
 
 Disable the hacks around ownership setup so Pkgsrc can take responsibility.
 Don't install zm.conf at all - let Pkgsrc install it into EGDIR.
 
---- Makefile.am.orig   2011-05-20 09:39:37.000000000 +0000
+--- Makefile.am.orig   2016-02-03 18:40:30.000000000 +0000
 +++ Makefile.am
-@@ -5,8 +5,8 @@
+@@ -6,8 +6,8 @@ webuser = @WEB_USER@
  webgroup = @WEB_GROUP@
  zmconfigdir = @ZM_CONFIG_DIR@
  
@@ -14,9 +14,9 @@ Don't install zm.conf at all - let Pkgsr
 +#zmconfig_DATA = \
 +#     zm.conf
  
- SUBDIRS = \
-       src \
-@@ -20,7 +20,7 @@
+ if COND_ONVIF
+    MAYBE_ONVIF = onvif
+@@ -26,7 +26,7 @@ EXTRA_DIST = \
        zmconfgen.pl.in
  
  # Yes, you are correct. This is a HACK!
Index: pkgsrc/security/zoneminder/patches/patch-scripts_zm_in
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_zm_in:1.3 pkgsrc/security/zoneminder/patches/patch-scripts_zm_in:1.4
--- pkgsrc/security/zoneminder/patches/patch-scripts_zm_in:1.3  Sun Apr  5 08:51:08 2015
+++ pkgsrc/security/zoneminder/patches/patch-scripts_zm_in      Tue Aug 25 16:42:21 2020
@@ -1,12 +1,12 @@
-$NetBSD: patch-scripts_zm_in,v 1.3 2015/04/05 08:51:08 dsainty Exp $
+$NetBSD: patch-scripts_zm_in,v 1.4 2020/08/25 16:42:21 gdt Exp $
 
 /etc/rc.d/init.d/functions doesn't commonly exist.
 
 The LOCKFILE feature appears unused, and requires a /var/lock/subsys directory
 we don't have.
 
---- scripts/zm.in.orig 2015-02-05 15:52:37.000000000 +1300
-+++ scripts/zm.in      2015-04-01 19:13:32.876553811 +1300
+--- scripts/zm.in.orig 2016-02-03 18:40:30.000000000 +0000
++++ scripts/zm.in
 @@ -7,12 +7,12 @@
  # For systemd environments, use the ZoneMinder systemd unit file instead
  
@@ -22,30 +22,30 @@ we don't have.
  
  loadconf()
  {
-@@ -54,7 +54,7 @@
-       RETVAL=$?
-       [ $RETVAL = 0 ] && success || failure
-       echo
--      [ $RETVAL = 0 ] && touch $LOCKFILE
-+      #[ $RETVAL = 0 ] && touch $LOCKFILE
-       return $RETVAL
+@@ -54,7 +54,7 @@ start()
+     RETVAL=$?
+     [ $RETVAL = 0 ] && success || failure
+     echo
+-    [ $RETVAL = 0 ] && touch $LOCKFILE
++    #[ $RETVAL = 0 ] && touch $LOCKFILE
+     return $RETVAL
  }
  
-@@ -66,7 +66,7 @@
-       RETVAL=$?
-       [ $RETVAL = 0 ] && success || failure
-       echo
--      [ $RETVAL = 0 ] && rm -f $LOCKFILE
-+      #[ $RETVAL = 0 ] && rm -f $LOCKFILE
+@@ -66,7 +66,7 @@ stop()
+     RETVAL=$?
+     [ $RETVAL = 0 ] && success || failure
+     echo
+-    [ $RETVAL = 0 ] && rm -f $LOCKFILE
++    #[ $RETVAL = 0 ] && rm -f $LOCKFILE
  }
  
  zmstatus()
-@@ -107,7 +107,7 @@
-               result=`$ZM_PATH_BIN/zmdc.pl check`
-               if [ "$result" = "running" ]; then
-                       $ZM_PATH_BIN/zmdc.pl shutdown > /dev/null
--                      rm -f $LOCKFILE
-+                      #rm -f $LOCKFILE
-                       start
-               fi
-               ;;
+@@ -107,7 +107,7 @@ case "$1" in
+         result=`$ZM_PATH_BIN/zmdc.pl check`
+         if [ "$result" = "running" ]; then
+             $ZM_PATH_BIN/zmdc.pl shutdown > /dev/null
+-            rm -f $LOCKFILE
++            #rm -f $LOCKFILE
+             start
+         fi
+         ;;
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__timer.h
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__timer.h:1.3 pkgsrc/security/zoneminder/patches/patch-src_zm__timer.h:1.4
--- pkgsrc/security/zoneminder/patches/patch-src_zm__timer.h:1.3        Fri Apr 10 02:58:49 2015
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__timer.h    Tue Aug 25 16:42:21 2020
@@ -1,4 +1,4 @@
-$NetBSD: patch-src_zm__timer.h,v 1.3 2015/04/10 02:58:49 dsainty Exp $
+$NetBSD: patch-src_zm__timer.h,v 1.4 2020/08/25 16:42:21 gdt Exp $
 
 Fix build with Clang.
 
@@ -6,14 +6,23 @@ pthread_t is opaque, and under NetBSD is
 but the value is only used for logging, and casting pthread_self() is more
 portable than syscall(SYS_gettid).
 
---- src/zm_timer.h.orig        2008-07-25 09:33:24.000000000 +0000
+--- src/zm_timer.h.orig        2016-02-03 18:40:30.000000000 +0000
 +++ src/zm_timer.h
-@@ -30,7 +30,7 @@ private:
+@@ -33,7 +33,7 @@ private:
      class TimerException : public Exception
      {
+     private:
+-#ifndef SOLARIS
++#if !defined(SOLARIS) && !defined(__NetBSD__)
+         pid_t pid() {
+               pid_t tid;
+ #ifdef __FreeBSD__
+@@ -53,7 +53,7 @@ private:
+       pthread_t pid() { return( pthread_self() ); }
+ #endif
      public:
--        TimerException( const std::string &message ) : Exception( stringtf( "(%d) "+message, (long int)syscall(SYS_gettid) ) )
-+        TimerException( const std::string &message ) : Exception( stringtf( ("(%lu) "+message).c_str(), (unsigned long)(uintptr_t)pthread_self() ) )
+-        TimerException( const std::string &message ) : Exception( stringtf( "(%d) "+message, (long int)pid() ) )
++        TimerException( const std::string &message ) : Exception( stringtf( ("(%d) "+message).c_str(), (intmax_t)pid() ) )
          {
          }
      };
Index: pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h:1.3 pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h:1.4
--- pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h:1.3 Mon Apr 29 21:31:13 2013
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h     Tue Aug 25 16:42:21 2020
@@ -1,27 +1,36 @@
-$NetBSD: patch-src_zm_comms_h,v 1.3 2013/04/29 21:31:13 joerg Exp $
+$NetBSD: patch-src_zm_comms_h,v 1.4 2020/08/25 16:42:21 gdt Exp $
 
 extern "C" system headers.
 
 Include missing system headers for NetBSD.
 
---- src/zm_comms.h.orig        2009-10-14 13:08:49.000000000 +0000
+--- src/zm_comms.h.orig        2016-02-03 18:40:30.000000000 +0000
 +++ src/zm_comms.h
-@@ -22,10 +22,18 @@
+@@ -22,20 +22,24 @@
  
  #include "zm_exception.h"
  
 +extern "C" {
+ #include <string.h>
  #include <unistd.h>
  #include <netdb.h>
  #include <errno.h>
-+#include <sys/socket.h>
-+#include <sys/uio.h>
  #include <sys/un.h>
-+#include <netinet/in.h>
+-
+-#include <set>
+-#include <vector>
 +#include <stdlib.h>
-+#include <string.h>
 +#include <time.h>
+ 
+ #if defined(BSD)
+ #include <sys/uio.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #endif
 +}
++
++#include <set>
++#include <vector>
  
- #include <set>
- #include <vector>
+ class CommsException : public Exception
+ {

Index: pkgsrc/security/zoneminder/patches/patch-configure_ac
diff -u pkgsrc/security/zoneminder/patches/patch-configure_ac:1.4 pkgsrc/security/zoneminder/patches/patch-configure_ac:1.5
--- pkgsrc/security/zoneminder/patches/patch-configure_ac:1.4   Tue Apr  7 12:54:36 2015
+++ pkgsrc/security/zoneminder/patches/patch-configure_ac       Tue Aug 25 16:42:21 2020
@@ -1,23 +1,10 @@
-$NetBSD: patch-configure_ac,v 1.4 2015/04/07 12:54:36 dsainty Exp $
+$NetBSD: patch-configure_ac,v 1.5 2020/08/25 16:42:21 gdt Exp $
 
-Recognise lower-case "netbsd" as BSD.
+Remediate == (bashism) in configure.ac
 
-Correct shell test = syntax.
-
-Allow Pkgsrc to manage dlopen() support.
-
---- configure.ac.orig  2015-02-05 15:52:37.000000000 +1300
-+++ configure.ac       2015-04-01 23:24:28.305177975 +1300
-@@ -23,7 +23,7 @@
-         # Do something specific for linux
-               HOST_OS='linux'
-         ;;
--   *BSD*)
-+   *[[Bb][Ss][dD]]*)
-         # Do something specific for BSD
-               HOST_OS='BSD'
-         ;;
-@@ -48,41 +48,41 @@
+--- configure.ac.orig  2016-02-03 18:40:30.000000000 +0000
++++ configure.ac
+@@ -64,41 +64,41 @@ AC_ARG_VAR(ZM_TMPDIR,[Location of tempor
  AC_ARG_VAR(ZM_LOGDIR,[Location of generated log files, default /var/log/zm])
  AC_ARG_VAR(ZM_CONFIG_DIR,[Location of ZoneMinder configuration, default system config directory])
  
@@ -71,7 +58,7 @@ Allow Pkgsrc to manage dlopen() support.
        AC_SUBST(ZM_CONFIG_DIR,[$SYSCONFDIR])
  fi
  
-@@ -254,7 +254,7 @@
+@@ -270,7 +270,7 @@ AC_ARG_ENABLE(mmap,
      filesystem which will normally be the case by default.
      e.g. --enable-mmap=yes or --disable-mmap])
  )
@@ -80,22 +67,24 @@ Allow Pkgsrc to manage dlopen() support.
    AC_DEFINE(ZM_MEM_MAPPED,1,"Whether to use mapped rather than shared memory")
  else
    AC_DEFINE(ZM_MEM_MAPPED,0,"Whether to use mapped rather than shared memory")
-@@ -303,7 +303,7 @@
- AC_PATH_PROG(PATH_FFMPEG,ffmpeg)
- AC_CHECK_PROG(OPT_NETPBM,pnmscale,yes,no)
- AC_PATH_PROG(PATH_NETPBM,pnmscale)
--if test "$OPT_NETPBM" == "yes"; then
-+if test "$OPT_NETPBM" = "yes"; then
- PATH_NETPBM=`dirname $PATH_NETPBM`
- fi
+@@ -292,7 +292,7 @@ AM_CONDITIONAL([COND_ONVIF], [test "$ena
  
-@@ -311,20 +311,20 @@
+ # Compiler
+ AC_LANG_CPLUSPLUS
+-if test "$ENABLE_ONVIF" == "yes"; then
++if test "$ENABLE_ONVIF" = "yes"; then
+   AC_SUBST(ZM_HAS_ONVIF,1)
+ else
+   AC_SUBST(ZM_HAS_ONVIF,0)
+@@ -342,22 +342,22 @@ AC_CHECK_LIB(rt,clock_gettime,,AC_MSG_ER
  AC_SEARCH_LIBS(mysql_init,[mysqlclient mariadbclient],,AC_MSG_ERROR(zm requires libmysqlclient.a or libmariadbclient.a))
  AC_CHECK_LIB(jpeg,jpeg_start_compress,,AC_MSG_ERROR(zm requires libjpeg.a))
  AC_CHECK_LIB(pthread,pthread_create,,AC_MSG_ERROR(zm requires libpthread.a))
--AC_CHECK_LIB(dl,dlsym,,AC_MSG_ERROR(zm requires libdl.a))
+-if test "$BSD" == "0"; then
++if test "$BSD" = "0"; then
+ AC_CHECK_LIB(dl,dlsym,,AC_MSG_ERROR(zm requires libdl.a))
+ fi
 -if test "$ZM_SSL_LIB" == "openssl"; then
-+#AC_CHECK_LIB(dl,dlsym,,AC_MSG_ERROR(zm requires libdl.a))
 +if test "$ZM_SSL_LIB" = "openssl"; then
  AC_CHECK_HEADERS(openssl/md5.h,,AC_MSG_WARN(zm requires openssl/md5.h header to be installed for openssl),)
  AC_CHECK_LIB(crypto,MD5,,AC_MSG_WARN([libcrypto.a is required for authenticated streaming - use ZM_SSL_LIB option to select gnutls instead]))
@@ -114,16 +103,16 @@ Allow Pkgsrc to manage dlopen() support.
  AC_CHECK_LIB(gnutls-openssl,MD5,,AC_MSG_WARN([libgnutls.a is required for authenticated streaming - use ZM_SSL_LIB option to select openssl instead]))
  fi
  fi
-@@ -356,7 +356,7 @@
- AC_CHECK_HEADERS(pthread.h,,,)
- AC_CHECK_HEADERS(linux/videodev.h,AC_SUBST(ZM_HAS_V4L1,1),AC_SUBST(ZM_HAS_V4L1,0),)
- AC_CHECK_HEADERS(linux/videodev2.h,AC_SUBST(ZM_HAS_V4L2,1),AC_SUBST(ZM_HAS_V4L2,0),)
+@@ -400,7 +400,7 @@ AC_SUBST(ZM_HAS_V4L2)
+ 
+ # Set global Video for Linux flag
+ ZM_HAS_V4L=0
 -if test "$ZM_HAS_V4L1" == "1" || test "$ZM_HAS_V4L2" == "1"; then
 +if test "$ZM_HAS_V4L1" = "1" || test "$ZM_HAS_V4L2" = "1"; then
- AC_SUBST(ZM_HAS_V4L,1)
+ ZM_HAS_V4L=1
  else
- AC_SUBST(ZM_HAS_V4L,0)
-@@ -372,7 +372,7 @@
+ AC_MSG_WARN(zm requires Video4Linux or Video4Linux2 to be installed for analog or USB camera support)
+@@ -417,7 +417,7 @@ AC_CHECK_HEADERS(libswscale/swscale.h,,,
  AC_LANG_POP([C])
  AC_CHECK_HEADERS(pcre/pcre.h,AC_SUBST(ZM_PCRE,"1"),,)
  AC_CHECK_HEADERS(pcre.h,AC_SUBST(ZM_PCRE,"1"),,)
@@ -132,7 +121,7 @@ Allow Pkgsrc to manage dlopen() support.
  AC_CHECK_HEADERS(sys/mman.h,,,)
  AC_CHECK_HEADERS(fcntl.h,,,)
  else
-@@ -383,11 +383,11 @@
+@@ -428,11 +428,11 @@ AC_CHECK_HEADERS(zlib.h,,,)
  AC_CHECK_HEADERS(vlc/vlc.h,,,)
  AC_CHECK_HEADERS(curl/curl.h,,,)
  
@@ -146,7 +135,7 @@ Allow Pkgsrc to manage dlopen() support.
  AC_CHECK_DECLS(MD5,,AC_MSG_ERROR([zm requires gnutls/openssl.h - use ZM_SSL_LIB option to select openssl instead]),[#include <stdlib.h>
  #include <gnutls/openssl.h>])
  else
-@@ -411,7 +411,7 @@
+@@ -457,7 +457,7 @@ AC_PROG_PERL_MODULES(Time::HiRes,,AC_MSG
  AC_PROG_PERL_MODULES(Date::Manip,,AC_MSG_ERROR(zm requires Date::Manip))
  AC_PROG_PERL_MODULES(LWP::UserAgent,,AC_MSG_ERROR(zm requires LWP::UserAgent))
  AC_PROG_PERL_MODULES(ExtUtils::MakeMaker,,AC_MSG_ERROR(zm requires ExtUtils::MakeMaker))
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__thread.h
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__thread.h:1.4 pkgsrc/security/zoneminder/patches/patch-src_zm__thread.h:1.5
--- pkgsrc/security/zoneminder/patches/patch-src_zm__thread.h:1.4       Fri Apr 10 02:58:49 2015
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__thread.h   Tue Aug 25 16:42:21 2020
@@ -1,4 +1,4 @@
-$NetBSD: patch-src_zm__thread.h,v 1.4 2015/04/10 02:58:49 dsainty Exp $
+$NetBSD: patch-src_zm__thread.h,v 1.5 2020/08/25 16:42:21 gdt Exp $
 
 Fix build with Clang.
 
@@ -6,9 +6,11 @@ pthread_t is opaque, and under NetBSD is
 but the value is only used for logging, and casting pthread_self() is more
 portable than syscall(SYS_gettid).
 
---- src/zm_thread.h.orig       2015-02-05 15:52:37.000000000 +1300
-+++ src/zm_thread.h    2015-04-09 18:48:51.419626259 +1200
-@@ -22,17 +22,15 @@
+\todo Fix correctly upstream.
+
+--- src/zm_thread.h.orig       2016-02-03 18:40:30.000000000 +0000
++++ src/zm_thread.h
+@@ -22,20 +22,21 @@
  
  #include <unistd.h>
  #include <pthread.h>
@@ -19,21 +21,82 @@ portable than syscall(SYS_gettid).
 -#endif // HAVE_SYS_SYSCALL_H
  #include "zm_exception.h"
  #include "zm_utils.h"
+ #ifdef __FreeBSD__
+ #include <sys/thr.h>
+ #endif
  
++/* Assume that because pthread.h was included, all systems have pthread.*/
++#define USE_PTHREAD
++
  class ThreadException : public Exception
  {
+ private:
+-#ifndef SOLARIS
++#ifndef USE_PTHREAD
+ pid_t pid() {
+     pid_t tid; 
+ #ifdef __FreeBSD__ 
+@@ -55,7 +56,8 @@ pid_t pid() {
+ pthread_t pid() { return( pthread_self() ); }
+ #endif
  public:
--    ThreadException( const std::string &message ) : Exception( stringtf( "(%d) "+message, (long int)syscall(SYS_gettid) ) )
-+    ThreadException( const std::string &message ) : Exception( stringtf( ("(%lu) "+message).c_str(), (unsigned long)(uintptr_t)pthread_self() ) )
-     {
+-    ThreadException( const std::string &message ) : Exception( stringtf( "(%d) "+message, (long int)pid() ) ) {
++ /* The type of pid() varies by OS */
++ ThreadException( const std::string &message ) : Exception( stringtf( ("(%jd) "+message).c_str(), (intmax_t)pid() ) ) {
      }
  };
-@@ -205,7 +203,7 @@
  
+@@ -217,7 +219,7 @@ protected:
+ 
+     Mutex mThreadMutex;
+     Condition mThreadCondition;
+-#ifndef SOLARIS
++#ifndef USE_PTHREAD
+     pid_t mPid;
+ #else
+     pthread_t mPid;
+@@ -229,7 +231,7 @@ protected:
+     Thread();
+     virtual ~Thread();
+ 
+-#ifndef SOLARIS
++#ifndef USE_PTHREAD
      pid_t id() const
      {
--        return( (pid_t)syscall(SYS_gettid) );
-+        return (pid_t)(uintptr_t)pthread_self();
+         pid_t tid; 
+@@ -237,22 +239,21 @@ protected:
+         long lwpid; 
+         thr_self(&lwpid); 
+         tid = lwpid; 
+-#else 
++#else /* __FreeBSD__ */
+     #ifdef __FreeBSD_kernel__
+         if ( (syscall(SYS_thr_self, &tid)) < 0 ) // Thread/Process id
+-
+     #else
+         tid=syscall(SYS_gettid); 
+     #endif
+-#endif
++#endif /* __FreeBSD__ */
+ return tid;
      }
+-#else
++#else /* USE_PTHREAD */
+     pthread_t id() const
+     {
+         return( pthread_self() );
+     }
+-#endif
++#endif /* USE_PTHREAD */
      void exit( int status = 0 )
      {
+         //INFO( "Exiting" );
+@@ -268,7 +269,7 @@ public:
+     void kill( int signal );
+     bool isThread()
+     {
+-        return( mPid > -1 && pthread_equal( pthread_self(), mThread ) );
++        return( /* mPid > -1 && */ pthread_equal( pthread_self(), mThread ) );
+     }
+     bool isStarted() const { return( mStarted ); }
+     bool isRunning() const { return( mRunning ); }

Index: pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp:1.2 pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp:1.3
--- pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp:1.2      Sat Jul 14 15:03:57 2018
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp  Tue Aug 25 16:42:21 2020
@@ -1,6 +1,6 @@
-$NetBSD: patch-src_zm__event.cpp,v 1.2 2018/07/14 15:03:57 gdt Exp $
+$NetBSD: patch-src_zm__event.cpp,v 1.3 2020/08/25 16:42:21 gdt Exp $
 
-zoneminder uses %ld for time_t, which is troublesome on NetBSD mrm and
+zoneminder uses %ld for time_t, which is troublesome on NetBSD arm and
 presumably i386.  (Note that there are multiple patch files for the
 same issue.)
 
@@ -8,9 +8,25 @@ Not yet sent upstream -- needs update to
 it might be fixed, or the patch might simply need to be rebased.
 Also, this fix is expedient and probably a better fix is appropriate.
 
---- src/zm_event.cpp.orig      2015-02-05 02:52:37.000000000 +0000
+Avoid sendfile code when sendfile doesn't exist.
+
+--- src/zm_event.cpp.orig      2016-02-03 18:40:30.000000000 +0000
 +++ src/zm_event.cpp
-@@ -74,7 +74,7 @@ Event::Event( Monitor *p_monitor, struct
+@@ -36,11 +36,13 @@
+ #include "zm_event.h"
+ #include "zm_monitor.h"
+ 
++#if HAVE_SENDFILE
+ // sendfile tricks
+ extern "C"
+ {
+ #include "zm_sendfile.h"
+ }
++#endif
+ 
+ #include "zmf.h"
+ 
+@@ -80,7 +82,7 @@ Event::Event( Monitor *p_monitor, struct
      static char sql[ZM_SQL_MED_BUFSIZ];
  
      struct tm *stime = localtime( &start_time.tv_sec );
@@ -19,7 +35,7 @@ Also, this fix is expedient and probably
      if ( mysql_query( &dbconn, sql ) )
      {
          Error( "Can't insert event: %s", mysql_error( &dbconn ) );
-@@ -172,7 +172,7 @@ Event::~Event()
+@@ -178,7 +180,7 @@ Event::~Event()
  
          Debug( 1, "Adding closing frame %d to DB", frames );
          static char sql[ZM_SQL_SML_BUFSIZ];
@@ -28,7 +44,7 @@ Also, this fix is expedient and probably
          if ( mysql_query( &dbconn, sql ) )
          {
              Error( "Can't insert frame: %s", mysql_error( &dbconn ) );
-@@ -185,7 +185,7 @@ Event::~Event()
+@@ -191,7 +193,7 @@ Event::~Event()
      struct DeltaTimeval delta_time;
      DELTA_TIMEVAL( delta_time, end_time, start_time, DT_PREC_2 );
  
@@ -37,7 +53,7 @@ Also, this fix is expedient and probably
      if ( mysql_query( &dbconn, sql ) )
      {
          Error( "Can't update event: %s", mysql_error( &dbconn ) );
-@@ -520,7 +520,7 @@ void Event::AddFramesInternal( int n_fra
+@@ -522,7 +524,7 @@ void Event::AddFramesInternal( int n_fra
          DELTA_TIMEVAL( delta_time, *(timestamps[i]), start_time, DT_PREC_2 );
  
          int sql_len = strlen(sql);
@@ -46,16 +62,16 @@ Also, this fix is expedient and probably
  
          frameCount++;
      }
-@@ -569,7 +569,7 @@ void Event::AddFrame( Image *image, stru
+@@ -573,7 +575,7 @@ void Event::AddFrame( Image *image, stru
  
-         Debug( 1, "Adding frame %d to DB", frames );
+         Debug( 1, "Adding frame %d of type \"%s\" to DB", frames, frame_type );
          static char sql[ZM_SQL_MED_BUFSIZ];
 -        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %ld ), %s%ld.%02ld, %d )", id, frames, frame_type, 
timestamp.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, score );
 +        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %jd ), %s%ld.%02ld, %d )", id, frames, frame_type, 
(intmax_t) timestamp.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, score );
          if ( mysql_query( &dbconn, sql ) )
          {
              Error( "Can't insert frame: %s", mysql_error( &dbconn ) );
-@@ -656,7 +656,7 @@ bool EventStream::loadInitialEventData( 
+@@ -661,7 +663,7 @@ bool EventStream::loadInitialEventData( 
  {
      static char sql[ZM_SQL_SML_BUFSIZ];
  
@@ -64,3 +80,13 @@ Also, this fix is expedient and probably
  
      if ( mysql_query( &dbconn, sql ) )
      {
+@@ -1219,7 +1221,9 @@ bool EventStream::sendFrame( int delta_u
+     Debug( 2, "Sending frame %d", curr_frame_id );
+ 
+     static char filepath[PATH_MAX];
++#if HAVE_SENDFILE
+     static struct stat filestat;
++#endif
+     FILE *fdj = NULL;
+     
+     snprintf( filepath, sizeof(filepath), Event::capture_file_format, event_data->path, curr_frame_id );
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.2 pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.3
--- pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.2        Sat Jul 14 15:03:57 2018
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp    Tue Aug 25 16:42:21 2020
@@ -1,4 +1,6 @@
-$NetBSD: patch-src_zm__rtp__source.cpp,v 1.2 2018/07/14 15:03:57 gdt Exp $
+$NetBSD: patch-src_zm__rtp__source.cpp,v 1.3 2020/08/25 16:42:21 gdt Exp $
+
+Fix type issue with tv_sec; see earlier patches.
 
 --- src/zm_rtp_source.cpp.orig 2015-02-05 02:52:37.000000000 +0000
 +++ src/zm_rtp_source.cpp
@@ -17,7 +19,7 @@ $NetBSD: patch-src_zm__rtp__source.cpp,v
      {
 -        Debug( 5, "lastSrNtpTime: %ld.%06ld, rtpTime: %x", mLastSrTimeNtp.tv_sec, mLastSrTimeNtp.tv_usec, rtpTime );
 -        Debug( 5, "ntpTime: %ld.%06ld, rtpTime: %x", ntpTime.tv_sec, ntpTime.tv_usec, rtpTime );
-+      Debug( 5, "lastSrNtpTime: %jd.%06ld, rtpTime: %x", (intmax_t) mLastSrTimeNtp.tv_sec, mLastSrTimeNtp.tv_usec, rtpTime );
++        Debug( 5, "lastSrNtpTime: %jd.%06ld, rtpTime: %x", (intmax_t) mLastSrTimeNtp.tv_sec, mLastSrTimeNtp.tv_usec, rtpTime );
 +        Debug( 5, "ntpTime: %jd.%06ld, rtpTime: %x", (intmax_t) ntpTime.tv_sec, ntpTime.tv_usec, rtpTime );
  
          double diffNtpTime = tvDiffSec( mBaseTimeNtp, ntpTime );
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__utils.h
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__utils.h:1.2 pkgsrc/security/zoneminder/patches/patch-src_zm__utils.h:1.3
--- pkgsrc/security/zoneminder/patches/patch-src_zm__utils.h:1.2        Sun Apr  5 08:51:08 2015
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__utils.h    Tue Aug 25 16:42:21 2020
@@ -1,4 +1,6 @@
-$NetBSD: patch-src_zm__utils.h,v 1.2 2015/04/05 08:51:08 dsainty Exp $
+$NetBSD: patch-src_zm__utils.h,v 1.3 2020/08/25 16:42:21 gdt Exp $
+
+\todo Explain
 
 --- src/zm_utils.h.orig        2015-04-01 17:20:39.840273017 +1300
 +++ src/zm_utils.h     2015-04-01 17:28:57.376293647 +1300
Index: pkgsrc/security/zoneminder/patches/patch-src_zm_comms_cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_comms_cpp:1.2 pkgsrc/security/zoneminder/patches/patch-src_zm_comms_cpp:1.3
--- pkgsrc/security/zoneminder/patches/patch-src_zm_comms_cpp:1.2       Sun Mar 24 16:47:47 2013
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_comms_cpp   Tue Aug 25 16:42:21 2020
@@ -1,16 +1,17 @@
-$NetBSD: patch-src_zm_comms_cpp,v 1.2 2013/03/24 16:47:47 joerg Exp $
+$NetBSD: patch-src_zm_comms_cpp,v 1.3 2020/08/25 16:42:21 gdt Exp $
 
 Don't attempt to include headers that don't exist.
 
---- src/zm_comms.cpp.orig      2011-06-21 09:19:10.000000000 +0000
+--- src/zm_comms.cpp.orig      2016-02-03 18:40:30.000000000 +0000
 +++ src/zm_comms.cpp
-@@ -25,7 +25,9 @@
- #include <fcntl.h>
- #include <stdarg.h>
- //#include <memory.h>
+@@ -28,8 +28,10 @@
+ #if defined(BSD)
+ #include <stdlib.h>
+ #else
 +#ifdef HAVE_ALLOCA_H
  #include <alloca.h>
+ #endif
 +#endif
- #include <string.h>
+ 
  //#include <unistd.h>
  #include <sys/ioctl.h>
Index: pkgsrc/security/zoneminder/patches/patch-src_zm_thread_cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_thread_cpp:1.2 pkgsrc/security/zoneminder/patches/patch-src_zm_thread_cpp:1.3
--- pkgsrc/security/zoneminder/patches/patch-src_zm_thread_cpp:1.2      Sun Mar 24 16:47:47 2013
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_thread_cpp  Tue Aug 25 16:42:21 2020
@@ -1,9 +1,11 @@
-$NetBSD: patch-src_zm_thread_cpp,v 1.2 2013/03/24 16:47:47 joerg Exp $
+$NetBSD: patch-src_zm_thread_cpp,v 1.3 2020/08/25 16:42:21 gdt Exp $
 
 pthread_mutex_timedlock() is not available on NetBSD 5.0, and not required
 in ZoneMinder.
 
---- src/zm_thread.cpp.orig     2011-06-21 09:19:11.000000000 +0000
+Work around varying notion of an undefined mpid on pthread/not.
+
+--- src/zm_thread.cpp.orig     2016-02-03 18:40:30.000000000 +0000
 +++ src/zm_thread.cpp
 @@ -72,6 +72,7 @@ void Mutex::lock()
          throw ThreadException( stringtf( "Unable to lock pthread mutex: %s", strerror(errno) ) );
@@ -21,7 +23,33 @@ in ZoneMinder.
  
  void Mutex::unlock()
  {
-@@ -336,4 +338,5 @@ void Thread::kill( int signal )
+@@ -232,9 +234,15 @@ template <class T> void ThreadData<T>::u
+     Debug( 9, "Updated value, %p", this );
+ }
+ 
++#ifndef USE_PTHREAD
++#define MPID_UNDEFINED -1
++#else /* USE_PTHREAD */
++#define MPID_UNDEFINED NULL
++#endif /* USE_PTHREAD */
++
+ Thread::Thread() :
+     mThreadCondition( mThreadMutex ),
+-    mPid( -1 ),
++    mPid( MPID_UNDEFINED ),
+     mStarted( false ),
+     mRunning( false )
+ {
+@@ -308,7 +316,7 @@ void Thread::join()
+     if ( isThread() )
+         throw ThreadException( "Can't self join thread" );
+     mThreadMutex.lock();
+-    if ( mPid >= 0 )
++    if ( mPid != MPID_UNDEFINED )
+     {
+         if ( mStarted )
+         {
+@@ -337,4 +345,5 @@ void Thread::kill( int signal )
  }
  
  // Some explicit template instantiations
Index: pkgsrc/security/zoneminder/patches/patch-src_zmc_cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zmc_cpp:1.2 pkgsrc/security/zoneminder/patches/patch-src_zmc_cpp:1.3
--- pkgsrc/security/zoneminder/patches/patch-src_zmc_cpp:1.2    Sun Mar 24 16:47:47 2013
+++ pkgsrc/security/zoneminder/patches/patch-src_zmc_cpp        Tue Aug 25 16:42:21 2020
@@ -1,20 +1,20 @@
-$NetBSD: patch-src_zmc_cpp,v 1.2 2013/03/24 16:47:47 joerg Exp $
+$NetBSD: patch-src_zmc_cpp,v 1.3 2020/08/25 16:42:21 gdt Exp $
 
 Use a more appropriate initialisation for a long, and use the definition out
 of <limits.h>, for portability.
 
---- src/zmc.cpp.orig   2011-06-21 09:19:11.000000000 +0000
+--- src/zmc.cpp.orig   2016-02-03 18:40:30.000000000 +0000
 +++ src/zmc.cpp
-@@ -19,7 +19,7 @@
+@@ -57,7 +57,7 @@ possible, this should run at more or les
  
  #include <getopt.h>
  #include <signal.h>
--#include <values.h>
-+#include <limits.h>
- 
- #include "zm.h"
- #include "zm_db.h"
-@@ -224,7 +224,7 @@ int main( int argc, char *argv[] )
+-#if defined(__FreeBSD__)
++#if defined(__FreeBSD__) || defined(__NetBSD__)
+ #include <limits.h>
+ #else
+ #include <values.h>
+@@ -283,7 +283,7 @@ int main( int argc, char *argv[] )
                sigprocmask( SIG_BLOCK, &block_set, 0 );
                for ( int i = 0; i < n_monitors; i++ )
                {
Index: pkgsrc/security/zoneminder/patches/patch-src_zmf.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zmf.cpp:1.2 pkgsrc/security/zoneminder/patches/patch-src_zmf.cpp:1.3
--- pkgsrc/security/zoneminder/patches/patch-src_zmf.cpp:1.2    Thu Dec 19 22:23:19 2019
+++ pkgsrc/security/zoneminder/patches/patch-src_zmf.cpp        Tue Aug 25 16:42:21 2020
@@ -1,19 +1,9 @@
-$NetBSD: patch-src_zmf.cpp,v 1.2 2019/12/19 22:23:19 joerg Exp $
+$NetBSD: patch-src_zmf.cpp,v 1.3 2020/08/25 16:42:21 gdt Exp $
 
-bind can be found in namespace std too.
-Fix error handling.
+\todo Explain
 
---- src/zmf.cpp.orig   2015-02-05 02:52:37.000000000 +0000
+--- src/zmf.cpp.orig   2017-02-15 00:51:13.260940737 +0000
 +++ src/zmf.cpp
-@@ -59,7 +59,7 @@ int OpenSocket( int monitor_id )
-       strncpy( addr.sun_path, sock_path, sizeof(addr.sun_path) );
-       addr.sun_family = AF_UNIX;
- 
--      if ( bind( sd, (struct sockaddr *)&addr, strlen(addr.sun_path)+sizeof(addr.sun_family)) < 0 )
-+      if ( ::bind( sd, (struct sockaddr *)&addr, strlen(addr.sun_path)+sizeof(addr.sun_family)) < 0 )
-       {
-               Error( "Can't bind: %s", strerror(errno) );
-               exit( -1 );
 @@ -293,7 +293,7 @@ int main( int argc, char *argv[] )
                Debug( 1, "Got image, writing to %s", path );
  
Index: pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp:1.2 pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp:1.3
--- pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp:1.2    Sat Jul 14 15:03:57 2018
+++ pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp        Tue Aug 25 16:42:21 2020
@@ -1,17 +1,28 @@
-$NetBSD: patch-src_zmu.cpp,v 1.2 2018/07/14 15:03:57 gdt Exp $
+$NetBSD: patch-src_zmu.cpp,v 1.3 2020/08/25 16:42:21 gdt Exp $
 
---- src/zmu.cpp.orig   2015-02-05 02:52:37.000000000 +0000
+time types
+
+--- src/zmu.cpp.orig   2016-02-03 18:40:30.000000000 +0000
 +++ src/zmu.cpp
-@@ -457,7 +457,7 @@ int main( int argc, char *argv[] )
+@@ -519,14 +519,14 @@ int main( int argc, char *argv[] )
+                                       if ( timestamp.tv_sec )
+                                               strftime( timestamp_str, sizeof(timestamp_str), "%Y-%m-%d %H:%M:%S", localtime( &timestamp.tv_sec ) );
+                                       if ( image_idx == -1 )
+-                                              printf( "Time of last image capture: %s.%02ld\n", timestamp_str, timestamp.tv_usec/10000 );
++                                              printf( "Time of last image capture: %s.%02ld\n", timestamp_str, (long) timestamp.tv_usec/10000 );
+                                       else
+-                                              printf( "Time of image %d capture: %s.%02ld\n", image_idx, timestamp_str, timestamp.tv_usec/10000 );
++                                              printf( "Time of image %d capture: %s.%02ld\n", image_idx, timestamp_str, (long) timestamp.tv_usec/10000 );
+                               }
                                else
                                {
                                        if ( have_output ) printf( "%c", separator );
 -                                      printf( "%ld.%02ld", timestamp.tv_sec, timestamp.tv_usec/10000 );
-+                                      printf( "%jd.%02ld", (intmax_t) timestamp.tv_sec, timestamp.tv_usec/10000 );
++                                      printf( "%jd.%02ld", (intmax_t) timestamp.tv_sec, (long) timestamp.tv_usec/10000 );
                                        have_output = true;
                                }
                        }
-@@ -724,12 +724,12 @@ int main( int argc, char *argv[] )
+@@ -793,12 +793,12 @@ int main( int argc, char *argv[] )
                                                if ( monitor && monitor->connect() )
                                                {
                                                        struct timeval tv = monitor->GetTimestamp();
@@ -22,11 +33,11 @@ $NetBSD: patch-src_zmu.cpp,v 1.2 2018/07
                                                                monitor->GetState(),
                                                                monitor->GetTriggerState(),
 -                                                              tv.tv_sec, tv.tv_usec/10000,
-+                                                              (intmax_t) tv.tv_sec, tv.tv_usec/10000,
++                                                              (intmax_t) tv.tv_sec, (long) tv.tv_usec/10000,
                                                                monitor->GetLastReadIndex(),
                                                                monitor->GetLastWriteIndex(),
                                                                monitor->GetLastEvent(),
-@@ -741,12 +741,12 @@ int main( int argc, char *argv[] )
+@@ -810,12 +810,12 @@ int main( int argc, char *argv[] )
                                        else
                                        {
                                                struct timeval tv = { 0, 0 };
@@ -37,7 +48,7 @@ $NetBSD: patch-src_zmu.cpp,v 1.2 2018/07
                                                        0,
                                                        0,
 -                                                      tv.tv_sec, tv.tv_usec/10000,
-+                                                      (intmax_t) tv.tv_sec, tv.tv_usec/10000,
++                                                      (intmax_t) tv.tv_sec, (long) tv.tv_usec/10000,
                                                        0,
                                                        0,
                                                        0,

Index: pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp:1.1 pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp:1.2
--- pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp:1.1    Wed Feb 15 00:54:25 2017
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp        Tue Aug 25 16:42:21 2020
@@ -1,8 +1,12 @@
-$NetBSD: patch-src_zm__monitor.cpp,v 1.1 2017/02/15 00:54:25 joerg Exp $
+$NetBSD: patch-src_zm__monitor.cpp,v 1.2 2020/08/25 16:42:21 gdt Exp $
 
---- src/zm_monitor.cpp.orig    2017-02-15 00:50:20.875646245 +0000
+\todo Explain mem_ptr change.
+
+Avoid type error (suseconds_t is not long).  To be addressed upstream once caught up.
+
+--- src/zm_monitor.cpp.orig    2016-02-03 18:40:30.000000000 +0000
 +++ src/zm_monitor.cpp
-@@ -149,7 +149,7 @@ bool Monitor::MonitorLink::connect()
+@@ -160,7 +160,7 @@ bool Monitor::MonitorLink::connect()
              return( false );
          }
          mem_ptr = (unsigned char *)shmat( shm_id, 0, 0 );
@@ -11,7 +15,7 @@ $NetBSD: patch-src_zm__monitor.cpp,v 1.1
          {
              Debug( 3, "Can't shmat link memory: %s", strerror(errno) );
              connected = false;
-@@ -534,7 +534,7 @@ bool Monitor::connect() {
+@@ -558,7 +558,7 @@ bool Monitor::connect() {
          exit( -1 );
      }
      mem_ptr = (unsigned char *)shmat( shm_id, 0, 0 );
@@ -20,3 +24,12 @@ $NetBSD: patch-src_zm__monitor.cpp,v 1.1
      {
          Error( "Can't shmat: %s", strerror(errno));
          exit( -1 );
+@@ -3181,7 +3181,7 @@ void Monitor::TimestampImage( Image *ts_
+                         found_macro = true;
+                         break;
+                     case 'f' :
+-                        d_ptr += snprintf( d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", ts_time->tv_usec/10000 );
++                       d_ptr += snprintf( d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", (long) ts_time->tv_usec/10000 );
+                         found_macro = true;
+                         break;
+                 }
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp:1.1 pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp:1.2
--- pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp:1.1      Sun Mar 24 16:47:47 2013
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp  Tue Aug 25 16:42:21 2020
@@ -1,4 +1,6 @@
-$NetBSD: patch-src_zm__utils.cpp,v 1.1 2013/03/24 16:47:47 joerg Exp $
+$NetBSD: patch-src_zm__utils.cpp,v 1.2 2020/08/25 16:42:21 gdt Exp $
+
+\todo Explain
 
 --- src/zm_utils.cpp.orig      2011-06-21 09:19:11.000000000 +0000
 +++ src/zm_utils.cpp
Index: pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp:1.1 pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp:1.2
--- pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp:1.1      Fri Apr 10 02:58:49 2015
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp  Tue Aug 25 16:42:21 2020
@@ -1,4 +1,4 @@
-$NetBSD: patch-src_zm_signal_cpp,v 1.1 2015/04/10 02:58:49 dsainty Exp $
+$NetBSD: patch-src_zm_signal_cpp,v 1.2 2020/08/25 16:42:21 gdt Exp $
 
 Don't assume machine-dependent IP register details are available for any
 platform except Linux.  Only Linux is sure to have this style of mcontext_t.
@@ -6,20 +6,23 @@ platform except Linux.  Only Linux is su
 Resolves build on systems that have ucontext_t but an mcontext_t that
 doesn't look like Linux.
 
---- src/zm_signal.cpp.orig     2015-04-09 19:15:46.423693213 +1200
-+++ src/zm_signal.cpp  2015-04-09 19:18:25.475699808 +1200
-@@ -66,10 +66,14 @@
-               ucontext_t *uc = (ucontext_t *) context;
- #if defined(__x86_64__)
-               cr2 = info->si_addr;
-+#if defined(__linux__)
+--- src/zm_signal.cpp.orig     2016-02-03 18:40:30.000000000 +0000
++++ src/zm_signal.cpp
+@@ -69,13 +69,17 @@ RETSIGTYPE zm_die_handler(int signal)
+       #ifdef __FreeBSD_kernel__
+               ip = (void *)(uc->uc_mcontext.mc_rip);
+       #else
++              #if defined(__linux__)
                ip = (void *)(uc->uc_mcontext.gregs[REG_RIP]);
-+#endif // defined(__linux__)
++              #endif
+       #endif
  #else
-               cr2 = info->si_addr;
-+#if defined(__linux__)
+       #ifdef __FreeBSD_kernel__
+               ip = (void *)(uc->uc_mcontext.mc_eip);
+       #else
++              #if defined(__linux__)
                ip = (void *)(uc->uc_mcontext.gregs[REG_EIP]);
-+#endif // defined(__linux__)
++              #endif
+       #endif
  #endif                                // defined(__x86_64__)
  
-               // Print the signal address and instruction pointer if available
Index: pkgsrc/security/zoneminder/patches/patch-web_Makefile.am
diff -u pkgsrc/security/zoneminder/patches/patch-web_Makefile.am:1.1 pkgsrc/security/zoneminder/patches/patch-web_Makefile.am:1.2
--- pkgsrc/security/zoneminder/patches/patch-web_Makefile.am:1.1        Sun Mar 24 16:47:47 2013
+++ pkgsrc/security/zoneminder/patches/patch-web_Makefile.am    Tue Aug 25 16:42:21 2020
@@ -1,4 +1,6 @@
-$NetBSD: patch-web_Makefile.am,v 1.1 2013/03/24 16:47:47 joerg Exp $
+$NetBSD: patch-web_Makefile.am,v 1.2 2020/08/25 16:42:21 gdt Exp $
+
+Don't set owners; see previous
 
 --- web/Makefile.am.orig       2013-03-24 15:56:43.000000000 +0000
 +++ web/Makefile.am

Index: pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp:1.5 pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp:1.6
--- pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp:1.5      Sat Jul 14 15:03:57 2018
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp  Tue Aug 25 16:42:21 2020
@@ -1,33 +1,62 @@
-$NetBSD: patch-src_zm_logger_cpp,v 1.5 2018/07/14 15:03:57 gdt Exp $
+$NetBSD: patch-src_zm_logger_cpp,v 1.6 2020/08/25 16:42:21 gdt Exp $
+
+Use libgen.h for basename.
+
+Kludge around const for basename.
 
 If the system has syscall() but not SYS_gettid [E.g. NetBSD], don't attempt
 to use SYS_gettid.
 
---- src/zm_logger.cpp.orig     2015-02-05 02:52:37.000000000 +0000
+Fix time types (sizes).
+
+--- src/zm_logger.cpp.orig     2016-02-03 18:40:30.000000000 +0000
 +++ src/zm_logger.cpp
-@@ -31,6 +31,7 @@
- #include <signal.h>
- #include <stdarg.h>
+@@ -33,9 +33,11 @@
  #include <errno.h>
-+#include <unistd.h>
+ #ifdef __FreeBSD__
+ #include <sys/thr.h>
+-#include <libgen.h>
+ #endif
  
++/* POSIX specifies libgen.h for basename() */
++#include <libgen.h>
++
  bool Logger::smInitialised = false;
  Logger *Logger::smInstance = 0;
-@@ -527,7 +528,7 @@ void Logger::logPrint( bool hex, const c
-     #endif
  
-         pid_t tid;
--#ifdef HAVE_SYSCALL
-+#if defined(HAVE_SYSCALL) && defined(SYS_gettid)
-         if ( (tid = syscall(SYS_gettid)) < 0 ) // Thread/Process id
- #endif // HAVE_SYSCALL
-         tid = getpid(); // Process id
-@@ -581,7 +582,7 @@ void Logger::logPrint( bool hex, const c
-             char escapedString[(strlen(syslogStart)*2)+1];
+@@ -504,7 +506,8 @@ void Logger::logPrint( bool hex, const c
+         va_list         argPtr;
+         struct timeval  timeVal;
+ 
+-        const char * const file = basename(filepath);
++      /* \todo Verify that the cast is safe. */
++        const char * const file = basename((char *)filepath);
+         
+         if ( level < PANIC || level > DEBUG9 )
+             Panic( "Invalid logger level %d", level );
+@@ -520,14 +523,14 @@ void Logger::logPrint( bool hex, const c
+ 
+             subtractTime( &timeVal, &logStart );
+ 
+-            snprintf( timeString, sizeof(timeString), "%ld.%03ld", timeVal.tv_sec, timeVal.tv_usec/1000 );
++            snprintf( timeString, sizeof(timeString), "%jd.%03ld", (intmax_t) timeVal.tv_sec, timeVal.tv_usec/1000 );
+         }
+         else
+         {
+     #endif
+             char *timePtr = timeString;
+             timePtr += strftime( timePtr, sizeof(timeString), "%x %H:%M:%S", localtime(&timeVal.tv_sec) );
+-            snprintf( timePtr, sizeof(timeString)-(timePtr-timeString), ".%06ld", timeVal.tv_usec );
++            snprintf( timePtr, sizeof(timeString)-(timePtr-timeString), ".%06jd", (intmax_t) timeVal.tv_usec );
+     #if 0
+         }
+     #endif
+@@ -604,7 +607,7 @@ void Logger::logPrint( bool hex, const c
  
              mysql_real_escape_string( &mDbConnection, escapedString, syslogStart, strlen(syslogStart) );
--            snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, Pid, Level, Code, Message, File, Line ) values ( %ld.%06ld, '%s', %d, %d, '%s', '%s', '%s', %d )", timeVal.tv_sec, 
timeVal.tv_usec, mId.c_str(), tid, level, classString, escapedString, file, line );
-+            snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, Pid, Level, Code, Message, File, Line ) values ( %jd.%06ld, '%s', %d, %d, '%s', '%s', '%s', %d )", (intmax_t) 
timeVal.tv_sec, timeVal.tv_usec, mId.c_str(), tid, level, classString, escapedString, file, line );
+                       
+-            snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, ServerId, Pid, Level, Code, Message, File, Line ) values ( %ld.%06ld, '%s', %d, %d, %d, '%s', '%s', '%s', %d )", 
timeVal.tv_sec, timeVal.tv_usec, mId.c_str(), staticConfig.SERVER_ID, tid, level, classString, escapedString, file, line );
++            snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, ServerId, Pid, Level, Code, Message, File, Line ) values ( %jd.%06jd, '%s', %d, %d, %d, '%s', '%s', '%s', %d )", 
(intmax_t) timeVal.tv_sec, (intmax_t) timeVal.tv_usec, mId.c_str(), staticConfig.SERVER_ID, tid, level, classString, escapedString, file, line );
              if ( mysql_query( &mDbConnection, sql ) )
              {
                  databaseLevel( NOLOG );

Added files:

Index: pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm:1.1
--- /dev/null   Tue Aug 25 16:42:21 2020
+++ pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm Tue Aug 25 16:42:21 2020
@@ -0,0 +1,17 @@
+$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm,v 1.1 2020/08/25 16:42:21 gdt Exp $
+
+Adjust for (more) modern perl.
+
+Not submitted upstream because pkgsrc is woefully out of date.
+
+--- scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm.orig    2016-02-03 18:40:30.000000000 +0000
++++ scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm
+@@ -158,7 +158,7 @@ sub zmMemClean
+                   ."'"
+     ;
+     Debug( "Checking for shared memory with '$command'\n" );
+-    open( my $CMD, '<', "$command |" )
++    open( my $CMD, '-|', "$command" )
+         or Fatal( "Can't execute '$command': $!" );
+     while( <$CMD> )
+     {



Home | Main Index | Thread Index | Old Index