diff options
author | Cy Schubert <cy@FreeBSD.org> | 2023-11-14 20:05:57 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2023-11-14 20:08:14 +0000 |
commit | f702184e22c59f90bf34c8032ae825f915eeecf7 (patch) | |
tree | e84be161261c69220dea604b8620bf56f9f0f0b4 | |
parent | a8c2e945f8f9ea0d818f13a099958607bac884d5 (diff) | |
download | ports-f702184e22c59f90bf34c8032ae825f915eeecf7.tar.gz ports-f702184e22c59f90bf34c8032ae825f915eeecf7.zip |
sysutils/nut: Update to 2.8.1
-rw-r--r-- | sysutils/nut/Makefile | 19 | ||||
-rw-r--r-- | sysutils/nut/distinfo | 6 | ||||
-rw-r--r-- | sysutils/nut/files/patch-clients_upslog.c | 280 | ||||
-rw-r--r-- | sysutils/nut/files/patch-docs_man_upslog.8 | 16 | ||||
-rw-r--r-- | sysutils/nut/files/patch-docs_man_upslog.txt | 14 | ||||
-rw-r--r-- | sysutils/nut/files/patch-m4_nut__check_libltdl.m4 | 21 | ||||
-rw-r--r-- | sysutils/nut/files/patch-tools_nut-scanner_nutscan-init.c | 16 | ||||
-rw-r--r-- | sysutils/nut/pkg-plist | 17 |
8 files changed, 48 insertions, 341 deletions
diff --git a/sysutils/nut/Makefile b/sysutils/nut/Makefile index 4f236d4816e9..ba3573fc8cb7 100644 --- a/sysutils/nut/Makefile +++ b/sysutils/nut/Makefile @@ -1,6 +1,5 @@ PORTNAME= nut -PORTVERSION= 2.8.0 -PORTREVISION= 24 +PORTVERSION= 2.8.1 CATEGORIES= sysutils MASTER_SITES= http://www.networkupstools.org/source/${PORTVERSION:R}/ @@ -69,9 +68,15 @@ CONFIGURE_ARGS= --sysconfdir=${PREFIX}/etc/nut \ --with-pidpath=${STATEDIR} \ --with-pkgconfig-dir=${PREFIX}/libdata/pkgconfig \ --with-user=${NUT_USER} \ - --with-group=${NUT_GROUP} - -CFLAGS+= -I${LOCALBASE}/include -L${LOCALBASE}/lib + --with-group=${NUT_GROUP} \ + --with-python=${PYTHON_CMD} \ + --without-python2 \ + --with-python3=${PYTHON_CMD} \ + --without-nut_monitor \ + --with-ltdl --with-nut-scanner + +CFLAGS+= -I${LOCALBASE}/include -L${LOCALBASE}/lib -pthread +CPPFLAGS+= -I${LOCALBASE}/include -L${LOCALBASE}/lib LIB_DEPENDS+= libltdl.so:devel/libltdl MANPAGES_CONFIGURE_ON= --with-doc=man=auto @@ -143,7 +148,7 @@ post-install: ${INSTALL_DATA} ${WRKSRC}/docs/cables/*.txt ${STAGEDIR}${DOCSDIR}/cables ${INSTALL_DATA} ${WRKSRC}/docs/*.txt ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/docs/FAQ.txt ${STAGEDIR}${DOCSDIR} -.for file in AUTHORS COPYING ChangeLog INSTALL MAINTAINERS NEWS README UPGRADING +.for file in AUTHORS COPYING ChangeLog INSTALL MAINTAINERS NEWS README ${INSTALL_DATA} ${WRKSRC}/${file} ${STAGEDIR}${DOCSDIR} .endfor .endif @@ -152,7 +157,5 @@ post-install: ${INSTALL_DATA} ${PATCHDIR}/nut.newsyslog ${STAGEDIR}${EXAMPLESDIR}/newsyslog.sample ${INSTALL_DATA} ${PATCHDIR}/nut_upslog.sample ${STAGEDIR}${EXAMPLESDIR}/nut_upslog.sample ${MKDIR} ${STAGEDIR}/var/log/nut - @${RM} ${STAGEDIR}${PREFIX}/etc/nut/solaris-init/nut - @${RMDIR} ${STAGEDIR}${PREFIX}/etc/nut/solaris-init .include <bsd.port.post.mk> diff --git a/sysutils/nut/distinfo b/sysutils/nut/distinfo index f7d0b489a82a..91721deab284 100644 --- a/sysutils/nut/distinfo +++ b/sysutils/nut/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1651085820 -SHA256 (nut-2.8.0.tar.gz) = c3e5a708da797b7c70b653d37b1206a000fcb503b85519fe4cdf6353f792bfe5 -SIZE (nut-2.8.0.tar.gz) = 3287640 +TIMESTAMP = 1699981499 +SHA256 (nut-2.8.1.tar.gz) = 7da48ee23b1f0d8d72560bb0af84f5c5ae4dbe35452b84cb49840132e47f099c +SIZE (nut-2.8.1.tar.gz) = 4125263 diff --git a/sysutils/nut/files/patch-clients_upslog.c b/sysutils/nut/files/patch-clients_upslog.c deleted file mode 100644 index 87c87dc6e2c8..000000000000 --- a/sysutils/nut/files/patch-clients_upslog.c +++ /dev/null @@ -1,280 +0,0 @@ ---- clients/upslog.c.orig 2022-08-29 22:20:14.342137000 -0700 -+++ clients/upslog.c 2022-08-29 22:21:10.934419000 -0700 -@@ -41,32 +45,49 @@ - #include "upslog.h" - - static int reopen_flag = 0, exit_flag = 0; -- static uint16_t port; -- static char *upsname, *hostname; -- static UPSCONN_t ups; -+ static char *upsname; -+ static UPSCONN_t *ups; - -- static FILE *logfile; -- static const char *logfn, *monhost; -+ static char *logfn, *monhost; - static sigset_t nut_upslog_sigmask; - static char logbuffer[LARGEBUF], *logformat; - - static flist_t *fhead = NULL; -+ struct monhost_ups { -+ char *monhost; -+ char *logfn; -+ char *upsname; -+ char *hostname; -+ uint16_t port; -+ UPSCONN_t *ups; -+ FILE *logfile; -+ struct monhost_ups *next; -+ }; -+ static struct monhost_ups *monhost_ups_anchor = NULL; -+ static struct monhost_ups *monhost_ups_current = NULL; -+ static struct monhost_ups *monhost_ups_prev = NULL; - -+ - #define DEFAULT_LOGFORMAT "%TIME @Y@m@d @H@M@S% %VAR battery.charge% " \ - "%VAR input.voltage% %VAR ups.load% [%VAR ups.status%] " \ - "%VAR ups.temperature% %VAR input.frequency%" - - static void reopen_log(void) - { -- if (logfile == stdout) { -- upslogx(LOG_INFO, "logging to stdout"); -- return; -- } -+ for (monhost_ups_current = monhost_ups_anchor; -+ monhost_ups_current != NULL; -+ monhost_ups_current = monhost_ups_current->next) { -+ if (monhost_ups_current->logfile == stdout) { -+ upslogx(LOG_INFO, "logging to stdout"); -+ return; -+ } - -- fclose(logfile); -- logfile = fopen(logfn, "a"); -- if (logfile == NULL) -- fatal_with_errno(EXIT_FAILURE, "could not reopen logfile %s", logfn); -+ if ((monhost_ups_current->logfile = freopen( -+ monhost_ups_current->logfn, "a", -+ monhost_ups_current->logfile)) == NULL) -+ fatal_with_errno(EXIT_FAILURE, -+ "could not reopen logfile %s", logfn); -+ } - } - - static void set_reopen_flag(int sig) -@@ -131,6 +152,8 @@ - printf(" -p <pidbase> - Base name for PID file (defaults to \"%s\")\n", prog); - printf(" -s <ups> - Monitor UPS <ups> - <upsname>@<host>[:<port>]\n"); - printf(" - Example: -s myups@server\n"); -+ printf(" -m <tuple> - Monitor UPS <ups,logfile>\n"); -+ printf(" - Example: -m myups@server,/var/log/myups.log\n"); - printf(" -u <user> - Switch to <user> if started as root\n"); - - printf("\n"); -@@ -215,7 +238,7 @@ - query[2] = var; - numq = 3; - -- ret = upscli_get(&ups, numq, query, &numa, &answer); -+ ret = upscli_get(ups, numq, query, &numa, &answer); - - if ((ret < 0) || (numa < numq)) { - snprintfcat(logbuffer, sizeof(logbuffer), "NA"); -@@ -368,7 +391,7 @@ - } - - /* go through the list of functions and call them in order */ --static void run_flist(void) -+static void run_flist(struct monhost_ups *monhost_ups_print) - { - flist_t *tmp; - -@@ -382,8 +405,8 @@ - tmp = tmp->next; - } - -- fprintf(logfile, "%s\n", logbuffer); -- fflush(logfile); -+ fprintf(monhost_ups_print->logfile, "%s\n", logbuffer); -+ fflush(monhost_ups_print->logfile); - } - - /* -s <monhost> -@@ -396,6 +419,7 @@ - int main(int argc, char **argv) - { - int interval = 30, i, foreground = -1; -+ size_t monhost_len = 0; - const char *prog = xbasename(argv[0]); - time_t now, nextpoll = 0; - const char *user = NULL; -@@ -407,7 +431,7 @@ - - printf("Network UPS Tools %s %s\n", prog, UPS_VERSION); - -- while ((i = getopt(argc, argv, "+hs:l:i:f:u:Vp:FB")) != -1) { -+ while ((i = getopt(argc, argv, "+hs:l:i:f:u:Vp:FBm:")) != -1) { - switch(i) { - case 'h': - help(prog); -@@ -415,6 +439,33 @@ - break; - #endif - -+ case 'm': { /* var scope */ -+ char *m_arg, *s; -+ -+ monhost_ups_prev = monhost_ups_current; -+ monhost_ups_current = xmalloc(sizeof(struct monhost_ups)); -+ if (monhost_ups_anchor == NULL) -+ monhost_ups_anchor = monhost_ups_current; -+ else -+ monhost_ups_prev->next = monhost_ups_current; -+ monhost_ups_current->next = NULL; -+ monhost_len++; -+ -+ /* Be sure to not mangle original optarg, nor rely on its longevity */ -+ s = xstrdup(optarg); -+ m_arg = s; -+ monhost_ups_current->monhost = xstrdup(strsep(&m_arg, ",")); -+ if (!m_arg) -+ fatalx(EXIT_FAILURE, "Argument '-m upsspec,logfile' requires exactly 2 components in the tuple"); -+ monhost_ups_current->logfn = xstrdup(strsep(&m_arg, ",")); -+ if (m_arg) /* Had a third comma - also unexpected! */ -+ fatalx(EXIT_FAILURE, "Argument '-m upsspec,logfile' requires exactly 2 components in the tuple"); -+ if (upscli_splitname(monhost_ups_current->monhost, &(monhost_ups_current->upsname), &(monhost_ups_current->hostname), &(monhost_ups_current->port)) != 0) { -+ fatalx(EXIT_FAILURE, "Error: invalid UPS definition. Required format: upsname[@hostname[:port]]\n"); -+ } -+ free(s); -+ } /* var scope */ -+ break; - case 's': - monhost = optarg; - break; -@@ -479,42 +530,59 @@ - snprintfcat(logformat, LARGEBUF, "%s ", argv[i]); - } - -- if (!monhost) -- fatalx(EXIT_FAILURE, "No UPS defined for monitoring - use -s <system>"); -+ if (monhost_ups_anchor == NULL) { -+ if (monhost) { -+ monhost_ups_current = xmalloc(sizeof(struct monhost_ups)); -+ monhost_ups_anchor = monhost_ups_current; -+ monhost_ups_current->next = NULL; -+ monhost_ups_current->monhost = monhost; -+ monhost_len=1; -+ } else { -+ fatalx(EXIT_FAILURE, "No UPS defined for monitoring - use -s <system>"); -+ } - -- if (!logfn) -- fatalx(EXIT_FAILURE, "No filename defined for logging - use -l <file>"); -+ if (logfn) -+ monhost_ups_current->logfn = logfn; -+ else -+ fatalx(EXIT_FAILURE, "No filename defined for logging - use -l <file>"); -+ } - - /* shouldn't happen */ - if (!logformat) - fatalx(EXIT_FAILURE, "No format defined - but this should be impossible"); - -- printf("logging status of %s to %s (%is intervals)\n", -- monhost, logfn, interval); -+ for (monhost_ups_current = monhost_ups_anchor; -+ monhost_ups_current != NULL; -+ monhost_ups_current = monhost_ups_current->next) { -+ printf("logging status of %s to %s (%is intervals)\n", -+ monhost_ups_current->monhost, monhost_ups_current->logfn, interval); -+ if (upscli_splitname(monhost_ups_current->monhost, &(monhost_ups_current->upsname), &(monhost_ups_current->hostname), &(monhost_ups_current->port)) != 0) { -+ fatalx(EXIT_FAILURE, "Error: invalid UPS definition. Required format: upsname[@hostname[:port]]\n"); -+ } - -- if (upscli_splitname(monhost, &upsname, &hostname, &port) != 0) { -- fatalx(EXIT_FAILURE, "Error: invalid UPS definition. Required format: upsname[@hostname[:port]]\n"); -- } -+ monhost_ups_current->ups = xmalloc(sizeof(UPSCONN_t)); -+ if (upscli_connect(monhost_ups_current->ups, monhost_ups_current->hostname, monhost_ups_current->port, UPSCLI_CONN_TRYSSL) < 0) -+ fprintf(stderr, "Warning: initial connect failed: %s\n", -+ upscli_strerror(monhost_ups_current->ups)); - -- if (upscli_connect(&ups, hostname, port, UPSCLI_CONN_TRYSSL) < 0) -- fprintf(stderr, "Warning: initial connect failed: %s\n", -- upscli_strerror(&ups)); -+ if (strcmp(monhost_ups_current->logfn, "-") == 0) -+ monhost_ups_current->logfile = stdout; -+ else -+ monhost_ups_current->logfile = fopen(monhost_ups_current->logfn, "a"); - -- if (strcmp(logfn, "-") == 0) -- logfile = stdout; -- else -- logfile = fopen(logfn, "a"); -+ if (monhost_ups_current->logfile == NULL) -+ fatal_with_errno(EXIT_FAILURE, "could not open logfile %s", logfn); - -- if (logfile == NULL) -- fatal_with_errno(EXIT_FAILURE, "could not open logfile %s", logfn); -+ } - -+ - /* now drop root if we have it */ - new_uid = get_user_pwent(user); - - open_syslog(prog); - - if (foreground < 0) { -- if (logfile == stdout) { -+ if (monhost_ups_anchor->logfile == stdout) { - foreground = 1; - } else { - foreground = 0; -@@ -552,25 +620,35 @@ - reopen_flag = 0; - } - -- /* reconnect if necessary */ -- if (upscli_fd(&ups) < 0) { -- upscli_connect(&ups, hostname, port, 0); -- } -+ for (monhost_ups_current = monhost_ups_anchor; -+ monhost_ups_current != NULL; -+ monhost_ups_current = monhost_ups_current->next) { -+ ups = monhost_ups_current->ups; /* XXX Not ideal */ -+ upsname = monhost_ups_current->upsname; /* XXX Not ideal */ -+ /* reconnect if necessary */ -+ if (upscli_fd(ups) < 0) { -+ upscli_connect(ups, monhost_ups_current->hostname, monhost_ups_current->port, 0); -+ } - -- run_flist(); -+ run_flist(monhost_ups_current); - -- /* don't keep connection open if we don't intend to use it shortly */ -- if (interval > 30) { -- upscli_disconnect(&ups); -+ /* don't keep connection open if we don't intend to use it shortly */ -+ if (interval > 30) { -+ upscli_disconnect(ups); -+ } - } - } - - upslogx(LOG_INFO, "Signal %d: exiting", exit_flag); -+ for (monhost_ups_current = monhost_ups_anchor; -+ monhost_ups_current != NULL; -+ monhost_ups_current = monhost_ups_current->next) { - -- if (logfile != stdout) -- fclose(logfile); -+ if (monhost_ups_current->logfile != stdout) -+ fclose(monhost_ups_current->logfile); - -- upscli_disconnect(&ups); -+ upscli_disconnect(monhost_ups_current->ups); -+ } - - exit(EXIT_SUCCESS); - } diff --git a/sysutils/nut/files/patch-docs_man_upslog.8 b/sysutils/nut/files/patch-docs_man_upslog.8 deleted file mode 100644 index 37b1379ca6bf..000000000000 --- a/sysutils/nut/files/patch-docs_man_upslog.8 +++ /dev/null @@ -1,16 +0,0 @@ ---- docs/man/upslog.8.orig 2022-08-30 05:56:02.734873000 -0700 -+++ docs/man/upslog.8 2022-08-30 06:09:47.928348000 -0700 -@@ -134,6 +134,13 @@ - upsname[@hostname[:port]]\&. The default hostname is "localhost"\&. - .RE - .PP -+\fB\-m\fR \fItuple\fR -+.RS 4 -+Monitor multiple UPSs\&. The format for this option is a tuple of -+ups and logfile separated by commas\&. An example would be: -+upsname@hostname:9999,/var/log/nut/cps.log -+.RE -+.PP - \fB\-u\fR \fIusername\fR - .RS 4 - If started as root, upslog will diff --git a/sysutils/nut/files/patch-docs_man_upslog.txt b/sysutils/nut/files/patch-docs_man_upslog.txt deleted file mode 100644 index e26d91e2d5f2..000000000000 --- a/sysutils/nut/files/patch-docs_man_upslog.txt +++ /dev/null @@ -1,14 +0,0 @@ ---- docs/man/upslog.txt.orig 2022-08-30 05:56:02.761764000 -0700 -+++ docs/man/upslog.txt 2022-08-30 06:04:33.428455000 -0700 -@@ -78,6 +78,11 @@ - Monitor this UPS. The format for this option is - +upsname[@hostname[:port]]+. The default hostname is "localhost". - -+*-m* 'tuple':: -+Monitor multiple UPSs. The format for this option is a tuple of -+ups and logfile separated by commas. An example would be: -+`upsname@hostname:9999,/var/log/nut/cps.log` -+ - *-u* 'username':: - - If started as root, upslog will *setuid*(2) to the user id diff --git a/sysutils/nut/files/patch-m4_nut__check_libltdl.m4 b/sysutils/nut/files/patch-m4_nut__check_libltdl.m4 new file mode 100644 index 000000000000..ae4a2710adf5 --- /dev/null +++ b/sysutils/nut/files/patch-m4_nut__check_libltdl.m4 @@ -0,0 +1,21 @@ +--- m4/nut_check_libltdl.m4.orig 2023-08-01 07:33:24.593954000 -0700 ++++ m4/nut_check_libltdl.m4 2023-08-01 07:35:18.506094000 -0700 +@@ -10,10 +10,7 @@ + dnl No NUT_CHECK_PKGCONFIG here: (lib)ltdl.pc was not seen on any OS + + dnl save CFLAGS and LIBS +- CFLAGS_ORIG="${CFLAGS}" +- LIBS_ORIG="${LIBS}" + LIBS="" +- CFLAGS="" + dnl For fallback below: + myCFLAGS="" + +@@ -71,7 +68,5 @@ + unset myCFLAGS + + dnl restore original CFLAGS and LIBS +- CFLAGS="${CFLAGS_ORIG}" +- LIBS="${LIBS_ORIG}" + fi + ]) diff --git a/sysutils/nut/files/patch-tools_nut-scanner_nutscan-init.c b/sysutils/nut/files/patch-tools_nut-scanner_nutscan-init.c deleted file mode 100644 index bc341494ce73..000000000000 --- a/sysutils/nut/files/patch-tools_nut-scanner_nutscan-init.c +++ /dev/null @@ -1,16 +0,0 @@ -diff --git tools/nut-scanner/nutscan-init.c.orig tools/nut-scanner/nutscan-init.c -index 9ea3f5d..13f4e78 100644 ---- tools/nut-scanner/nutscan-init.c.orig -+++ tools/nut-scanner/nutscan-init.c -@@ -133,7 +133,11 @@ void nutscan_init(void) - char *libname = NULL; - #ifdef WITH_USB - #if WITH_LIBUSB_1_0 -+ #ifdef __FreeBSD__ -+ libname = get_libname("libusb.so"); -+ #else - libname = get_libname("libusb-1.0.so"); -+ #endif - #else - libname = get_libname("libusb-0.1.so"); - if (!libname) { diff --git a/sysutils/nut/pkg-plist b/sysutils/nut/pkg-plist index 495030137062..4c14df5baa16 100644 --- a/sysutils/nut/pkg-plist +++ b/sysutils/nut/pkg-plist @@ -40,19 +40,21 @@ bin/upssched-cmd lib/libnutclient.a lib/libnutclient.so lib/libnutclient.so.2 -lib/libnutclient.so.2.0.0 +lib/libnutclient.so.2.0.2 lib/libupsclient.a lib/libupsclient.so lib/libupsclient.so.6 -lib/libupsclient.so.6.0.0 +lib/libupsclient.so.6.0.1 lib/libnutclientstub.a lib/libnutclientstub.so lib/libnutclientstub.so.1 -lib/libnutclientstub.so.1.0.0 +lib/libnutclientstub.so.1.0.1 lib/libnutscan.a lib/libnutscan.so lib/libnutscan.so.2 -lib/libnutscan.so.2.0.0 +lib/libnutscan.so.2.0.2 +%%PYTHON_SITELIBDIR%%/PyNUT.py +%%PYTHON_SITELIBDIR%%/test_nutclient.py %%DEV%%libdata/pkgconfig/libnutclient.pc %%DEV%%libdata/pkgconfig/libnutscan.pc %%DEV%%libdata/pkgconfig/libupsclient.pc @@ -104,6 +106,7 @@ lib/libnutscan.so.2.0.0 %%USB%%libexec/nut/richcomm_usb %%SERIAL%%libexec/nut/safenet %%SERIAL%%libexec/nut/skel +libexec/nut/sms_ser %%SNMP%%libexec/nut/snmp-ups %%SERIAL%%libexec/nut/solis %%SERIAL%%libexec/nut/tripplite @@ -117,6 +120,7 @@ lib/libnutscan.so.2.0.0 %%MODBUS%%libexec/nut/phoenixcontact_modbus %%MODBUS%%libexec/nut/socomec_jbus %%SERIAL%%libexec/nut/victronups +%%DEV%%libexec/sockdebug %%MANPAGES%%%%DEV%%man/man3/libnutclient.3.gz %%MANPAGES%%%%DEV%%man/man3/libnutclient_commands.3.gz %%MANPAGES%%%%DEV%%man/man3/libnutclient_devices.3.gz @@ -156,6 +160,9 @@ lib/libnutscan.so.2.0.0 %%MANPAGES%%%%DEV%%man/man3/nutscan_add_option_to_device.3.gz %%MANPAGES%%%%DEV%%man/man3/nutscan_cidr_to_ip.3.gz %%MANPAGES%%%%DEV%%man/man3/nutscan_display_parsable.3.gz +%%MANPAGES%%%%DEV%%man/man3/nutscan_display_sanity_check.3.gz +%%MANPAGES%%%%DEV%%man/man3/nutscan_display_sanity_check_serial.3.gz +%%MANPAGES%%%%DEV%%man/man3/nutscan_display_ups_conf_with_sanity_check.3.gz %%MANPAGES%%%%DEV%%man/man3/nutscan_display_ups_conf.3.gz %%MANPAGES%%%%DEV%%man/man3/nutscan_free_device.3.gz %%MANPAGES%%%%DEV%%man/man3/nutscan_get_serial_ports_list.3.gz @@ -258,6 +265,7 @@ lib/libnutscan.so.2.0.0 %%MANPAGES%%%%SERIAL%%man/man8/powerpanel.8.gz %%MANPAGES%%%%SERIAL%%man/man8/rhino.8.gz %%MANPAGES%%%%SERIAL%%man/man8/safenet.8.gz +%%MANPAGES%%man/man8/sms_ser.8.gz %%MANPAGES%%%%SERIAL%%man/man8/solis.8.gz %%MANPAGES%%%%SERIAL%%man/man8/tripplite.8.gz %%MANPAGES%%%%SERIAL%%man/man8/tripplitesu.8.gz @@ -265,6 +273,7 @@ lib/libnutscan.so.2.0.0 %%MANPAGES%%%%SERIAL%%man/man8/victronups.8.gz %%MANPAGES%%%%USB%%man/man8/bcmxcp_usb.8.gz %%MANPAGES%%%%USB%%man/man8/richcomm_usb.8.gz +%%MANPAGES%%%%DEV%%man/man8/sockdebug.8.gz %%MANPAGES%%%%USB%%man/man8/tripplite_usb.8.gz %%MANPAGES%%%%USB%%man/man8/usbhid-ups.8.gz %%MANPAGES%%%%SNMP%%man/man8/snmp-ups.8.gz |