diff -Nru nut-2.7.1/aclocal.m4 nut-2.7.2/aclocal.m4 --- nut-2.7.1/aclocal.m4 2013-11-20 20:55:09.000000000 +0100 +++ nut-2.7.2/aclocal.m4 2014-04-17 22:26:26.000000000 +0200 @@ -1322,7 +1322,6 @@ m4_include([m4/nut_check_libavahi.m4]) m4_include([m4/nut_check_libfreeipmi.m4]) m4_include([m4/nut_check_libgd.m4]) -m4_include([m4/nut_check_libhal.m4]) m4_include([m4/nut_check_libltdl.m4]) m4_include([m4/nut_check_libneon.m4]) m4_include([m4/nut_check_libnetsnmp.m4]) @@ -1332,6 +1331,5 @@ m4_include([m4/nut_check_libusb.m4]) m4_include([m4/nut_check_libwrap.m4]) m4_include([m4/nut_check_os.m4]) -m4_include([m4/nut_config_libhal.m4]) m4_include([m4/nut_report_feature.m4]) m4_include([m4/nut_type_socklen_t.m4]) diff -Nru nut-2.7.1/ChangeLog nut-2.7.2/ChangeLog --- nut-2.7.1/ChangeLog 2013-11-20 20:57:56.000000000 +0100 +++ nut-2.7.2/ChangeLog 2014-04-17 22:27:07.000000000 +0200 @@ -1,3 +1,474 @@ +2014-04-17 Arnaud Quette + + * NEWS, UPGRADING, configure.ac: Update for release 2.7.2 Complete + the release information for NUT 2.7.2 + +2014-04-07 Arnaud Quette + + * drivers/compaq-mib.c: Fix erroneous status in HP/Compaq SNMP MIB + Using the most recent HP firmware (1.76), erroneous on-battery + status were reported. Also disable an erroneous low-battery + definition (pointing nowhere), while waiting for actual + improvements (report and patch from Philippe Andersson ; Closes + networkupstools/nut#117) + +2014-04-06 Daniele Pezzini + + * drivers/mge-xml.c: mge-xml: fix compile-time warnings, versioning + +2014-04-05 Charles Lepple + + * data/driver.list.in: HCL: Numeric Digital 800 plus USB VID:PID = + 0665:5161 Reference: networkupstools/nut#115 (blazer_usb @ 2.6.4; + waiting for confirmation with nutdrv_qx) + * data/driver.list.in: HCL: Eaton Powerware 3105 supported by + bcmxcp_usb Closes networkupstools/nut#117 + * data/driver.list.in, drivers/belkin-hid.c: usbhid-ups/belkin-hid: + add support for Emerson Network Power Liebert PSI 1440 USB VID:PID + = 10af:0004 + http://article.gmane.org/gmane.comp.monitoring.nut.user/8479 + +2014-04-05 Arnaud Quette + + * drivers/al175.c: Fix data format warnings on all architectures + Complete commit 7daa0feb6ed4f1c29bfe14c8e491ba198a4ba643, and + actually fix some of the warnings related data format. Also bump + al175 driver revision + * clients/Makefile.am: Update libupsclient library version + information Following the recent export of libcommon functions in + libupsclient, update the library version information to 4:0:0 + +2014-04-04 Arnaud Quette + + * drivers/al175.c: Fix data format warnings Fix a few warnings + related data format, in debug code + * clients/Makefile.am: Add libnutclient library version information + Add the missing LDFLAGS for adding version information + +2014-03-21 Arnaud Quette + + * data/driver.list.in: [HCL] CABAC UPS-1700DV2 supported by + blazer_usb Reported by jammin84 Closes #113 + * clients/Makefile.am, common/Makefile.am: Link libupsclient with + libcommon Fix undefined references related to functions of + libcommon. This issue was reported on Debian: + https://bugs.debian.org/731156 (patch from Matthias Klose ; Closes + Github issue #73) + +2014-03-18 Charles Lepple + + * data/driver.list.in: [HCL] Digitus DN-170014 supported by + richcomm_usb Reference: http://lists.alioth.debian.org/pipermail + /nut-upsdev/2014-March/006695.html -or- http://news.gmane.org/find- + root.php?message_id=CADq9dvWMx0xBz9XXkVKXCre4ox%2d2kSeHtD7LW39eEDH1 + RCY8sQ%40mail.gmail.com + +2014-03-05 Charles Lepple + + * UPGRADING: Added note about --enable-option-checking=fatal Closes + #99 (really) + +2014-03-03 Charles Lepple + + * data/driver.list.in: HCL: various updates * Closes + https://github.com/networkupstools/nut/issues/107 + * http://lists.alioth.debian.org/pipermail/nut- + upsdev/2013-November/006564.html * http://news.gmane.org/find- + root.php?message_id=50D9D460.1080408%40gmail.com + * http://news.gmane.org/find-root.php?message_id=CA%2b4duQ%3dppW%2 + bPz%2bRVPVXJyFLj0HErh1ZOtm5tk8b6n5Nd5kSk0g%40mail.gmail.com * + http://news.gmane.org/find- + root.php?message_id=528EC53C.9000801%40me.com + * docs/nut-qa.txt: NUT QA document: updated and reworded + * docs/nut-qa.txt: NUT QA document: CR->LF + * docs/FAQ.txt: FAQ: minor updates Update the bestfortress entry, + fix the mythicbeasts URL, and reword a few entries. + +2014-02-13 Charles Lepple + + * docs/man/upsimage.cgi.txt: upsimage.cgi(8): update GD homepage + +2014-03-03 Émilien Kia + + * drivers/nutdrv_qx.h: Detect if TRUE (and FALSE) are already defined + and define bool_t accordingly. + +2014-02-27 Arnaud Quette + + * UPGRADING: Add a note on Hardware Abstraction Layer removal + * INSTALL.nut, autogen.sh, configure.ac, docs/Makefile.am, + docs/configure.txt, docs/developers.txt, docs/features.txt, + docs/macros.txt, docs/new-drivers.txt, docs/nut-hal.txt, docs + /packager-guide.txt, drivers/Makefile.am, drivers/dstate-hal.c, + drivers/dstate-hal.h, drivers/main-hal.c, drivers/main-hal.h, + m4/nut_check_libhal.m4, m4/nut_config_libhal.m4: Remove the + remaining HAL files and references Remove the remaining build + rules, source code and documentation related to the FreeDesktop + Hardware Abstraction Layer (HAL) support. For the record, with this + HAL implementation, NUT drivers were sending data over DBus + (Closes: #99) + +2014-02-24 Charles Lepple + + * drivers/blazer_usb.c, drivers/libusb.c, drivers/nutdrv_qx.c, + drivers/riello_usb.c, drivers/usbhid-ups.c: OpenBSD ports tree + patches for EPROTO Closes networkupstools/nut#44 + +2014-02-26 Arnaud Quette + + * scripts/Makefile.am, scripts/README, scripts/hal/.gitignore, + scripts/hal/Makefile.am, tools/nut-usbinfo.pl: Remove the + generation of HAL support files Remove the code supporting the + generation of HAL FDI file. This is the first commit of a set to + address Github issue #99 + * drivers/snmp-ups.c: Fix snmp-ups segmentation fault A basic sanity + check was missing in the core code of snmp-ups, causing a driver + crash under some specific circumstances, at driver initialisation + time. Hence, this does not affect production systems + * README, UPGRADING, docs/FAQ.txt, docs/config-notes.txt, + drivers/Makefile.am, scripts/Solaris/nut.in, + scripts/Solaris/postinstall.in, scripts/Solaris/preremove.in, + scripts/systemd/nut-driver.service.in, + scripts/systemd/nutshutdown.in: Closes #96: Install upsdrvctl to + $prefix/sbin Install upsdrvctl to $prefix/sbin rather than + $driverexec. upsdrvctl has been historically standing beside the + drivers. It now resides in the system binaries ($prefix/sbin) + directory + +2014-02-25 Arnaud Quette + + * drivers/mge-hid.c: Add improved support for Eaton 5P Add the + necessary hooks to improve support for Eaton 5P range. This + includes post-processing of the model name, along with handling + rules for battery voltage (actual and nominal) + +2014-02-19 Daniele Pezzini + + * docs/Makefile.am, docs/chunked.xsl, docs/common.xsl, + docs/xhtml.xsl: docs: prevent smartphones from being too smart + (docbook) Add HTML tag to not auto-create telephone number + links on mobile browsers also in docbook processed documents. + Reference: https://github.com/networkupstools/nut/issues/78 XSL + files source: - https://github.com/asciidoc/asciidoc/blob/master + /docbook-xsl/common.xsl - + https://github.com/asciidoc/asciidoc/blob/master/docbook- + xsl/xhtml.xsl - https://github.com/asciidoc/asciidoc/blob/master + /docbook-xsl/chunked.xsl + * docs/man/asciidoc.conf: docs: prevent smartphones from being too + smart Add HTML tag to not auto-create telephone number + links on mobile browsers. Reference: + https://github.com/networkupstools/nut/issues/78 + +2014-02-15 Arnaud Quette + + * docs/acknowledgements.txt: Update NUT team membership for Daniele + Pezzini Daniele Pezzini is a now a NUT senior developer + +2014-02-14 Arnaud Quette + + * docs/acknowledgements.txt, docs/website/news.txt: Formalizing the + end of the relationship with Eaton The situation of the + relationship with Eaton has evolved, and since 2011 Eaton does not + support NUT anymore. This may still evolve in the future. But for + now, please do not consider anymore that buying Eaton products will + provide you with official support from Eaton, or a better level of + device support in NUT. + +2014-02-14 Charles Lepple + + * Makefile.am: devd: use staging directory for distcheck + * drivers/Makefile.am, drivers/snmp-ups.c, drivers/xppc-mib.c, + drivers/xppc-mib.h: snmp-ups: add XPPC-MIB for Tripp Lite + SU10KRT3/1X + * scripts/subdriver/gen-snmp-subdriver.sh: gen-snmp-subdriver.sh: + documentation updates + +2014-02-10 Charles Lepple + + * scripts/subdriver/gen-snmp-subdriver.sh: gen-snmp-subdriver.sh: fix + option typos * Use '-M' for MIB directories, to match snmpwalk and + the help text. * Add space before '-c' in snmpwalk (not sure how + this worked before) + * scripts/Makefile.am: cosmetic: Indent scripts/Makefile.am + EXTRA_DIST continuation lines + * scripts/Makefile.am: Add gen-snmp-subdriver.sh to distribution + tarball + +2014-02-14 Arnaud Quette + + * docs/acknowledgements.txt: Update NUT team membership for + Frédéric Bohe Frederic Bohe, NUT senior developer and Eaton + contractor from 2009 to 2013, is now a retired member. Thanks for + all the hard work on the Windows port, nut-scanner, Unix packaging, + support, ... Also update the developers membership page, from + Alioth to GitHub + +2013-02-24 Charles Lepple + + * autogen.sh, configure.ac, scripts/Makefile.am, + scripts/devd/.gitignore, scripts/devd/Makefile.am, + scripts/devd/README, tools/nut-usbinfo.pl: FreeBSD: generate + devd.conf files for USB UPSes This adds a --with-devd-dir=PATH + option to ./configure, which defaults to /usr/local/etc/devd (or + /etc/devd, whichever is found first). Unlike udev, there does not + seem to be a way to re-trigger rules at runtime. This means you + will likely need to unplug and replug your UPS after installing the + new nut-usb.conf file. + +2014-02-13 Arnaud Quette + + * .gitignore, server/.gitignore: Minor completion to gitignore files + Add a few more exotic targets, related to debug or official + distribution + +2014-02-11 Daniele Pezzini + + * .gitignore, clients/.gitignore, common/.gitignore, conf/.gitignore, + data/.gitignore, data/html/.gitignore, docs/.gitignore, + docs/man/.gitignore, docs/website/.gitignore, + docs/website/scripts/.gitignore, drivers/.gitignore, + include/.gitignore, lib/.gitignore, m4/.gitignore, + scripts/.gitignore, scripts/HP-UX/.gitignore, + scripts/Solaris/.gitignore, scripts/augeas/.gitignore, + scripts/avahi/.gitignore, scripts/hal/.gitignore, + scripts/hotplug/.gitignore, scripts/python/.gitignore, + scripts/systemd/.gitignore, scripts/udev/.gitignore, + scripts/ufw/.gitignore, server/.gitignore, tests/.gitignore, + tools/.gitignore, tools/nut-scanner/.gitignore: Simplify gitignore + files Remove redundancies and old/svn things. Limit the scope + wherever it makes sense. Ignore all cscope files and test logs. + Make ignoring generated files easier to maintain. + +2014-02-11 Charles Lepple + + * drivers/libshut.c: libshut: partially revert PnP/RTS change + Reported by Baruch Even. It is unclear how this will work after + running nut-scanner, but it is more important to keep the drivers + working. Reference: 65db105 / + 2013-09-24T08:18:00Z!fredericbohe@eaton.com Closes: + networkupstools/nut#91 + +2014-02-09 Daniele Pezzini + + * docs/man/nutdrv_qx.txt: nutdrv_qx: update manpage for the newly + supported Voltronic Power P98 units + * drivers/nutdrv_qx.c, drivers/nutdrv_qx_mecer.c, + drivers/nutdrv_qx_mecer.h: nutdrv_qx: improve support for + '(ACK/(NAK' and Voltronic Power P98 UPSes In 'mecer' subdriver's + claim function try to get protocol (QPI, for Voltronic Power + devices) used by the UPS: - supported devices are Voltronic Power's + P98 units - if the UPS doesn't support the QPI command, use its + reply to identify whether it uses '(ACK\r'/'(NAK\r' replies This + way we can catch '(ACK/(NAK' devices, while previously the 'mecer' + subdriver was 'hidden' by the 'megatec' (echo back/'ACK/NAK') one. + Plus Q1 units with 'ACK'/'NAK' replies or echoing back not + supported and rejected commands are no longer wrongly 'claimed' by + the 'mecer' subdriver. + +2014-02-03 Daniele Pezzini + + * docs/.gitignore, docs/Makefile.am, docs/documentation.txt: docs: + build PDF also for cables.txt + +2014-02-02 Daniele Pezzini + + * Makefile.am, configure.ac, docs/.gitignore, docs/Makefile.am, + docs/man/.gitignore, docs/man/Makefile.am, docs/stable-hcl.txt, + docs/user-manual.txt, docs/website/.gitignore, + docs/website/Makefile.am, docs/website/css/ie-overrides.css, + docs/website/css/web-layout.css, + docs/website/css/xhtml11-quirks.css, docs/website/css/xhtml11.css, + docs/website/faviconut.ico, docs/website/faviconut.png, + docs/website/news.txt, docs/website/old-news.txt, + docs/website/projects.txt, docs/website/scripts/.gitignore, + docs/website/scripts/filter_png.js, docs/website/scripts/jquery.js, + docs/website/scripts/nut_jquery.js, docs/website/scripts/toc.js, + docs/website/ups-protocols.txt, docs/website/web-layout.conf, + docs/website/website.txt, tools/Makefile.am, tools/nut-hclinfo.py: + website: move to a standalone website + +2014-01-18 Daniele Pezzini + + * docs/net-protocol.txt: docs: fix a couple of asciidoc errors in + net-protocols.txt + * server/netlist.c: net-protocol: fix closing line of LIST RANGE + +2014-01-16 Charles Lepple + + * drivers/nutdrv_atcl_usb.c: nutdrv_atcl_usb: fix permissions-based + crash, and enable vendor variable (1.1) + +2014-01-13 Charles Lepple + + * .gitignore: Ignore cscope.out + * docs/man/.gitignore, docs/man/nutdrv_atcl_usb.txt, + drivers/nutdrv_atcl_usb.c: nutdrv_atcl_usb: documentation and + logging (v1.0) + +2014-01-11 Charles Lepple + + * drivers/apc-mib.c: snmp-ups: APC SmartBoost and SmartTrim are OL + SmartBoost and SmartTrim are voltage regulation functions that + prevent the UPS from using the battery during brownouts and + overvoltages, so the BOOST and TRIM states are also mapped to OL. + Reference: + http://article.gmane.org/gmane.comp.monitoring.nut.devel/6583 + * data/driver.list.in: [HCL] MicroDowell B.Box LP 500: genericups + type 7 Closes networkupstools/nut#83 From @lxp: UPS shutdown + only works when on-battery and has a delay of about 1min until + execution (something between 50sec to 1min 30sec on mine). + References: http://www.ezdirect.it/pdf/lp500.pdf + https://forums.gentoo.org/viewtopic-t-730172-start-0.html + +2014-01-11 Daniele Pezzini + + * drivers/blazer_ser.c, drivers/blazer_usb.c: blazer: fix man page + references + +2014-01-11 Charles Lepple + + * docs/man/nutdrv_atcl_usb.txt, drivers/nutdrv_atcl_usb.c: + nutdrv_atcl: match iManufacturer (vendor) string + * docs/man/snmp-ups.txt: snmp-ups: update and edit documentation + +2014-01-11 Daniele Pezzini + + * data/driver.list.in: HCL: add Atlantis Land/Voltronic Power units + supported by nutdrv_qx + * drivers/nutdrv_qx_blazer-common.c, drivers/nutdrv_qx_blazer- + common.h: nutdrv_qx: fix nutdrv_qx_blazer-common.{c,h} header + comments + * docs/man/nutdrv_qx.txt, docs/nutdrv_qx-subdrivers.txt: nutdrv_qx: + update manuals for new 'voltronic-qs' subdriver + +2013-12-05 Daniele Pezzini + + * drivers/Makefile.am, drivers/nutdrv_qx.c, drivers + /nutdrv_qx_voltronic-qs.c, drivers/nutdrv_qx_voltronic-qs.h: + nutdrv_qx: add Voltronic-QS subdriver (nutdrv_qx protocol + =voltronic-qs) A subdriver using a protocol, specific to UPSes + manufactured by Voltronic Power, based on the 'mustek' one (i.e. + 'QS'). + +2014-01-01 Charles Lepple + + * drivers/nutdrv_atcl_usb.c: nutdrv_atcl_usb: adjusted logging and + retries (v0.02) + * data/driver.list.in, docs/man/Makefile.am, docs/man/index.txt, + docs/man/nutdrv_atcl_usb.txt: nutdrv_atcl_usb: man page and HCL + entries + +2013-12-31 Charles Lepple + + * drivers/.gitignore, drivers/Makefile.am, drivers/nutdrv_atcl_usb.c, + tools/nut-usbinfo.pl: nutdrv_atcl_usb: 'ATCL FOR UPS' new driver + Reference: http://news.gmane.org/find- + root.php?message_id=%3c52B4C54E.1050106%40ariwainer.com.ar%3e + * drivers/libusb.c, drivers/usb-common.h: Move USB_TIMEOUT to usb- + common.h + +2013-12-31 Laurent Bigonville + + * .gitignore, INSTALL, INSTALL.nut, Makefile.am, docs/FAQ.txt, + docs/Makefile.am, docs/configure.txt, docs/packager-guide.txt, docs + /user-manual.txt: Rename INSTALL to INSTALL.nut Rename it to + INSTALL.nut so autoreconf will not try to overwrite it. In Debian + tools like dh_autoreconf calls autoreconf with -f which overwrite + the INSTALL file. + +2013-12-27 Charles Lepple + + * scripts/subdriver/gen-usbhid-subdriver.sh: usbhid-ups: fix call to + is_usb_device_supported() The is_usb_device_supported() function + now takes a USBDevice_t* instead of a pair of USB ID values. + +2013-12-22 Florian Bruhin + + * data/driver.list.in, docs/man/powercom.txt, drivers/powercom.c: Add + OptiUPS VS 575C support to PowerCom Reference: + http://news.gmane.org/find- + root.php?message_id=%3c20131126085646.GM28832%40lupin%3e + +2013-12-11 Denis Yantarev + + * drivers/blazer_usb.c, drivers/nutdrv_qx.c: Fixed incorrectly + reported Ippon response length + +2013-11-30 Daniele Pezzini + + * docs/man/nutdrv_qx.txt, drivers/nutdrv_qx.c, drivers + /nutdrv_qx_blazer-common.c, drivers/nutdrv_qx_blazer-common.h, + drivers/nutdrv_qx_megatec-old.c, drivers/nutdrv_qx_mustek.c, + drivers/nutdrv_qx_q1.c: nutdrv_qx: fix 'megatec/old' and 'mustek' + subdrivers' claim functions Address, for 'megatec/old' and + 'mustek' subdrivers, the same problem fixed in commit + 720975f4de910b270ba705a7f2981c2ee33ca2eb for Q1-based ones: - Make + the claim function of 'megatec/old' and 'mustek' subdrivers not + poll the UPS for 'vendor' informations as they are not really + needed to set these protocols apart from the other ones (i.e. the + 'status' poll is specific enough, at the time of writing). - Move + common 'light' claim function to nutdrv_qx_blazer-common.{c,h}. - + Update manual. - Versioning. + +2013-11-24 Daniele Pezzini + + * docs/nutdrv_qx-subdrivers.txt: nutdrv_qx: improve developer manual + Get rid of useless tables. Fix minor errors/typos. + * drivers/nutdrv_qx.c: nutdrv_qx: versioning + * docs/man/nutdrv_qx.txt, docs/nutdrv_qx-subdrivers.txt: nutdrv_qx: + update manuals for new Q1 subdriver and improve readability + +2013-11-23 Daniele Pezzini + + * drivers/Makefile.am, drivers/nutdrv_qx.c, drivers/nutdrv_qx_q1.c, + drivers/nutdrv_qx_q1.h: nutdrv_qx: add new 'fallback' Q1 subdriver + Add new 'Q1' subdriver. This subdriver implements the same protocol + as the one used by the 'megatec' subdriver minus the vendor (I) and + ratings (F) queries. In the claim function: - it doesn't even try + to get 'vendor' informations (I) - it checks only status (Q1), + through 'input.voltage' variable Therefore it should be able to + work even if the UPS doesn't support vendor/ratings *and* the user + doesn't use the 'novendor'/'norating' flags, as long as: - the UPS + replies a Q1-compliant answer (i.e. not necessary filled with all + of the Q1-required data, but at least of the right length and with + not available data filled with some replacement character) - the + UPS reports a valid input.voltage (used in the claim function) - + the UPS reports valid status bits (1st, 2nd, 3rd, 6th, 7th are the + mandatory ones) This commit reintroduces a functionality of the + blazer subdrivers that was lost because now, in order to tell + whether a device is supported by a subdriver or not, if the user + doesn't call the driver with the 'novendor' flag, both the status + (Q1) and the vendor (I/FW?) queries are needed (that's to better + discern the subdrivers). Reference: + http://lists.alioth.debian.org/pipermail/nut- + upsuser/2013-November/008692.html + +2013-11-23 Charles Lepple + + * configure.ac, configure.in: Rename configure.in to configure.ac + autoconf has been warning about this for a while - let's fix it + before too many branches get created with the old name. + * configure.in: configure.in: bump version to 2.7.1.5 Some packaging + systems don't like the -pre# system. + +2013-11-21 Laurent Bigonville + + * docs/man/ups.conf.txt, docs/man/upsdrvctl.txt, drivers/upsdrvctl.c: + Provide retry options for upsdrvctl and driver(s) As recently seen + in Debian (bugs #694717 and #677143), it may be required to have + upsdrvctl retrying to start the driver in case of failure. More + specifically, a mix of init system (V and systemd), udev and USB + device(s) can result in the /dev entry not being available at + driver startup, thus resulting in a general failure to start NUT. + This commit provides at least a way to overcome this issue. A more + suitable solution will require more work on NUT design. This + patch if based on Arnaud Quette proposal + +2013-11-20 Arnaud Quette + + * Makefile.am: Maintainers targets: distribution signature / hashes + Create some handy targets to ease and automate release publication + 2013-11-19 Charles Lepple * configure.in: configure: update version to 2.7.1 diff -Nru nut-2.7.1/clients/Makefile.am nut-2.7.2/clients/Makefile.am --- nut-2.7.1/clients/Makefile.am 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/clients/Makefile.am 2014-04-05 21:36:16.000000000 +0200 @@ -46,14 +46,15 @@ # not LDADD. libupsclient_la_SOURCES = upsclient.c upsclient.h -libupsclient_la_LIBADD = ../common/libparseconf.la +libupsclient_la_LIBADD = ../common/libcommonclient.la if WITH_SSL libupsclient_la_LIBADD += $(LIBSSL_LIBS) endif # libupsclient version information # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -libupsclient_la_LDFLAGS = -version-info 3:1:0 +libupsclient_la_LDFLAGS = -version-info 4:0:0 libnutclient_la_SOURCES = nutclient.h nutclient.cpp +libnutclient_la_LDFLAGS = -version-info 0:0:0 diff -Nru nut-2.7.1/clients/Makefile.in nut-2.7.2/clients/Makefile.in --- nut-2.7.1/clients/Makefile.in 2013-11-20 20:55:13.000000000 +0100 +++ nut-2.7.2/clients/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -79,7 +79,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -89,10 +88,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -133,9 +131,12 @@ libnutclient_la_LIBADD = am_libnutclient_la_OBJECTS = nutclient.lo libnutclient_la_OBJECTS = $(am_libnutclient_la_OBJECTS) +libnutclient_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(libnutclient_la_LDFLAGS) $(LDFLAGS) -o $@ am__DEPENDENCIES_1 = @WITH_SSL_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -libupsclient_la_DEPENDENCIES = ../common/libparseconf.la \ +libupsclient_la_DEPENDENCIES = ../common/libcommonclient.la \ $(am__DEPENDENCIES_2) am_libupsclient_la_OBJECTS = upsclient.lo libupsclient_la_OBJECTS = $(am_libupsclient_la_OBJECTS) @@ -274,10 +275,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -289,8 +286,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -376,6 +371,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ @@ -445,12 +441,13 @@ # not LDADD. libupsclient_la_SOURCES = upsclient.c upsclient.h -libupsclient_la_LIBADD = ../common/libparseconf.la $(am__append_4) +libupsclient_la_LIBADD = ../common/libcommonclient.la $(am__append_4) # libupsclient version information # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -libupsclient_la_LDFLAGS = -version-info 3:1:0 +libupsclient_la_LDFLAGS = -version-info 4:0:0 libnutclient_la_SOURCES = nutclient.h nutclient.cpp +libnutclient_la_LDFLAGS = -version-info 0:0:0 all: all-am .SUFFIXES: @@ -518,7 +515,7 @@ rm -f "$${dir}/so_locations"; \ done libnutclient.la: $(libnutclient_la_OBJECTS) $(libnutclient_la_DEPENDENCIES) $(EXTRA_libnutclient_la_DEPENDENCIES) - $(CXXLINK) -rpath $(libdir) $(libnutclient_la_OBJECTS) $(libnutclient_la_LIBADD) $(LIBS) + $(libnutclient_la_LINK) -rpath $(libdir) $(libnutclient_la_OBJECTS) $(libnutclient_la_LIBADD) $(LIBS) libupsclient.la: $(libupsclient_la_OBJECTS) $(libupsclient_la_DEPENDENCIES) $(EXTRA_libupsclient_la_DEPENDENCIES) $(libupsclient_la_LINK) -rpath $(libdir) $(libupsclient_la_OBJECTS) $(libupsclient_la_LIBADD) $(LIBS) install-binPROGRAMS: $(bin_PROGRAMS) diff -Nru nut-2.7.1/common/Makefile.am nut-2.7.2/common/Makefile.am --- nut-2.7.1/common/Makefile.am 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/common/Makefile.am 2014-03-21 20:34:47.000000000 +0100 @@ -2,14 +2,16 @@ AM_CFLAGS = -I$(top_srcdir)/include -noinst_LTLIBRARIES = libparseconf.la libcommon.la +noinst_LTLIBRARIES = libparseconf.la libcommon.la libcommonclient.la libparseconf_la_SOURCES = parseconf.c # do not hard depend on '../include/nut_version.h', since it blocks # 'dist', and is only required for actual build, in which case # BUILT_SOURCES (in ../include) will ensure nut_version.h will # be built before anything else -libcommon_la_SOURCES = common.c state.c upsconf.c +libcommon_la_SOURCES = common.c state.c upsconf.c +libcommonclient_la_SOURCES = common.c state.c # ensure inclusion of local implementation of missing systems functions # using LTLIBOBJS. Refer to configure.in -> AC_REPLACE_FUNCS libcommon_la_LIBADD = libparseconf.la @LTLIBOBJS@ +libcommonclient_la_LIBADD = libparseconf.la @LTLIBOBJS@ diff -Nru nut-2.7.1/common/Makefile.in nut-2.7.2/common/Makefile.in --- nut-2.7.1/common/Makefile.in 2013-11-20 20:55:13.000000000 +0100 +++ nut-2.7.2/common/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -67,7 +67,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -77,10 +76,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -91,6 +89,9 @@ libcommon_la_DEPENDENCIES = libparseconf.la @LTLIBOBJS@ am_libcommon_la_OBJECTS = common.lo state.lo upsconf.lo libcommon_la_OBJECTS = $(am_libcommon_la_OBJECTS) +libcommonclient_la_DEPENDENCIES = libparseconf.la @LTLIBOBJS@ +am_libcommonclient_la_OBJECTS = common.lo state.lo +libcommonclient_la_OBJECTS = $(am_libcommonclient_la_OBJECTS) libparseconf_la_LIBADD = am_libparseconf_la_OBJECTS = parseconf.lo libparseconf_la_OBJECTS = $(am_libparseconf_la_OBJECTS) @@ -107,8 +108,10 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -SOURCES = $(libcommon_la_SOURCES) $(libparseconf_la_SOURCES) -DIST_SOURCES = $(libcommon_la_SOURCES) $(libparseconf_la_SOURCES) +SOURCES = $(libcommon_la_SOURCES) $(libcommonclient_la_SOURCES) \ + $(libparseconf_la_SOURCES) +DIST_SOURCES = $(libcommon_la_SOURCES) $(libcommonclient_la_SOURCES) \ + $(libparseconf_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -159,10 +162,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -174,8 +173,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -261,6 +258,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ @@ -303,17 +301,19 @@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ AM_CFLAGS = -I$(top_srcdir)/include -noinst_LTLIBRARIES = libparseconf.la libcommon.la +noinst_LTLIBRARIES = libparseconf.la libcommon.la libcommonclient.la libparseconf_la_SOURCES = parseconf.c # do not hard depend on '../include/nut_version.h', since it blocks # 'dist', and is only required for actual build, in which case # BUILT_SOURCES (in ../include) will ensure nut_version.h will # be built before anything else -libcommon_la_SOURCES = common.c state.c upsconf.c +libcommon_la_SOURCES = common.c state.c upsconf.c +libcommonclient_la_SOURCES = common.c state.c # ensure inclusion of local implementation of missing systems functions # using LTLIBOBJS. Refer to configure.in -> AC_REPLACE_FUNCS libcommon_la_LIBADD = libparseconf.la @LTLIBOBJS@ +libcommonclient_la_LIBADD = libparseconf.la @LTLIBOBJS@ all: all-am .SUFFIXES: @@ -359,6 +359,8 @@ done libcommon.la: $(libcommon_la_OBJECTS) $(libcommon_la_DEPENDENCIES) $(EXTRA_libcommon_la_DEPENDENCIES) $(LINK) $(libcommon_la_OBJECTS) $(libcommon_la_LIBADD) $(LIBS) +libcommonclient.la: $(libcommonclient_la_OBJECTS) $(libcommonclient_la_DEPENDENCIES) $(EXTRA_libcommonclient_la_DEPENDENCIES) + $(LINK) $(libcommonclient_la_OBJECTS) $(libcommonclient_la_LIBADD) $(LIBS) libparseconf.la: $(libparseconf_la_OBJECTS) $(libparseconf_la_DEPENDENCIES) $(EXTRA_libparseconf_la_DEPENDENCIES) $(LINK) $(libparseconf_la_OBJECTS) $(libparseconf_la_LIBADD) $(LIBS) diff -Nru nut-2.7.1/conf/Makefile.in nut-2.7.2/conf/Makefile.in --- nut-2.7.1/conf/Makefile.in 2013-11-20 20:55:13.000000000 +0100 +++ nut-2.7.2/conf/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -68,7 +68,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -78,10 +77,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -171,10 +169,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -186,8 +180,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -273,6 +265,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/conf/upsmon.conf.sample nut-2.7.2/conf/upsmon.conf.sample --- nut-2.7.1/conf/upsmon.conf.sample 2013-11-20 20:55:27.000000000 +0100 +++ nut-2.7.2/conf/upsmon.conf.sample 2014-04-17 22:27:04.000000000 +0200 @@ -27,7 +27,7 @@ # # This user should not have write access to upsmon.conf. # -# RUN_AS_USER nobody +# RUN_AS_USER nut # -------------------------------------------------------------------------- # MONITOR ("master"|"slave") @@ -196,7 +196,7 @@ # # See the shutdown.txt file in the docs subdirectory for more information. -POWERDOWNFLAG /usr/local/ups/etc/killpower +POWERDOWNFLAG /etc/nut/killpower # -------------------------------------------------------------------------- # NOTIFYMSG - change messages sent by upsmon when certain events occur @@ -307,7 +307,7 @@ # Certificates are stored in a dedicated database (splitted in 3 files). # Specify the path of the database directory. # -# CERTPATH /usr/local/ups/etc/cert/upsmon +# CERTPATH /etc/nut/cert/upsmon # # With OpenSSL: # Directory containing CA certificates in PEM format, used to verify diff -Nru nut-2.7.1/configure nut-2.7.2/configure --- nut-2.7.1/configure 2013-11-20 20:55:12.000000000 +0100 +++ nut-2.7.2/configure 2014-04-17 22:26:30.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for nut 2.7.1. +# Generated by GNU Autoconf 2.69 for nut 2.7.2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='nut' PACKAGE_TARNAME='nut' -PACKAGE_VERSION='2.7.1' -PACKAGE_STRING='nut 2.7.1' +PACKAGE_VERSION='2.7.2' +PACKAGE_STRING='nut 2.7.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -640,6 +640,7 @@ systemdsystemunitdir pkgconfigdir driverexecdir +devddir cgiexecdir WORDS_BIGENDIAN SUN_LIBUSB @@ -657,12 +658,6 @@ DRIVER_INSTALL_TARGET DRIVER_MAN_LIST DRIVER_BUILD_LIST -LIBHAL_LIBS -LIBHAL_CFLAGS -HAL_CALLOUTS_PATH -HAL_FDI_PATH -HAL_DEVICE_MATCH_KEY -HAL_USER LIBLTDL_LIBS LIBLTDL_CFLAGS LIBWRAP_LIBS @@ -692,6 +687,8 @@ ASPELL MANUALUPDATE_FALSE MANUALUPDATE_TRUE +WITH_DEVD_FALSE +WITH_DEVD_TRUE WITH_UDEV_FALSE WITH_UDEV_TRUE WITH_HOTPLUG_FALSE @@ -729,8 +726,6 @@ DBLATEX A2X ASCIIDOC -WITH_HAL_FALSE -WITH_HAL_TRUE WITH_CGI_FALSE WITH_CGI_TRUE WITH_LIBLTDL_FALSE @@ -888,13 +883,6 @@ with_snmp_libs with_usb_includes with_usb_libs -with_hal -with_hal_includes -with_hal_libs -with_hal_user -with_hal_device_match_key -with_hal_callouts_path -with_hal_fdi_path with_snmp with_neon with_neon_includes @@ -946,6 +934,7 @@ with_systemdsystemunitdir with_hotplug_dir with_udev_dir +with_devd_dir ' ac_precious_vars='build_alias host_alias @@ -1505,7 +1494,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures nut 2.7.1 to adapt to many kinds of systems. +\`configure' configures nut 2.7.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1576,7 +1565,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of nut 2.7.1:";; + short | recursive ) echo "Configuration of nut 2.7.2:";; esac cat <<\_ACEOF @@ -1611,17 +1600,6 @@ [--with-usb-includes=CFLAGS] include flags for the libusb library [--with-usb-libs=LIBS] linker flags for the libusb library - --with-hal build and install HAL support (no) - [--with-hal-includes=CFLAGS] - include flags for the HAL library - [--with-hal-libs=LIBS] linker flags for the HAL library - [--with-hal-user=USER] addons run as user - [--with-hal-device-match-key=KEY] - device match key - [--with-hal-callouts-path=PATH] - installation path for callouts - [--with-hal-fdi-path=PATH] - installation path for device information files --with-snmp build and install SNMP drivers (auto) --with-neon build and install neon based XML/HTTP driver (auto) [--with-neon-includes=CFLAGS] @@ -1692,6 +1670,8 @@ Directory for systemd service files (auto) --with-hotplug-dir=PATH where to install hotplug rules (/etc/hotplug) --with-udev-dir=PATH where to install udev rules (/lib/udev or /etc/udev) + --with-devd-dir=PATH where to install devd.conf file (/usr/local/etc/devd + or /etc/devd) Some influential environment variables: CC C compiler command @@ -1781,7 +1761,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -nut configure 2.7.1 +nut configure 2.7.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2367,7 +2347,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by nut $as_me 2.7.1, which was +It was created by nut $as_me 2.7.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3438,7 +3418,7 @@ # Define the identity of the package. PACKAGE='nut' - VERSION='2.7.1' + VERSION='2.7.2' cat >>confdefs.h <<_ACEOF @@ -4992,6 +4972,14 @@ fi fi +devddir='/usr/local/etc/devd' +if test ! -d "${devddir}"; then + devddir='/etc/devd' + if test ! -d "${devddir}"; then + devddir='' + fi +fi + RUN_AS_USER="nobody" RUN_AS_GROUP="nobody" PIDPATH="/var/run" @@ -8076,277 +8064,6 @@ fi -# Check whether --with-hal was given. -if test "${with_hal+set}" = set; then : - withval=$with_hal; nut_with_hal="${withval}" -else - nut_with_hal="no" - -fi - - - -if test -z "${nut_have_libhal_seen}"; then - nut_have_libhal_seen=yes - - CFLAGS_ORIG="${CFLAGS}" - LIBS_ORIG="${LIBS}" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhal version via pkg-config (0.5.8 minimum required)" >&5 -$as_echo_n "checking for libhal version via pkg-config (0.5.8 minimum required)... " >&6; } - HAL_VERSION="`pkg-config --silence-errors --modversion hal 2>/dev/null`" - if test "$?" != "0" -o -z "${HAL_VERSION}"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none found" >&5 -$as_echo "none found" >&6; } - elif pkg-config --silence-errors --atleast-version=0.5.8 hal 2>/dev/null; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${HAL_VERSION} found" >&5 -$as_echo "${HAL_VERSION} found" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ${HAL_VERSION} is too old" >&5 -$as_echo "$as_me: WARNING: ${HAL_VERSION} is too old" >&2;} - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhal cflags" >&5 -$as_echo_n "checking for libhal cflags... " >&6; } - -# Check whether --with-hal-includes was given. -if test "${with_hal_includes+set}" = set; then : - withval=$with_hal_includes; - case "${withval}" in - yes|no) - as_fn_error $? "invalid option --with(out)-hal-includes - see docs/configure.txt" "$LINENO" 5 - ;; - *) - CFLAGS="${withval}" - ;; - esac - -else - - CFLAGS="`pkg-config --silence-errors --cflags hal dbus-glib-1 2>/dev/null`" - if test "$?" != "0"; then - CFLAGS="-DDBUS_API_SUBJECT_TO_CHANGE -I/usr/include/hal -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include" - fi - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CFLAGS}" >&5 -$as_echo "${CFLAGS}" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhal ldflags" >&5 -$as_echo_n "checking for libhal ldflags... " >&6; } - -# Check whether --with-hal-libs was given. -if test "${with_hal_libs+set}" = set; then : - withval=$with_hal_libs; - case "${withval}" in - yes|no) - as_fn_error $? "invalid option --with(out)-hal-libs - see docs/configure.txt" "$LINENO" 5 - ;; - *) - LIBS="${withval}" - ;; - esac - -else - - LIBS="`pkg-config --silence-errors --libs hal dbus-glib-1 2>/dev/null`" - if test "$?" != "0"; then - LIBS="-lhal -ldbus-1 -lpthread" - fi - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${LIBS}" >&5 -$as_echo "${LIBS}" >&6; } - - for ac_header in libhal.h -do : - ac_fn_c_check_header_compile "$LINENO" "libhal.h" "ac_cv_header_libhal_h" "$ac_includes_default -" -if test "x$ac_cv_header_libhal_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBHAL_H 1 -_ACEOF - nut_have_libhal=yes -else - nut_have_libhal=no -fi - -done - - for ac_header in glib.h dbus/dbus-glib.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -else - nut_have_libhal=no -fi - -done - - for ac_func in libhal_device_new_changeset -do : - ac_fn_c_check_func "$LINENO" "libhal_device_new_changeset" "ac_cv_func_libhal_device_new_changeset" -if test "x$ac_cv_func_libhal_device_new_changeset" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBHAL_DEVICE_NEW_CHANGESET 1 -_ACEOF - -else - nut_have_libhal=no -fi -done - - - if test "${nut_have_libhal}" = "yes"; then - for ac_func in g_timeout_add_seconds -do : - ac_fn_c_check_func "$LINENO" "g_timeout_add_seconds" "ac_cv_func_g_timeout_add_seconds" -if test "x$ac_cv_func_g_timeout_add_seconds" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_G_TIMEOUT_ADD_SECONDS 1 -_ACEOF - -fi -done - - LIBHAL_CFLAGS="${CFLAGS}" - LIBHAL_LIBS="${LIBS}" - fi - - CFLAGS="${CFLAGS_ORIG}" - LIBS="${LIBS_ORIG}" -fi - - -if test -z "${nut_have_config_libhal_seen}" -a "${nut_have_libhal}" = "yes"; then - nut_have_config_libhal_seen=yes - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhal user" >&5 -$as_echo_n "checking for libhal user... " >&6; } - -# Check whether --with-hal-user was given. -if test "${with_hal_user+set}" = set; then : - withval=$with_hal_user; - case "${withval}" in - yes|no) - as_fn_error $? "invalid option --with(out)-hal-user - see docs/configure.txt" "$LINENO" 5 - ;; - *) - HAL_USER="${withval}" - ;; - esac - -else - - HAL_USER="`pkg-config --silence-errors --variable=haluser hal 2>/dev/null`" - if test "$?" != "0" -o -z "${HAL_USER}"; then - HAL_USER="haldaemon" - fi - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${HAL_USER}" >&5 -$as_echo "${HAL_USER}" >&6; } - -cat >>confdefs.h <<_ACEOF -#define HAL_USER "${HAL_USER}" -_ACEOF - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhal device match key" >&5 -$as_echo_n "checking for libhal device match key... " >&6; } - -# Check whether --with-hal-device-match-key was given. -if test "${with_hal_device_match_key+set}" = set; then : - withval=$with_hal_device_match_key; - case "${withval}" in - yes|no) - as_fn_error $? "invalid option --with(out)-hal-device-match-key - see docs/configure.txt" "$LINENO" 5 - ;; - *) - HAL_DEVICE_MATCH_KEY="${withval}" - ;; - esac - -else - - if pkg-config --silence-errors --atleast-version=0.5.11 hal 2>/dev/null; then - HAL_DEVICE_MATCH_KEY="info.bus" - else - HAL_DEVICE_MATCH_KEY="info.subsystem" - fi - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${HAL_DEVICE_MATCH_KEY}" >&5 -$as_echo "${HAL_DEVICE_MATCH_KEY}" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhal Callouts path" >&5 -$as_echo_n "checking for libhal Callouts path... " >&6; } - -# Check whether --with-hal-callouts-path was given. -if test "${with_hal_callouts_path+set}" = set; then : - withval=$with_hal_callouts_path; - case "${withval}" in - yes|no) - as_fn_error $? "invalid option --with(out)-hal-callouts-path - see docs/configure.txt" "$LINENO" 5 - ;; - *) - HAL_CALLOUTS_PATH="${withval}" - ;; - esac - -else - - HAL_CALLOUTS_PATH="`pkg-config --silence-errors --variable=libexecdir hal 2>/dev/null`" - if test "$?" != "0" -o -z "${HAL_CALLOUTS_PATH}"; then - HAL_CALLOUTS_PATH="${libdir}/hal" - fi - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${HAL_CALLOUTS_PATH}" >&5 -$as_echo "${HAL_CALLOUTS_PATH}" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhal Device Information path" >&5 -$as_echo_n "checking for libhal Device Information path... " >&6; } - -# Check whether --with-hal-fdi-path was given. -if test "${with_hal_fdi_path+set}" = set; then : - withval=$with_hal_fdi_path; - case "${withval}" in - yes|no) - as_fn_error $? "invalid option --with(out)-hal-fdi-path - see docs/configure.txt" "$LINENO" 5 - ;; - *) - HAL_FDI_PATH="${withval}" - ;; - esac - -else - - HAL_FDI_PATH="`pkg-config --silence-errors --variable=hal_fdidir hal 2>/dev/null`" - if test "$?" != "0" -o -z "${HAL_FDI_PATH}"; then - HAL_FDI_PATH="${datarootdir}/hal/fdi/information/20thirdparty" - fi - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${HAL_FDI_PATH}" >&5 -$as_echo "${HAL_FDI_PATH}" >&6; } -fi - - # Check whether --with-snmp was given. if test "${with_snmp+set}" = set; then : withval=$with_snmp; nut_with_snmp="${withval}" @@ -11363,62 +11080,6 @@ -if test "${nut_with_hal}" = "yes" -a "${nut_have_libhal}" != "yes"; then - as_fn_error $? "\"libhal not found, required for HAL support\"" "$LINENO" 5 -fi - -if test "${nut_with_hal}" = "yes" -a "${nut_have_libusb}" != "yes"; then - as_fn_error $? "\"libusb not found, required for HAL support\"" "$LINENO" 5 -fi - -if test "${nut_with_hal}" != "no"; then - if test "${nut_have_libhal}" = "yes" -a "${nut_have_libusb}" = "yes"; then - nut_with_hal="yes" - else - nut_with_hal="no" - fi -fi - - if test "${nut_with_hal}" = "yes"; then - WITH_HAL_TRUE= - WITH_HAL_FALSE='#' -else - WITH_HAL_TRUE='#' - WITH_HAL_FALSE= -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable HAL support" >&5 -$as_echo_n "checking whether to enable HAL support... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${nut_with_hal} " >&5 -$as_echo "${nut_with_hal} " >&6; } - if test -z "${nut_report_feature_flag}"; then - nut_report_feature_flag="1" - ac_clean_files="${ac_clean_files} conf_nut_report_feature" - echo > conf_nut_report_feature - echo "Configuration summary:" >> conf_nut_report_feature - echo "======================" >> conf_nut_report_feature - fi - echo "enable HAL support: ${nut_with_hal} " >> conf_nut_report_feature - - - if test "${nut_with_hal}" = "yes"; then - WITH_HAL_TRUE= - WITH_HAL_FALSE='#' -else - WITH_HAL_TRUE='#' - WITH_HAL_FALSE= -fi - - if test "${nut_with_hal}" = "yes"; then - -cat >>confdefs.h <<_ACEOF -#define WITH_HAL 1 -_ACEOF - - fi - - @@ -11772,8 +11433,8 @@ ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if asciidoc version can build website (minimum required 8.6.3)" >&5 -$as_echo_n "checking if asciidoc version can build website (minimum required 8.6.3)... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if asciidoc version can build manpages (minimum required 8.6.3)" >&5 +$as_echo_n "checking if asciidoc version can build manpages (minimum required 8.6.3)... " >&6; } @@ -11819,8 +11480,8 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if a2x version can build website (minimum required 8.6.3)" >&5 -$as_echo_n "checking if a2x version can build website (minimum required 8.6.3)... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if a2x version can build manpages (minimum required 8.6.3)" >&5 +$as_echo_n "checking if a2x version can build manpages (minimum required 8.6.3)... " >&6; } @@ -22969,6 +22630,50 @@ fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to install FreeBSD devd.conf file" >&5 +$as_echo_n "checking whether to install FreeBSD devd.conf file... " >&6; } + +# Check whether --with-devd-dir was given. +if test "${with_devd_dir+set}" = set; then : + withval=$with_devd_dir; + case "${withval}" in + yes) + if test -z "${devddir}"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "\"devd directory requested but not found\"" "$LINENO" 5 + fi + ;; + auto) + ;; + no) + devddir="" + ;; + *) + devddir="${withval}" + ;; + esac + +fi + +if test -n "${devddir}"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: using ${devddir}" >&5 +$as_echo "using ${devddir}" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + if test -n "${devddir}"; then + WITH_DEVD_TRUE= + WITH_DEVD_FALSE='#' +else + WITH_DEVD_TRUE='#' + WITH_DEVD_FALSE= +fi + + + for ac_prog in asciidoc do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -23215,12 +22920,7 @@ - - - - - -ac_config_files="$ac_config_files clients/Makefile common/Makefile conf/Makefile conf/upsmon.conf.sample conf/upssched.conf.sample data/html/header.html data/html/Makefile data/Makefile data/driver.list docs/Makefile docs/man/Makefile docs/website/Makefile drivers/Makefile include/Makefile lib/libupsclient-config lib/libupsclient.pc lib/libnutclient.pc lib/libnutscan.pc lib/Makefile scripts/augeas/Makefile scripts/augeas/nutnutconf.aug scripts/augeas/nutupsconf.aug scripts/augeas/nutupsdconf.aug scripts/augeas/nutupsdusers.aug scripts/augeas/nutupsmonconf.aug scripts/augeas/nutupsschedconf.aug scripts/augeas/nuthostsconf.aug scripts/augeas/nutupssetconf.aug scripts/avahi/nut.service scripts/hal/Makefile scripts/hal/ups-nut-device.fdi scripts/hotplug/Makefile scripts/hotplug/libhidups scripts/HP-UX/nut.psf scripts/HP-UX/postinstall scripts/python/Makefile scripts/systemd/Makefile scripts/systemd/nut-driver.service scripts/systemd/nut-monitor.service scripts/systemd/nut-server.service scripts/systemd/nutshutdown scripts/Solaris/Makefile scripts/Solaris/pkginfo scripts/Solaris/postinstall scripts/Solaris/preremove scripts/Solaris/nut scripts/udev/Makefile scripts/udev/nut-ipmipsu.rules scripts/udev/nut-usbups.rules scripts/ufw/nut.ufw.profile scripts/Makefile server/Makefile tools/Makefile tools/nut-scanner/Makefile tests/Makefile Makefile" +ac_config_files="$ac_config_files clients/Makefile common/Makefile conf/Makefile conf/upsmon.conf.sample conf/upssched.conf.sample data/html/header.html data/html/Makefile data/Makefile data/driver.list docs/Makefile docs/man/Makefile drivers/Makefile include/Makefile lib/libupsclient-config lib/libupsclient.pc lib/libnutclient.pc lib/libnutscan.pc lib/Makefile scripts/augeas/Makefile scripts/augeas/nutnutconf.aug scripts/augeas/nutupsconf.aug scripts/augeas/nutupsdconf.aug scripts/augeas/nutupsdusers.aug scripts/augeas/nutupsmonconf.aug scripts/augeas/nutupsschedconf.aug scripts/augeas/nuthostsconf.aug scripts/augeas/nutupssetconf.aug scripts/avahi/nut.service scripts/devd/Makefile scripts/devd/nut-usb.conf scripts/hotplug/Makefile scripts/hotplug/libhidups scripts/HP-UX/nut.psf scripts/HP-UX/postinstall scripts/python/Makefile scripts/systemd/Makefile scripts/systemd/nut-driver.service scripts/systemd/nut-monitor.service scripts/systemd/nut-server.service scripts/systemd/nutshutdown scripts/Solaris/Makefile scripts/Solaris/pkginfo scripts/Solaris/postinstall scripts/Solaris/preremove scripts/Solaris/nut scripts/udev/Makefile scripts/udev/nut-ipmipsu.rules scripts/udev/nut-usbups.rules scripts/ufw/nut.ufw.profile scripts/Makefile server/Makefile tools/Makefile tools/nut-scanner/Makefile tests/Makefile Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -23424,14 +23124,6 @@ as_fn_error $? "conditional \"WITH_CGI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${WITH_HAL_TRUE}" && test -z "${WITH_HAL_FALSE}"; then - as_fn_error $? "conditional \"WITH_HAL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${WITH_HAL_TRUE}" && test -z "${WITH_HAL_FALSE}"; then - as_fn_error $? "conditional \"WITH_HAL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${WITH_ASCIIDOC_TRUE}" && test -z "${WITH_ASCIIDOC_FALSE}"; then as_fn_error $? "conditional \"WITH_ASCIIDOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -23468,6 +23160,10 @@ as_fn_error $? "conditional \"WITH_UDEV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${WITH_DEVD_TRUE}" && test -z "${WITH_DEVD_FALSE}"; then + as_fn_error $? "conditional \"WITH_DEVD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${MANUALUPDATE_TRUE}" && test -z "${MANUALUPDATE_FALSE}"; then as_fn_error $? "conditional \"MANUALUPDATE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -23873,7 +23569,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by nut $as_me 2.7.1, which was +This file was extended by nut $as_me 2.7.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23939,7 +23635,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -nut config.status 2.7.1 +nut config.status 2.7.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -24457,7 +24153,6 @@ "data/driver.list") CONFIG_FILES="$CONFIG_FILES data/driver.list" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "docs/man/Makefile") CONFIG_FILES="$CONFIG_FILES docs/man/Makefile" ;; - "docs/website/Makefile") CONFIG_FILES="$CONFIG_FILES docs/website/Makefile" ;; "drivers/Makefile") CONFIG_FILES="$CONFIG_FILES drivers/Makefile" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "lib/libupsclient-config") CONFIG_FILES="$CONFIG_FILES lib/libupsclient-config" ;; @@ -24475,8 +24170,8 @@ "scripts/augeas/nuthostsconf.aug") CONFIG_FILES="$CONFIG_FILES scripts/augeas/nuthostsconf.aug" ;; "scripts/augeas/nutupssetconf.aug") CONFIG_FILES="$CONFIG_FILES scripts/augeas/nutupssetconf.aug" ;; "scripts/avahi/nut.service") CONFIG_FILES="$CONFIG_FILES scripts/avahi/nut.service" ;; - "scripts/hal/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/hal/Makefile" ;; - "scripts/hal/ups-nut-device.fdi") CONFIG_FILES="$CONFIG_FILES scripts/hal/ups-nut-device.fdi" ;; + "scripts/devd/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/devd/Makefile" ;; + "scripts/devd/nut-usb.conf") CONFIG_FILES="$CONFIG_FILES scripts/devd/nut-usb.conf" ;; "scripts/hotplug/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/hotplug/Makefile" ;; "scripts/hotplug/libhidups") CONFIG_FILES="$CONFIG_FILES scripts/hotplug/libhidups" ;; "scripts/HP-UX/nut.psf") CONFIG_FILES="$CONFIG_FILES scripts/HP-UX/nut.psf" ;; diff -Nru nut-2.7.1/configure.ac nut-2.7.2/configure.ac --- nut-2.7.1/configure.ac 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/configure.ac 2014-04-17 22:06:15.000000000 +0200 @@ -0,0 +1,1251 @@ +dnl +------------------------------------------------------------------+ +dnl | Network UPS Tools: configure.in | +dnl +------------------------------------------------------------------+ + +dnl NUT version number is defined here, with a Git suffix in include/nut_version.h +AC_INIT(nut, 2.7.2) +AC_CONFIG_SRCDIR(server/upsd.c) +AC_CONFIG_MACRO_DIR([m4]) +echo "Network UPS Tools version ${PACKAGE_VERSION}" +AC_CANONICAL_SYSTEM +NUT_CHECK_OS +AC_CONFIG_HEADER(include/config.h) +AC_PREFIX_DEFAULT(/usr/local/ups) +AM_INIT_AUTOMAKE + +dnl we need Autoconf 2.60 or better to enable features of Posix that are extensions to C +AC_MSG_CHECKING(for autoconf macro to enable system extensions) +m4_version_prereq(2.60, [ + AC_MSG_RESULT(yes) + AC_USE_SYSTEM_EXTENSIONS +], [ + AC_MSG_RESULT(no) +]) + +dnl Use "./configure --enable-maintainer-mode" to keep Makefile.in and Makefile +dnl in sync after SVN updates. +AM_MAINTAINER_MODE + +dnl PKG_PROG_PKG_CONFIG + +dnl Various version related processing +dnl ---------------------------------- + +dnl # the following is commented out, because the UPS_VERSION macro now +dnl # resides in include/nut_version.h, which is generated by Makefile.am, +dnl # rather than in include/config.h, which is generated by configure. The +dnl # reason is that the SVN revision should be computed at compile time, +dnl # not configure time. +dnl AC_DEFINE_UNQUOTED(UPS_VERSION, "${PACKAGE_VERSION}", [NUT version]) + +dnl However, automatically define the tree version (mostly for AC_SUBST) +TREE_VERSION="`echo ${PACKAGE_VERSION} | awk '{ print substr($0,1,3) }'`" +AC_DEFINE_UNQUOTED(TREE_VERSION, "${TREE_VERSION}", [NUT tree version]) + +NUT_NETVERSION="1.2" +AC_DEFINE_UNQUOTED(NUT_NETVERSION, "${NUT_NETVERSION}", [NUT network protocol version]) + + +dnl Fix this early so we can expand with eval later +test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" +test "${exec_prefix}" = "NONE" && exec_prefix='${prefix}' + +CFLAGS=${CFLAGS-"-O"} + +dnl NOTE: for definition of NUT_* autoconf macros, see m4/ directory +dnl and docs/macros.txt + +dnl +------------------------------------------------------------------+ +dnl | default values for things later on (can be overridden) | + +STATEPATH="/var/state/ups" + +cgiexecdir='${exec_prefix}/cgi-bin' +driverexecdir='${exec_prefix}/bin' +htmldir='${prefix}/html' +pkgconfigdir='${libdir}/pkgconfig' +hotplugdir='/etc/hotplug' +if test ! -d "${hotplugdir}"; then + hotplugdir='' +fi +udevdir='/lib/udev' +if test ! -d "${udevdir}"; then + udevdir='/etc/udev' + if test ! -d "${udevdir}"; then + udevdir='' + fi +fi + +devddir='/usr/local/etc/devd' +if test ! -d "${devddir}"; then + devddir='/etc/devd' + if test ! -d "${devddir}"; then + devddir='' + fi +fi + +RUN_AS_USER="nobody" +RUN_AS_GROUP="nobody" +PIDPATH="/var/run" + +dnl Define directory where LIBOBJS replacement functions are +AC_CONFIG_LIBOBJ_DIR([common]) + +dnl +------------------------------------------------------------------- + +AC_PROG_CC +dnl Needed for per-target flags +AM_PROG_CC_C_O +AC_PROG_CPP +AC_PROG_CXX +AC_PROG_INSTALL +AC_PROG_EGREP +AC_PATH_PROG(AR, ar) +AC_CHECK_TOOL(RANLIB, ranlib, :) +dnl Postpone call to AC_PROG_LIBTOOL to allow disabling static lib +AC_C_BIGENDIAN +AC_C_INLINE +AC_C_FLEXIBLE_ARRAY_MEMBER +AC_C_VARARRAYS +AC_CHECK_FUNCS(flock lockf fcvt fcvtl) +AC_CHECK_FUNCS(cfsetispeed tcsendbreak) +AC_CHECK_FUNCS(seteuid setsid getpassphrase) +AC_CHECK_FUNCS(on_exit strptime setlogmask) +AC_CHECK_DECLS(LOG_UPTO, [], [], [#include ]) + +dnl the following may add stuff to LIBOBJS (is this still needed?) +AC_CHECK_FUNCS(vsnprintf snprintf, [], [ + AC_LIBOBJ(snprintf) + AC_TYPE_LONG_DOUBLE + AC_TYPE_LONG_LONG_INT +]) + +AC_REPLACE_FUNCS(setenv strerror atexit) + + +dnl +dnl Tests for CppUnit availability and usability +dnl Using CppUnit implies C++ support! +dnl Theoretically, libcppunit-dev will pull up to g++, through libstdc++... +dnl AM_PATH_CPPUNIT(1.9.6) + +PKG_CHECK_MODULES(CPPUNIT, cppunit, have_cppunit=yes, have_cppunit=no) +if test "${have_cppunit}" != "yes" ; then + AC_MSG_WARN([libcppunit not found.]) +fi +AM_CONDITIONAL(HAVE_CPPUNIT, test "${have_cppunit}" = "yes") + +dnl +dnl Only use these when compiling with gcc +dnl +if ( test "${GCC}" = "yes" ) +then + CFLAGS="${CFLAGS} -Wall -Wsign-compare" +fi + +case ${target_os} in + solaris2* ) + dnl On Solaris, this allows errno to use thread local storage + CFLAGS="${CFLAGS} -D_REENTRANT" + ;; + aix* ) + dnl On AIX, this allows errno to use thread local storage + CFLAGS="${CFLAGS} -D_REENTRANT" + ;; + hpux11* ) + dnl It seems like the thread safe string functions will not be included + dnl on 64 bit HP-UX unless we define _REENTRANT + CFLAGS="${CFLAGS} -D_REENTRANT" + ;; +esac + +dnl optind handling: +dnl need to check if unistd.h is enough, else try getopt.h, else need decls +AC_CHECK_DECLS(optind, [], [ + AC_CHECK_HEADERS(getopt.h, [ + AC_DEFINE(NEED_GETOPT_H, 1, [Define if getopt.h is needed]) + ], [ + AC_DEFINE(NEED_GETOPT_DECLS, 1, [Define to use explicit getopt declarations]) + ], [AC_INCLUDES_DEFAULT]) +], [AC_INCLUDES_DEFAULT]) + +dnl do a 2nd check to ensure inclusion of getopt.h, in case optind is known +AC_CHECK_HEADERS(getopt.h, [ + AC_DEFINE(NEED_GETOPT_H, 1, [Define if getopt.h is needed]) +], [ + AC_DEFINE(NEED_GETOPT_DECLS, 1, [Define to use explicit getopt declarations]) +], [AC_INCLUDES_DEFAULT]) + +dnl also check for getopt_long +AC_CHECK_FUNCS(getopt_long) + +dnl FreeBSD serial locking compatibility - look for uu_lock in libutil.h +AC_CHECK_DECLS(uu_lock, [ + AC_DEFINE(HAVE_UU_LOCK, 1, [Use uu_lock for locking (FreeBSD)]) + SERLIBS="-lutil" + dnl put in some better defaults for FreeBSD + RUN_AS_USER="uucp" +], [ + SERLIBS="" +], [ +#include +#include +]) + +AC_CHECK_DECLS(__func__, [], [ + AC_CHECK_DECLS(__FUNCTION__, [ + AC_DEFINE(__func__, __FUNCTION__, [Replace missing __func__ declaration]) + ], [ + AC_DEFINE(__func__, __LINE__, [Replace missing __func__ declaration]) + ], [AC_INCLUDES_DEFAULT]) +], [AC_INCLUDES_DEFAULT]) + +dnl Solaris compatibility - check for -lnsl and -lsocket +AC_SEARCH_LIBS(gethostbyname, nsl) +AC_SEARCH_LIBS(connect, socket) + +AC_HEADER_TIME +AC_CHECK_HEADERS(sys/modem.h stdarg.h varargs.h sys/termios.h sys/time.h, [], [], [AC_INCLUDES_DEFAULT]) + +# pthread related checks +AC_SEARCH_LIBS([pthread_create], [pthread], + [AC_DEFINE(HAVE_PTHREAD, 1, [Define to enable pthread support code])], + []) + +dnl ---------------------------------------------------------------------- +dnl Check for types and define possible replacements +NUT_TYPE_SOCKLEN_T + +dnl ---------------------------------------------------------------------- +dnl check for --with-all (or --without-all, or --with-all=auto) flag + +AC_MSG_CHECKING(for --with-all) +AC_ARG_WITH(all, + AS_HELP_STRING([--with-all], [enable serial, usb, snmp, neon, ipmi, powerman, cgi, dev, avahi]), +[ + if test -n "${withval}"; then + dnl Note: we allow "no" as a positive value, because + dnl this is what the user expects from --without-all + if test -z "${with_serial}"; then with_serial="${withval}"; fi + if test -z "${with_usb}"; then with_usb="${withval}"; fi + if test -z "${with_snmp}"; then with_snmp="${withval}"; fi + if test -z "${with_neon}"; then with_neon="${withval}"; fi + if test -z "${with_powerman}"; then with_powerman="${withval}"; fi + if test -z "${with_cgi}"; then with_cgi="${withval}"; fi + if test -z "${with_dev}"; then with_dev="${withval}"; fi + if test -z "${with_avahi}"; then with_avahi="${withval}"; fi + if test -z "${with_ipmi}"; then with_ipmi="${withval}"; fi + AC_MSG_RESULT("${withval}") + else + AC_MSG_RESULT(not given) + fi +], [ + AC_MSG_RESULT(not given) +]) + +dnl ---------------------------------------------------------------------- +dnl declare a number of --with-FEATURE options. Do this early, so that +dnl they are listed near the top by "./configure --help" + +NUT_ARG_WITH([dev], [build and install the development files], [no]) +NUT_ARG_WITH([serial], [build and install serial drivers], [yes]) +NUT_ARG_WITH([usb], [build and install USB drivers], [auto]) +NUT_ARG_WITH([doc], [build and install documentation], [no]) +NUT_ARG_WITH([avahi], [build and install Avahi support], [auto]) + +dnl ---------------------------------------------------------------------- +dnl Check for presence and compiler flags of various libraries + +dnl These checks are performed unconditionally, even if the corresponding +dnl --with-* options are not given. This is because we cannot predict +dnl what will be in the --with-drivers argument. + +NUT_CHECK_LIBNETSNMP +NUT_CHECK_LIBUSB +NUT_ARG_WITH([snmp], [build and install SNMP drivers], [auto]) +NUT_CHECK_LIBNETSNMP +NUT_ARG_WITH([neon], [build and install neon based XML/HTTP driver], [auto]) +NUT_CHECK_LIBNEON +NUT_ARG_WITH([powerman], [build and install Powerman PDU client driver], [auto]) +NUT_CHECK_LIBPOWERMAN +NUT_CHECK_LIBAVAHI + +dnl ---------------------------------------------------------------------- +dnl additional USB-related checks + +dnl Solaris 10/11 USB handling (need librt and libusb runtime path) +dnl HPUX, since v11, needs an explicit activation of pthreads +case ${target_os} in + solaris2.1* ) + echo Checking for Solaris 10 / 11 specific configuration for usb drivers + AC_SEARCH_LIBS(nanosleep, rt) + LIBUSB_LIBS="-R/usr/sfw/lib ${LIBUSB_LIBS}" + dnl FIXME: Sun's libusb doesn't support timeout (so blocks notification) + dnl and need to call libusb close upon reconnection + AC_DEFINE(SUN_LIBUSB, 1, [Define to 1 for Sun version of the libusb.]) + SUN_LIBUSB=1 + ;; + hpux11*) + CFLAGS="${CFLAGS} -lpthread" +esac + + +dnl ---------------------------------------------------------------------- +dnl checks related to --with-serial + +dnl ${nut_with_serial}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_serial}" != "no"; then + nut_with_serial="yes" +fi + +NUT_REPORT_FEATURE([build serial drivers], [${nut_with_serial}], [], + [WITH_SERIAL], [Define to enable serial support]) + +dnl ---------------------------------------------------------------------- +dnl checks related to --with-usb + +dnl ${nut_with_usb}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_usb}" = "yes" -a "${nut_have_libusb}" != "yes"; then + AC_MSG_ERROR(["USB drivers requested, but libusb not found."]) +fi + +if test "${nut_with_usb}" != "no"; then + nut_with_usb="${nut_have_libusb}" +fi + +NUT_REPORT_FEATURE([build USB drivers], [${nut_with_usb}], [], + [WITH_USB], [Define to enable USB support]) + +dnl ---------------------------------------------------------------------- +dnl checks related to --with-snmp + +dnl ${nut_with_snmp}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_snmp}" = "yes" -a "${nut_have_libnetsnmp}" != "yes"; then + AC_MSG_ERROR(["Net-SNMP libraries not found, required for SNMP drivers"]) +fi + +if test "${nut_with_snmp}" != "no"; then + nut_with_snmp="${nut_have_libnetsnmp}" +fi + +NUT_REPORT_FEATURE([build SNMP drivers], [${nut_with_snmp}], [], + [WITH_SNMP], [Define to enable SNMP support]) + +dnl ---------------------------------------------------------------------- +dnl checks related to --with-neon + +dnl ${nut_with_neon}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_neon}" = "yes" -a "${nut_have_neon}" != "yes"; then + AC_MSG_ERROR(["neon libraries not found, required for neon based XML/HTTP driver"]) +fi + +if test "${nut_with_neon}" != "no"; then + nut_with_neon="${nut_have_neon}" +fi + +NUT_REPORT_FEATURE([build neon based XML driver], [${nut_with_neon}], [], + [WITH_NEON], [Define to enable Neon HTTP support]) + +dnl ---------------------------------------------------------------------- +dnl checks related to --with-avahi + +dnl ${nut_with_avahi}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_avahi}" = "yes" -a "${nut_have_avahi}" != "yes"; then + AC_MSG_ERROR(["avahi libraries not found"]) +fi + +if test "${nut_with_avahi}" != "no"; then + nut_with_avahi="${nut_have_avahi}" +fi + +NUT_REPORT_FEATURE([enable Avahi support], [${nut_with_avahi}], [], + [WITH_AVAHI], [Define to enable Avahi support]) + +dnl ---------------------------------------------------------------------- + +dnl checks related to --with-powerman + +dnl ${nut_with_powerman}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_powerman}" = "yes" -a "${nut_have_libpowerman}" != "yes"; then + AC_MSG_ERROR(["Powerman client libraries not found, required for Powerman PDU client driver"]) +fi + +if test "${nut_with_powerman}" != "no"; then + nut_with_powerman="${nut_have_libpowerman}" +fi + +NUT_REPORT_FEATURE([build Powerman PDU client driver], [${nut_with_powerman}], [], + [WITH_LIBPOWERMAN], [Define to enable Powerman PDU support]) + +dnl ---------------------------------------------------------------------- +dnl Check for with-ipmi, and --with-freeipmi (or --with-openipmi) +dnl Only one can be enabled at a time, with a preference for FreeIPMI +dnl if both are available (since it is the only one supported ATM!!) + +nut_ipmi_lib="" + +NUT_ARG_WITH([ipmi], [build and install IPMI PSU driver], [auto]) +NUT_ARG_WITH([freeipmi], [enable IPMI support using FreeIPMI], [auto]) +dnl NUT_ARG_WITH([openipmi], [enable IPMI support using OpenIPMI], [auto]) + +dnl ${nut_with_ipmi}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_ipmi}" != "no"; then + dnl check if FreeIPMI (and maybe later OpenIPMI) was explicitly requested + if test "${nut_with_freeipmi}" = "yes"; then + NUT_CHECK_LIBFREEIPMI + if test "${nut_have_freeipmi}" != "yes"; then + AC_MSG_ERROR(["GNU FreeIPMI not found, required for IPMI support"]) + fi + dnl Implies --with-ipmi + nut_with_ipmi="yes" + dnl elif test "${nut_with_openipmi}" = "yes"; then + dnl AC_MSG_ERROR(["OpenIPMI is not yet supported"]) + dnl NUT_CHECK_LIBOPENIPMI + dnl if test "${nut_have_openipmi}" != "yes"; then + dnl AC_MSG_ERROR(["OpenIPMI not found, required for IPMI support"]) + dnl fi + dnl Implies --with-ipmi + dnl nut_with_ipmi="yes" + dnl AC_DEFINE(WITH_OPENIPMI, 1, [Define to enable IPMI support using OpenIPMI]) + else + dnl Prefer FreeIPMI over OpenIPMI otherwise + NUT_CHECK_LIBFREEIPMI + if test "${nut_have_freeipmi}" != "yes"; then + if test "${nut_with_ipmi}" = "yes"; then + AC_MSG_ERROR(["FreeIPMI not found, required for IPMI support"]) + fi + nut_with_ipmi="no" + dnl NUT_CHECK_OPENIPMI + dnl if test "${nut_have_openipmi}" != "yes"; then + dnl if test "${nut_with_ipmi}" = "yes"; then + dnl AC_MSG_ERROR(["GNU FreeIPMI and OpenIPMI neither found, required for IPMI support"]) + dnl fi + dnl nut_with_ipmi="no" + dnl else + dnl Implies --with-ipmi + dnl nut_with_ipmi="yes" + dnl nut_with_openipmi="yes" + dnl fi + else + dnl Implies --with-ipmi + nut_with_ipmi="yes" + nut_with_freeipmi="yes" + AC_DEFINE(WITH_FREEIPMI, 1, [Define to enable IPMI support using FreeIPMI]) + fi + fi +fi + + +NUT_REPORT_FEATURE([build IPMI driver], [${nut_with_ipmi}], [${nut_ipmi_lib}], + [WITH_IPMI], [Define to enable IPMI support]) + +dnl Note: we still have to manually enable complementary AC_DEFINEs (see above) +dnl and AM_CONDITIONALs (see below)... +AM_CONDITIONAL(WITH_FREEIPMI, test "${nut_with_freeipmi}" = "yes") +dnl AM_CONDITIONAL(WITH_OPENIPMI, test "${nut_with_openipmi}" = "yes") + + +dnl ---------------------------------------------------------------------- +dnl The Mac OS X meta-driver looks at IOKit Power Sources keys managed by +dnl the internal USB UPS driver. +dnl +dnl FIXME: be slightly more clever here: + +NUT_ARG_WITH([macosx_ups], [build and install Mac OS X Power Sources meta-driver], [auto]) +if test "${nut_with_macosx_ups}" != no; then + if test -d /System/Library/Frameworks/IOKit.framework/ ; then + nut_with_macosx_ups="yes" + else + nut_with_macosx_ups="no" + fi +fi + +NUT_REPORT_FEATURE([build Mac OS X meta-driver], + [${nut_with_macosx_ups}], [${nut_macosx_ups_lib}], + [WITH_MACOSX], [Define to enable Mac OS X meta-driver]) + +dnl ---------------------------------------------------------------------- +dnl Check for with-ssl, and --with-nss or --with-openssl +dnl Only one can be enabled at a time, with a preference for OpenSSL +dnl if both are available + +nut_ssl_lib="" + +NUT_ARG_WITH([ssl], [enable SSL support (either NSS or OpenSSL)], [auto]) +NUT_ARG_WITH([nss], [enable SSL support using Mozilla NSS], [auto]) +NUT_ARG_WITH([openssl], [enable SSL support using OpenSSL], [auto]) + +dnl ${nut_with_ssl}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_ssl}" != "no"; then + dnl check if either NSS or OpenSSL was explicitly requested + if test "${nut_with_nss}" = "yes"; then + NUT_CHECK_LIBNSS + if test "${nut_have_libnss}" != "yes"; then + AC_MSG_ERROR(["Mozilla NSS not found, required for SSL support"]) + fi + elif test "${nut_with_openssl}" = "yes"; then + NUT_CHECK_LIBOPENSSL + if test "${nut_have_openssl}" != "yes"; then + AC_MSG_ERROR(["OpenSSL not found, required for SSL support"]) + fi + else + dnl Prefer OpenSSL over NSS otherwise + NUT_CHECK_LIBOPENSSL + if test "${nut_have_openssl}" != "yes"; then + NUT_CHECK_LIBNSS + if test "${nut_have_libnss}" != "yes"; then + dnl Only abort if SSL has been explicitly requested by the user + if test "${nut_with_ssl}" = "yes"; then + AC_MSG_ERROR(["Mozilla NSS and OpenSSL neither found, but are needed for the requested SSL support"]) + else + AC_MSG_WARN(["Mozilla NSS and OpenSSL neither found, required for SSL support"]) + fi + nut_with_ssl="no" + else + nut_with_nss="${nut_have_libnss}" + fi + else + nut_with_openssl="${nut_have_openssl}" + fi + fi +fi + +AM_CONDITIONAL(WITH_NSS, test "${nut_with_nss}" = "yes") +AM_CONDITIONAL(WITH_OPENSSL, test "${nut_with_openssl}" = "yes") + +NUT_REPORT_FEATURE([enable SSL support], [${nut_with_ssl}], [${nut_ssl_lib}], + [WITH_SSL], [Define to enable SSL]) + +dnl ---------------------------------------------------------------------- +dnl Check for --with-wrap + +NUT_ARG_WITH([wrap], [enable libwrap (tcp-wrappers) support], [auto]) + +dnl ${nut_with_wrap}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_wrap}" != "no"; then + dnl check for libwrap compiler flags + NUT_CHECK_LIBWRAP +fi + +if test "${nut_with_wrap}" = "yes" -a "${nut_have_libwrap}" != "yes"; then + AC_MSG_ERROR(["libwrap not found"]) +fi + +if test "${nut_with_wrap}" != "no"; then + nut_with_wrap="${nut_have_libwrap}" +fi + +NUT_REPORT_FEATURE([enable libwrap (tcp-wrappers) support], [${nut_with_wrap}], [], + [WITH_WRAP], [Define to enable libwrap (tcp-wrappers) support]) + + +dnl ---------------------------------------------------------------------- +dnl Check for --with-libltdl + +NUT_ARG_WITH([libltdl], [enable libltdl (Libtool dlopen abstraction) support], [auto]) + +dnl ${nut_with_libltdl}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_libltdl}" != "no"; then + dnl check for libltdl compiler flags + NUT_CHECK_LIBLTDL +fi + +if test "${nut_with_libltdl}" = "yes" -a "${nut_have_libltdl}" != "yes"; then + AC_MSG_ERROR(["libltdl not found"]) +fi + +if test "${nut_with_libltdl}" != "no"; then + nut_with_libltdl="${nut_have_libltdl}" +fi + +NUT_REPORT_FEATURE([enable libltdl (Libtool dlopen abstraction) support], [${nut_with_libltdl}], [], + [WITH_LIBLTDL], [Define to enable libltdl (Libtool dlopen abstraction) support]) + +dnl Explicitely report if we are building nut-scanner or not +dnl since it requires libltdl +NUT_REPORT([build nut-scanner], [${nut_with_libltdl}]) + +dnl ---------------------------------------------------------------------- +dnl checks related to --with-cgi + +NUT_ARG_WITH([cgi], [build and install the CGI programs], [no]) + +dnl ${nut_with_cgi}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_cgi}" != "no"; then + dnl check for libgd compiler flags + NUT_CHECK_LIBGD +fi + +if test "${nut_with_cgi}" = "yes" -a "${nut_have_libgd}" != "yes"; then + AC_MSG_ERROR([libgd not found, required for CGI build]) +fi + +if test "${nut_with_cgi}" != "no"; then + nut_with_cgi="${nut_have_libgd}" +fi + +NUT_REPORT_FEATURE([build CGI programs], [${nut_with_cgi}], [], + [WITH_CGI], [Define to enable CGI (HTTP) support]) + + +dnl ---------------------------------------------------------------------- + +dnl checks related to --with-doc + +dnl Always check for AsciiDoc prerequisites, since even if --with-doc +dnl is set to 'no', we may still want to build some doc targets manually +NUT_CHECK_ASCIIDOC + +case "${nut_with_doc}" in + yes|all|auto) + nut_doc_build_list="html-single html-chunked pdf" + ;; + no) + nut_doc_build_list="" + ;; + *) + nut_doc_build_list="`echo ${nut_with_doc} | sed 's/,/ /g'`" + ;; +esac + +for nut_doc_build_target in ${nut_doc_build_list}; do + case "${nut_doc_build_target}" in + html-single) + AC_MSG_CHECKING([if asciidoc version can build ${nut_doc_build_target}]) + AX_COMPARE_VERSION([${ASCIIDOC_VERSION}], [ge], [8.6.3], [ + AC_MSG_RESULT(yes) + DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target}" + ], [ + AC_MSG_RESULT(no) + DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} ${nut_doc_build_target}" + ]) + ;; + + html-chunked) + AC_MSG_CHECKING([if a2x version can build ${nut_doc_build_target}]) + AX_COMPARE_VERSION([${A2X_VERSION}], [ge], [8.6.3], [ + AC_MSG_RESULT(yes) + DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target}" + ], [ + AC_MSG_RESULT(no) + DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} ${nut_doc_build_target}" + ]) + ;; + + pdf) + AC_MSG_CHECKING([if dblatex version can build ${nut_doc_build_target}]) + AX_COMPARE_VERSION([${DBLATEX_VERSION}], [ge], [0.2.5], [ + AC_MSG_RESULT(yes) + DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target}" + ], [ + AC_MSG_RESULT(no) + DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} ${nut_doc_build_target}" + ]) + ;; + esac +done + +case "${nut_with_doc}" in +auto) + if test -n "${DOC_BUILD_LIST}"; then + nut_with_doc="yes" + else + nut_with_doc="no" + fi + ;; +no) + ;; +*) + if test -z "${DOC_NOBUILD_LIST}"; then + nut_with_doc="yes" + else + AC_MSG_ERROR(["Unable to build ${DOC_NOBUILD_LIST} documentation"]) + fi + ;; +esac + +AC_MSG_CHECKING([if asciidoc version can build manpages (minimum required 8.6.3)]) +AX_COMPARE_VERSION([${ASCIIDOC_VERSION}], [ge], [8.6.3], [ + AC_MSG_RESULT(yes) + nut_have_asciidoc="yes" +], [ + AC_MSG_RESULT(no) + nut_have_asciidoc="no" +]) + +AC_MSG_CHECKING([if a2x version can build manpages (minimum required 8.6.3)]) +AX_COMPARE_VERSION([${A2X_VERSION}], [ge], [8.6.3], [ + AC_MSG_RESULT(yes) +], [ + AC_MSG_RESULT(no) + nut_have_asciidoc="no" +]) + +NUT_REPORT_FEATURE([build and install documentation], [${nut_with_doc}], [], + [WITH_ASCIIDOC], [Define to enable Asciidoc support]) + +dnl Notes: we also keep HAVE_ASCIIDOC for implicit targets, such as manpage +dnl building +AM_CONDITIONAL([HAVE_ASCIIDOC], [test "${nut_have_asciidoc}" = "yes"]) + +if test "${nut_with_doc}" = "yes"; then + NUT_REPORT([only build specific documentation format], [${DOC_BUILD_LIST}]) +fi + +dnl ---------------------------------------------------------------------- +dnl checks related to --with-dev + +dnl We only init libtool there to allow AC_DISABLE_STATIC +AC_PROG_LIBTOOL + +dnl ${nut_with_dev}: any value except "yes" or "no" is treated as "auto". +if test "${nut_with_dev}" != "no"; then + nut_with_dev="yes" +else + AC_DISABLE_STATIC +fi +AM_CONDITIONAL(WITH_DEV, test "${nut_with_dev}" = "yes") +NUT_REPORT_FEATURE([build and install the development files], [${nut_with_dev}], [], + [WITH_DEV], [Define to enable development files support]) + +dnl ---------------------------------------------------------------------- + + +AC_MSG_CHECKING(state path) +AC_ARG_WITH(statepath, + AS_HELP_STRING([--with-statepath=PATH], [path for ups state files (/var/state/ups)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-statepath - see docs/configure.txt) + ;; + *) + STATEPATH="${withval}" + ;; + esac +], []) +AC_DEFINE_UNQUOTED(STATEPATH, "${STATEPATH}", [Path for UPS driver state files]) +AC_MSG_RESULT(${STATEPATH}) + +dnl --------------------------------------------------------------------- +dnl The 'alt pid path' is used by the drivers (via main.c) and upsd, since +dnl ideally they do not run as root and will not be able to write to the usual +dnl /var/run path. This defaults to the STATEPATH since they should be +dnl able to write there. +dnl + +AC_MSG_CHECKING(alt pid path) +AC_ARG_WITH(altpidpath, + AS_HELP_STRING([--with-altpidpath=PATH], [path for driver/upsd .pid files ()]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-altpidpath - see docs/configure.txt) + ;; + *) + ALTPIDPATH="${withval}" + ;; + esac +], [ + ALTPIDPATH="${STATEPATH}" +]) +AC_DEFINE_UNQUOTED(ALTPIDPATH, "${ALTPIDPATH}", [Path for pid files of drivers and upsd (usually STATEPATH)]) +AC_MSG_RESULT(${ALTPIDPATH}) + +AC_MSG_CHECKING(driver path) +AC_ARG_WITH(drvpath, + AS_HELP_STRING([--with-drvpath=PATH], [where to install UPS drivers (EPREFIX/bin)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-drvpath - see docs/configure.txt) + ;; + *) + driverexecdir="${withval}" + ;; + esac +], []) +conftemp="${driverexecdir}" +eval conftemp=\"${conftemp}\" +eval conftemp=\"${conftemp}\" +AC_DEFINE_UNQUOTED(DRVPATH, "${conftemp}", [Default path for UPS drivers]) +AC_MSG_RESULT(${driverexecdir}) + +AC_MSG_CHECKING(cgi path) +AC_ARG_WITH(cgipath, + AS_HELP_STRING([--with-cgipath=PATH], [where to install CGI programs (EPREFIX/cgi-bin)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-cgipath - see docs/configure.txt) + ;; + *) + cgiexecdir="${withval}" + ;; + esac +], []) +conftemp="${cgiexecdir}" +eval conftemp=\"${conftemp}\" +eval conftemp=\"${conftemp}\" +AC_DEFINE_UNQUOTED(CGIPATH, "${conftemp}", [Default path for CGI programs]) +AC_MSG_RESULT(${cgiexecdir}) + +AC_MSG_CHECKING(html path) +AC_ARG_WITH(htmlpath, + AS_HELP_STRING([--with-htmlpath=PATH], [where to install HTML files (PREFIX/html)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-htmlpath - see docs/configure.txt) + ;; + *) + htmldir="${withval}" + ;; + esac +], []) +conftemp="${htmldir}" +eval conftemp=\"${conftemp}\" +eval conftemp=\"${conftemp}\" +AC_DEFINE_UNQUOTED(HTMLPATH, "${conftemp}", [Default path for HTML files]) +AC_MSG_RESULT(${htmldir}) + +AC_MSG_CHECKING(pidpath) +AC_ARG_WITH(pidpath, + AS_HELP_STRING([--with-pidpath=PATH], [path for .pid files (/var/run)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-pidpath - see docs/configure.txt) + ;; + *) + PIDPATH="${withval}" + ;; + esac +], []) +AC_DEFINE_UNQUOTED(PIDPATH, "${PIDPATH}", [Path where the pid files should go]) +AC_MSG_RESULT(${PIDPATH}) + +AC_MSG_CHECKING(network port number) +AC_ARG_WITH(port, + AS_HELP_STRING([--with-port=PORT], [port for network communications (3493)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-port - see docs/configure.txt) + ;; + *) + PORT="${withval}" + ;; + esac +], [ + PORT="3493" +]) +AC_DEFINE_UNQUOTED(PORT, ${PORT}, [Port for network communications]) +AC_MSG_RESULT(${PORT}) + +AC_MSG_CHECKING(user to run as) +AC_ARG_WITH(user, + AS_HELP_STRING([--with-user=username], [user for programs started as root (nobody)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-user - see docs/configure.txt) + ;; + *) + RUN_AS_USER="${withval}" + nut_user_given=yes + ;; + esac +], [ + nut_user_given=no +]) +AC_DEFINE_UNQUOTED(RUN_AS_USER, "${RUN_AS_USER}", [User to switch to if started as root]) +AC_MSG_RESULT(${RUN_AS_USER}) + +AC_MSG_CHECKING(group membership of user to run as) +AC_ARG_WITH(group, + AS_HELP_STRING([--with-group=groupname], [group membership of user for programs started as root (nogroup)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-group - see docs/configure.txt) + ;; + *) + RUN_AS_GROUP="${withval}" + nut_group_given=yes + ;; + esac +], [ + nut_group_given=no +]) +AC_DEFINE_UNQUOTED(RUN_AS_GROUP, "${RUN_AS_GROUP}", [Group membership of user to switch to if started as root]) +AC_MSG_RESULT(${RUN_AS_GROUP}) + +dnl check that --with-user is given if --with-group is given. +if test "${nut_user_given}" = "yes" -a "${nut_group_given}" = "no"; then + AC_MSG_ERROR(["If you specify --with-user, you also must specify --with-group"]) +elif test "${nut_user_given}" = "no" -a "${nut_group_given}" = "yes"; then + AC_MSG_ERROR(["If you specify --with-group, you also must specify --with-user"]) +fi + +AC_MSG_CHECKING(facility for syslog) +AC_ARG_WITH(logfacility, + AS_HELP_STRING([--with-logfacility=FACILITY], [facility for log messages (LOG_DAEMON)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-logfacility - see docs/configure.txt) + ;; + *) + LOGFACILITY="${withval}" + ;; + esac +], [ + LOGFACILITY="LOG_DAEMON" +]) +AC_DEFINE_UNQUOTED(LOG_FACILITY, ${LOGFACILITY}, [Desired syslog facility - see syslog(3)]) +AC_MSG_RESULT(${LOGFACILITY}) + +dnl Autoconf versions before 2.62 do not allow consecutive quadrigraphs, +dnl so the help string depends on the version used +AC_MSG_CHECKING(which drivers to build) +AC_ARG_WITH(drivers, + AS_HELP_STRING([m4_version_prereq(2.62, + [@<:@--with-drivers=driver@<:@,driver@:>@@:>@], + [[[[--with-drivers=driver@<:@,driver@:>@]]]])], + [Only build specific drivers (all)]), +[ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-drivers - see docs/configure.txt) + ;; + *) + DRIVER_BUILD_LIST=`echo ${withval} | sed "s/,/ /g"` + AC_MSG_RESULT(${DRIVER_BUILD_LIST}) + ;; + esac +], [ + DRIVER_BUILD_LIST="all" + AC_MSG_RESULT(all available) +]) +AM_CONDITIONAL(SOME_DRIVERS, test "${DRIVER_BUILD_LIST}" != "all") + +if test "${DRIVER_BUILD_LIST}" != "all"; then + NUT_REPORT([only build specific drivers], [${DRIVER_BUILD_LIST}]) +fi + +AC_MSG_CHECKING(which driver man pages to install) +if test "${DRIVER_BUILD_LIST}" = "all"; then + DRIVER_MAN_LIST=all + AC_MSG_RESULT(all available) +else + DRIVER_MAN_LIST="" + for i in ${DRIVER_BUILD_LIST}; do + if test -f ${srcdir}/docs/man/$i.8; then + DRIVER_MAN_LIST="${DRIVER_MAN_LIST} $i.8" + fi + done + AC_MSG_RESULT(${DRIVER_MAN_LIST}) +fi + +AC_MSG_CHECKING(whether to strip debug symbols) +AC_ARG_ENABLE(strip, + AS_HELP_STRING([--enable-strip], [Strip debugging symbols from binaries (no)]), +[ + case "${withval}" in + no) + AC_MSG_RESULT(no) + ;; + *) + AC_MSG_RESULT(yes) + CFLAGS="${CFLAGS} -s" + ;; + esac +], [ + AC_MSG_RESULT(no) +]) + +AC_MSG_CHECKING(whether to install pkg-config *.pc files) +AC_ARG_WITH(pkgconfig-dir, + AS_HELP_STRING([--with-pkgconfig-dir=PATH], [where to install pkg-config *.pc files (EPREFIX/lib/pkgconfig)]), +[ + case "${withval}" in + yes|auto) + ;; + no) + pkgconfigdir="" + ;; + *) + pkgconfigdir="${withval}" + ;; + esac +], []) +if test -n "${pkgconfigdir}"; then + AC_MSG_RESULT(using ${pkgconfigdir}) +else + AC_MSG_RESULT(no) +fi +AM_CONDITIONAL(WITH_PKG_CONFIG, test -n "${pkgconfigdir}") + +PKG_PROG_PKG_CONFIG +systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd` +AC_MSG_CHECKING(whether to install systemd files) +AC_ARG_WITH([systemdsystemunitdir], + AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files (auto)]), +[ + case "${withval}" in + yes|auto) + ;; + no) + systemdsystemunitdir="" + ;; + *) + systemdsystemunitdir="${withval}" + ;; + esac +], []) +dnl Override installation directory, with the local installation +dnl prefix. This is needed for 'distcheck*' targets, otherwise +dnl files will try to get intalled to the actual system directories +if test -n "${systemdsystemunitdir}"; then + systemdsystemshutdowndir="${libdir}/systemd/system-shutdown" + AC_MSG_RESULT(using ${systemdsystemunitdir}) + systemdsystemunitdir="`echo ${systemdsystemunitdir} | sed 's/\/lib/\${libdir}/'`" +else + AC_MSG_RESULT(no) +fi +AM_CONDITIONAL(HAVE_SYSTEMD, test "$systemdsystemunitdir" != "") + +AC_MSG_CHECKING(whether to install hotplug rules) +AC_ARG_WITH(hotplug-dir, + AS_HELP_STRING([--with-hotplug-dir=PATH], [where to install hotplug rules (/etc/hotplug)]), +[ + case "${withval}" in + yes) + if test -z "${hotplugdir}"; then + AC_MSG_RESULT(no) + AC_MSG_ERROR(["hotplug directory requested but not found"]) + fi + ;; + auto) + ;; + no) + hotplugdir="" + ;; + *) + hotplugdir="${withval}" + ;; + esac +], []) +if test -n "${hotplugdir}"; then + AC_MSG_RESULT(using ${hotplugdir}) +else + AC_MSG_RESULT(no) +fi +AM_CONDITIONAL(WITH_HOTPLUG, test -n "${hotplugdir}") + +AC_MSG_CHECKING(whether to install udev rules) +AC_ARG_WITH(udev-dir, + AS_HELP_STRING([--with-udev-dir=PATH], [where to install udev rules (/lib/udev or /etc/udev)]), +[ + case "${withval}" in + yes) + if test -z "${udevdir}"; then + AC_MSG_RESULT(no) + AC_MSG_ERROR(["udev directory requested but not found"]) + fi + ;; + auto) + ;; + no) + udevdir="" + ;; + *) + udevdir="${withval}" + ;; + esac +], []) +if test -n "${udevdir}"; then + AC_MSG_RESULT(using ${udevdir}) +else + AC_MSG_RESULT(no) +fi +AM_CONDITIONAL(WITH_UDEV, test -n "${udevdir}") + +dnl FreeBSD devd support: + +AC_MSG_CHECKING(whether to install FreeBSD devd.conf file) +AC_ARG_WITH(devd-dir, + AS_HELP_STRING([--with-devd-dir=PATH], [where to install devd.conf file (/usr/local/etc/devd or /etc/devd)]), +[ + case "${withval}" in + yes) + if test -z "${devddir}"; then + AC_MSG_RESULT(no) + AC_MSG_ERROR(["devd directory requested but not found"]) + fi + ;; + auto) + ;; + no) + devddir="" + ;; + *) + devddir="${withval}" + ;; + esac +], []) +if test -n "${devddir}"; then + AC_MSG_RESULT(using ${devddir}) +else + AC_MSG_RESULT(no) +fi +AM_CONDITIONAL(WITH_DEVD, test -n "${devddir}") + +dnl + +AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none]) +AM_CONDITIONAL([MANUALUPDATE], [test "x$ASCIIDOC" != "xnone"]) +AC_PATH_PROGS([A2X], [a2x], [none]) + +dnl check for spell checking deps +AC_PATH_PROGS([ASPELL], [aspell], [none]) +AM_CONDITIONAL([HAVE_ASPELL], [test "x$ASPELL" != "xnone"]) + +dnl expand ${sysconfdir} and write it out +conftemp="${sysconfdir}" +eval conftemp=\"${conftemp}\" +eval conftemp=\"${conftemp}\" +CONFPATH=${conftemp} +AC_DEFINE_UNQUOTED(CONFPATH, "${conftemp}", [Default path for configuration files]) + +dnl same for datadir +conftemp="${datadir}" +eval conftemp=\"${conftemp}\" +eval conftemp=\"${conftemp}\" +DATADIR=${conftemp} +AC_DEFINE_UNQUOTED(DATADIR, "${conftemp}", [Default path for data files]) + +dnl same for bindir +conftemp="${bindir}" +eval conftemp=\"${conftemp}\" +eval conftemp=\"${conftemp}\" +BINDIR=${conftemp} +AC_DEFINE_UNQUOTED(BINDIR, "${conftemp}", [Default path for user executables]) + +dnl same for sbindir +conftemp="${sbindir}" +eval conftemp=\"${conftemp}\" +eval conftemp=\"${conftemp}\" +SBINDIR=${conftemp} +AC_DEFINE_UNQUOTED(SBINDIR, "${conftemp}", [Default path for system executables]) + +AC_SUBST(OS_NAME) +AC_SUBST(TREE_VERSION) +AC_SUBST(NUT_NETVERSION) +AC_SUBST(LIBSSL_CFLAGS) +AC_SUBST(LIBSSL_LIBS) +AC_SUBST(LIBGD_CFLAGS) +AC_SUBST(LIBGD_LDFLAGS) +AC_SUBST(LIBNETSNMP_CFLAGS) +AC_SUBST(LIBNETSNMP_LIBS) +AC_SUBST(LIBUSB_CFLAGS) +AC_SUBST(LIBUSB_LIBS) +AC_SUBST(LIBNEON_CFLAGS) +AC_SUBST(LIBNEON_LIBS) +AC_SUBST(LIBAVAHI_CFLAGS) +AC_SUBST(LIBAVAHI_LIBS) +AC_SUBST(LIBPOWERMAN_CFLAGS) +AC_SUBST(LIBPOWERMAN_LIBS) +AC_SUBST(LIBIPMI_CFLAGS) +AC_SUBST(LIBIPMI_LIBS) +AC_SUBST(DOC_BUILD_LIST) +AC_SUBST(LIBWRAP_CFLAGS) +AC_SUBST(LIBWRAP_LIBS) +AC_SUBST(LIBLTDL_CFLAGS) +AC_SUBST(LIBLTDL_LIBS) +AC_SUBST(DRIVER_BUILD_LIST) +AC_SUBST(DRIVER_MAN_LIST) +AC_SUBST(DRIVER_INSTALL_TARGET) +AC_SUBST(NETLIBS) +AC_SUBST(SERLIBS) +AC_SUBST(PIDPATH) +AC_SUBST(STATEPATH) +AC_SUBST(CONFPATH) +AC_SUBST(BINDIR) +AC_SUBST(DRVPATH) +AC_SUBST(SBINDIR) +AC_SUBST(PORT) +AC_SUBST(RUN_AS_USER) +AC_SUBST(RUN_AS_GROUP) +AC_SUBST(SUN_LIBUSB) +AC_SUBST(WORDS_BIGENDIAN) +AC_SUBST(cgiexecdir) +AC_SUBST(devddir) +AC_SUBST(driverexecdir) +AC_SUBST(htmldir) +AC_SUBST(pkgconfigdir) +AC_SUBST(systemdsystemunitdir) +AC_SUBST(systemdsystemshutdowndir) +AC_SUBST(hotplugdir) +AC_SUBST(udevdir) + +AC_OUTPUT([ + clients/Makefile + common/Makefile + conf/Makefile + conf/upsmon.conf.sample + conf/upssched.conf.sample + data/html/header.html + data/html/Makefile + data/Makefile + data/driver.list + docs/Makefile + docs/man/Makefile + drivers/Makefile + include/Makefile + lib/libupsclient-config + lib/libupsclient.pc + lib/libnutclient.pc + lib/libnutscan.pc + lib/Makefile + scripts/augeas/Makefile + scripts/augeas/nutnutconf.aug + scripts/augeas/nutupsconf.aug + scripts/augeas/nutupsdconf.aug + scripts/augeas/nutupsdusers.aug + scripts/augeas/nutupsmonconf.aug + scripts/augeas/nutupsschedconf.aug + scripts/augeas/nuthostsconf.aug + scripts/augeas/nutupssetconf.aug + scripts/avahi/nut.service + scripts/devd/Makefile + scripts/devd/nut-usb.conf + scripts/hotplug/Makefile + scripts/hotplug/libhidups + scripts/HP-UX/nut.psf + scripts/HP-UX/postinstall + scripts/python/Makefile + scripts/systemd/Makefile + scripts/systemd/nut-driver.service + scripts/systemd/nut-monitor.service + scripts/systemd/nut-server.service + scripts/systemd/nutshutdown + scripts/Solaris/Makefile + scripts/Solaris/pkginfo + scripts/Solaris/postinstall + scripts/Solaris/preremove + scripts/Solaris/nut + scripts/udev/Makefile + scripts/udev/nut-ipmipsu.rules + scripts/udev/nut-usbups.rules + scripts/ufw/nut.ufw.profile + scripts/Makefile + server/Makefile + tools/Makefile + tools/nut-scanner/Makefile + tests/Makefile + Makefile +]) + +NUT_PRINT_FEATURE_REPORT diff -Nru nut-2.7.1/configure.in nut-2.7.2/configure.in --- nut-2.7.1/configure.in 2013-11-20 20:53:31.000000000 +0100 +++ nut-2.7.2/configure.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,1244 +0,0 @@ -dnl +------------------------------------------------------------------+ -dnl | Network UPS Tools: configure.in | -dnl +------------------------------------------------------------------+ - -dnl NUT version number is defined here, with a Git suffix in include/nut_version.h -AC_INIT(nut, 2.7.1) -AC_CONFIG_SRCDIR(server/upsd.c) -AC_CONFIG_MACRO_DIR([m4]) -echo "Network UPS Tools version ${PACKAGE_VERSION}" -AC_CANONICAL_SYSTEM -NUT_CHECK_OS -AC_CONFIG_HEADER(include/config.h) -AC_PREFIX_DEFAULT(/usr/local/ups) -AM_INIT_AUTOMAKE - -dnl we need Autoconf 2.60 or better to enable features of Posix that are extensions to C -AC_MSG_CHECKING(for autoconf macro to enable system extensions) -m4_version_prereq(2.60, [ - AC_MSG_RESULT(yes) - AC_USE_SYSTEM_EXTENSIONS -], [ - AC_MSG_RESULT(no) -]) - -dnl Use "./configure --enable-maintainer-mode" to keep Makefile.in and Makefile -dnl in sync after SVN updates. -AM_MAINTAINER_MODE - -dnl PKG_PROG_PKG_CONFIG - -dnl Various version related processing -dnl ---------------------------------- - -dnl # the following is commented out, because the UPS_VERSION macro now -dnl # resides in include/nut_version.h, which is generated by Makefile.am, -dnl # rather than in include/config.h, which is generated by configure. The -dnl # reason is that the SVN revision should be computed at compile time, -dnl # not configure time. -dnl AC_DEFINE_UNQUOTED(UPS_VERSION, "${PACKAGE_VERSION}", [NUT version]) - -dnl However, automatically define the tree version (mostly for AC_SUBST) -TREE_VERSION="`echo ${PACKAGE_VERSION} | awk '{ print substr($0,1,3) }'`" -AC_DEFINE_UNQUOTED(TREE_VERSION, "${TREE_VERSION}", [NUT tree version]) - -NUT_NETVERSION="1.2" -AC_DEFINE_UNQUOTED(NUT_NETVERSION, "${NUT_NETVERSION}", [NUT network protocol version]) - - -dnl Fix this early so we can expand with eval later -test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" -test "${exec_prefix}" = "NONE" && exec_prefix='${prefix}' - -CFLAGS=${CFLAGS-"-O"} - -dnl NOTE: for definition of NUT_* autoconf macros, see m4/ directory -dnl and docs/macros.txt - -dnl +------------------------------------------------------------------+ -dnl | default values for things later on (can be overridden) | - -STATEPATH="/var/state/ups" - -cgiexecdir='${exec_prefix}/cgi-bin' -driverexecdir='${exec_prefix}/bin' -htmldir='${prefix}/html' -pkgconfigdir='${libdir}/pkgconfig' -hotplugdir='/etc/hotplug' -if test ! -d "${hotplugdir}"; then - hotplugdir='' -fi -udevdir='/lib/udev' -if test ! -d "${udevdir}"; then - udevdir='/etc/udev' - if test ! -d "${udevdir}"; then - udevdir='' - fi -fi - -RUN_AS_USER="nobody" -RUN_AS_GROUP="nobody" -PIDPATH="/var/run" - -dnl Define directory where LIBOBJS replacement functions are -AC_CONFIG_LIBOBJ_DIR([common]) - -dnl +------------------------------------------------------------------- - -AC_PROG_CC -dnl Needed for per-target flags -AM_PROG_CC_C_O -AC_PROG_CPP -AC_PROG_CXX -AC_PROG_INSTALL -AC_PROG_EGREP -AC_PATH_PROG(AR, ar) -AC_CHECK_TOOL(RANLIB, ranlib, :) -dnl Postpone call to AC_PROG_LIBTOOL to allow disabling static lib -AC_C_BIGENDIAN -AC_C_INLINE -AC_C_FLEXIBLE_ARRAY_MEMBER -AC_C_VARARRAYS -AC_CHECK_FUNCS(flock lockf fcvt fcvtl) -AC_CHECK_FUNCS(cfsetispeed tcsendbreak) -AC_CHECK_FUNCS(seteuid setsid getpassphrase) -AC_CHECK_FUNCS(on_exit strptime setlogmask) -AC_CHECK_DECLS(LOG_UPTO, [], [], [#include ]) - -dnl the following may add stuff to LIBOBJS (is this still needed?) -AC_CHECK_FUNCS(vsnprintf snprintf, [], [ - AC_LIBOBJ(snprintf) - AC_TYPE_LONG_DOUBLE - AC_TYPE_LONG_LONG_INT -]) - -AC_REPLACE_FUNCS(setenv strerror atexit) - - -dnl -dnl Tests for CppUnit availability and usability -dnl Using CppUnit implies C++ support! -dnl Theoretically, libcppunit-dev will pull up to g++, through libstdc++... -dnl AM_PATH_CPPUNIT(1.9.6) - -PKG_CHECK_MODULES(CPPUNIT, cppunit, have_cppunit=yes, have_cppunit=no) -if test "${have_cppunit}" != "yes" ; then - AC_MSG_WARN([libcppunit not found.]) -fi -AM_CONDITIONAL(HAVE_CPPUNIT, test "${have_cppunit}" = "yes") - -dnl -dnl Only use these when compiling with gcc -dnl -if ( test "${GCC}" = "yes" ) -then - CFLAGS="${CFLAGS} -Wall -Wsign-compare" -fi - -case ${target_os} in - solaris2* ) - dnl On Solaris, this allows errno to use thread local storage - CFLAGS="${CFLAGS} -D_REENTRANT" - ;; - aix* ) - dnl On AIX, this allows errno to use thread local storage - CFLAGS="${CFLAGS} -D_REENTRANT" - ;; - hpux11* ) - dnl It seems like the thread safe string functions will not be included - dnl on 64 bit HP-UX unless we define _REENTRANT - CFLAGS="${CFLAGS} -D_REENTRANT" - ;; -esac - -dnl optind handling: -dnl need to check if unistd.h is enough, else try getopt.h, else need decls -AC_CHECK_DECLS(optind, [], [ - AC_CHECK_HEADERS(getopt.h, [ - AC_DEFINE(NEED_GETOPT_H, 1, [Define if getopt.h is needed]) - ], [ - AC_DEFINE(NEED_GETOPT_DECLS, 1, [Define to use explicit getopt declarations]) - ], [AC_INCLUDES_DEFAULT]) -], [AC_INCLUDES_DEFAULT]) - -dnl do a 2nd check to ensure inclusion of getopt.h, in case optind is known -AC_CHECK_HEADERS(getopt.h, [ - AC_DEFINE(NEED_GETOPT_H, 1, [Define if getopt.h is needed]) -], [ - AC_DEFINE(NEED_GETOPT_DECLS, 1, [Define to use explicit getopt declarations]) -], [AC_INCLUDES_DEFAULT]) - -dnl also check for getopt_long -AC_CHECK_FUNCS(getopt_long) - -dnl FreeBSD serial locking compatibility - look for uu_lock in libutil.h -AC_CHECK_DECLS(uu_lock, [ - AC_DEFINE(HAVE_UU_LOCK, 1, [Use uu_lock for locking (FreeBSD)]) - SERLIBS="-lutil" - dnl put in some better defaults for FreeBSD - RUN_AS_USER="uucp" -], [ - SERLIBS="" -], [ -#include -#include -]) - -AC_CHECK_DECLS(__func__, [], [ - AC_CHECK_DECLS(__FUNCTION__, [ - AC_DEFINE(__func__, __FUNCTION__, [Replace missing __func__ declaration]) - ], [ - AC_DEFINE(__func__, __LINE__, [Replace missing __func__ declaration]) - ], [AC_INCLUDES_DEFAULT]) -], [AC_INCLUDES_DEFAULT]) - -dnl Solaris compatibility - check for -lnsl and -lsocket -AC_SEARCH_LIBS(gethostbyname, nsl) -AC_SEARCH_LIBS(connect, socket) - -AC_HEADER_TIME -AC_CHECK_HEADERS(sys/modem.h stdarg.h varargs.h sys/termios.h sys/time.h, [], [], [AC_INCLUDES_DEFAULT]) - -# pthread related checks -AC_SEARCH_LIBS([pthread_create], [pthread], - [AC_DEFINE(HAVE_PTHREAD, 1, [Define to enable pthread support code])], - []) - -dnl ---------------------------------------------------------------------- -dnl Check for types and define possible replacements -NUT_TYPE_SOCKLEN_T - -dnl ---------------------------------------------------------------------- -dnl check for --with-all (or --without-all, or --with-all=auto) flag - -AC_MSG_CHECKING(for --with-all) -AC_ARG_WITH(all, - AS_HELP_STRING([--with-all], [enable serial, usb, snmp, neon, ipmi, powerman, cgi, dev, avahi]), -[ - if test -n "${withval}"; then - dnl Note: we allow "no" as a positive value, because - dnl this is what the user expects from --without-all - if test -z "${with_serial}"; then with_serial="${withval}"; fi - if test -z "${with_usb}"; then with_usb="${withval}"; fi - if test -z "${with_snmp}"; then with_snmp="${withval}"; fi - if test -z "${with_neon}"; then with_neon="${withval}"; fi - if test -z "${with_powerman}"; then with_powerman="${withval}"; fi - if test -z "${with_cgi}"; then with_cgi="${withval}"; fi - if test -z "${with_dev}"; then with_dev="${withval}"; fi - if test -z "${with_avahi}"; then with_avahi="${withval}"; fi - if test -z "${with_ipmi}"; then with_ipmi="${withval}"; fi - AC_MSG_RESULT("${withval}") - else - AC_MSG_RESULT(not given) - fi -], [ - AC_MSG_RESULT(not given) -]) - -dnl ---------------------------------------------------------------------- -dnl declare a number of --with-FEATURE options. Do this early, so that -dnl they are listed near the top by "./configure --help" - -NUT_ARG_WITH([dev], [build and install the development files], [no]) -NUT_ARG_WITH([serial], [build and install serial drivers], [yes]) -NUT_ARG_WITH([usb], [build and install USB drivers], [auto]) -NUT_ARG_WITH([doc], [build and install documentation], [no]) -NUT_ARG_WITH([avahi], [build and install Avahi support], [auto]) - -dnl ---------------------------------------------------------------------- -dnl Check for presence and compiler flags of various libraries - -dnl These checks are performed unconditionally, even if the corresponding -dnl --with-* options are not given. This is because we cannot predict -dnl what will be in the --with-drivers argument. - -NUT_CHECK_LIBNETSNMP -NUT_CHECK_LIBUSB -NUT_ARG_WITH([hal], [build and install HAL support], [no]) -NUT_CHECK_LIBHAL -NUT_CONFIG_LIBHAL -NUT_ARG_WITH([snmp], [build and install SNMP drivers], [auto]) -NUT_CHECK_LIBNETSNMP -NUT_ARG_WITH([neon], [build and install neon based XML/HTTP driver], [auto]) -NUT_CHECK_LIBNEON -NUT_ARG_WITH([powerman], [build and install Powerman PDU client driver], [auto]) -NUT_CHECK_LIBPOWERMAN -NUT_CHECK_LIBAVAHI - -dnl ---------------------------------------------------------------------- -dnl additional USB-related checks - -dnl Solaris 10/11 USB handling (need librt and libusb runtime path) -dnl HPUX, since v11, needs an explicit activation of pthreads -case ${target_os} in - solaris2.1* ) - echo Checking for Solaris 10 / 11 specific configuration for usb drivers - AC_SEARCH_LIBS(nanosleep, rt) - LIBUSB_LIBS="-R/usr/sfw/lib ${LIBUSB_LIBS}" - dnl FIXME: Sun's libusb doesn't support timeout (so blocks notification) - dnl and need to call libusb close upon reconnection - AC_DEFINE(SUN_LIBUSB, 1, [Define to 1 for Sun version of the libusb.]) - SUN_LIBUSB=1 - ;; - hpux11*) - CFLAGS="${CFLAGS} -lpthread" -esac - - -dnl ---------------------------------------------------------------------- -dnl checks related to --with-serial - -dnl ${nut_with_serial}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_serial}" != "no"; then - nut_with_serial="yes" -fi - -NUT_REPORT_FEATURE([build serial drivers], [${nut_with_serial}], [], - [WITH_SERIAL], [Define to enable serial support]) - -dnl ---------------------------------------------------------------------- -dnl checks related to --with-usb - -dnl ${nut_with_usb}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_usb}" = "yes" -a "${nut_have_libusb}" != "yes"; then - AC_MSG_ERROR(["USB drivers requested, but libusb not found."]) -fi - -if test "${nut_with_usb}" != "no"; then - nut_with_usb="${nut_have_libusb}" -fi - -NUT_REPORT_FEATURE([build USB drivers], [${nut_with_usb}], [], - [WITH_USB], [Define to enable USB support]) - -dnl ---------------------------------------------------------------------- -dnl checks related to --with-snmp - -dnl ${nut_with_snmp}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_snmp}" = "yes" -a "${nut_have_libnetsnmp}" != "yes"; then - AC_MSG_ERROR(["Net-SNMP libraries not found, required for SNMP drivers"]) -fi - -if test "${nut_with_snmp}" != "no"; then - nut_with_snmp="${nut_have_libnetsnmp}" -fi - -NUT_REPORT_FEATURE([build SNMP drivers], [${nut_with_snmp}], [], - [WITH_SNMP], [Define to enable SNMP support]) - -dnl ---------------------------------------------------------------------- -dnl checks related to --with-neon - -dnl ${nut_with_neon}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_neon}" = "yes" -a "${nut_have_neon}" != "yes"; then - AC_MSG_ERROR(["neon libraries not found, required for neon based XML/HTTP driver"]) -fi - -if test "${nut_with_neon}" != "no"; then - nut_with_neon="${nut_have_neon}" -fi - -NUT_REPORT_FEATURE([build neon based XML driver], [${nut_with_neon}], [], - [WITH_NEON], [Define to enable Neon HTTP support]) - -dnl ---------------------------------------------------------------------- -dnl checks related to --with-avahi - -dnl ${nut_with_avahi}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_avahi}" = "yes" -a "${nut_have_avahi}" != "yes"; then - AC_MSG_ERROR(["avahi libraries not found"]) -fi - -if test "${nut_with_avahi}" != "no"; then - nut_with_avahi="${nut_have_avahi}" -fi - -NUT_REPORT_FEATURE([enable Avahi support], [${nut_with_avahi}], [], - [WITH_AVAHI], [Define to enable Avahi support]) - -dnl ---------------------------------------------------------------------- - -dnl checks related to --with-powerman - -dnl ${nut_with_powerman}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_powerman}" = "yes" -a "${nut_have_libpowerman}" != "yes"; then - AC_MSG_ERROR(["Powerman client libraries not found, required for Powerman PDU client driver"]) -fi - -if test "${nut_with_powerman}" != "no"; then - nut_with_powerman="${nut_have_libpowerman}" -fi - -NUT_REPORT_FEATURE([build Powerman PDU client driver], [${nut_with_powerman}], [], - [WITH_LIBPOWERMAN], [Define to enable Powerman PDU support]) - -dnl ---------------------------------------------------------------------- -dnl Check for with-ipmi, and --with-freeipmi (or --with-openipmi) -dnl Only one can be enabled at a time, with a preference for FreeIPMI -dnl if both are available (since it is the only one supported ATM!!) - -nut_ipmi_lib="" - -NUT_ARG_WITH([ipmi], [build and install IPMI PSU driver], [auto]) -NUT_ARG_WITH([freeipmi], [enable IPMI support using FreeIPMI], [auto]) -dnl NUT_ARG_WITH([openipmi], [enable IPMI support using OpenIPMI], [auto]) - -dnl ${nut_with_ipmi}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_ipmi}" != "no"; then - dnl check if FreeIPMI (and maybe later OpenIPMI) was explicitly requested - if test "${nut_with_freeipmi}" = "yes"; then - NUT_CHECK_LIBFREEIPMI - if test "${nut_have_freeipmi}" != "yes"; then - AC_MSG_ERROR(["GNU FreeIPMI not found, required for IPMI support"]) - fi - dnl Implies --with-ipmi - nut_with_ipmi="yes" - dnl elif test "${nut_with_openipmi}" = "yes"; then - dnl AC_MSG_ERROR(["OpenIPMI is not yet supported"]) - dnl NUT_CHECK_LIBOPENIPMI - dnl if test "${nut_have_openipmi}" != "yes"; then - dnl AC_MSG_ERROR(["OpenIPMI not found, required for IPMI support"]) - dnl fi - dnl Implies --with-ipmi - dnl nut_with_ipmi="yes" - dnl AC_DEFINE(WITH_OPENIPMI, 1, [Define to enable IPMI support using OpenIPMI]) - else - dnl Prefer FreeIPMI over OpenIPMI otherwise - NUT_CHECK_LIBFREEIPMI - if test "${nut_have_freeipmi}" != "yes"; then - if test "${nut_with_ipmi}" = "yes"; then - AC_MSG_ERROR(["FreeIPMI not found, required for IPMI support"]) - fi - nut_with_ipmi="no" - dnl NUT_CHECK_OPENIPMI - dnl if test "${nut_have_openipmi}" != "yes"; then - dnl if test "${nut_with_ipmi}" = "yes"; then - dnl AC_MSG_ERROR(["GNU FreeIPMI and OpenIPMI neither found, required for IPMI support"]) - dnl fi - dnl nut_with_ipmi="no" - dnl else - dnl Implies --with-ipmi - dnl nut_with_ipmi="yes" - dnl nut_with_openipmi="yes" - dnl fi - else - dnl Implies --with-ipmi - nut_with_ipmi="yes" - nut_with_freeipmi="yes" - AC_DEFINE(WITH_FREEIPMI, 1, [Define to enable IPMI support using FreeIPMI]) - fi - fi -fi - - -NUT_REPORT_FEATURE([build IPMI driver], [${nut_with_ipmi}], [${nut_ipmi_lib}], - [WITH_IPMI], [Define to enable IPMI support]) - -dnl Note: we still have to manually enable complementary AC_DEFINEs (see above) -dnl and AM_CONDITIONALs (see below)... -AM_CONDITIONAL(WITH_FREEIPMI, test "${nut_with_freeipmi}" = "yes") -dnl AM_CONDITIONAL(WITH_OPENIPMI, test "${nut_with_openipmi}" = "yes") - - -dnl ---------------------------------------------------------------------- -dnl The Mac OS X meta-driver looks at IOKit Power Sources keys managed by -dnl the internal USB UPS driver. -dnl -dnl FIXME: be slightly more clever here: - -NUT_ARG_WITH([macosx_ups], [build and install Mac OS X Power Sources meta-driver], [auto]) -if test "${nut_with_macosx_ups}" != no; then - if test -d /System/Library/Frameworks/IOKit.framework/ ; then - nut_with_macosx_ups="yes" - else - nut_with_macosx_ups="no" - fi -fi - -NUT_REPORT_FEATURE([build Mac OS X meta-driver], - [${nut_with_macosx_ups}], [${nut_macosx_ups_lib}], - [WITH_MACOSX], [Define to enable Mac OS X meta-driver]) - -dnl ---------------------------------------------------------------------- -dnl Check for with-ssl, and --with-nss or --with-openssl -dnl Only one can be enabled at a time, with a preference for OpenSSL -dnl if both are available - -nut_ssl_lib="" - -NUT_ARG_WITH([ssl], [enable SSL support (either NSS or OpenSSL)], [auto]) -NUT_ARG_WITH([nss], [enable SSL support using Mozilla NSS], [auto]) -NUT_ARG_WITH([openssl], [enable SSL support using OpenSSL], [auto]) - -dnl ${nut_with_ssl}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_ssl}" != "no"; then - dnl check if either NSS or OpenSSL was explicitly requested - if test "${nut_with_nss}" = "yes"; then - NUT_CHECK_LIBNSS - if test "${nut_have_libnss}" != "yes"; then - AC_MSG_ERROR(["Mozilla NSS not found, required for SSL support"]) - fi - elif test "${nut_with_openssl}" = "yes"; then - NUT_CHECK_LIBOPENSSL - if test "${nut_have_openssl}" != "yes"; then - AC_MSG_ERROR(["OpenSSL not found, required for SSL support"]) - fi - else - dnl Prefer OpenSSL over NSS otherwise - NUT_CHECK_LIBOPENSSL - if test "${nut_have_openssl}" != "yes"; then - NUT_CHECK_LIBNSS - if test "${nut_have_libnss}" != "yes"; then - dnl Only abort if SSL has been explicitly requested by the user - if test "${nut_with_ssl}" = "yes"; then - AC_MSG_ERROR(["Mozilla NSS and OpenSSL neither found, but are needed for the requested SSL support"]) - else - AC_MSG_WARN(["Mozilla NSS and OpenSSL neither found, required for SSL support"]) - fi - nut_with_ssl="no" - else - nut_with_nss="${nut_have_libnss}" - fi - else - nut_with_openssl="${nut_have_openssl}" - fi - fi -fi - -AM_CONDITIONAL(WITH_NSS, test "${nut_with_nss}" = "yes") -AM_CONDITIONAL(WITH_OPENSSL, test "${nut_with_openssl}" = "yes") - -NUT_REPORT_FEATURE([enable SSL support], [${nut_with_ssl}], [${nut_ssl_lib}], - [WITH_SSL], [Define to enable SSL]) - -dnl ---------------------------------------------------------------------- -dnl Check for --with-wrap - -NUT_ARG_WITH([wrap], [enable libwrap (tcp-wrappers) support], [auto]) - -dnl ${nut_with_wrap}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_wrap}" != "no"; then - dnl check for libwrap compiler flags - NUT_CHECK_LIBWRAP -fi - -if test "${nut_with_wrap}" = "yes" -a "${nut_have_libwrap}" != "yes"; then - AC_MSG_ERROR(["libwrap not found"]) -fi - -if test "${nut_with_wrap}" != "no"; then - nut_with_wrap="${nut_have_libwrap}" -fi - -NUT_REPORT_FEATURE([enable libwrap (tcp-wrappers) support], [${nut_with_wrap}], [], - [WITH_WRAP], [Define to enable libwrap (tcp-wrappers) support]) - - -dnl ---------------------------------------------------------------------- -dnl Check for --with-libltdl - -NUT_ARG_WITH([libltdl], [enable libltdl (Libtool dlopen abstraction) support], [auto]) - -dnl ${nut_with_libltdl}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_libltdl}" != "no"; then - dnl check for libltdl compiler flags - NUT_CHECK_LIBLTDL -fi - -if test "${nut_with_libltdl}" = "yes" -a "${nut_have_libltdl}" != "yes"; then - AC_MSG_ERROR(["libltdl not found"]) -fi - -if test "${nut_with_libltdl}" != "no"; then - nut_with_libltdl="${nut_have_libltdl}" -fi - -NUT_REPORT_FEATURE([enable libltdl (Libtool dlopen abstraction) support], [${nut_with_libltdl}], [], - [WITH_LIBLTDL], [Define to enable libltdl (Libtool dlopen abstraction) support]) - -dnl Explicitely report if we are building nut-scanner or not -dnl since it requires libltdl -NUT_REPORT([build nut-scanner], [${nut_with_libltdl}]) - -dnl ---------------------------------------------------------------------- -dnl checks related to --with-cgi - -NUT_ARG_WITH([cgi], [build and install the CGI programs], [no]) - -dnl ${nut_with_cgi}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_cgi}" != "no"; then - dnl check for libgd compiler flags - NUT_CHECK_LIBGD -fi - -if test "${nut_with_cgi}" = "yes" -a "${nut_have_libgd}" != "yes"; then - AC_MSG_ERROR([libgd not found, required for CGI build]) -fi - -if test "${nut_with_cgi}" != "no"; then - nut_with_cgi="${nut_have_libgd}" -fi - -NUT_REPORT_FEATURE([build CGI programs], [${nut_with_cgi}], [], - [WITH_CGI], [Define to enable CGI (HTTP) support]) - -dnl ---------------------------------------------------------------------- -dnl checks related to --with-hal - -dnl ${nut_with_hal}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_hal}" = "yes" -a "${nut_have_libhal}" != "yes"; then - AC_MSG_ERROR(["libhal not found, required for HAL support"]) -fi - -if test "${nut_with_hal}" = "yes" -a "${nut_have_libusb}" != "yes"; then - AC_MSG_ERROR(["libusb not found, required for HAL support"]) -fi - -if test "${nut_with_hal}" != "no"; then - if test "${nut_have_libhal}" = "yes" -a "${nut_have_libusb}" = "yes"; then - nut_with_hal="yes" - else - nut_with_hal="no" - fi -fi - -AM_CONDITIONAL(WITH_HAL, test "${nut_with_hal}" = "yes") -NUT_REPORT_FEATURE([enable HAL support], [${nut_with_hal}], [], - [WITH_HAL], [Define to enable HAL support]) - -dnl ---------------------------------------------------------------------- - -dnl checks related to --with-doc - -dnl Always check for AsciiDoc prerequisites, since even if --with-doc -dnl is set to 'no', we may still want to build the website, or some -dnl doc targets manually -NUT_CHECK_ASCIIDOC - -case "${nut_with_doc}" in - yes|all|auto) - nut_doc_build_list="html-single html-chunked pdf" - ;; - no) - nut_doc_build_list="" - ;; - *) - nut_doc_build_list="`echo ${nut_with_doc} | sed 's/,/ /g'`" - ;; -esac - -for nut_doc_build_target in ${nut_doc_build_list}; do - case "${nut_doc_build_target}" in - html-single) - AC_MSG_CHECKING([if asciidoc version can build ${nut_doc_build_target}]) - AX_COMPARE_VERSION([${ASCIIDOC_VERSION}], [ge], [8.6.3], [ - AC_MSG_RESULT(yes) - DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target}" - ], [ - AC_MSG_RESULT(no) - DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} ${nut_doc_build_target}" - ]) - ;; - - html-chunked) - AC_MSG_CHECKING([if a2x version can build ${nut_doc_build_target}]) - AX_COMPARE_VERSION([${A2X_VERSION}], [ge], [8.6.3], [ - AC_MSG_RESULT(yes) - DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target}" - ], [ - AC_MSG_RESULT(no) - DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} ${nut_doc_build_target}" - ]) - ;; - - pdf) - AC_MSG_CHECKING([if dblatex version can build ${nut_doc_build_target}]) - AX_COMPARE_VERSION([${DBLATEX_VERSION}], [ge], [0.2.5], [ - AC_MSG_RESULT(yes) - DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target}" - ], [ - AC_MSG_RESULT(no) - DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} ${nut_doc_build_target}" - ]) - ;; - esac -done - -case "${nut_with_doc}" in -auto) - if test -n "${DOC_BUILD_LIST}"; then - nut_with_doc="yes" - else - nut_with_doc="no" - fi - ;; -no) - ;; -*) - if test -z "${DOC_NOBUILD_LIST}"; then - nut_with_doc="yes" - else - AC_MSG_ERROR(["Unable to build ${DOC_NOBUILD_LIST} documentation"]) - fi - ;; -esac - -AC_MSG_CHECKING([if asciidoc version can build website (minimum required 8.6.3)]) -AX_COMPARE_VERSION([${ASCIIDOC_VERSION}], [ge], [8.6.3], [ - AC_MSG_RESULT(yes) - nut_have_asciidoc="yes" -], [ - AC_MSG_RESULT(no) - nut_have_asciidoc="no" -]) - -AC_MSG_CHECKING([if a2x version can build website (minimum required 8.6.3)]) -AX_COMPARE_VERSION([${A2X_VERSION}], [ge], [8.6.3], [ - AC_MSG_RESULT(yes) -], [ - AC_MSG_RESULT(no) - nut_have_asciidoc="no" -]) - -NUT_REPORT_FEATURE([build and install documentation], [${nut_with_doc}], [], - [WITH_ASCIIDOC], [Define to enable Asciidoc support]) - -dnl Notes: we also keep HAVE_ASCIIDOC for implicit targets, such as manpage -dnl building -AM_CONDITIONAL([HAVE_ASCIIDOC], [test "${nut_have_asciidoc}" = "yes"]) - -if test "${nut_with_doc}" = "yes"; then - NUT_REPORT([only build specific documentation format], [${DOC_BUILD_LIST}]) -fi - -dnl ---------------------------------------------------------------------- -dnl checks related to --with-dev - -dnl We only init libtool there to allow AC_DISABLE_STATIC -AC_PROG_LIBTOOL - -dnl ${nut_with_dev}: any value except "yes" or "no" is treated as "auto". -if test "${nut_with_dev}" != "no"; then - nut_with_dev="yes" -else - AC_DISABLE_STATIC -fi -AM_CONDITIONAL(WITH_DEV, test "${nut_with_dev}" = "yes") -NUT_REPORT_FEATURE([build and install the development files], [${nut_with_dev}], [], - [WITH_DEV], [Define to enable development files support]) - -dnl ---------------------------------------------------------------------- - - -AC_MSG_CHECKING(state path) -AC_ARG_WITH(statepath, - AS_HELP_STRING([--with-statepath=PATH], [path for ups state files (/var/state/ups)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-statepath - see docs/configure.txt) - ;; - *) - STATEPATH="${withval}" - ;; - esac -], []) -AC_DEFINE_UNQUOTED(STATEPATH, "${STATEPATH}", [Path for UPS driver state files]) -AC_MSG_RESULT(${STATEPATH}) - -dnl --------------------------------------------------------------------- -dnl The 'alt pid path' is used by the drivers (via main.c) and upsd, since -dnl ideally they do not run as root and will not be able to write to the usual -dnl /var/run path. This defaults to the STATEPATH since they should be -dnl able to write there. -dnl - -AC_MSG_CHECKING(alt pid path) -AC_ARG_WITH(altpidpath, - AS_HELP_STRING([--with-altpidpath=PATH], [path for driver/upsd .pid files ()]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-altpidpath - see docs/configure.txt) - ;; - *) - ALTPIDPATH="${withval}" - ;; - esac -], [ - ALTPIDPATH="${STATEPATH}" -]) -AC_DEFINE_UNQUOTED(ALTPIDPATH, "${ALTPIDPATH}", [Path for pid files of drivers and upsd (usually STATEPATH)]) -AC_MSG_RESULT(${ALTPIDPATH}) - -AC_MSG_CHECKING(driver path) -AC_ARG_WITH(drvpath, - AS_HELP_STRING([--with-drvpath=PATH], [where to install UPS drivers (EPREFIX/bin)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-drvpath - see docs/configure.txt) - ;; - *) - driverexecdir="${withval}" - ;; - esac -], []) -conftemp="${driverexecdir}" -eval conftemp=\"${conftemp}\" -eval conftemp=\"${conftemp}\" -AC_DEFINE_UNQUOTED(DRVPATH, "${conftemp}", [Default path for UPS drivers]) -AC_MSG_RESULT(${driverexecdir}) - -AC_MSG_CHECKING(cgi path) -AC_ARG_WITH(cgipath, - AS_HELP_STRING([--with-cgipath=PATH], [where to install CGI programs (EPREFIX/cgi-bin)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-cgipath - see docs/configure.txt) - ;; - *) - cgiexecdir="${withval}" - ;; - esac -], []) -conftemp="${cgiexecdir}" -eval conftemp=\"${conftemp}\" -eval conftemp=\"${conftemp}\" -AC_DEFINE_UNQUOTED(CGIPATH, "${conftemp}", [Default path for CGI programs]) -AC_MSG_RESULT(${cgiexecdir}) - -AC_MSG_CHECKING(html path) -AC_ARG_WITH(htmlpath, - AS_HELP_STRING([--with-htmlpath=PATH], [where to install HTML files (PREFIX/html)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-htmlpath - see docs/configure.txt) - ;; - *) - htmldir="${withval}" - ;; - esac -], []) -conftemp="${htmldir}" -eval conftemp=\"${conftemp}\" -eval conftemp=\"${conftemp}\" -AC_DEFINE_UNQUOTED(HTMLPATH, "${conftemp}", [Default path for HTML files]) -AC_MSG_RESULT(${htmldir}) - -AC_MSG_CHECKING(pidpath) -AC_ARG_WITH(pidpath, - AS_HELP_STRING([--with-pidpath=PATH], [path for .pid files (/var/run)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-pidpath - see docs/configure.txt) - ;; - *) - PIDPATH="${withval}" - ;; - esac -], []) -AC_DEFINE_UNQUOTED(PIDPATH, "${PIDPATH}", [Path where the pid files should go]) -AC_MSG_RESULT(${PIDPATH}) - -AC_MSG_CHECKING(network port number) -AC_ARG_WITH(port, - AS_HELP_STRING([--with-port=PORT], [port for network communications (3493)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-port - see docs/configure.txt) - ;; - *) - PORT="${withval}" - ;; - esac -], [ - PORT="3493" -]) -AC_DEFINE_UNQUOTED(PORT, ${PORT}, [Port for network communications]) -AC_MSG_RESULT(${PORT}) - -AC_MSG_CHECKING(user to run as) -AC_ARG_WITH(user, - AS_HELP_STRING([--with-user=username], [user for programs started as root (nobody)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-user - see docs/configure.txt) - ;; - *) - RUN_AS_USER="${withval}" - nut_user_given=yes - ;; - esac -], [ - nut_user_given=no -]) -AC_DEFINE_UNQUOTED(RUN_AS_USER, "${RUN_AS_USER}", [User to switch to if started as root]) -AC_MSG_RESULT(${RUN_AS_USER}) - -AC_MSG_CHECKING(group membership of user to run as) -AC_ARG_WITH(group, - AS_HELP_STRING([--with-group=groupname], [group membership of user for programs started as root (nogroup)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-group - see docs/configure.txt) - ;; - *) - RUN_AS_GROUP="${withval}" - nut_group_given=yes - ;; - esac -], [ - nut_group_given=no -]) -AC_DEFINE_UNQUOTED(RUN_AS_GROUP, "${RUN_AS_GROUP}", [Group membership of user to switch to if started as root]) -AC_MSG_RESULT(${RUN_AS_GROUP}) - -dnl check that --with-user is given if --with-group is given. -if test "${nut_user_given}" = "yes" -a "${nut_group_given}" = "no"; then - AC_MSG_ERROR(["If you specify --with-user, you also must specify --with-group"]) -elif test "${nut_user_given}" = "no" -a "${nut_group_given}" = "yes"; then - AC_MSG_ERROR(["If you specify --with-group, you also must specify --with-user"]) -fi - -AC_MSG_CHECKING(facility for syslog) -AC_ARG_WITH(logfacility, - AS_HELP_STRING([--with-logfacility=FACILITY], [facility for log messages (LOG_DAEMON)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-logfacility - see docs/configure.txt) - ;; - *) - LOGFACILITY="${withval}" - ;; - esac -], [ - LOGFACILITY="LOG_DAEMON" -]) -AC_DEFINE_UNQUOTED(LOG_FACILITY, ${LOGFACILITY}, [Desired syslog facility - see syslog(3)]) -AC_MSG_RESULT(${LOGFACILITY}) - -dnl Autoconf versions before 2.62 do not allow consecutive quadrigraphs, -dnl so the help string depends on the version used -AC_MSG_CHECKING(which drivers to build) -AC_ARG_WITH(drivers, - AS_HELP_STRING([m4_version_prereq(2.62, - [@<:@--with-drivers=driver@<:@,driver@:>@@:>@], - [[[[--with-drivers=driver@<:@,driver@:>@]]]])], - [Only build specific drivers (all)]), -[ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-drivers - see docs/configure.txt) - ;; - *) - DRIVER_BUILD_LIST=`echo ${withval} | sed "s/,/ /g"` - AC_MSG_RESULT(${DRIVER_BUILD_LIST}) - ;; - esac -], [ - DRIVER_BUILD_LIST="all" - AC_MSG_RESULT(all available) -]) -AM_CONDITIONAL(SOME_DRIVERS, test "${DRIVER_BUILD_LIST}" != "all") - -if test "${DRIVER_BUILD_LIST}" != "all"; then - NUT_REPORT([only build specific drivers], [${DRIVER_BUILD_LIST}]) -fi - -AC_MSG_CHECKING(which driver man pages to install) -if test "${DRIVER_BUILD_LIST}" = "all"; then - DRIVER_MAN_LIST=all - AC_MSG_RESULT(all available) -else - DRIVER_MAN_LIST="" - for i in ${DRIVER_BUILD_LIST}; do - if test -f ${srcdir}/docs/man/$i.8; then - DRIVER_MAN_LIST="${DRIVER_MAN_LIST} $i.8" - fi - done - AC_MSG_RESULT(${DRIVER_MAN_LIST}) -fi - -AC_MSG_CHECKING(whether to strip debug symbols) -AC_ARG_ENABLE(strip, - AS_HELP_STRING([--enable-strip], [Strip debugging symbols from binaries (no)]), -[ - case "${withval}" in - no) - AC_MSG_RESULT(no) - ;; - *) - AC_MSG_RESULT(yes) - CFLAGS="${CFLAGS} -s" - ;; - esac -], [ - AC_MSG_RESULT(no) -]) - -AC_MSG_CHECKING(whether to install pkg-config *.pc files) -AC_ARG_WITH(pkgconfig-dir, - AS_HELP_STRING([--with-pkgconfig-dir=PATH], [where to install pkg-config *.pc files (EPREFIX/lib/pkgconfig)]), -[ - case "${withval}" in - yes|auto) - ;; - no) - pkgconfigdir="" - ;; - *) - pkgconfigdir="${withval}" - ;; - esac -], []) -if test -n "${pkgconfigdir}"; then - AC_MSG_RESULT(using ${pkgconfigdir}) -else - AC_MSG_RESULT(no) -fi -AM_CONDITIONAL(WITH_PKG_CONFIG, test -n "${pkgconfigdir}") - -PKG_PROG_PKG_CONFIG -systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd` -AC_MSG_CHECKING(whether to install systemd files) -AC_ARG_WITH([systemdsystemunitdir], - AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files (auto)]), -[ - case "${withval}" in - yes|auto) - ;; - no) - systemdsystemunitdir="" - ;; - *) - systemdsystemunitdir="${withval}" - ;; - esac -], []) -dnl Override installation directory, with the local installation -dnl prefix. This is needed for 'distcheck*' targets, otherwise -dnl files will try to get intalled to the actual system directories -if test -n "${systemdsystemunitdir}"; then - systemdsystemshutdowndir="${libdir}/systemd/system-shutdown" - AC_MSG_RESULT(using ${systemdsystemunitdir}) - systemdsystemunitdir="`echo ${systemdsystemunitdir} | sed 's/\/lib/\${libdir}/'`" -else - AC_MSG_RESULT(no) -fi -AM_CONDITIONAL(HAVE_SYSTEMD, test "$systemdsystemunitdir" != "") - -AC_MSG_CHECKING(whether to install hotplug rules) -AC_ARG_WITH(hotplug-dir, - AS_HELP_STRING([--with-hotplug-dir=PATH], [where to install hotplug rules (/etc/hotplug)]), -[ - case "${withval}" in - yes) - if test -z "${hotplugdir}"; then - AC_MSG_RESULT(no) - AC_MSG_ERROR(["hotplug directory requested but not found"]) - fi - ;; - auto) - ;; - no) - hotplugdir="" - ;; - *) - hotplugdir="${withval}" - ;; - esac -], []) -if test -n "${hotplugdir}"; then - AC_MSG_RESULT(using ${hotplugdir}) -else - AC_MSG_RESULT(no) -fi -AM_CONDITIONAL(WITH_HOTPLUG, test -n "${hotplugdir}") - -AC_MSG_CHECKING(whether to install udev rules) -AC_ARG_WITH(udev-dir, - AS_HELP_STRING([--with-udev-dir=PATH], [where to install udev rules (/lib/udev or /etc/udev)]), -[ - case "${withval}" in - yes) - if test -z "${udevdir}"; then - AC_MSG_RESULT(no) - AC_MSG_ERROR(["udev directory requested but not found"]) - fi - ;; - auto) - ;; - no) - udevdir="" - ;; - *) - udevdir="${withval}" - ;; - esac -], []) -if test -n "${udevdir}"; then - AC_MSG_RESULT(using ${udevdir}) -else - AC_MSG_RESULT(no) -fi -AM_CONDITIONAL(WITH_UDEV, test -n "${udevdir}") - -AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none]) -AM_CONDITIONAL([MANUALUPDATE], [test "x$ASCIIDOC" != "xnone"]) -AC_PATH_PROGS([A2X], [a2x], [none]) - -dnl check for spell checking deps -AC_PATH_PROGS([ASPELL], [aspell], [none]) -AM_CONDITIONAL([HAVE_ASPELL], [test "x$ASPELL" != "xnone"]) - -dnl expand ${sysconfdir} and write it out -conftemp="${sysconfdir}" -eval conftemp=\"${conftemp}\" -eval conftemp=\"${conftemp}\" -CONFPATH=${conftemp} -AC_DEFINE_UNQUOTED(CONFPATH, "${conftemp}", [Default path for configuration files]) - -dnl same for datadir -conftemp="${datadir}" -eval conftemp=\"${conftemp}\" -eval conftemp=\"${conftemp}\" -DATADIR=${conftemp} -AC_DEFINE_UNQUOTED(DATADIR, "${conftemp}", [Default path for data files]) - -dnl same for bindir -conftemp="${bindir}" -eval conftemp=\"${conftemp}\" -eval conftemp=\"${conftemp}\" -BINDIR=${conftemp} -AC_DEFINE_UNQUOTED(BINDIR, "${conftemp}", [Default path for user executables]) - -dnl same for sbindir -conftemp="${sbindir}" -eval conftemp=\"${conftemp}\" -eval conftemp=\"${conftemp}\" -SBINDIR=${conftemp} -AC_DEFINE_UNQUOTED(SBINDIR, "${conftemp}", [Default path for system executables]) - -AC_SUBST(OS_NAME) -AC_SUBST(TREE_VERSION) -AC_SUBST(NUT_NETVERSION) -AC_SUBST(LIBSSL_CFLAGS) -AC_SUBST(LIBSSL_LIBS) -AC_SUBST(LIBGD_CFLAGS) -AC_SUBST(LIBGD_LDFLAGS) -AC_SUBST(LIBNETSNMP_CFLAGS) -AC_SUBST(LIBNETSNMP_LIBS) -AC_SUBST(LIBUSB_CFLAGS) -AC_SUBST(LIBUSB_LIBS) -AC_SUBST(LIBNEON_CFLAGS) -AC_SUBST(LIBNEON_LIBS) -AC_SUBST(LIBAVAHI_CFLAGS) -AC_SUBST(LIBAVAHI_LIBS) -AC_SUBST(LIBPOWERMAN_CFLAGS) -AC_SUBST(LIBPOWERMAN_LIBS) -AC_SUBST(LIBIPMI_CFLAGS) -AC_SUBST(LIBIPMI_LIBS) -AC_SUBST(DOC_BUILD_LIST) -AC_SUBST(LIBWRAP_CFLAGS) -AC_SUBST(LIBWRAP_LIBS) -AC_SUBST(LIBLTDL_CFLAGS) -AC_SUBST(LIBLTDL_LIBS) -AC_SUBST(HAL_USER) -AC_SUBST(HAL_DEVICE_MATCH_KEY) -AC_SUBST(HAL_FDI_PATH) -AC_SUBST(HAL_CALLOUTS_PATH) -AC_SUBST(LIBHAL_CFLAGS) -AC_SUBST(LIBHAL_LIBS) -AC_SUBST(DRIVER_BUILD_LIST) -AC_SUBST(DRIVER_MAN_LIST) -AC_SUBST(DRIVER_INSTALL_TARGET) -AC_SUBST(NETLIBS) -AC_SUBST(SERLIBS) -AC_SUBST(PIDPATH) -AC_SUBST(STATEPATH) -AC_SUBST(CONFPATH) -AC_SUBST(BINDIR) -AC_SUBST(DRVPATH) -AC_SUBST(SBINDIR) -AC_SUBST(PORT) -AC_SUBST(RUN_AS_USER) -AC_SUBST(RUN_AS_GROUP) -AC_SUBST(SUN_LIBUSB) -AC_SUBST(WORDS_BIGENDIAN) -AC_SUBST(cgiexecdir) -AC_SUBST(driverexecdir) -AC_SUBST(htmldir) -AC_SUBST(pkgconfigdir) -AC_SUBST(systemdsystemunitdir) -AC_SUBST(systemdsystemshutdowndir) -AC_SUBST(hotplugdir) -AC_SUBST(udevdir) - -AC_OUTPUT([ - clients/Makefile - common/Makefile - conf/Makefile - conf/upsmon.conf.sample - conf/upssched.conf.sample - data/html/header.html - data/html/Makefile - data/Makefile - data/driver.list - docs/Makefile - docs/man/Makefile - docs/website/Makefile - drivers/Makefile - include/Makefile - lib/libupsclient-config - lib/libupsclient.pc - lib/libnutclient.pc - lib/libnutscan.pc - lib/Makefile - scripts/augeas/Makefile - scripts/augeas/nutnutconf.aug - scripts/augeas/nutupsconf.aug - scripts/augeas/nutupsdconf.aug - scripts/augeas/nutupsdusers.aug - scripts/augeas/nutupsmonconf.aug - scripts/augeas/nutupsschedconf.aug - scripts/augeas/nuthostsconf.aug - scripts/augeas/nutupssetconf.aug - scripts/avahi/nut.service - scripts/hal/Makefile - scripts/hal/ups-nut-device.fdi - scripts/hotplug/Makefile - scripts/hotplug/libhidups - scripts/HP-UX/nut.psf - scripts/HP-UX/postinstall - scripts/python/Makefile - scripts/systemd/Makefile - scripts/systemd/nut-driver.service - scripts/systemd/nut-monitor.service - scripts/systemd/nut-server.service - scripts/systemd/nutshutdown - scripts/Solaris/Makefile - scripts/Solaris/pkginfo - scripts/Solaris/postinstall - scripts/Solaris/preremove - scripts/Solaris/nut - scripts/udev/Makefile - scripts/udev/nut-ipmipsu.rules - scripts/udev/nut-usbups.rules - scripts/ufw/nut.ufw.profile - scripts/Makefile - server/Makefile - tools/Makefile - tools/nut-scanner/Makefile - tests/Makefile - Makefile -]) - -NUT_PRINT_FEATURE_REPORT diff -Nru nut-2.7.1/data/driver.list.in nut-2.7.2/data/driver.list.in --- nut-2.7.1/data/driver.list.in 2013-11-18 21:28:04.000000000 +0100 +++ nut-2.7.2/data/driver.list.in 2014-04-07 20:37:40.000000000 +0200 @@ -27,8 +27,8 @@ # ***** vendor provided protocol and hardware # # - driver [parameters]: mention the driver(s) (separated by "or" if there are -# several possibilities. Any mandatory parameter(s) must be referenced, as -# they will be parsed by configuration helper softwares. +# several possibilities). Any mandatory parameter(s) must be referenced, as +# they will be parsed by configuration helper software. # For example, genericups entries must mention the "upstype=nn" format. # # Duplicate text in the last field will be cooked out during the conversion @@ -99,8 +99,10 @@ "Atlantis Land" "ups" "2" "A03-P826" "" "blazer_ser" "Atlantis Land" "ups" "2" "A03-P551" "USB" "blazer_usb langid_fix=0x0409" # http://www.atlantisland.it/pub/prodotti.php?famiglia=1&l1=7&l2=24&articolo=QTAzLVA1NTE= +"Atlantis Land" "ups" "2" "HostPower 851 (A03-HP851)" "USB" "nutdrv_qx" "Atlantis Land" "ups" "2" "LinePower 1151 (A03-OP1151)" "Serial" "nutdrv_qx" "Atlantis Land" "ups" "2" "LinePower 1151 (A03-OP1151)" "USB" "nutdrv_qx" +"Atlantis Land" "ups" "2" "OnePower 841+ (A03-P841)" "USB" "nutdrv_qx" "Atlantis Land" "ups" "2" "(various)" "Serial" "nutdrv_qx" "Atlantis Land" "ups" "2" "(various)" "USB" "nutdrv_qx" @@ -154,6 +156,8 @@ "Borri" "ups" "2" "B500-R060-B/B500-R100-B" "" "blazer_usb" "Borri" "ups" "2" "B500EVO-100-B/B500EVO-200-B" "" "blazer_usb" +"CABAC" "ups" "2" "UPS-1700DV2" "" "blazer_usb" + "Chloride" "ups" "2" "Desk Power 650" "serial port" "blazer_ser" "Cito Power" "ups" "2" "CPG-SR1000" "" "blazer_ser" @@ -192,6 +196,7 @@ "Cyber Power Systems" "ups" "2" "CPS800AVR" "USB" "usbhid-ups" "Cyber Power Systems" "ups" "2" "AE550" "USB" "usbhid-ups" "Cyber Power Systems" "ups" "3" "CP 1500C" "USB" "usbhid-ups" +"Cyber Power Systems" "ups" "3" "CP825AVR-G / LE825G" "USB" "usbhid-ups" # http://www.cyberpowersystems.com/products/ups-systems/retail-products/LE825G.html "Cyber Power Systems" "ups" "3" "OR2200LCDRM2U" "USB" "usbhid-ups" "Cyber Power Systems" "ups" "3" "OR700LCDRM1U" "USB" "usbhid-ups" "Cyber Power Systems" "ups" "3" "PR6000LCDRTXL5U" "USB" "usbhid-ups" @@ -241,6 +246,7 @@ "Digital Loggers" "pdu" "1" "LPC, EPCR2, DIN" "8 outlets" "powerman-pdu (experimental)" +"Digitus" "ups" "1" "DN-170014" "USB" "richcomm_usb" # http://www.digitus.info/en/products/professional-network/security-and-surveillance/power-supply/uninterrruptable-power-supplies/ups-uninterruptible-power-systems-dn-170014/section/prof/ "Digitus" "ups" "2" "DN-170020" "" "blazer_ser" "Dynamix" "ups" "2" "UPS1700D" "" "blazer_ser" @@ -295,6 +301,7 @@ "Eaton" "pdu" "5" "ePDU Managed" "" "snmp-ups" "Eaton" "pdu" "5" "ePDU Switched" "" "snmp-ups" "Eaton" "pdu" "5" "ePDU Monitored" "" "snmp-ups or netxml-ups" +"Eaton" "ups" "5" "Powerware 3105" "USB" "bcmxcp_usb" # http://powerquality.eaton.com/Products-services/Backup-Power-UPS/3105-eol.aspx "Eaton" "ups" "5" "Powerware 9130" "" "bcmxcp or usbhid-ups" "Eaton" "ups" "5" "Powerware 9140" "" "bcmxcp or usbhid-ups" "Eaton" "ups" "5" "Powerware 5130" "" "usbhid-ups" @@ -414,6 +421,7 @@ "Infosec" "ups" "2" "iPEL 750" "" "blazer_ser" "Infosec" "ups" "2" "iPEL 1000" "" "blazer_ser" "Infosec" "ups" "2" "500XP" "" "blazer_ser" +"Infosec" "ups" "2" "X2, X3, X4, E2, E3, E4" "USB" "blazer_usb" "Infosec" "ups" "2" "XP 500" "USB" "blazer_usb" "Infosec" "ups" "2" "XP 1000" "" "blazer_ser" @@ -437,6 +445,8 @@ "Jageson Technology" "ups" "1" "Jasuny USPS" "" "genericups upstype=4" +"Kanji" "ups" "1" "800 VA" "USB" "nutdrv_atcl_usb" + "Kebo" "ups" "2" "1200D/D Series" "" "blazer_ser" "KOLFF" "ups" "2" "BLACK NOVA 1K/2K/3K/6K/10K/20K TOWER" "" "blazer_usb" @@ -458,6 +468,7 @@ "Liebert" "ups" "1" "GXT2-3000RT230" "" "liebert-esp2 (experimental)" "Liebert" "ups" "2" "PowerSure Personal XT" "USB" "usbhid-ups" "Liebert" "ups" "2" "PowerSure PSA" "USB" "usbhid-ups" +"Liebert" "ups" "2" "PowerSure PSI 1440" "USB" "usbhid-ups" # http://www.emersonnetworkpower.com/en-US/Products/ACPower/Pages/LiebertPowerSurePSILineInteractiveUPS10003000VA.aspx "LNXI" "pdu" "1" "Icebox" "10 outlets" "powerman-pdu (experimental)" @@ -641,6 +652,7 @@ "MicroDowell" "ups" "1" "B.Box BP 750" "" "powerpanel" "MicroDowell" "ups" "1" "B.Box BP 1000" "" "powerpanel" "MicroDowell" "ups" "1" "B.Box BP 1500" "" "powerpanel" +"MicroDowell" "ups" "1" "B.Box LP 500" "" "genericups upstype=7" "MicroDowell" "ups" "5" "Enterprise B8" "" "microdowell" "MicroDowell" "ups" "5" "Enterprise B10" "" "microdowell" "MicroDowell" "ups" "5" "Enterprise N8" "" "microdowell" @@ -674,6 +686,7 @@ "Mustek" "ups" "2" "Powermust" "600VA Plus" "blazer_ser" "Mustek" "ups" "2" "Powermust" "800VA Pro" "blazer_ser" "Mustek" "ups" "2" "Powermust" "1000VA Plus" "blazer_ser" +"Mustek" "ups" "2" "Powermust" "1000VA USB" "blazer_usb" "Mustek" "ups" "2" "Powermust" "1400VA Plus" "blazer_ser" "Mustek" "ups" "2" "Powermust" "2000VA USB" "blazer_ser" "Mustek" "ups" "2" "Powermust Office 650" "USB" "blazer_usb" @@ -687,7 +700,10 @@ "Nitram" "ups" "1" "Elite 2002" "" "genericups upstype=16" "Nitram" "ups" "1" "Elite 2005" "" "powerpanel" -"NUMERIC" "ups" "2" "3000 SW" "" "blazer_ser" +"Novex" "ups" "1" "NUPS-650" "USB" "blazer_usb protocol=megatec" # http://komp.1k.by/periphery-ups/novex/Novex_NUPS_650-130052.html + +"Numeric" "ups" "2" "3000 SW" "" "blazer_ser" +"Numeric" "ups" "2" "Digital 800 plus" "USB" "blazer_usb" "Oneac" "ups" "1" "ON400" "advanced interface" "oneac" "Oneac" "ups" "1" "ON600" "advanced interface" "oneac" @@ -715,6 +731,7 @@ "OnLite" "ups" "2" "AQUA" "50" "blazer_ser" "Opti-UPS" "ups" "1" "PowerES" "420E" "optiups" +"Opti-UPS" "ups" "1" "VS 575C" "type=OPTI" "powercom" "Orvaldi Power Protection" "ups" "2" "various" "not 400 or 600" "blazer_ser" "Orvaldi Power Protection" "ups" "2" "750 / 900SP" "" "blazer_usb" @@ -723,6 +740,7 @@ "Plexus" "ups" "2" "500VA" "USB" "blazer_usb" "Plexus" "ups" "2" "1000VA Pro" "USB" "blazer_usb" +"Plexus" "ups" "1" "800 VA" "USB" "nutdrv_atcl_usb" "Powercom" "ups" "4" "SMK" "" "blazer_ser" "Powercom" "ups" "4" "SXL" "" "blazer_ser" @@ -888,6 +906,8 @@ "Sweex" "ups" "1" "1000" "USB" "richcomm_usb" "Sweex" "ups" "2" "(various)" "" "blazer_ser" +"Syndome" "ups" "2" "Era 500VA" "USB" "blazer_usb" + "Sysgration" "ups" "2" "UPGUARDS Pro650" "" "blazer_ser" "Tecnoware" "ups" "2" "Easy Power 1200" "" "blazer_ser" @@ -1068,6 +1088,9 @@ "Voltronic Power" "ups" "2" "Frigate TX 1KVA" "USB" "nutdrv_qx" "Voltronic Power" "ups" "2" "Galleon 1KVA" "Serial" "nutdrv_qx" "Voltronic Power" "ups" "2" "Galleon 1KVA" "USB" "nutdrv_qx" +"Voltronic Power" "ups" "2" "Prosine 800" "Serial" "nutdrv_qx" +"Voltronic Power" "ups" "2" "Prosine 800" "USB" "nutdrv_qx" +"Voltronic Power" "ups" "2" "Vesta LED 850VA" "USB" "nutdrv_qx" "Voltronic Power" "ups" "2" "(various)" "Serial" "nutdrv_qx" "Voltronic Power" "ups" "2" "(various)" "USB" "nutdrv_qx" diff -Nru nut-2.7.1/data/html/Makefile.in nut-2.7.2/data/html/Makefile.in --- nut-2.7.1/data/html/Makefile.in 2013-11-20 20:55:13.000000000 +0100 +++ nut-2.7.2/data/html/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -65,7 +65,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -75,10 +74,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -165,10 +163,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -180,8 +174,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -267,6 +259,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/data/Makefile.in nut-2.7.2/data/Makefile.in --- nut-2.7.1/data/Makefile.in 2013-11-20 20:55:13.000000000 +0100 +++ nut-2.7.2/data/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -67,7 +67,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -77,10 +76,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -206,10 +204,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -221,8 +215,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -308,6 +300,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/debian/changelog nut-2.7.2/debian/changelog --- nut-2.7.1/debian/changelog 2015-10-12 12:10:14.000000000 +0200 +++ nut-2.7.2/debian/changelog 2016-01-22 14:48:40.000000000 +0100 @@ -1,3 +1,106 @@ +nut (2.7.2-4ubuntu1) xenial; urgency=low + + * Merge with Debian; remaining changes: + - debian/control: + + remove Build-Depends on libpowerman0-dev + + remove nut-powerman-pdu + - debian/nut-powerman-pdu.{install,manpages}: dropped for now + - debian/{nut-cgi,nut-server}.postinst: add nut to the group + unconditonally, for compatibility with UPSes connected by serial port. + - debian/source_nut.py, debian/{nut,nut-server,nut-client}.install, + debian/rules: Install apport hooks for all top-level nut packages. + - Patch libtool.m4 and configure to support ppc64le. + - Disable systemd unit; it does not check nut.conf whether nut is + configured, and thus fails to start (and the package install). The + init.d script works well enough for the time being. + - debian/tests/test-nut.py: in the CVE_2012_2944 test, give nut at most + + 5 seconds to shut down, instead of expecting it to be shut down + immediately after sending the killall. + + Additional indication on how to run tests for oneiric, precise to + vivid and wily+ + - debian/patches/0006-ups-conf-reorder.patch: Move maxretry setting + above Examples section. + - debian/tests/control : Fix dep8 test failures: + + Drop python-unit from dep8 dependencies since the python-test + package has now been removed. The unittest module has shipped with + Python since 2.1. + + Add dep8 test dependency on python, since Python 2 is required and + is not necessarily installed by default any more. + + * Dropped changes: + - Fix linking libupsclient : Superseded upstream + - debian/patches/backport-fix-lp753661.patch: extraneous end-of-line now + fixed differently upstream. + - debian/rules: Use udev version for Ubuntu; delta no longer needed as + both versions are earlier than the earliest supported udev in Ubuntu. + + [ Steve Langasek ] + * debian/nut-{cgi,server}.postinst: fix 'adduser' logic to be + unconditional, since adduser is guaranteed to be idempotent. + + -- Louis Bouchard Thu, 03 Dec 2015 12:37:13 +0100 + +nut (2.7.2-4) unstable; urgency=medium + + * Really fix package initial installation when PID1 is systemd (Closes: + #747863) + + -- Laurent Bigonville Fri, 20 Mar 2015 23:12:53 +0100 + +nut (2.7.2-3) unstable; urgency=medium + + * debian/NEWS: Fix NEWS file syntax + + -- Laurent Bigonville Tue, 17 Feb 2015 23:13:02 +0100 + +nut (2.7.2-2) unstable; urgency=medium + + [ Laurent Bigonville ] + * debian/gbp.conf: Switch to debian-jessie branch + * debian/rules: Revert the changes made in the previous NMU, I don't think + that dropping the .service file that late in the release cycle is a good + idea and anyway this was causing left-over files on upgrade. + * Add wrappers that check the MODE in /etc/nut/nut.conf to avoid starting + the daemons if nut is not configured (Closes: #747863). + + [ Michael Fincham ] + * Add patch that detects and corrects unsafe permissions on ~/.nut-monitor + left over from old installations during NUT-Monitor startup. + (Closes: #777706) + + -- Laurent Bigonville Tue, 17 Feb 2015 09:54:11 +0100 + +nut (2.7.2-1.1) unstable; urgency=medium + + * Non-maintainer upload. + * Port Ubuntu change to drop upstream systemd unit files to allow + sysvinit files for Jessie. (Closes: #747863) + + -- Neil Williams Sat, 17 Jan 2015 10:29:11 +0000 + +nut (2.7.2-1) unstable; urgency=low + + * New upstream release + - Fix the undefined references (Closes: #731156) + - debian/patches/0004-fix-systemd-service.patch: Refreshed + - Drop d/p/0005-Provide-retry-options-for-upsdrvctl-and-drivers.patch: + Merged upstream + - debian/nut-server.install: Upstream is now installing upsdrvctl /sbin + - Rename package libupsclient3 to libupsclient4, soname got bumped again + * debian/rules, debian/control, d/p/0004-fix-systemd-service.patch: Use a + symlink instead of an Alias= to mask the SysV initscript + * debian/control: Bump Standards-Version to 3.9.5 (no further changes) + * debian/tests/control: Add lsb-release and netcat to the dependencies + (Closes: #733189) + * debian/control, debian/rules: Call dh-autoreconf and pass LDFLAGS to + minimize runtime dependencies + * debian/patches/0008-drop-w3c-icons.patch: Remove the link to external W3C + icons to prevent privacy breach (privacy-breach-w3c-valid-html) + * debian/nut-server.install, debian/nut-server.manpages: Install new + nutdrv_atcl_usb driver + + -- Laurent Bigonville Tue, 22 Apr 2014 22:46:12 +0200 + nut (2.7.1-1ubuntu5) wily; urgency=medium * Fix dep8 test failures: @@ -1289,7 +1392,7 @@ * debian/nut.README.Debian: completed a bit more for #334105 -- Arnaud Quette Fri, 8 Feb 2008 13:48:23 +0100 - + nut (2.2.1-1) unstable; urgency=low * New upstream release (Closes: #439986) @@ -1384,7 +1487,7 @@ upsmon (Closes: #420020, #434503) -- Arnaud Quette Tue, 17 Jul 2007 09:14:11 +0200 - + nut (2.0.5-3) unstable; urgency=low * debian/patches/01_udev_rules_subsystem_usb.dpatch: rework that @@ -1457,7 +1560,7 @@ * not removing nut user on purge (Closes: #389350) -- Florian M. Weps Thu, 12 Oct 2006 11:19:37 +0200 - + nut (2.0.4-2) unstable; urgency=low * debian/rules: replace $PWD by CURDIR to satisfy buildd @@ -1495,7 +1598,7 @@ with hotplug and udev styles -- Arnaud Quette Mon, 13 Mar 2006 08:52:25 +0100 - + nut (2.0.3-3) unstable; urgency=low * debian/rules: @@ -1503,7 +1606,7 @@ - add a temporary workaround to clean drivers/tripplite_usb -- Arnaud Quette Mon, 27 Feb 2006 15:35:32 +0100 - + nut (2.0.3-2) unstable; urgency=low * debian/nut.init: fix the creation of the PID directory, as /var is now volative. @@ -1607,14 +1710,14 @@ #301060) -- Arnaud Quette Fri, 15 Apr 2005 13:52:32 +0100 - + nut (2.0.1-2.1) unstable; urgency=low * Non-maintainer upload * NUT nows powersdown Closes: #302189 -- Craig Small Thu, 7 Apr 2005 11:47:58 +1000 - + nut (2.0.1-2) unstable; urgency=low * debian/control: add missing Build-Depends for dpatch, thanks to Kurt @@ -1691,7 +1794,7 @@ * debian/nut.README.Debian: minor change -- Arnaud Quette Fri, 28 May 2004 13:10:01 +0200 - + nut (1.4.2-2) unstable; urgency=low * debian/control: add libusb-dev to Build-Depends (closes: #240586) @@ -1699,7 +1802,7 @@ the above) -- Arnaud Quette Sun, 28 Mar 2004 18:30:01 +0100 - + nut (1.4.2-1) unstable; urgency=low * New upstream release @@ -1778,7 +1881,7 @@ manpages installed two times) that prevent from installing nut-snmp package -- Arnaud Quette Mon, 10 Nov 2003 12:59:23 +0100 - + nut (1.4.1-pre3-1) unstable; urgency=low * New upstream release @@ -2244,3 +2347,4 @@ Local variables: mode: debian-changelog End: + diff -Nru nut-2.7.1/debian/control nut-2.7.2/debian/control --- nut-2.7.1/debian/control 2013-12-30 10:52:31.000000000 +0100 +++ nut-2.7.2/debian/control 2015-10-12 17:09:22.000000000 +0200 @@ -7,7 +7,8 @@ Build-Depends: debhelper (>= 8.1.3), cdbs (>= 0.4.122~), autotools-dev, - dh-systemd (>= 1.4), + dh-autoreconf, + dh-systemd (>= 1.14), libgd-dev | libgd2-xpm-dev | libgd2-noxpm-dev, libsnmp-dev | libsnmp9-dev, libusb-dev (>= 0.1.8), @@ -21,7 +22,7 @@ docbook-xsl, dblatex (>= 0.2.5), libxml2-utils -Standards-Version: 3.9.4 +Standards-Version: 3.9.5 Homepage: http://www.networkupstools.org/ Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/nut.git;a=summary Vcs-Git: git://anonscm.debian.org/collab-maint/nut.git @@ -150,7 +151,7 @@ . This package contains FAQ, user, developer and packager documentation. -Package: libupsclient3 +Package: libupsclient4 Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} @@ -168,7 +169,7 @@ Package: libupsclient-dev Section: libdevel Architecture: any -Depends: libupsclient3 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Depends: libupsclient4 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Conflicts: libupsclient1-dev Replaces: libupsclient1-dev Description: network UPS tools - development files diff -Nru nut-2.7.1/debian/gbp.conf nut-2.7.2/debian/gbp.conf --- nut-2.7.1/debian/gbp.conf 2013-11-24 20:58:03.000000000 +0100 +++ nut-2.7.2/debian/gbp.conf 2015-10-12 17:09:22.000000000 +0200 @@ -1,5 +1,5 @@ [DEFAULT] -debian-branch = debian +debian-branch = debian-jessie upstream-branch = upstream pristine-tar = True diff -Nru nut-2.7.1/debian/libupsclient3.install nut-2.7.2/debian/libupsclient3.install --- nut-2.7.1/debian/libupsclient3.install 2013-11-24 20:58:03.000000000 +0100 +++ nut-2.7.2/debian/libupsclient3.install 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -lib/*/libupsclient.so.* diff -Nru nut-2.7.1/debian/libupsclient3.symbols nut-2.7.2/debian/libupsclient3.symbols --- nut-2.7.1/debian/libupsclient3.symbols 2013-11-24 20:58:03.000000000 +0100 +++ nut-2.7.2/debian/libupsclient3.symbols 1970-01-01 01:00:00.000000000 +0100 @@ -1,27 +0,0 @@ -libupsclient.so.3 libupsclient3 #MINVER# - pconf_char@Base 2.7.1 - pconf_encode@Base 2.7.1 - pconf_file_begin@Base 2.7.1 - pconf_file_next@Base 2.7.1 - pconf_finish@Base 2.7.1 - pconf_init@Base 2.7.1 - pconf_line@Base 2.7.1 - pconf_parse_error@Base 2.7.1 - upscli_add_host_cert@Base 2.7.1 - upscli_cleanup@Base 2.7.1 - upscli_connect@Base 2.7.1 - upscli_disconnect@Base 2.7.1 - upscli_errlist@Base 2.7.1 - upscli_fd@Base 2.7.1 - upscli_get@Base 2.7.1 - upscli_init@Base 2.7.1 - upscli_list_next@Base 2.7.1 - upscli_list_start@Base 2.7.1 - upscli_readline@Base 2.7.1 - upscli_sendline@Base 2.7.1 - upscli_splitaddr@Base 2.7.1 - upscli_splitname@Base 2.7.1 - upscli_ssl@Base 2.7.1 - upscli_strerror@Base 2.7.1 - upscli_upserror@Base 2.7.1 - upscli_tryconnect@Base 2.7.1 diff -Nru nut-2.7.1/debian/libupsclient4.install nut-2.7.2/debian/libupsclient4.install --- nut-2.7.1/debian/libupsclient4.install 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/debian/libupsclient4.install 2015-03-20 23:13:01.000000000 +0100 @@ -0,0 +1 @@ +lib/*/libupsclient.so.* diff -Nru nut-2.7.1/debian/libupsclient4.symbols nut-2.7.2/debian/libupsclient4.symbols --- nut-2.7.1/debian/libupsclient4.symbols 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/debian/libupsclient4.symbols 2015-03-20 23:13:01.000000000 +0100 @@ -0,0 +1,78 @@ +libupsclient.so.4 libupsclient4 #MINVER# + UPS_VERSION@Base 2.7.2 + altpidpath@Base 2.7.2 + background@Base 2.7.2 + become_user@Base 2.7.2 + chroot_start@Base 2.7.2 + confpath@Base 2.7.2 + dflt_statepath@Base 2.7.2 + fatal_with_errno@Base 2.7.2 + fatalx@Base 2.7.2 + get_user_pwent@Base 2.7.2 + ltrim@Base 2.7.2 + nut_debug_level@Base 2.7.2 + nut_log_level@Base 2.7.2 + open_syslog@Base 2.7.2 + pconf_char@Base 2.7.2 + pconf_encode@Base 2.7.2 + pconf_file_begin@Base 2.7.2 + pconf_file_next@Base 2.7.2 + pconf_finish@Base 2.7.2 + pconf_init@Base 2.7.2 + pconf_line@Base 2.7.2 + pconf_parse_error@Base 2.7.2 + rtrim@Base 2.7.2 + select_read@Base 2.7.2 + select_write@Base 2.7.2 + sendsignal@Base 2.7.2 + sendsignalfn@Base 2.7.2 + snprintfcat@Base 2.7.2 + state_addcmd@Base 2.7.2 + state_addenum@Base 2.7.2 + state_addrange@Base 2.7.2 + state_cmdfree@Base 2.7.2 + state_delcmd@Base 2.7.2 + state_delenum@Base 2.7.2 + state_delinfo@Base 2.7.2 + state_delrange@Base 2.7.2 + state_getaux@Base 2.7.2 + state_getenumlist@Base 2.7.2 + state_getflags@Base 2.7.2 + state_getinfo@Base 2.7.2 + state_getrangelist@Base 2.7.2 + state_infofree@Base 2.7.2 + state_setaux@Base 2.7.2 + state_setflags@Base 2.7.2 + state_setinfo@Base 2.7.2 + state_tree_find@Base 2.7.2 + syslogbit_set@Base 2.7.2 + upscli_add_host_cert@Base 2.7.2 + upscli_cleanup@Base 2.7.2 + upscli_connect@Base 2.7.2 + upscli_disconnect@Base 2.7.2 + upscli_errlist@Base 2.7.2 + upscli_fd@Base 2.7.2 + upscli_get@Base 2.7.2 + upscli_init@Base 2.7.2 + upscli_list_next@Base 2.7.2 + upscli_list_start@Base 2.7.2 + upscli_readline@Base 2.7.2 + upscli_sendline@Base 2.7.2 + upscli_splitaddr@Base 2.7.2 + upscli_splitname@Base 2.7.2 + upscli_ssl@Base 2.7.2 + upscli_strerror@Base 2.7.2 + upscli_tryconnect@Base 2.7.2 + upscli_upserror@Base 2.7.2 + upsdebug_ascii@Base 2.7.2 + upsdebug_hex@Base 2.7.2 + upsdebug_with_errno@Base 2.7.2 + upsdebugx@Base 2.7.2 + upslog_with_errno@Base 2.7.2 + upslogx@Base 2.7.2 + writepid@Base 2.7.2 + xbasename@Base 2.7.2 + xcalloc@Base 2.7.2 + xmalloc@Base 2.7.2 + xrealloc@Base 2.7.2 + xstrdup@Base 2.7.2 diff -Nru nut-2.7.1/debian/local/upsd nut-2.7.2/debian/local/upsd --- nut-2.7.1/debian/local/upsd 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/debian/local/upsd 2015-03-20 23:13:01.000000000 +0100 @@ -0,0 +1,19 @@ +#!/bin/sh + +# Include NUT nut.conf +[ -r /etc/nut/nut.conf ] && . /etc/nut/nut.conf + +case "$MODE" in + standalone|netserver) + exec /lib/nut/upsd "$@" + ;; + none|netclient) + echo "upsd disabled, please adjust the configuration to your needs" + echo "Then set MODE to a suitable value in /etc/nut/nut.conf to enable it" + # exit success to avoid breaking the install process! + exit 0 + ;; + *) + exit 1 + ;; +esac diff -Nru nut-2.7.1/debian/local/upsmon nut-2.7.2/debian/local/upsmon --- nut-2.7.1/debian/local/upsmon 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/debian/local/upsmon 2015-03-20 23:13:01.000000000 +0100 @@ -0,0 +1,19 @@ +#!/bin/sh + +# Include NUT nut.conf +[ -r /etc/nut/nut.conf ] && . /etc/nut/nut.conf + +case "$MODE" in + standalone|netserver|netclient) + exec /lib/nut/upsmon "$@" + ;; + none) + echo "upsmon disabled, please adjust the configuration to your needs" + echo "Then set MODE to a suitable value in /etc/nut/nut.conf to enable it" + # exit success to avoid breaking the install process! + exit 0 + ;; + *) + exit 1 + ;; +esac diff -Nru nut-2.7.1/debian/NEWS nut-2.7.2/debian/NEWS --- nut-2.7.1/debian/NEWS 2013-11-24 20:58:03.000000000 +0100 +++ nut-2.7.2/debian/NEWS 2015-10-12 17:09:22.000000000 +0200 @@ -1,3 +1,16 @@ +nut (2.7.2-2) unstable; urgency=medium + + Since version 1.2 NUT-Monitor uses safer directory permissions when + creating ~/.nut-monitor. + + NUT-Monitor will now detect a pre-1.2 settings directory on startup + and update its permissions. + + Please note that passwords stored in NUT-Monitor prior to this change + may have been exposed, and it is recommended that they be reset. + + -- Michael Fincham Fri, 13 Feb 2015 11:57:12 +1300 + nut (2.6.5-1) experimental; urgency=low mge-shut driver has been replaced by a new implementation (newmge-shut). diff -Nru nut-2.7.1/debian/nut-cgi.postinst nut-2.7.2/debian/nut-cgi.postinst --- nut-2.7.1/debian/nut-cgi.postinst 2013-12-30 09:42:38.000000000 +0100 +++ nut-2.7.2/debian/nut-cgi.postinst 2016-01-18 15:42:50.000000000 +0100 @@ -14,9 +14,7 @@ adduser nut nut fi # for Ubuntu, while waiting for a proper debconf - if ! groups nut | grep -qw dialout; then - adduser nut dialout - fi + adduser --quiet nut dialout # Ensure /etc/nut is readable/crossable for others if [ -d /etc/nut/ ] ; then diff -Nru nut-2.7.1/debian/nut-client.install nut-2.7.2/debian/nut-client.install --- nut-2.7.1/debian/nut-client.install 2013-12-30 09:42:38.000000000 +0100 +++ nut-2.7.2/debian/nut-client.install 2015-10-12 17:09:22.000000000 +0200 @@ -3,6 +3,7 @@ debian/tmp/bin/upsrw debian/tmp/bin/upscmd debian/tmp/sbin/upsmon +debian/tmp/lib/nut/upsmon debian/tmp/sbin/upssched debian/tmp/bin/upssched-cmd debian/tmp/etc/nut/nut.conf diff -Nru nut-2.7.1/debian/nut-client.postinst nut-2.7.2/debian/nut-client.postinst --- nut-2.7.1/debian/nut-client.postinst 2013-11-24 20:58:03.000000000 +0100 +++ nut-2.7.2/debian/nut-client.postinst 2015-10-12 17:09:22.000000000 +0200 @@ -1,5 +1,16 @@ #!/bin/sh -e +handle_start_failure () { +# The nut client part (upsmon) must run in all cases except when MODE in +# /etc/nut/nut.conf is set to "none" or not set at all. + [ -r /etc/nut/nut.conf ] && . /etc/nut/nut.conf + if [ -d /run/systemd/system ] && [ "$MODE" = "none" -o -z "$MODE" ]; then + return 0 + else + return 1 + fi +} + case "$1" in configure) diff -Nru nut-2.7.1/debian/nut-client.prerm nut-2.7.2/debian/nut-client.prerm --- nut-2.7.1/debian/nut-client.prerm 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/debian/nut-client.prerm 2015-03-20 23:13:01.000000000 +0100 @@ -0,0 +1,13 @@ +#!/bin/sh +set -e + +handle_start_failure () { +# The MODE defined in /etc/nut/nut.conf shouldn't affect the exit code when the +# daemon is stopped. If it fails to stop, the maintainer script should fail +# too. + return 1 +} + +#DEBHELPER# + +exit 0 diff -Nru nut-2.7.1/debian/nut-server.install nut-2.7.2/debian/nut-server.install --- nut-2.7.1/debian/nut-server.install 2013-12-30 09:42:38.000000000 +0100 +++ nut-2.7.2/debian/nut-server.install 2015-12-03 12:32:50.000000000 +0100 @@ -1,5 +1,7 @@ debian/tmp/sbin/upsd debian/tmp/usr/share/apport/package-hooks/source_nut-server.py +debian/tmp/lib/nut/upsd +debian/tmp/sbin/upsdrvctl debian/tmp/usr/share/nut/cmdvartab debian/tmp/usr/share/nut/driver.list debian/tmp/*/udev/rules.d/52-nut-usbups.rules @@ -45,7 +47,6 @@ debian/tmp/lib/nut/victronups debian/tmp/lib/nut/tripplitesu debian/tmp/lib/nut/optiups -debian/tmp/lib/nut/upsdrvctl /sbin debian/tmp/lib/nut/everups debian/tmp/lib/nut/dummy-ups debian/tmp/lib/nut/richcomm_usb @@ -53,6 +54,7 @@ debian/tmp/lib/nut/microdowell debian/tmp/lib/nut/al175 debian/tmp/lib/nut/apcupsd-ups +debian/tmp/lib/nut/nutdrv_atcl_usb debian/tmp/lib/nut/nutdrv_qx debian/tmp/lib/nut/riello_ser debian/tmp/lib/nut/riello_usb diff -Nru nut-2.7.1/debian/nut-server.manpages nut-2.7.2/debian/nut-server.manpages --- nut-2.7.1/debian/nut-server.manpages 2013-11-24 20:58:03.000000000 +0100 +++ nut-2.7.2/debian/nut-server.manpages 2015-10-12 17:09:22.000000000 +0200 @@ -47,6 +47,7 @@ debian/tmp/usr/share/man/man8/apcupsd-ups.8 debian/tmp/usr/share/man/man8/blazer_ser.8 debian/tmp/usr/share/man/man8/blazer_usb.8 +debian/tmp/usr/share/man/man8/nutdrv_atcl_usb.8 debian/tmp/usr/share/man/man8/nutdrv_qx.8 debian/tmp/usr/share/man/man8/riello_ser.8 debian/tmp/usr/share/man/man8/riello_usb.8 diff -Nru nut-2.7.1/debian/nut-server.postinst nut-2.7.2/debian/nut-server.postinst --- nut-2.7.1/debian/nut-server.postinst 2013-12-30 09:42:38.000000000 +0100 +++ nut-2.7.2/debian/nut-server.postinst 2016-01-18 15:43:35.000000000 +0100 @@ -1,5 +1,18 @@ #!/bin/sh -e +handle_start_failure () { +# The nut server part (upsd) must run in all cases except when MODE in +# /etc/nut/nut.conf is set to "none", not set at all or if the machine is a +# client. + [ -r /etc/nut/nut.conf ] && . /etc/nut/nut.conf + if [ -d /run/systemd/system ] \ + && [ "$MODE" = "none" -o "$MODE" = "netclient" -o -z "$MODE" ]; then + return 0 + else + return 1 + fi +} + case "$1" in configure) @@ -14,9 +27,7 @@ adduser nut nut fi # for Ubuntu, while waiting for a proper debconf - if ! groups nut | grep -qw dialout; then - adduser nut dialout - fi + adduser --quiet nut dialout # make sure that conffiles are secured and have the correct ownerships # on first install diff -Nru nut-2.7.1/debian/nut-server.prerm nut-2.7.2/debian/nut-server.prerm --- nut-2.7.1/debian/nut-server.prerm 2013-11-24 20:58:03.000000000 +0100 +++ nut-2.7.2/debian/nut-server.prerm 2015-10-12 17:09:22.000000000 +0200 @@ -4,6 +4,13 @@ # because we don't want the daemon to be # stopped during an upgrade +handle_start_failure () { +# The MODE defined in /etc/nut/nut.conf shouldn't affect the exit code when the +# daemon is stopped. If it fails to stop, the maintainer script should fail +# too. + return 1 +} + case "$1" in remove) diff -Nru nut-2.7.1/debian/patches/0004-fix-systemd-service.patch nut-2.7.2/debian/patches/0004-fix-systemd-service.patch --- nut-2.7.1/debian/patches/0004-fix-systemd-service.patch 2013-11-24 20:58:03.000000000 +0100 +++ nut-2.7.2/debian/patches/0004-fix-systemd-service.patch 2015-10-12 17:09:23.000000000 +0200 @@ -4,7 +4,7 @@ --- a/scripts/systemd/nut-driver.service.in +++ b/scripts/systemd/nut-driver.service.in -@@ -1,10 +1,11 @@ +@@ -1,6 +1,7 @@ [Unit] Description=Network UPS Tools - power device driver controller -After=local-fs.target network.target @@ -13,22 +13,3 @@ StopWhenUnneeded=yes [Service] --ExecStart=@DRVPATH@/upsdrvctl start --ExecStop=@DRVPATH@/upsdrvctl stop -+ExecStart=@SBINDIR@/upsdrvctl start -+ExecStop=@SBINDIR@/upsdrvctl stop - Type=forking - ---- a/scripts/systemd/nut-monitor.service.in -+++ b/scripts/systemd/nut-monitor.service.in -@@ -9,3 +9,4 @@ Type=forking - - [Install] - WantedBy=multi-user.target -+Alias=nut-client.service ---- a/scripts/systemd/nutshutdown.in -+++ b/scripts/systemd/nutshutdown.in -@@ -1,2 +1,2 @@ - #!/bin/sh --@SBINDIR@/upsmon -K >/dev/null 2>&1 && @driverexecdir@/upsdrvctl shutdown -+@SBINDIR@/upsmon -K >/dev/null 2>&1 && @SBINDIR@/upsdrvctl shutdown diff -Nru nut-2.7.1/debian/patches/0005-Provide-retry-options-for-upsdrvctl-and-drivers.patch nut-2.7.2/debian/patches/0005-Provide-retry-options-for-upsdrvctl-and-drivers.patch --- nut-2.7.1/debian/patches/0005-Provide-retry-options-for-upsdrvctl-and-drivers.patch 2013-11-24 20:58:03.000000000 +0100 +++ nut-2.7.2/debian/patches/0005-Provide-retry-options-for-upsdrvctl-and-drivers.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,133 +0,0 @@ -From ad1e78a22dc91b70bee871425cd5f74bb3c34c9f Mon Sep 17 00:00:00 2001 -From: Laurent Bigonville -Date: Thu, 21 Nov 2013 17:52:16 +0100 -Subject: [PATCH] Provide retry options for upsdrvctl and driver(s) - -As recently seen in Debian (bugs #694717 and #677143), it may be required to -have upsdrvctl retrying to start the driver in case of failure. More -specifically, a mix of init system (V and systemd), udev and USB device(s) can -result in the /dev entry not being available at driver startup, thus resulting -in a general failure to start NUT. This commit provides at least a way to -overcome this issue. A more suitable solution will require more work on NUT -design. - -This patch if based on Arnaud Quette proposal ---- - docs/man/ups.conf.txt | 15 +++++++++++++++ - docs/man/upsdrvctl.txt | 3 ++- - drivers/upsdrvctl.c | 37 ++++++++++++++++++++++++++++++++++--- - 3 files changed, 51 insertions(+), 4 deletions(-) - -diff --git a/docs/man/ups.conf.txt b/docs/man/ups.conf.txt -index 8a72a83..4877852 100644 ---- a/docs/man/ups.conf.txt -+++ b/docs/man/ups.conf.txt -@@ -58,6 +58,21 @@ directory, which is often /usr/local/ups/bin. - Optional. Same as the UPS field of the same name, but this is the - default for UPSes that don't have the field. - -+*maxretry*:: -+Optional. Specify the number of attempts to start the driver(s), in case of -+failure, before giving up. A delay of 'retrydelay' is inserted between each -+attempt. Caution should be taken when using this option, since it can -+impact the time taken by your system to start. -++ -+The default is 1 attempt. -+ -+*retrydelay*:: -+Optional. Specify the delay between each restart attempt of the driver(s), -+as specified by 'maxretry'. Caution should be taken when using this option, -+since it can impact the time taken by your system to start. -++ -+The default is 5 seconds. -+ - *pollinterval*:: - - Optional. The status of the UPS will be refreshed after a maximum -diff --git a/docs/man/upsdrvctl.txt b/docs/man/upsdrvctl.txt -index f19fd77..52e5509 100644 ---- a/docs/man/upsdrvctl.txt -+++ b/docs/man/upsdrvctl.txt -@@ -63,7 +63,8 @@ Without that argument, they operate on every UPS that is currently - configured. - - *start*:: --Start the UPS driver(s). -+Start the UPS driver(s). In case of failure, further attempts may be executed -+by using the 'maxretry' and 'retrydelay' options - see linkman:ups.conf[5]. - - *stop*:: - Stop the UPS driver(s). -diff --git a/drivers/upsdrvctl.c b/drivers/upsdrvctl.c -index 623f753..0cdaa2c 100644 ---- a/drivers/upsdrvctl.c -+++ b/drivers/upsdrvctl.c -@@ -45,6 +45,12 @@ - /* timer - keeps us from getting stuck if a driver hangs */ - static int maxstartdelay = 45; - -+ /* counter - retry that many time(s) to start the driver if it fails to */ -+static int maxretry = 1; -+ -+ /* timer - delay between each restart attempt of the driver(s) */ -+static int retrydelay = 5; -+ - /* Directory where driver executables live */ - static char *driverpath = NULL; - -@@ -65,6 +71,12 @@ void do_upsconf_args(char *upsname, char *var, char *val) - driverpath = xstrdup(val); - } - -+ if (!strcmp(var, "maxretry")) -+ maxretry = atoi(val); -+ -+ if (!strcmp(var, "retrydelay")) -+ retrydelay = atoi(val); -+ - /* ignore anything else - it's probably for main */ - - return; -@@ -248,6 +260,7 @@ static void start_driver(const ups_t *ups) - char *argv[8]; - char dfn[SMALLBUF]; - int ret, arg = 0; -+ int initial_exec_error = exec_error, drv_maxretry = maxretry; - struct stat fs; - - upsdebugx(1, "Starting UPS: %s", ups->upsname); -@@ -276,10 +289,28 @@ static void start_driver(const ups_t *ups) - /* tie it off */ - argv[arg++] = NULL; - -- debugcmdline(2, "exec: ", argv); - -- if (!testmode) { -- forkexec(argv, ups); -+ while (drv_maxretry > 0) { -+ int cur_exec_error = exec_error; -+ -+ upsdebugx(2, "%i remaining attempts", drv_maxretry); -+ debugcmdline(2, "exec: ", argv); -+ drv_maxretry--; -+ -+ if (!testmode) { -+ forkexec(argv, ups); -+ } -+ -+ /* driver command succeeded */ -+ if (cur_exec_error == exec_error) { -+ drv_maxretry = 0; -+ exec_error = initial_exec_error; -+ } -+ else { -+ /* otherwise, retry if still needed */ -+ if (drv_maxretry > 0) -+ sleep (retrydelay); -+ } - } - } - --- -1.8.4 - diff -Nru nut-2.7.1/debian/patches/0008-drop-w3c-icons.patch nut-2.7.2/debian/patches/0008-drop-w3c-icons.patch --- nut-2.7.1/debian/patches/0008-drop-w3c-icons.patch 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/debian/patches/0008-drop-w3c-icons.patch 2015-03-20 23:13:01.000000000 +0100 @@ -0,0 +1,26 @@ +--- a/conf/upsstats.html.sample ++++ b/conf/upsstats.html.sample +@@ -180,11 +180,4 @@ Network UPS Tools upsstats + + + +-
+-Valid CSS! +- +-
+- + +--- a/conf/upsstats-single.html.sample ++++ b/conf/upsstats-single.html.sample +@@ -286,9 +286,6 @@ + + + +-Valid HTML 4.0 Transitional + + + diff -Nru nut-2.7.1/debian/patches/0009-fix-favorites-permissions.patch nut-2.7.2/debian/patches/0009-fix-favorites-permissions.patch --- nut-2.7.1/debian/patches/0009-fix-favorites-permissions.patch 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/debian/patches/0009-fix-favorites-permissions.patch 2015-03-20 23:13:01.000000000 +0100 @@ -0,0 +1,69 @@ +If a ~/.nut-monitor directory is found with insecure permissions, change them to 0700. +--- a/scripts/python/app/NUT-Monitor ++++ b/scripts/python/app/NUT-Monitor +@@ -29,6 +29,7 @@ + import sys + import base64 + import os, os.path ++import stat + import platform + import time + import threading +@@ -44,21 +45,23 @@ + + class interface : + +- __widgets = {} +- __callbacks = {} +- __favorites = {} +- __favorites_file = None +- __favorites_path = "" +- __fav_menu_items = list() +- __window_visible = True +- __glade_file = None +- __connected = False +- __ups_handler = None +- __ups_commands = None +- __ups_vars = None +- __ups_rw_vars = None +- __gui_thread = None +- __current_ups = None ++ DESIRED_FAVORITES_DIRECTORY_MODE = 0700 ++ ++ __widgets = {} ++ __callbacks = {} ++ __favorites = {} ++ __favorites_file = None ++ __favorites_path = "" ++ __fav_menu_items = list() ++ __window_visible = True ++ __glade_file = None ++ __connected = False ++ __ups_handler = None ++ __ups_commands = None ++ __ups_vars = None ++ __ups_rw_vars = None ++ __gui_thread = None ++ __current_ups = None + + def __init__( self ) : + +@@ -528,6 +531,9 @@ + return + + try : ++ if ( not stat.S_IMODE( os.stat( self.__favorites_path ).st_mode ) == self.DESIRED_FAVORITES_DIRECTORY_MODE ) : # unsafe pre-1.2 directory found ++ os.chmod( self.__favorites_path, self.DESIRED_FAVORITES_DIRECTORY_MODE ) ++ + conf = ConfigParser.ConfigParser() + conf.read( self.__favorites_file ) + for current in conf.sections() : +@@ -573,7 +579,7 @@ + # If path does not exists, try to create it + if ( not os.path.exists( self.__favorites_file ) ) : + try : +- os.makedirs( self.__favorites_path, mode=0700 ) ++ os.makedirs( self.__favorites_path, mode=self.DESIRED_FAVORITES_DIRECTORY_MODE ) + except : + self.gui_status_message( _("Error while creating configuration folder (%s)") % sys.exc_info()[1] ) + diff -Nru nut-2.7.1/debian/patches/backport-fix-lp753661.patch nut-2.7.2/debian/patches/backport-fix-lp753661.patch --- nut-2.7.1/debian/patches/backport-fix-lp753661.patch 2013-12-30 10:51:37.000000000 +0100 +++ nut-2.7.2/debian/patches/backport-fix-lp753661.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,35 +0,0 @@ -Description: Trim extraneous end-of-line, in buggy HID string tables - Trim extraneous end-of-line, in buggy HID string tables, which results in - upsc breaking the communication pipe. - . - this would be expected to be included in next nut upstream package - (greater than 2.6.0) -Applied-Upstream: http://trac.networkupstools.org/projects/nut/changeset/2972 -Bug: https://bugs.launchpad.net/bugs/753661 -Author: Arnaud Quette -Last-Update: 2011-05-27 - -Index: b/drivers/libhid.c -=================================================================== ---- a/drivers/libhid.c -+++ b/drivers/libhid.c -@@ -400,8 +400,18 @@ - */ - char *HIDGetIndexString(hid_dev_handle_t udev, const int Index, char *buf, size_t buflen) - { -- if (comm_driver->get_string(udev, Index, buf, buflen) < 1) -+ char *ptr = NULL; -+ -+ if (comm_driver->get_string(udev, Index, buf, buflen) < 1) -+ { - buf[0] = '\0'; -+ } -+ else -+ { -+ /* Check for extraneous end-of-line */ -+ if( (ptr = strchr(buf, '\n')) != NULL) -+ *ptr = '\0'; -+ } - - return rtrim(buf, '\n'); - } diff -Nru nut-2.7.1/debian/patches/link-fixes.diff nut-2.7.2/debian/patches/link-fixes.diff --- nut-2.7.1/debian/patches/link-fixes.diff 2013-12-30 10:57:07.000000000 +0100 +++ nut-2.7.2/debian/patches/link-fixes.diff 1970-01-01 01:00:00.000000000 +0100 @@ -1,105 +0,0 @@ -Index: b/clients/Makefile.am -=================================================================== ---- a/clients/Makefile.am -+++ b/clients/Makefile.am -@@ -46,7 +46,7 @@ - - # not LDADD. - libupsclient_la_SOURCES = upsclient.c upsclient.h --libupsclient_la_LIBADD = ../common/libparseconf.la -+libupsclient_la_LIBADD = ../common/libcommonclient.la - if WITH_SSL - libupsclient_la_LIBADD += $(LIBSSL_LIBS) - endif -Index: b/clients/Makefile.in -=================================================================== ---- a/clients/Makefile.in -+++ b/clients/Makefile.in -@@ -445,7 +445,7 @@ - - # not LDADD. - libupsclient_la_SOURCES = upsclient.c upsclient.h --libupsclient_la_LIBADD = ../common/libparseconf.la $(am__append_4) -+libupsclient_la_LIBADD = ../common/libcommonclient.la $(am__append_4) - - # libupsclient version information - # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -Index: b/common/Makefile.am -=================================================================== ---- a/common/Makefile.am -+++ b/common/Makefile.am -@@ -2,7 +2,7 @@ - - AM_CFLAGS = -I$(top_srcdir)/include - --noinst_LTLIBRARIES = libparseconf.la libcommon.la -+noinst_LTLIBRARIES = libparseconf.la libcommon.la libcommonclient.la - libparseconf_la_SOURCES = parseconf.c - - # do not hard depend on '../include/nut_version.h', since it blocks -@@ -10,6 +10,8 @@ - # BUILT_SOURCES (in ../include) will ensure nut_version.h will - # be built before anything else - libcommon_la_SOURCES = common.c state.c upsconf.c -+libcommonclient_la_SOURCES = common.c state.c - # ensure inclusion of local implementation of missing systems functions - # using LTLIBOBJS. Refer to configure.in -> AC_REPLACE_FUNCS - libcommon_la_LIBADD = libparseconf.la @LTLIBOBJS@ -+libcommonclient_la_LIBADD = libparseconf.la @LTLIBOBJS@ -Index: b/common/Makefile.in -=================================================================== ---- a/common/Makefile.in -+++ b/common/Makefile.in -@@ -91,6 +91,9 @@ - libcommon_la_DEPENDENCIES = libparseconf.la @LTLIBOBJS@ - am_libcommon_la_OBJECTS = common.lo state.lo upsconf.lo - libcommon_la_OBJECTS = $(am_libcommon_la_OBJECTS) -+libcommonclient_la_DEPENDENCIES = libparseconf.la @LTLIBOBJS@ -+am_libcommonclient_la_OBJECTS = common.lo state.lo -+libcommonclient_la_OBJECTS = $(am_libcommonclient_la_OBJECTS) - libparseconf_la_LIBADD = - am_libparseconf_la_OBJECTS = parseconf.lo - libparseconf_la_OBJECTS = $(am_libparseconf_la_OBJECTS) -@@ -107,8 +110,10 @@ - LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ --SOURCES = $(libcommon_la_SOURCES) $(libparseconf_la_SOURCES) --DIST_SOURCES = $(libcommon_la_SOURCES) $(libparseconf_la_SOURCES) -+SOURCES = $(libcommon_la_SOURCES) $(libcommonclient_la_SOURCES) \ -+ $(libparseconf_la_SOURCES) -+DIST_SOURCES = $(libcommon_la_SOURCES) $(libcommonclient_la_SOURCES) \ -+ $(libparseconf_la_SOURCES) - am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ -@@ -303,7 +308,7 @@ - top_srcdir = @top_srcdir@ - udevdir = @udevdir@ - AM_CFLAGS = -I$(top_srcdir)/include --noinst_LTLIBRARIES = libparseconf.la libcommon.la -+noinst_LTLIBRARIES = libparseconf.la libcommon.la libcommonclient.la - libparseconf_la_SOURCES = parseconf.c - - # do not hard depend on '../include/nut_version.h', since it blocks -@@ -311,9 +316,11 @@ - # BUILT_SOURCES (in ../include) will ensure nut_version.h will - # be built before anything else - libcommon_la_SOURCES = common.c state.c upsconf.c -+libcommonclient_la_SOURCES = common.c state.c - # ensure inclusion of local implementation of missing systems functions - # using LTLIBOBJS. Refer to configure.in -> AC_REPLACE_FUNCS - libcommon_la_LIBADD = libparseconf.la @LTLIBOBJS@ -+libcommonclient_la_LIBADD = libparseconf.la @LTLIBOBJS@ - all: all-am - - .SUFFIXES: -@@ -359,6 +366,8 @@ - done - libcommon.la: $(libcommon_la_OBJECTS) $(libcommon_la_DEPENDENCIES) $(EXTRA_libcommon_la_DEPENDENCIES) - $(LINK) $(libcommon_la_OBJECTS) $(libcommon_la_LIBADD) $(LIBS) -+libcommonclient.la: $(libcommonclient_la_OBJECTS) $(libcommonclient_la_DEPENDENCIES) $(EXTRA_libcommonclient_la_DEPENDENCIES) -+ $(LINK) $(libcommonclient_la_OBJECTS) $(libcommonclient_la_LIBADD) $(LIBS) - libparseconf.la: $(libparseconf_la_OBJECTS) $(libparseconf_la_DEPENDENCIES) $(EXTRA_libparseconf_la_DEPENDENCIES) - $(LINK) $(libparseconf_la_OBJECTS) $(libparseconf_la_LIBADD) $(LIBS) - diff -Nru nut-2.7.1/debian/patches/series nut-2.7.2/debian/patches/series --- nut-2.7.1/debian/patches/series 2013-12-30 10:54:47.000000000 +0100 +++ nut-2.7.2/debian/patches/series 2016-01-18 15:44:46.000000000 +0100 @@ -1,9 +1,8 @@ 0003-install-dev-files-in-usr.patch 0002-nut-monitor-paths.patch 0004-fix-systemd-service.patch -0005-Provide-retry-options-for-upsdrvctl-and-drivers.patch 0006-ups-conf-maxretry.patch 0007-killpower-path.patch -backport-fix-lp753661.patch -link-fixes.diff +0008-drop-w3c-icons.patch +0009-fix-favorites-permissions.patch ppc64el.diff diff -Nru nut-2.7.1/debian/rules nut-2.7.2/debian/rules --- nut-2.7.1/debian/rules 2014-05-12 13:22:10.000000000 +0200 +++ nut-2.7.2/debian/rules 2016-01-18 15:45:48.000000000 +0100 @@ -4,12 +4,20 @@ include /usr/share/cdbs/1/class/autotools.mk include /usr/share/cdbs/1/class/python-module.mk +include /usr/share/cdbs/1/rules/autoreconf.mk +# We cannot call autoreconf -f -i as it updates INSTALL which is used for doc +# generation +DEB_DH_AUTORECONF_ARGS = --as-needed + DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null) # List any files which are not installed include /usr/share/cdbs/1/rules/utils.mk common-binary-post-install-arch:: list-missing +DEB_LDFLAGS_MAINT_APPEND=-Wl,-z,defs -Wl,-O1 -Wl,--as-needed +include /usr/share/dpkg/buildflags.mk + DEB_CONFIGURE_PREFIX := DEB_CONFIGURE_SYSCONFDIR := /etc/nut DEB_CONFIGURE_INCLUDEDIR := /usr/include @@ -66,9 +74,15 @@ mv $(CURDIR)/debian/tmp/lib/$(DEB_HOST_MULTIARCH)/libupsclient.a \ $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libupsclient.a rm -f $(CURDIR)/debian/tmp/lib/$(DEB_HOST_MULTIARCH)/libupsclient.so - ln -s /lib/$(DEB_HOST_MULTIARCH)/libupsclient.so.3 \ + ln -s /lib/$(DEB_HOST_MULTIARCH)/libupsclient.so.4 \ $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libupsclient.so + # Move daemons and install wrappers + mv $(CURDIR)/debian/tmp/sbin/upsmon $(CURDIR)/debian/tmp/lib/nut/upsmon + mv $(CURDIR)/debian/tmp/sbin/upsd $(CURDIR)/debian/tmp/lib/nut/upsd + install -m 0755 debian/local/upsmon $(CURDIR)/debian/tmp/sbin/upsmon + install -m 0755 debian/local/upsd $(CURDIR)/debian/tmp/sbin/upsd + # Install systemd files only on systems where it's supported # disabled in Ubuntu until the unit gets fixed to check nut.conf ifeq (linux-disabled,$(DEB_HOST_ARCH_OS)) @@ -81,6 +95,9 @@ install -m 644 -D $(CURDIR)/debian/tmp/lib/$(DEB_HOST_MULTIARCH)/systemd/system/nut-server.service \ $(CURDIR)/debian/nut-server/lib/systemd/system/nut-server.service + # Add a symlink to mask the LSB initscript + ln -s nut-monitor.service $(CURDIR)/debian/nut-client/lib/systemd/system/nut-client.service + # Install tmpfiles config file to create /run/nut directory install -m 644 -D $(CURDIR)/debian/nut-client.tmpfiles \ $(CURDIR)/debian/nut-client/usr/lib/tmpfiles.d/nut-client.conf @@ -112,15 +129,15 @@ binary-install/nut-monitor:: dh_python2 -pnut-monitor -DEB_DH_INSTALLINIT_ARGS_nut-server := --init-script=nut-server --restart-after-upgrade -DEB_DH_INSTALLINIT_ARGS_nut-client := --init-script=nut-client --restart-after-upgrade +DEB_DH_INSTALLINIT_ARGS_nut-server := --init-script=nut-server --restart-after-upgrade --error-handler=handle_start_failure +DEB_DH_INSTALLINIT_ARGS_nut-client := --init-script=nut-client --restart-after-upgrade --error-handler=handle_start_failure DEB_DH_SYSTEMD_START_ARGS_nut-server := --restart-after-upgrade DEB_DH_SYSTEMD_START_ARGS_nut-client := --restart-after-upgrade DEB_DH_COMPRESS_ARGS_nut-doc := -X.pdf ifeq (linux,$(DEB_HOST_ARCH_OS)) # for Debian -# DEB_DH_GENCONTROL_ARGS := -- -Vudev="udev (>= 0.124-1)" + DEB_DH_GENCONTROL_ARGS := -- -Vudev="udev (>= 0.124-1)" # for Ubuntu - DEB_DH_GENCONTROL_ARGS := -- -Vudev="udev (>= 136-1)" +# DEB_DH_GENCONTROL_ARGS := -- -Vudev="udev (>= 136-1)" endif diff -Nru nut-2.7.1/debian/tests/control nut-2.7.2/debian/tests/control --- nut-2.7.1/debian/tests/control 2015-10-12 11:54:20.000000000 +0200 +++ nut-2.7.2/debian/tests/control 2016-01-18 14:16:10.000000000 +0100 @@ -1,3 +1,3 @@ Tests: nut -Depends: nut-server, nut-client, python +Depends: nut-server, nut-client, python, lsb-release, netcat Restrictions: needs-root diff -Nru nut-2.7.1/docs/acknowledgements.txt nut-2.7.2/docs/acknowledgements.txt --- nut-2.7.1/docs/acknowledgements.txt 2013-11-07 21:43:51.000000000 +0100 +++ nut-2.7.2/docs/acknowledgements.txt 2014-02-25 16:39:34.000000000 +0100 @@ -21,8 +21,8 @@ - Arnaud Quette: project leader (since 2005), Debian packager and jack of all trades - Charles Lepple: senior lieutenant -- Frederic Bohe: senior developer - Emilien Kia: senior developer +- Daniele Pezzini: senior developer - Václav Krpec: junior developer - Kjell Claesson: senior developer - Alexander Gordeev: junior developer @@ -36,7 +36,7 @@ - Antoine Colombier: trainee For an up to date list of NUT developers, refer to -link:https://alioth.debian.org/project/memberlist.php?group_id=30602[Alioth]. +link:https://github.com/orgs/networkupstools/members[GitHub]. Retired members ~~~~~~~~~~~~~~~ @@ -56,26 +56,8 @@ - Dominique Lallement: Consultant (chairman of the USB/HID PDC Forum) - Julius Malkiewicz: junior developer - Tomas Smetana: former Redhat packager (2007-2008) +- Frederic Bohe: senior developer, Eaton contractor (2009-2013) -[[Eaton]] -Our main supporter: Eaton -------------------------- - -Through the acquisition of MGE Office Protection Systems (a carve out of -the MGE UPS SYSTEMS small systems, up to 10 KVA), Eaton has been supporting -NUT, and more generally the Free/Libre Opensource Software Community -since around 2002. - -This support includes the following actions: - -- providing extensive technical documents (Eaton protocols library), -- providing units to developers of NUT and related projects, -- hosting the networkupstools.org webserver (from 2005 to August 2012), -- providing artwork, -- promoting NUT in general. - -For more detailed information on Eaton's Opensource commitment, please refer to -link:http://opensource.eaton.com[Eaton Opensource website]. Supporting manufacturers ------------------------ @@ -83,27 +65,46 @@ UPS manufacturers ~~~~~~~~~~~~~~~~~ -- link:http://powerquality.eaton.com[Eaton], our main supporter, as presented in -the <>. +[[Eaton]] +* link:http://powerquality.eaton.com[Eaton], has been the main NUT supporter in +the past, between 2007 and 2011, continuing MGE UPS SYSTEMS efforts. +As such, Eaton has been: + - providing extensive technical documents (Eaton protocols library), + - providing units to developers of NUT and related projects, + - hosting the networkupstools.org webserver (from 2007 to August 2012), + - providing artwork, + - promoting NUT in general, + - supporting its customers using NUT. ++ +[WARNING] +================================================================================ +*The situation has evolved, and since 2011 Eaton does not support NUT anymore.* + +*This may still evolve in the future.* + +*But for now, please do not consider anymore that buying Eaton products will +provide you with official support from Eaton, or a better level of device +support in NUT.* +================================================================================ -- link:http://www.gamatronic.com[Gamatronic], through Nadav Moskovitch, has +* link:http://www.gamatronic.com[Gamatronic], through Nadav Moskovitch, has revived the 'sec' driver (as gamatronic), and expanded a bit genericups for its UPSs with alarm interface. -- link:http://www.microdowell.com[Microdowell], through Elio Corbolante, has +* link:http://www.microdowell.com[Microdowell], through Elio Corbolante, has created the 'microdowell' driver to support the Enterprise Nxx/Bxx serial devices. They also proposes NUT as an alternative to its software for link:http://www.microdowell.com/fra/download.html[Linux / Unix]. -- link:http://pcmups.com.tw[Powercom], through Alexey Morozov, has provided +* link:http://pcmups.com.tw[Powercom], through Alexey Morozov, has provided link:ups-protocols.html[extensive information] on its USB/HID devices, along with development units. -- link:http://www.riello-ups.com[Riello UPS], through Massimo Zampieri, has +* link:http://www.riello-ups.com[Riello UPS], through Massimo Zampieri, has provided link:ups-protocols.html[all protocols information]. Elio Parisi has also created riello_ser and riello_usb to support these protocols. -- link:http://www.tripplite.com[Tripp Lite], through Eric Cobb, has provided +* link:http://www.tripplite.com[Tripp Lite], through Eric Cobb, has provided test results from connecting their HID-compliant UPS hardware to NUT. Some of this information has been incorporated into the NUT hardware compatibility list, and the rest of the information is available via the @@ -133,13 +134,14 @@ Older entries (before 2005) --------------------------- -- MGE UPS SYSTEMS was the previous NUT sponsor. They provided protocols -information, many units for development of NUT-related projects. +- MGE UPS SYSTEMS was the previous NUT sponsor, from 2002 until its partial +acquisition by Eaton. They provided protocols information, many units for +development of NUT-related projects. Several drivers such as mge-utalk, mge-shut, snmp-ups, hidups, and usbhid-ups are the result of this collaboration, in addition to the WMNut, MGE HID Parser -the libhid projects, ... through Arnaud. -All the MGE supporters have now gone with Eaton (through MGE Office -Protection Systems), which is the new NUT sponsor. +the libhid projects, ... through Arnaud Quette (who was also an MGE employee). +All the MGE supporters have gone with Eaton (through MGE Office Protection +Systems), which was temporarily the new NUT sponsor. - Fenton Technologies contributed a PowerPal 660 to the project. Their open stance and quick responses to technical inquiries were appreciated for diff -Nru nut-2.7.1/docs/chunked.xsl nut-2.7.2/docs/chunked.xsl --- nut-2.7.1/docs/chunked.xsl 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/docs/chunked.xsl 2014-02-25 16:39:55.000000000 +0100 @@ -0,0 +1,22 @@ + + + + + images/icons/ + images/icons/ + + + + + + + diff -Nru nut-2.7.1/docs/common.xsl nut-2.7.2/docs/common.xsl --- nut-2.7.1/docs/common.xsl 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/docs/common.xsl 2014-02-25 16:39:55.000000000 +0100 @@ -0,0 +1,106 @@ + + + + + + + + + + 1 + 0 + + + + + + +images/icons/ +0 + + + + 0 + #E0E0E0 + + + +images/icons/ + + + margin-left: 0; margin-right: 10%; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +article toc,title +book toc,title,figure,table,example,equation + + +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title + + + +article nop +book nop + + + + + diff -Nru nut-2.7.1/docs/config-notes.txt nut-2.7.2/docs/config-notes.txt --- nut-2.7.1/docs/config-notes.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/config-notes.txt 2014-02-25 23:42:40.000000000 +0100 @@ -158,14 +158,14 @@ Start the driver(s) for your hardware: - /usr/local/ups/bin/upsdrvctl start + /usr/local/ups/sbin/upsdrvctl start Make sure the driver doesn't report any errors. It should show a few details about the hardware and then enter the background. You should get back to the command prompt a few seconds later. For reference, a successful start of the `usbhid-ups` driver looks like this: - # /usr/local/ups/bin/upsdrvctl start + # /usr/local/ups/sbin/upsdrvctl start Network UPS Tools - Generic HID driver 0.34 (2.4.1) USB communication driver 0.31 Using subdriver: MGE HID 1.12 diff -Nru nut-2.7.1/docs/configure.txt nut-2.7.2/docs/configure.txt --- nut-2.7.1/docs/configure.txt 2013-10-02 14:11:45.000000000 +0200 +++ nut-2.7.2/docs/configure.txt 2014-02-27 22:17:32.000000000 +0100 @@ -112,14 +112,6 @@ Enable IPv6 support. - --with-hal (default: no) - -Build and install Hardware Abstraction Layer support. -If you own a USB unit, only protect your local system and run the -Gnome or KDE desktop, this will enable a full Plug & Play usage. -See docs/nut-hal.txt for additional information on how to set up -and use HAL support. - --with-avahi (default: auto-detect) Build and install Avahi support, to publish NUT server availability @@ -173,7 +165,7 @@ If you use one of the --with-user and --with-group options, then you have to use the other one too. -See the INSTALL document and the FAQ for more on this topic. +See the INSTALL.nut document and the FAQ for more on this topic. --with-logfacility=FACILITY @@ -349,21 +341,6 @@ --with-neon-libs, --with-libltdl-libs --with-powerman-libs="-L/foo/bar -labcd -lxyz" -If your system doesn't have pkg-config and support for any of the above -libraries isn't found (but you know it is installed), you must specify the -linker flags that are needed. - -HAL addons (deprecated) ------------------------ - - --with-hal-includes="-DDBUS_API_SUBJECT_TO_CHANGE -I/usr/include/hal \ - -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include" - --with-hal-libs="-lhal -ldbus-1 -lpthread" - --with-hal-user="haldaemon" - --with-hal-device-match-key="info.bus" - --with-hal-callouts-path="${libdir}/hal" - --with-hal-fdi-path="${datarootdir}/hal/fdi/information/20thirdparty" - If system doesn't have pkg-config or it fails to provides hints for some of the settings that are needed to set it up properly and the build in defaults are not right, you can specify the right variables here. diff -Nru nut-2.7.1/docs/developers.txt nut-2.7.2/docs/developers.txt --- nut-2.7.1/docs/developers.txt 2013-11-20 20:53:31.000000000 +0100 +++ nut-2.7.2/docs/developers.txt 2014-02-27 22:17:32.000000000 +0100 @@ -84,9 +84,7 @@ Device drivers - main.c ----------------------- -The device drivers use main.c as their core. The only exceptions are the -HAL-based drivers, which use the same dstate function calls while integrating -with the DBUS event loop. +The device drivers use main.c as their core. To write a new driver, you create a file with a series of support functions that will be called by main. These all have names that start diff -Nru nut-2.7.1/docs/documentation.txt nut-2.7.2/docs/documentation.txt --- nut-2.7.1/docs/documentation.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/documentation.txt 2014-02-25 16:39:34.000000000 +0100 @@ -9,7 +9,7 @@ ifdef::website[] - FAQ - Frequently Asked Questions (link:docs/FAQ.html[online]) (link:docs/FAQ.pdf[PDF]) - NUT User Manual (link:docs/user-manual.chunked/index.html[online]) (link:docs/user-manual.pdf[PDF]) -- Cables information (link:cables.html[online]) (link:cables.pdf[PDF]) +- Cables information (link:cables.html[online]) (link:docs/cables.pdf[PDF]) - link:docs/man/index.html#User_man[User manual pages] endif::website[] ifndef::website[] diff -Nru nut-2.7.1/docs/FAQ.txt nut-2.7.2/docs/FAQ.txt --- nut-2.7.1/docs/FAQ.txt 2013-11-18 21:28:04.000000000 +0100 +++ nut-2.7.2/docs/FAQ.txt 2014-03-21 20:27:16.000000000 +0100 @@ -185,7 +185,7 @@ This is also a good option to consider if you can't use networked monitoring code for security or safety reasons. -See ideas.txt for more on this and other related topics. +See the TODO file for more on this and other related topics. == Why isn't upssched part of upsmon? @@ -219,12 +219,13 @@ There are at least two different protocols being used for hardware with very similar names. The bestups driver tends to support the -units built around the newer "PhoenixTec" protocol. +units built around the newer "PhoenixTec" protocol, and the bestfortress +driver supports the older Best hardware. -Previous releases of this software included a driver called -bestfortress which supported the older Best hardware. See the -earlier entries about updating old drivers which have been removed -from the tree. +There is a similar problem with the tripplite_usb driver: it only supports the +older, proprietary protocol. Newer standards-compliant Tripp Lite UPS models +are supported by usbhid-ups. We name drivers based on the information +available at that time, which often is incomplete. == What's this about 'data stale'? @@ -262,7 +263,7 @@ Check your syslog. upsd will complain regularly if it can't connect to a driver, and it should say why it can't connect. -Note: if you jumped in with both feet and didn't follow the INSTALL +Note: if you jumped in with both feet and didn't follow the INSTALL.nut document, you probably started upsd by itself. You have to run 'upsdrvctl start' to start the drivers after configuring ups.conf. @@ -285,7 +286,7 @@ if (test -f /etc/killpower) then - /usr/local/ups/bin/upsdrvctl shutdown + /usr/local/ups/sbin/upsdrvctl shutdown sleep 600 # this should never return @@ -342,7 +343,7 @@ The following pages have some slightly more kludgy answers which involve the use of `setpci`, and are highly model-specific: - - http://mythic-beasts.com/support/macminicolo_howto.html + - https://www.mythic-beasts.com/support/servers/colo/macminicolo_howto - http://superuser.com/questions/212434/reboot-after-power-failure-for-mac-running-ubuntu - http://ubuntuforums.org/showthread.php?t=1209576 @@ -359,7 +360,7 @@ == My Mac won't power back up by itself into Mac OS X after the UPS shuts down. What can I do about this? This is relatively simple to fix. If you have console or VNC access, log in as -an administrator, go to System Preferences, click on energy saver, click on the +an administrator, go to System Preferences, click on Energy Saver, click on the options tab, check "Restart automatically after a power failure". Alternatively, you can connect via SSH and run "sudo pmset autorestart 1" to @@ -387,7 +388,7 @@ - Switch to root, then start the drivers: - # /usr/local/ups/bin/upsdrvctl -u nutdev start + # /usr/local/ups/sbin/upsdrvctl -u nutdev start - The listing for /var/state/ups then looks like this: @@ -492,11 +493,12 @@ == upsd is running, so why can't I connect to it? -Assuming you haven't changed the TCP port number on the command line -or at compile-time, then you probably have some sort of firewall -blocking the connection. +Assuming you haven't changed the TCP port number on the command line or at +compile-time, then you may have some sort of firewall blocking the connection. -upsd listens on TCP port 3493 by default. +upsd listens on TCP port 3493 by default. If you do not specify a LISTEN +directive in upsd.conf, upsd only listens on the loopback interface. See the +upsd.conf man page for details. == How do you make upsmon reload the config file? @@ -759,7 +761,7 @@ if (test -f /etc/killpower) then - /usr/local/ups/bin/upsdrvctl shutdown + /usr/local/ups/sbin/upsdrvctl shutdown sleep 120 diff -Nru nut-2.7.1/docs/features.txt nut-2.7.2/docs/features.txt --- nut-2.7.1/docs/features.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/features.txt 2014-02-27 22:17:32.000000000 +0100 @@ -58,19 +58,6 @@ routers, bridges, ...) into the UPS! -//////////////////////////////////////////////////////////////////////////////// -*FIXME* to be removed? - -- This has also allowed us to create easily the Power Management integration. - -=== Power Management integration === - -- Thanks to its modular design, NUT can feed data to the FreeDesktop Hardware Abstraction Layer (HAL).[[BR]] - This allow a seemless integration of USB UPSs, at a small cost (around 200 Kb), reusing the standard Power Management GUIs and providing to users a full Plug & Play system. - -- The added bonus is that this is the best Power Management existing, surpassing the one that exist on Windows and Mac OS, both in terms of devices supported and of features. -//////////////////////////////////////////////////////////////////////////////// - Redundancy support - Hot swap/high availability power supplies -------------------------------------------------------------- diff -Nru nut-2.7.1/docs/macros.txt nut-2.7.2/docs/macros.txt --- nut-2.7.1/docs/macros.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/macros.txt 2014-02-27 22:17:32.000000000 +0100 @@ -12,7 +12,6 @@ #define a replacement if necessary. - NUT_CHECK_LIBGD -- NUT_CHECK_LIBHAL - NUT_CHECK_LIBNEON - NUT_CHECK_LIBNETSNMP - NUT_CHECK_LIBPOWERMAN diff -Nru nut-2.7.1/docs/Makefile.am nut-2.7.2/docs/Makefile.am --- nut-2.7.1/docs/Makefile.am 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/docs/Makefile.am 2014-02-27 22:17:32.000000000 +0100 @@ -16,8 +16,7 @@ USER_MANUAL_DEPS = acknowledgements.txt cables.txt config-notes.txt \ configure.txt download.txt documentation.txt features.txt history.txt \ - outlets.txt scheduling.txt security.txt support.txt user-manual.txt \ - stable-hcl.txt + outlets.txt scheduling.txt security.txt support.txt user-manual.txt DEVELOPER_GUIDE_DEPS = contact-closure.txt design.txt developers.txt \ developer-guide.txt hid-subdrivers.txt macros.txt new-clients.txt \ @@ -36,11 +35,12 @@ images/cables/SOLA-330.png ALL_TXT_SRC = nut-names.txt $(USER_MANUAL_DEPS) $(DEVELOPER_GUIDE_DEPS) \ - $(CABLES_DEPS) FAQ.txt nut-hal.txt nut-qa.txt packager-guide.txt snmp.txt + $(CABLES_DEPS) FAQ.txt nut-qa.txt packager-guide.txt snmp.txt NUT_SPELL_DICT = nut.dict EXTRA_DIST = $(ALL_TXT_SRC) $(SHARED_DEPS) $(IMAGE_FILES) \ - $(CABLES_IMAGES) docinfo.xml $(NUT_SPELL_DICT) + $(CABLES_IMAGES) docinfo.xml $(NUT_SPELL_DICT) \ + common.xsl xhtml.xsl chunked.xsl ASCIIDOC_HTML_SINGLE = user-manual.html \ developer-guide.html \ @@ -55,10 +55,10 @@ ASCIIDOC_PDF = user-manual.pdf \ developer-guide.pdf \ packager-guide.pdf \ + cables.pdf \ FAQ.pdf -# Force build in ./ and man/ before website -SUBDIRS = . man website +SUBDIRS = man SUFFIXES = .txt .html .pdf all: doc @@ -70,27 +70,13 @@ html-single: $(ASCIIDOC_HTML_SINGLE) html-chunked: $(ASCIIDOC_HTML_CHUNKED) -if HAVE_ASCIIDOC -website: html-chunked pdf -else !HAVE_ASCIIDOC -website: - @echo "Not building website documentation since 'asciidoc' was not found." -endif !HAVE_ASCIIDOC - clean-local: rm -rf *.pdf *.html *.chunked docbook-xsl.css *.bak -# Static HCL is generated automatically -# This is more of a harness, since this file should have already been -# generated, due to the top level Makefile SUBDIRS ordering (tools before docs) -ups-html.txt: ../data/driver.list.in - cd ../data && $(MAKE) $(AM_MAKEFLAGS) driver.list - cd ../tools && $(MAKE) $(AM_MAKEFLAGS) website - ### TODO: automatic dependency generation # Add other directory deps (not for local EXTRA_DIST) and generated contents FULL_USER_MANUAL_DEPS = $(USER_MANUAL_DEPS) $(SHARED_DEPS) ../README \ - ../INSTALL ../UPGRADING ../TODO ../scripts/ufw/README + ../INSTALL.nut ../UPGRADING ../TODO ../scripts/ufw/README FULL_DEVELOPER_GUIDE_DEPS = $(DEVELOPER_GUIDE_DEPS) $(SHARED_DEPS) \ ../scripts/augeas/README ../TODO ../lib/README \ ../tools/nut-scanner/README @@ -112,11 +98,11 @@ --attribute tree_version=@TREE_VERSION@ \ -a toc -a numbered --destination-dir=. -.txt.html: - $(A2X) $(A2X_COMMON_OPTS) --attribute=xhtml11_format --format=xhtml $< +.txt.html: common.xsl xhtml.xsl + $(A2X) $(A2X_COMMON_OPTS) --attribute=xhtml11_format --format=xhtml --xsl-file=$(srcdir)/xhtml.xsl $< -.txt.chunked: - $(A2X) $(A2X_COMMON_OPTS) --attribute=chunked_format --format=chunked $< +.txt.chunked: common.xsl chunked.xsl + $(A2X) $(A2X_COMMON_OPTS) --attribute=chunked_format --format=chunked --xsl-file=$(srcdir)/chunked.xsl $< .txt.pdf: docinfo.xml $(A2X) $(A2X_COMMON_OPTS) --attribute=pdf_format --format=pdf -a docinfo1 $< @@ -144,4 +130,4 @@ @echo "Documentation spell check not available since 'aspell' was not found." endif !HAVE_ASPELL -.PHONY: html html-single pdf website +.PHONY: html html-single pdf diff -Nru nut-2.7.1/docs/Makefile.in nut-2.7.2/docs/Makefile.in --- nut-2.7.1/docs/Makefile.in 2013-11-20 20:55:13.000000000 +0100 +++ nut-2.7.2/docs/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -63,7 +63,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -73,10 +72,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -173,10 +171,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -188,8 +182,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -275,6 +267,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ @@ -334,8 +327,7 @@ SHARED_DEPS = nut-names.txt asciidoc.conf USER_MANUAL_DEPS = acknowledgements.txt cables.txt config-notes.txt \ configure.txt download.txt documentation.txt features.txt history.txt \ - outlets.txt scheduling.txt security.txt support.txt user-manual.txt \ - stable-hcl.txt + outlets.txt scheduling.txt security.txt support.txt user-manual.txt DEVELOPER_GUIDE_DEPS = contact-closure.txt design.txt developers.txt \ developer-guide.txt hid-subdrivers.txt macros.txt new-clients.txt \ @@ -354,11 +346,12 @@ images/cables/SOLA-330.png ALL_TXT_SRC = nut-names.txt $(USER_MANUAL_DEPS) $(DEVELOPER_GUIDE_DEPS) \ - $(CABLES_DEPS) FAQ.txt nut-hal.txt nut-qa.txt packager-guide.txt snmp.txt + $(CABLES_DEPS) FAQ.txt nut-qa.txt packager-guide.txt snmp.txt NUT_SPELL_DICT = nut.dict EXTRA_DIST = $(ALL_TXT_SRC) $(SHARED_DEPS) $(IMAGE_FILES) \ - $(CABLES_IMAGES) docinfo.xml $(NUT_SPELL_DICT) + $(CABLES_IMAGES) docinfo.xml $(NUT_SPELL_DICT) \ + common.xsl xhtml.xsl chunked.xsl ASCIIDOC_HTML_SINGLE = user-manual.html \ developer-guide.html \ @@ -373,17 +366,16 @@ ASCIIDOC_PDF = user-manual.pdf \ developer-guide.pdf \ packager-guide.pdf \ + cables.pdf \ FAQ.pdf - -# Force build in ./ and man/ before website -SUBDIRS = . man website +SUBDIRS = man SUFFIXES = .txt .html .pdf ### TODO: automatic dependency generation # Add other directory deps (not for local EXTRA_DIST) and generated contents FULL_USER_MANUAL_DEPS = $(USER_MANUAL_DEPS) $(SHARED_DEPS) ../README \ - ../INSTALL ../UPGRADING ../TODO ../scripts/ufw/README + ../INSTALL.nut ../UPGRADING ../TODO ../scripts/ufw/README FULL_DEVELOPER_GUIDE_DEPS = $(DEVELOPER_GUIDE_DEPS) $(SHARED_DEPS) \ ../scripts/augeas/README ../TODO ../lib/README \ @@ -760,29 +752,18 @@ html-single: $(ASCIIDOC_HTML_SINGLE) html-chunked: $(ASCIIDOC_HTML_CHUNKED) -@HAVE_ASCIIDOC_TRUE@website: html-chunked pdf -@HAVE_ASCIIDOC_FALSE@website: -@HAVE_ASCIIDOC_FALSE@ @echo "Not building website documentation since 'asciidoc' was not found." - clean-local: rm -rf *.pdf *.html *.chunked docbook-xsl.css *.bak -# Static HCL is generated automatically -# This is more of a harness, since this file should have already been -# generated, due to the top level Makefile SUBDIRS ordering (tools before docs) -ups-html.txt: ../data/driver.list.in - cd ../data && $(MAKE) $(AM_MAKEFLAGS) driver.list - cd ../tools && $(MAKE) $(AM_MAKEFLAGS) website - user-manual.html user-manual.chunked user-manual.pdf: $(FULL_USER_MANUAL_DEPS) developer-guide.html developer-guide.chunked developer-guide.pdf: $(FULL_DEVELOPER_GUIDE_DEPS) packager-guide.html packager-guide.chunked packager-guide.pdf: packager-guide.txt asciidoc.conf -.txt.html: - $(A2X) $(A2X_COMMON_OPTS) --attribute=xhtml11_format --format=xhtml $< +.txt.html: common.xsl xhtml.xsl + $(A2X) $(A2X_COMMON_OPTS) --attribute=xhtml11_format --format=xhtml --xsl-file=$(srcdir)/xhtml.xsl $< -.txt.chunked: - $(A2X) $(A2X_COMMON_OPTS) --attribute=chunked_format --format=chunked $< +.txt.chunked: common.xsl chunked.xsl + $(A2X) $(A2X_COMMON_OPTS) --attribute=chunked_format --format=chunked --xsl-file=$(srcdir)/chunked.xsl $< .txt.pdf: docinfo.xml $(A2X) $(A2X_COMMON_OPTS) --attribute=pdf_format --format=pdf -a docinfo1 $< @@ -807,7 +788,7 @@ @HAVE_ASPELL_FALSE@spellcheck-interactive: @HAVE_ASPELL_FALSE@ @echo "Documentation spell check not available since 'aspell' was not found." -.PHONY: html html-single pdf website +.PHONY: html html-single pdf # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru nut-2.7.1/docs/man/al175.8 nut-2.7.2/docs/man/al175.8 --- nut-2.7.1/docs/man/al175.8 2013-11-20 20:55:35.000000000 +0100 +++ nut-2.7.2/docs/man/al175.8 2014-02-25 16:42:25.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: al175 .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/20/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "AL175" "8" "11/20/2013" "Network UPS Tools 2\&.7\&.1" "NUT Manual" +.TH "AL175" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/apcsmart.8 nut-2.7.2/docs/man/apcsmart.8 --- nut-2.7.1/docs/man/apcsmart.8 2013-10-30 20:52:59.000000000 +0100 +++ nut-2.7.2/docs/man/apcsmart.8 2014-02-25 16:42:26.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: apcsmart .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 10/30/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "APCSMART" "8" "10/30/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "APCSMART" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/apcsmart-old.8 nut-2.7.2/docs/man/apcsmart-old.8 --- nut-2.7.1/docs/man/apcsmart-old.8 2013-07-26 23:14:09.000000000 +0200 +++ nut-2.7.2/docs/man/apcsmart-old.8 2014-02-15 13:07:20.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: apcsmart-old .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "APCSMART\-OLD" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "APCSMART\-OLD" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/apcupsd-ups.8 nut-2.7.2/docs/man/apcupsd-ups.8 --- nut-2.7.1/docs/man/apcupsd-ups.8 2013-11-18 21:29:19.000000000 +0100 +++ nut-2.7.2/docs/man/apcupsd-ups.8 2014-02-25 16:42:30.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: apcupsd-ups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/18/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre2 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "APCUPSD\-UPS" "8" "11/18/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "APCUPSD\-UPS" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/asciidoc.conf nut-2.7.2/docs/man/asciidoc.conf --- nut-2.7.1/docs/man/asciidoc.conf 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/man/asciidoc.conf 2014-02-25 16:39:55.000000000 +0100 @@ -22,4 +22,8 @@ ifdef::backend-xhtml11[] [linkman-inlinemacro] {target}{0?({0})} + +# Format-detection to prevent smartphones from being too smart +[+docinfo] + endif::backend-xhtml11[] diff -Nru nut-2.7.1/docs/man/bcmxcp.8 nut-2.7.2/docs/man/bcmxcp.8 --- nut-2.7.1/docs/man/bcmxcp.8 2013-07-26 23:14:10.000000000 +0200 +++ nut-2.7.2/docs/man/bcmxcp.8 2014-02-15 13:07:21.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: bcmxcp .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BCMXCP" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "BCMXCP" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/bcmxcp_usb.8 nut-2.7.2/docs/man/bcmxcp_usb.8 --- nut-2.7.1/docs/man/bcmxcp_usb.8 2013-07-26 23:14:34.000000000 +0200 +++ nut-2.7.2/docs/man/bcmxcp_usb.8 2014-02-15 13:07:48.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: bcmxcp_usb .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BCMXCP_USB" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "BCMXCP_USB" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/belkin.8 nut-2.7.2/docs/man/belkin.8 --- nut-2.7.1/docs/man/belkin.8 2013-07-26 23:14:10.000000000 +0200 +++ nut-2.7.2/docs/man/belkin.8 2014-02-15 13:07:22.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: belkin .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BELKIN" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "BELKIN" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/belkinunv.8 nut-2.7.2/docs/man/belkinunv.8 --- nut-2.7.1/docs/man/belkinunv.8 2013-07-26 23:14:11.000000000 +0200 +++ nut-2.7.2/docs/man/belkinunv.8 2014-02-15 13:07:22.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: belkinunv .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BELKINUNV" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "BELKINUNV" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/bestfcom.8 nut-2.7.2/docs/man/bestfcom.8 --- nut-2.7.1/docs/man/bestfcom.8 2013-07-26 23:14:14.000000000 +0200 +++ nut-2.7.2/docs/man/bestfcom.8 2014-02-15 13:07:25.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: bestfcom .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BESTFCOM" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "BESTFCOM" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/bestfortress.8 nut-2.7.2/docs/man/bestfortress.8 --- nut-2.7.1/docs/man/bestfortress.8 2013-07-26 23:14:12.000000000 +0200 +++ nut-2.7.2/docs/man/bestfortress.8 2014-02-15 13:07:23.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: bestfortress .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BESTFORTRESS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "BESTFORTRESS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/bestuferrups.8 nut-2.7.2/docs/man/bestuferrups.8 --- nut-2.7.1/docs/man/bestuferrups.8 2013-07-26 23:14:13.000000000 +0200 +++ nut-2.7.2/docs/man/bestuferrups.8 2014-02-15 13:07:24.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: bestuferrups .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BESTUFERRUPS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "BESTUFERRUPS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/bestups.8 nut-2.7.2/docs/man/bestups.8 --- nut-2.7.1/docs/man/bestups.8 2013-07-26 23:14:13.000000000 +0200 +++ nut-2.7.2/docs/man/bestups.8 2014-02-15 13:07:24.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: bestups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BESTUPS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "BESTUPS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/blazer_ser.8 nut-2.7.2/docs/man/blazer_ser.8 --- nut-2.7.1/docs/man/blazer_ser.8 2013-11-17 21:05:08.000000000 +0100 +++ nut-2.7.2/docs/man/blazer_ser.8 2014-02-25 16:42:27.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: blazer_ser .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/17/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BLAZER_SER" "8" "11/17/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "BLAZER_SER" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/blazer_usb.8 nut-2.7.2/docs/man/blazer_usb.8 --- nut-2.7.1/docs/man/blazer_usb.8 2013-11-18 21:29:20.000000000 +0100 +++ nut-2.7.2/docs/man/blazer_usb.8 2014-02-25 16:42:32.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: blazer_usb .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/18/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre2 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "BLAZER_USB" "8" "11/18/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "BLAZER_USB" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/clone.8 nut-2.7.2/docs/man/clone.8 --- nut-2.7.1/docs/man/clone.8 2013-07-26 23:14:16.000000000 +0200 +++ nut-2.7.2/docs/man/clone.8 2014-02-15 13:07:27.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: clone .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "CLONE" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "CLONE" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/dummy-ups.8 nut-2.7.2/docs/man/dummy-ups.8 --- nut-2.7.1/docs/man/dummy-ups.8 2013-07-26 23:14:16.000000000 +0200 +++ nut-2.7.2/docs/man/dummy-ups.8 2014-02-15 13:07:27.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: dummy-ups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "DUMMY\-UPS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "DUMMY\-UPS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/etapro.8 nut-2.7.2/docs/man/etapro.8 --- nut-2.7.1/docs/man/etapro.8 2013-07-26 23:14:17.000000000 +0200 +++ nut-2.7.2/docs/man/etapro.8 2014-02-15 13:07:28.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: etapro .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "ETAPRO" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "ETAPRO" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/everups.8 nut-2.7.2/docs/man/everups.8 --- nut-2.7.1/docs/man/everups.8 2013-07-26 23:14:18.000000000 +0200 +++ nut-2.7.2/docs/man/everups.8 2014-02-15 13:07:28.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: everups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "EVERUPS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "EVERUPS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/gamatronic.8 nut-2.7.2/docs/man/gamatronic.8 --- nut-2.7.1/docs/man/gamatronic.8 2013-07-26 23:14:18.000000000 +0200 +++ nut-2.7.2/docs/man/gamatronic.8 2014-02-15 13:07:29.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: gamatronic .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "GAMATRONIC" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "GAMATRONIC" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/genericups.8 nut-2.7.2/docs/man/genericups.8 --- nut-2.7.1/docs/man/genericups.8 2013-07-26 23:14:19.000000000 +0200 +++ nut-2.7.2/docs/man/genericups.8 2014-02-15 13:07:30.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: genericups .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "GENERICUPS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "GENERICUPS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/hosts.conf.5 nut-2.7.2/docs/man/hosts.conf.5 --- nut-2.7.1/docs/man/hosts.conf.5 2013-09-13 22:38:43.000000000 +0200 +++ nut-2.7.2/docs/man/hosts.conf.5 2014-02-25 23:47:14.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: hosts.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "HOSTS\&.CONF" "5" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "HOSTS\&.CONF" "5" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/isbmex.8 nut-2.7.2/docs/man/isbmex.8 --- nut-2.7.1/docs/man/isbmex.8 2013-07-26 23:14:20.000000000 +0200 +++ nut-2.7.2/docs/man/isbmex.8 2014-02-15 13:07:31.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: isbmex .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "ISBMEX" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "ISBMEX" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/ivtscd.8 nut-2.7.2/docs/man/ivtscd.8 --- nut-2.7.1/docs/man/ivtscd.8 2013-07-26 23:14:20.000000000 +0200 +++ nut-2.7.2/docs/man/ivtscd.8 2014-02-15 13:07:31.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: ivtscd .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "IVTSCD" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "IVTSCD" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/libnutclient.3 nut-2.7.2/docs/man/libnutclient.3 --- nut-2.7.1/docs/man/libnutclient.3 2013-11-18 21:29:16.000000000 +0100 +++ nut-2.7.2/docs/man/libnutclient.3 2014-02-25 23:47:19.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: libnutclient .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/18/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre2 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIBNUTCLIENT" "3" "11/18/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "LIBNUTCLIENT" "3" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/libnutclient_commands.3 nut-2.7.2/docs/man/libnutclient_commands.3 --- nut-2.7.1/docs/man/libnutclient_commands.3 2013-09-13 22:38:59.000000000 +0200 +++ nut-2.7.2/docs/man/libnutclient_commands.3 2014-02-15 13:33:20.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: libnutclient_commands .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIBNUTCLIENT_COMMAND" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "LIBNUTCLIENT_COMMAND" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/libnutclient_devices.3 nut-2.7.2/docs/man/libnutclient_devices.3 --- nut-2.7.1/docs/man/libnutclient_devices.3 2013-09-13 22:39:00.000000000 +0200 +++ nut-2.7.2/docs/man/libnutclient_devices.3 2014-02-15 13:33:21.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: libnutclient_devices .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIBNUTCLIENT_DEVICES" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "LIBNUTCLIENT_DEVICES" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/libnutclient_general.3 nut-2.7.2/docs/man/libnutclient_general.3 --- nut-2.7.1/docs/man/libnutclient_general.3 2013-11-18 21:29:17.000000000 +0100 +++ nut-2.7.2/docs/man/libnutclient_general.3 2014-02-25 23:47:19.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: libnutclient_general .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/18/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre2 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIBNUTCLIENT_GENERAL" "3" "11/18/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "LIBNUTCLIENT_GENERAL" "3" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/libnutclient_misc.3 nut-2.7.2/docs/man/libnutclient_misc.3 --- nut-2.7.1/docs/man/libnutclient_misc.3 2013-09-13 22:39:01.000000000 +0200 +++ nut-2.7.2/docs/man/libnutclient_misc.3 2014-02-15 13:33:22.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: libnutclient_misc .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIBNUTCLIENT_MISC" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "LIBNUTCLIENT_MISC" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/libnutclient_tcp.3 nut-2.7.2/docs/man/libnutclient_tcp.3 --- nut-2.7.1/docs/man/libnutclient_tcp.3 2013-09-13 22:39:02.000000000 +0200 +++ nut-2.7.2/docs/man/libnutclient_tcp.3 2014-02-15 13:33:23.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: libnutclient_tcp .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIBNUTCLIENT_TCP" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "LIBNUTCLIENT_TCP" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/libnutclient_variables.3 nut-2.7.2/docs/man/libnutclient_variables.3 --- nut-2.7.1/docs/man/libnutclient_variables.3 2013-09-13 22:39:03.000000000 +0200 +++ nut-2.7.2/docs/man/libnutclient_variables.3 2014-02-15 13:33:23.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: libnutclient_variables .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIBNUTCLIENT_VARIABL" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "LIBNUTCLIENT_VARIABL" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/libupsclient-config.1 nut-2.7.2/docs/man/libupsclient-config.1 --- nut-2.7.1/docs/man/libupsclient-config.1 2013-09-13 22:38:47.000000000 +0200 +++ nut-2.7.2/docs/man/libupsclient-config.1 2014-02-25 23:47:18.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: libupsclient-config .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIBUPSCLIENT\-CONFIG" "1" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "LIBUPSCLIENT\-CONFIG" "1" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/liebert.8 nut-2.7.2/docs/man/liebert.8 --- nut-2.7.1/docs/man/liebert.8 2013-07-26 23:14:21.000000000 +0200 +++ nut-2.7.2/docs/man/liebert.8 2014-02-15 13:07:32.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: liebert .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIEBERT" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "LIEBERT" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/liebert-esp2.8 nut-2.7.2/docs/man/liebert-esp2.8 --- nut-2.7.1/docs/man/liebert-esp2.8 2013-07-26 23:14:22.000000000 +0200 +++ nut-2.7.2/docs/man/liebert-esp2.8 2014-02-15 13:07:32.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: liebert-esp2 .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "LIEBERT\-ESP2" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "LIEBERT\-ESP2" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/macosx-ups.8 nut-2.7.2/docs/man/macosx-ups.8 --- nut-2.7.1/docs/man/macosx-ups.8 2013-09-13 22:39:17.000000000 +0200 +++ nut-2.7.2/docs/man/macosx-ups.8 2014-02-25 23:47:21.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: macosx-ups .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "MACOSX\-UPS" "8" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "MACOSX\-UPS" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/Makefile.am nut-2.7.2/docs/man/Makefile.am --- nut-2.7.1/docs/man/Makefile.am 2013-11-20 20:53:31.000000000 +0100 +++ nut-2.7.2/docs/man/Makefile.am 2014-02-25 16:39:34.000000000 +0100 @@ -446,6 +446,7 @@ bcmxcp_usb.txt \ blazer-common.txt \ blazer_usb.txt \ + nutdrv_atcl_usb.txt \ nutdrv_qx.txt \ richcomm_usb.txt \ riello_usb.txt \ @@ -455,6 +456,7 @@ MAN_USB_LIBUSB_PAGES = \ bcmxcp_usb.8 \ blazer_usb.8 \ + nutdrv_atcl_usb.8 \ nutdrv_qx.8 \ richcomm_usb.8 \ riello_usb.8 \ @@ -469,6 +471,7 @@ bcmxcp_usb.html \ blazer_usb.html \ nutdrv_qx.html \ + nutdrv_atcl_usb.html \ richcomm_usb.html \ riello_usb.html \ tripplite_usb.html \ @@ -566,10 +569,7 @@ all: -man-index.html: index.html - cp -f $< $@ - -html-man: $(HTML_MANS) man-index.html +html-man: $(HTML_MANS) index.html CLEANFILES = *.xml *.html diff -Nru nut-2.7.1/docs/man/Makefile.in nut-2.7.2/docs/man/Makefile.in --- nut-2.7.1/docs/man/Makefile.in 2013-11-20 20:55:13.000000000 +0100 +++ nut-2.7.2/docs/man/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -91,7 +91,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -101,10 +100,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -196,10 +194,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -211,8 +205,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -298,6 +290,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ @@ -744,6 +737,7 @@ @SOME_DRIVERS_FALSE@ bcmxcp_usb.txt \ @SOME_DRIVERS_FALSE@ blazer-common.txt \ @SOME_DRIVERS_FALSE@ blazer_usb.txt \ +@SOME_DRIVERS_FALSE@ nutdrv_atcl_usb.txt \ @SOME_DRIVERS_FALSE@ nutdrv_qx.txt \ @SOME_DRIVERS_FALSE@ richcomm_usb.txt \ @SOME_DRIVERS_FALSE@ riello_usb.txt \ @@ -753,6 +747,7 @@ @SOME_DRIVERS_FALSE@MAN_USB_LIBUSB_PAGES = \ @SOME_DRIVERS_FALSE@ bcmxcp_usb.8 \ @SOME_DRIVERS_FALSE@ blazer_usb.8 \ +@SOME_DRIVERS_FALSE@ nutdrv_atcl_usb.8 \ @SOME_DRIVERS_FALSE@ nutdrv_qx.8 \ @SOME_DRIVERS_FALSE@ richcomm_usb.8 \ @SOME_DRIVERS_FALSE@ riello_usb.8 \ @@ -763,6 +758,7 @@ @SOME_DRIVERS_FALSE@ bcmxcp_usb.html \ @SOME_DRIVERS_FALSE@ blazer_usb.html \ @SOME_DRIVERS_FALSE@ nutdrv_qx.html \ +@SOME_DRIVERS_FALSE@ nutdrv_atcl_usb.html \ @SOME_DRIVERS_FALSE@ richcomm_usb.html \ @SOME_DRIVERS_FALSE@ riello_usb.html \ @SOME_DRIVERS_FALSE@ tripplite_usb.html \ @@ -1227,10 +1223,7 @@ all: -man-index.html: index.html - cp -f $< $@ - -html-man: $(HTML_MANS) man-index.html +html-man: $(HTML_MANS) index.html @HAVE_ASCIIDOC_TRUE@.txt.html: @HAVE_ASCIIDOC_TRUE@ $(ASCIIDOC) --backend=xhtml11 \ diff -Nru nut-2.7.1/docs/man/masterguard.8 nut-2.7.2/docs/man/masterguard.8 --- nut-2.7.1/docs/man/masterguard.8 2013-07-26 23:14:22.000000000 +0200 +++ nut-2.7.2/docs/man/masterguard.8 2014-02-15 13:07:33.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: masterguard .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "MASTERGUARD" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "MASTERGUARD" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/metasys.8 nut-2.7.2/docs/man/metasys.8 --- nut-2.7.1/docs/man/metasys.8 2013-07-26 23:14:23.000000000 +0200 +++ nut-2.7.2/docs/man/metasys.8 2014-02-15 13:07:34.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: metasys .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "METASYS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "METASYS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/mge-shut.8 nut-2.7.2/docs/man/mge-shut.8 --- nut-2.7.1/docs/man/mge-shut.8 2013-07-26 23:14:24.000000000 +0200 +++ nut-2.7.2/docs/man/mge-shut.8 2014-02-15 13:07:34.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: mge-shut .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "MGE\-SHUT" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "MGE\-SHUT" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/mge-utalk.8 nut-2.7.2/docs/man/mge-utalk.8 --- nut-2.7.1/docs/man/mge-utalk.8 2013-07-26 23:14:24.000000000 +0200 +++ nut-2.7.2/docs/man/mge-utalk.8 2014-02-15 13:07:35.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: mge-utalk .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "MGE\-UTALK" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "MGE\-UTALK" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/microdowell.8 nut-2.7.2/docs/man/microdowell.8 --- nut-2.7.1/docs/man/microdowell.8 2013-07-26 23:14:26.000000000 +0200 +++ nut-2.7.2/docs/man/microdowell.8 2014-02-15 13:07:38.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: microdowell .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "MICRODOWELL" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "MICRODOWELL" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/netxml-ups.8 nut-2.7.2/docs/man/netxml-ups.8 --- nut-2.7.1/docs/man/netxml-ups.8 2013-10-30 20:52:59.000000000 +0100 +++ nut-2.7.2/docs/man/netxml-ups.8 2014-02-25 16:42:33.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: netxml-ups .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 10/30/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NETXML\-UPS" "8" "10/30/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NETXML\-UPS" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nut.conf.5 nut-2.7.2/docs/man/nut.conf.5 --- nut-2.7.1/docs/man/nut.conf.5 2013-07-26 23:13:55.000000000 +0200 +++ nut-2.7.2/docs/man/nut.conf.5 2014-02-15 13:07:06.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nut.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUT\&.CONF" "5" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "NUT\&.CONF" "5" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutdrv_atcl_usb.8 nut-2.7.2/docs/man/nutdrv_atcl_usb.8 --- nut-2.7.1/docs/man/nutdrv_atcl_usb.8 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/docs/man/nutdrv_atcl_usb.8 2014-02-25 16:42:32.000000000 +0100 @@ -0,0 +1,72 @@ +'\" t +.\" Title: nutdrv_atcl_usb +.\" Author: [see the "AUTHORS" section] +.\" Generator: DocBook XSL Stylesheets v1.76.1 +.\" Date: 02/25/2014 +.\" Manual: NUT Manual +.\" Source: Network UPS Tools 2.7.1.5 +.\" Language: English +.\" +.TH "NUTDRV_ATCL_USB" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +nutdrv_atcl_usb \- Driver for \*(AqATCL FOR UPS\*(Aq equipment +.SH "NOTE" +.sp +This man page only documents the specific features of the nutdrv_atcl_usb driver\&. For information about the core driver, see \fBnutupsdrv\fR(8)\&. +.SH "SUPPORTED HARDWARE" +.sp +This driver is for UPS hardware which identifies itself as USB idVendor 0001 and idProduct 0000, and iManufacturer ATCL FOR UPS\&. Known manufacturers include Kanji and Plexus\&. The UPS interface seems to be a USB frontend to a traditional contact\-closure interface, which translates into only three states in ups\&.status: \fBOL\fR, \fBOB\fR and \fBOB LB\fR\&. See also \fBgenericups\fR(8)\&. +.SH "EXTRA ARGUMENTS" +.sp +This driver supports the following optional setting: +.PP +\fBvendor\fR=\fIname\fR +.RS 4 +In case your iManufacturer (Vendor) string does not exactly match +ATCL FOR UPS, you may provide an alternate string here\&. Note that a more likely case is that your device is handled by another driver for +0001:0000 +devices, such as +\fBnutdrv_qx\fR(8)\&. +.RE +.SH "BUGS" +.sp +The UPS returns the same code for "load power is off" as for "on line power"\&. This condition will not be observed if the NUT master is powered by the UPS, but may be an issue if the UPS is monitored by a remote system\&. +.sp +The time between the shutdown command and removal of power seems to be fixed at 30 seconds\&. Ensure that the NUT shutdown script is invoked as late as possible in the shutdown procedure (in case some services take longer than others to clean up)\&. +.sp +Most contact\-closure UPSes will not power down the load if the line power is present\&. This can create a race when using slave \fBupsmon\fR(8) systems\&. See the \fBupsmon\fR(8) man page for more information\&. The solution to this problem is to upgrade to a smart protocol UPS of some kind that allows detection and proper load cycling on command\&. +.SH "AUTHORS" +.sp +Charles Lepple +.SH "SEE ALSO" +.SS "The core driver:" +.sp +\fBnutupsdrv\fR(8) +.SS "The generic serial driver:" +.sp +\fBgenericups\fR(8) +.SS "The Qx driver:" +.sp +\fBnutdrv_qx\fR(8) +.SS "Internet resources:" +.sp +The NUT (Network UPS Tools) home page: http://www\&.networkupstools\&.org/ diff -Nru nut-2.7.1/docs/man/nutdrv_atcl_usb.txt nut-2.7.2/docs/man/nutdrv_atcl_usb.txt --- nut-2.7.1/docs/man/nutdrv_atcl_usb.txt 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/docs/man/nutdrv_atcl_usb.txt 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,70 @@ +NUTDRV_ATCL_USB(8) +================== + +NAME +---- +nutdrv_atcl_usb - Driver for 'ATCL FOR UPS' equipment + +NOTE +---- +This man page only documents the specific features of the nutdrv_atcl_usb +driver. For information about the core driver, see linkman:nutupsdrv[8]. + +SUPPORTED HARDWARE +------------------ +This driver is for UPS hardware which identifies itself as USB idVendor 0001 +and idProduct 0000, and iManufacturer +ATCL FOR UPS+. Known manufacturers +include Kanji and Plexus. The UPS interface seems to be a USB frontend to a +traditional contact-closure interface, which translates into only three states +in ups.status: *OL*, *OB* and *OB LB*. See also linkman:genericups[8]. + +EXTRA ARGUMENTS +--------------- + +This driver supports the following optional setting: + +*vendor*='name':: +In case your iManufacturer (Vendor) string does not exactly match ++ATCL FOR UPS+, you may provide an alternate string here. Note that a more +likely case is that your device is handled by another driver for +0001:0000+ +devices, such as linkman:nutdrv_qx[8]. + +BUGS +---- +The UPS returns the same code for "load power is off" as for "on line power". +This condition will not be observed if the NUT master is powered by the UPS, +but may be an issue if the UPS is monitored by a remote system. + +The time between the shutdown command and removal of power seems to be fixed at +30 seconds. Ensure that the NUT shutdown script is invoked as late as possible +in the shutdown procedure (in case some services take longer than others to +clean up). + +Most contact-closure UPSes will not power down the load if the line power +is present. This can create a race when using slave linkman:upsmon[8] systems. +See the linkman:upsmon[8] man page for more information. The solution to this +problem is to upgrade to a smart protocol UPS of some kind that allows +detection and proper load cycling on command. + +AUTHORS +------- +Charles Lepple + +SEE ALSO +-------- + +The core driver: +~~~~~~~~~~~~~~~~ +linkman:nutupsdrv[8] + +The generic serial driver: +~~~~~~~~~~~~~~~~~~~~~~~~~~ +linkman:genericups[8] + +The Qx driver: +~~~~~~~~~~~~~~ +linkman:nutdrv_qx[8] + +Internet resources: +~~~~~~~~~~~~~~~~~~~ +The NUT (Network UPS Tools) home page: http://www.networkupstools.org/ diff -Nru nut-2.7.1/docs/man/nutdrv_qx.8 nut-2.7.2/docs/man/nutdrv_qx.8 --- nut-2.7.1/docs/man/nutdrv_qx.8 2013-11-18 21:29:18.000000000 +0100 +++ nut-2.7.2/docs/man/nutdrv_qx.8 2014-02-25 16:42:29.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutdrv_qx .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/18/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre2 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTDRV_QX" "8" "11/18/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTDRV_QX" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -34,7 +34,7 @@ This man page only documents the hardware\-specific features of the \fBnutdrv_qx\fR driver\&. For information about the core driver, see \fBnutupsdrv\fR(8)\&. .SH "SUPPORTED HARDWARE" .sp -The \fBnutdrv_qx\fR driver is known to work with various UPSes from \fIBlazer\fR, \fIEnergy Sistem\fR, \fIFenton Technologies\fR, \fIGeneral Electric\fR, \fIMustek\fR, \fIVoltronic Power\fR (rebranded by many, many \- have I said many? \- others\&.\&. Long story short: if your UPS came with a software called \fIViewpower\fR, chances are high that it works with this driver with the \fIvoltronic\fR protocol) and many others\&. +The \fBnutdrv_qx\fR driver is known to work with various UPSes from \fIBlazer\fR, \fIEnergy Sistem\fR, \fIFenton Technologies\fR, \fIGeneral Electric\fR, \fIMustek\fR, \fIVoltronic Power\fR (rebranded by many, many \- have I said many? \- others\&.\&. Long story short: if your UPS came with a software called \fIViewpower\fR, chances are high that it works with this driver with one of the \fIvoltronic*\fR protocols or with the \fImecer\fR one) and many others\&. .sp The NUT compatibility table lists all the known supported models\&. Keep in mind, however, that other models not listed there may also be supported, but haven\(cqt been tested\&. .sp @@ -47,9 +47,11 @@ .PP \fBondelay =\fR \fIvalue\fR .RS 4 -Time to wait before switching on the UPS (seconds)\&. This value is truncated to units of 60 seconds\&. The acceptable range is -0\&.\&.599940 -seconds\&. Note that a value below 3 minutes, may cause earlier firmware versions to not switch on automatically, so it defaults to 3 minutes (i\&.e\&. 180 seconds)\&. This option provides a default value for +Time to wait before switching on the UPS (seconds)\&. This value is truncated to units of 60 seconds\&. +.sp +Note that a value below 3 minutes, may cause earlier firmware versions to not switch on automatically, so it defaults to 3 minutes (i\&.e\&. 180 seconds)\&. +.sp +This option provides a default value for \fBups\&.delay\&.start\fR that will then be used by the driver in the automatic shutdown sequence (i\&.e\&. calling the driver with the \fB\-k\fR @@ -69,7 +71,9 @@ .PP \fBoffdelay =\fR \fIvalue\fR .RS 4 -Time to wait before shutting down the UPS (seconds)\&. This value is truncated to units of 6 seconds (less than 60 seconds) or 60 seconds (more than 60 seconds)\&. Defaults to 30 seconds\&. This option provides a default value for +Time to wait before shutting down the UPS (seconds)\&. This value is truncated to units of 6 seconds (less than 60 seconds) or 60 seconds (more than 60 seconds)\&. Defaults to 30 seconds\&. +.sp +This option provides a default value for \fBups\&.delay\&.shutdown\fR that will then be used by the driver in the automatic shutdown sequence (i\&.e\&. calling the driver with the \fB\-k\fR @@ -95,7 +99,8 @@ \fBshutdown\&.stayoff\fR shutting down after \fBups\&.delay\&.shutdown\fR -seconds and won\(cqt return, otherwise (standard behaviour) the UPS will call +seconds and won\(cqt return (see +KNOWN PROBLEMS), otherwise (standard behaviour) the UPS will call \fBshutdown\&.return\fR shutting down after \fBups\&.delay\&.shutdown\fR @@ -106,14 +111,27 @@ .PP \fBprotocol =\fR \fIstring\fR .RS 4 -Skip autodetection of the protocol to use and only use the one specified\&. Supported values +Skip autodetection of the protocol to use and only use the one specified\&. Supported values: \fImecer\fR, \fImegatec\fR, \fImegatec/old\fR, \fImustek\fR, -\fIvoltronic\fR +\fIq1\fR, +\fIvoltronic\fR, +\fIvoltronic\-qs\fR and \fIzinto\fR\&. +.sp +Note that if you end up using the +\fIq1\fR +protocol, you may want to give a try to the +\fImecer\fR, +\fImegatec\fR +and +\fIzinto\fR +ones setting the +\fBnovendor\fR/\fBnorating\fR flags +(only one, or both)\&. .RE .PP \fBpollfreq =\fR \fIvalue\fR @@ -185,6 +203,13 @@ .RE .SS "MECER, MEGATAEC, MEGATEC/OLD, MUSTEK, ZINTO PROTOCOLS" .PP +\fBondelay\fR +.RS 4 +The acceptable range is +0\&.\&.599940 +seconds\&. +.RE +.PP \fBoffdelay\fR .RS 4 The acceptable range is @@ -201,10 +226,47 @@ .RS 4 Some UPSes will lock up if you attempt to read vendor information from them\&. Setting this flag will make the driver skip this step\&. .RE +.SS "Q1 PROTOCOL" +.PP +\fBondelay\fR +.RS 4 +The acceptable range is +0\&.\&.599940 +seconds\&. +.RE +.PP +\fBoffdelay\fR +.RS 4 +The acceptable range is +12\&.\&.600 +seconds\&. +.RE +.SS "VOLTRONIC\-QS PROTOCOL" +.PP +\fBondelay\fR +.RS 4 +The acceptable range is +60\&.\&.599940 +seconds\&. +.RE +.PP +\fBoffdelay\fR +.RS 4 +The acceptable range is +12\&.\&.540 +seconds\&. +.RE .SS "VOLTRONIC PROTOCOL" .sp The following options are supported only by the \fIvoltronic\fR protocol\&. Not all of them are available on all the UPSes supported by this protocol\&. .PP +\fBondelay\fR +.RS 4 +The acceptable range is +0\&.\&.599940 +seconds\&. +.RE +.PP \fBoffdelay\fR .RS 4 The acceptable range is @@ -535,7 +597,7 @@ .RS 4 Stop a running battery test\&. (Not available on some hardware) .RE -.SS "MECER, MEGATEC, MEGATEC/OLD, MUSTEK, ZINTO PROTOCOLS" +.SS "MECER, MEGATEC, MEGATEC/OLD, MUSTEK, Q1, ZINTO PROTOCOLS" .PP \fBtest\&.battery\&.start\fR \fIvalue\fR .RS 4 @@ -543,6 +605,22 @@ \fIvalue\fR seconds (truncated to 60 seconds) [60\&.\&.5940]\&. .RE +.sp +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +.br +.ps +1 +\fBVOLTRONIC POWER P98 UNITS (WITH MECER PROTOCOL)\fR +.RS 4 +.PP +\fBtest\&.battery\&.start\fR \fIvalue\fR +.RS 4 +Perform a battery test for the duration of +\fIvalue\fR +seconds (truncated to 60 seconds) [12\&.\&.5940]\&. This value is truncated to units of 6 seconds (less than 60 seconds) or 60 seconds (more than 60 seconds)\&. +.RE +.RE .SS "VOLTRONIC PROTOCOL" .sp The following instant commands are available for the \fIvoltronic\fR protocol\&. Not all of them are available on all the UPSes supported by this protocol\&. @@ -878,6 +956,56 @@ Some models report a bogus value for the beeper status (will always be \fIenabled\fR or \fIdisabled\fR)\&. So, the \fBbeeper\&.toggle\fR command may appear to have no effect in the status reported by the driver when, in fact, it is working fine\&. .sp The temperature and load value is known to be bogus in some models\&. +.SS "VOLTRONIC\-QS UNITS" +.sp +Both \fBload\&.off\fR and \fBshutdown\&.stayoff\fR instant commands are known to work as expected (i\&.e\&. turn the load off indefinitely) only if mains is present, otherwise, as soon as mains returns the load will be powered\&. +.sp +After issuing a \fBshutdown\&.return\fR instant command, the UPS won\(cqt wait \fBondelay\fR before powering on the load, provided the following conditions are met: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +if the load has been previously (no matter how long before) powered off through +\fBload\&.off\fR/\fBshutdown\&.stayoff\fR +\fIand\fR +powered on through +\fBload\&.on\fR/\fBshutdown\&.stop\fR +\fIand\fR +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +if AC wasn\(cqt cut after issuing the +\fBload\&.off\fR/\fBshutdown\&.stayoff\fR +(i\&.e\&. the UPS didn\(cqt turn itself off) +\fIand\fR +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +if there\(cqs a power outage after issuing the +\fBshutdown\&.return\fR +command +.RE +.sp +In this case, as soon as mains returns the load will be powered\&. .SH "UPS WARNINGS (VOLTRONIC PROTOCOL)" .sp The UPSes supported by \fIvoltronic\fR protocol report warnings through a 64bit flag (bit1bit2\&...bit63bit64) where 1 means that a warning arose, while 0 means no warning\&. Since more than one warning at a time can be signaled, and because of the limited space in the ups\&.alarm variable, if the length of the warnings exceeds that of ups\&.alarms variable, they will be reported as bits\&. If you want to know the explanation of that bit you can either watch the log or see the next table (unlisted bits equal to unknown warnings)\&. diff -Nru nut-2.7.1/docs/man/nutdrv_qx.txt nut-2.7.2/docs/man/nutdrv_qx.txt --- nut-2.7.1/docs/man/nutdrv_qx.txt 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/docs/man/nutdrv_qx.txt 2014-02-25 16:39:34.000000000 +0100 @@ -17,7 +17,7 @@ SUPPORTED HARDWARE ------------------ -The *nutdrv_qx* driver is known to work with various UPSes from 'Blazer', 'Energy Sistem', 'Fenton Technologies', 'General Electric', 'Mustek', 'Voltronic Power' (rebranded by many, many - have I said many? - others.. Long story short: if your UPS came with a software called 'Viewpower', chances are high that it works with this driver with the 'voltronic' <<_extra_arguments,protocol>>) and many others. +The *nutdrv_qx* driver is known to work with various UPSes from 'Blazer', 'Energy Sistem', 'Fenton Technologies', 'General Electric', 'Mustek', 'Voltronic Power' (rebranded by many, many - have I said many? - others.. Long story short: if your UPS came with a software called 'Viewpower', chances are high that it works with this driver with one of the <<_extra_arguments,'voltronic*' protocols or with the 'mecer' one>>) and many others. The <<_internet_resources,NUT compatibility table>> lists all the known supported models. Keep in mind, however, that other models not listed there may also be supported, but haven't been tested. @@ -35,22 +35,26 @@ *ondelay =* 'value':: Time to wait before switching on the UPS (seconds). This value is truncated to units of 60 seconds. -The acceptable range is +0..599940+ seconds. ++ Note that a value below 3 minutes, may cause earlier firmware versions to not switch on automatically, so it defaults to 3 minutes (i.e. 180 seconds). ++ This option provides a default value for *ups.delay.start* that will then be used by the driver in the automatic shutdown sequence (i.e. calling the driver with the *-k* option, calling linkman:upsdrvctl[8] with the *shutdown* option or when the +FSD+ flag is set and linkman:upsmon[8] enters its shutdown sequence): however you can change this value `on the fly' for the actual session, only for the use with instant commands, setting *ups.delay.start* with linkman:upsrw[8]. *offdelay =* 'value':: Time to wait before shutting down the UPS (seconds). This value is truncated to units of 6 seconds (less than 60 seconds) or 60 seconds (more than 60 seconds). Defaults to 30 seconds. ++ This option provides a default value for *ups.delay.shutdown* that will then be used by the driver in the automatic shutdown sequence (i.e. calling the driver with the *-k* option, calling linkman:upsdrvctl[8] with the *shutdown* option or when the +FSD+ flag is set and linkman:upsmon[8] enters its shutdown sequence): however you can change this value `on the fly' for the actual session, only for the use with instant commands, setting *ups.delay.shutdown* with linkman:upsrw[8]. *stayoff*:: -If you set stayoff in linkman:ups.conf[5] when FSD arises the UPS will call a *shutdown.stayoff* shutting down after *ups.delay.shutdown* seconds and won't return, otherwise (standard behaviour) the UPS will call *shutdown.return* shutting down after *ups.delay.shutdown* seconds and then turn on after *ups.delay.start* seconds (if mains meanwhile returned). +If you set stayoff in linkman:ups.conf[5] when FSD arises the UPS will call a *shutdown.stayoff* shutting down after *ups.delay.shutdown* seconds and won't return (see <<_known_problems,KNOWN PROBLEMS>>), otherwise (standard behaviour) the UPS will call *shutdown.return* shutting down after *ups.delay.shutdown* seconds and then turn on after *ups.delay.start* seconds (if mains meanwhile returned). *protocol =* 'string':: Skip autodetection of the protocol to use and only use the one specified. -Supported values 'mecer', 'megatec', 'megatec/old', 'mustek', 'voltronic' and 'zinto'. +Supported values: 'mecer', 'megatec', 'megatec/old', 'mustek', 'q1', 'voltronic', 'voltronic-qs' and 'zinto'. ++ +Note that if you end up using the 'q1' protocol, you may want to give a try to the 'mecer', 'megatec' and 'zinto' ones setting the <> (only one, or both). *pollfreq =* 'value':: Set polling frequency, in seconds, to reduce the data flow. @@ -99,9 +103,13 @@ Only used if *runtimecal* is also specified. +[[old-blazer-protocols-options]] MECER, MEGATAEC, MEGATEC/OLD, MUSTEK, ZINTO PROTOCOLS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*ondelay*:: +The acceptable range is +0..599940+ seconds. + *offdelay*:: The acceptable range is +12..600+ seconds. @@ -114,12 +122,35 @@ Setting this flag will make the driver skip this step. +Q1 PROTOCOL +~~~~~~~~~~~ + +*ondelay*:: +The acceptable range is +0..599940+ seconds. + +*offdelay*:: +The acceptable range is +12..600+ seconds. + + +VOLTRONIC-QS PROTOCOL +~~~~~~~~~~~~~~~~~~~~~ + +*ondelay*:: +The acceptable range is +60..599940+ seconds. + +*offdelay*:: +The acceptable range is +12..540+ seconds. + + VOLTRONIC PROTOCOL ~~~~~~~~~~~~~~~~~~ The following options are supported only by the 'voltronic' protocol. Not all of them are available on all the UPSes supported by this protocol. +*ondelay*:: +The acceptable range is +0..599940+ seconds. + *offdelay*:: The acceptable range is +12..5940+ seconds. @@ -317,13 +348,21 @@ (Not available on some hardware) -MECER, MEGATEC, MEGATEC/OLD, MUSTEK, ZINTO PROTOCOLS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +MECER, MEGATEC, MEGATEC/OLD, MUSTEK, Q1, ZINTO PROTOCOLS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *test.battery.start* 'value':: Perform a battery test for the duration of 'value' seconds (truncated to 60 seconds) [+60..5940+]. +VOLTRONIC POWER P98 UNITS (WITH MECER PROTOCOL) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +*test.battery.start* 'value':: +Perform a battery test for the duration of 'value' seconds (truncated to 60 seconds) [+12..5940+]. +This value is truncated to units of 6 seconds (less than 60 seconds) or 60 seconds (more than 60 seconds). + + VOLTRONIC PROTOCOL ~~~~~~~~~~~~~~~~~~ @@ -540,6 +579,20 @@ The temperature and load value is known to be bogus in some models. +VOLTRONIC-QS UNITS +~~~~~~~~~~~~~~~~~~ + +Both *load.off* and *shutdown.stayoff* instant commands are known to work as expected (i.e. turn the load off indefinitely) only if mains is present, otherwise, as soon as mains returns the load will be powered. + +After issuing a *shutdown.return* instant command, the UPS won't wait *ondelay* before powering on the load, provided the following conditions are met: + +- if the load has been previously (no matter how long before) powered off through *load.off*/*shutdown.stayoff* _and_ powered on through *load.on*/*shutdown.stop* _and_ +- if AC wasn't cut after issuing the *load.off*/*shutdown.stayoff* (i.e. the UPS didn't turn itself off) _and_ +- if there's a power outage after issuing the *shutdown.return* command + +In this case, as soon as mains returns the load will be powered. + + UPS WARNINGS (VOLTRONIC PROTOCOL) --------------------------------- @@ -548,68 +601,68 @@ If you want to know the explanation of that bit you can either watch the log or see the next table (unlisted bits equal to unknown warnings). .UPS Warnings for 'voltronic' UPSes -[cols="5>,95",options="autowidth,header",frame="topbot",align="center",caption=""] +[cols="5>,95",options="autowidth,header",frame="topbot",grid="rows",align="center",caption=""] |==== -|# |Corresponding Warning -|1 |Battery disconnected -|2 |Neutral not connected -|3 |Site fault -|4 |Phase sequence incorrect -|5 |Phase sequence incorrect in bypass -|6 |Input frequency unstable in bypass -|7 |Battery overcharged -|8 |Low battery -|9 |Overload alarm -|10 |Fan alarm -|11 |EPO enabled -|12 |Unable to turn on UPS -|13 |Over temperature alarm -|14 |Charger alarm -|15 |Remote auto shutdown -|16 |L1 input fuse not working -|17 |L2 input fuse not working -|18 |L3 input fuse not working -|19 |Positive PFC abnormal in L1 -|20 |Negative PFC abnormal in L1 -|21 |Positive PFC abnormal in L2 -|22 |Negative PFC abnormal in L2 -|23 |Positive PFC abnormal in L3 -|24 |Negative PFC abnormal in L3 -|25 |Abnormal in CAN-bus communication -|26 |Abnormal in synchronous signal circuit -|27 |Abnormal in synchronous pulse signal circuit -|28 |Abnormal in host signal circuit -|29 |Male connector of parallel cable not connected well -|30 |Female connector of parallel cable not connected well -|31 |Parallel cable not connected well -|32 |Battery connection not consistent in parallel systems -|33 |AC connection not consistent in parallel systems -|34 |Bypass connection not consistent in parallel systems -|35 |UPS model types not consistent in parallel systems -|36 |Capacity of UPSs not consistent in parallel systems -|37 |Auto restart setting not consistent in parallel systems -|38 |Battery cell over charge -|39 |Battery protection setting not consistent in parallel systems -|40 |Battery detection setting not consistent in parallel systems -|41 |Bypass not allowed setting not consistent in parallel systems -|42 |Converter setting not consistent in parallel systems -|43 |High loss point for frequency in bypass mode not consistent in parallel systems -|44 |Low loss point for frequency in bypass mode not consistent in parallel systems -|45 |High loss point for voltage in bypass mode not consistent in parallel systems -|46 |Low loss point for voltage in bypass mode not consistent in parallel systems -|47 |High loss point for frequency in AC mode not consistent in parallel systems -|48 |Low loss point for frequency in AC mode not consistent in parallel systems -|49 |High loss point for voltage in AC mode not consistent in parallel systems -|50 |Low loss point for voltage in AC mode not consistent in parallel systems -|51 |Warning for locking in bypass mode after 3 consecutive overloads within 30 min -|52 |Warning for three-phase AC input current unbalance -|53 |Warning for a three-phase input current unbalance detected in battery mode -|54 |Warning for Inverter inter-current unbalance -|55 |Programmable outlets cut off pre-alarm -|56 |Warning for Battery replace -|57 |Abnormal warning on input phase angle -|58 |Warning!! Cover of maintain switch is open -|62 |EEPROM operation error +|# |Corresponding Warning +|1 |Battery disconnected +|2 |Neutral not connected +|3 |Site fault +|4 |Phase sequence incorrect +|5 |Phase sequence incorrect in bypass +|6 |Input frequency unstable in bypass +|7 |Battery overcharged +|8 |Low battery +|9 |Overload alarm +|10 |Fan alarm +|11 |EPO enabled +|12 |Unable to turn on UPS +|13 |Over temperature alarm +|14 |Charger alarm +|15 |Remote auto shutdown +|16 |L1 input fuse not working +|17 |L2 input fuse not working +|18 |L3 input fuse not working +|19 |Positive PFC abnormal in L1 +|20 |Negative PFC abnormal in L1 +|21 |Positive PFC abnormal in L2 +|22 |Negative PFC abnormal in L2 +|23 |Positive PFC abnormal in L3 +|24 |Negative PFC abnormal in L3 +|25 |Abnormal in CAN-bus communication +|26 |Abnormal in synchronous signal circuit +|27 |Abnormal in synchronous pulse signal circuit +|28 |Abnormal in host signal circuit +|29 |Male connector of parallel cable not connected well +|30 |Female connector of parallel cable not connected well +|31 |Parallel cable not connected well +|32 |Battery connection not consistent in parallel systems +|33 |AC connection not consistent in parallel systems +|34 |Bypass connection not consistent in parallel systems +|35 |UPS model types not consistent in parallel systems +|36 |Capacity of UPSs not consistent in parallel systems +|37 |Auto restart setting not consistent in parallel systems +|38 |Battery cell over charge +|39 |Battery protection setting not consistent in parallel systems +|40 |Battery detection setting not consistent in parallel systems +|41 |Bypass not allowed setting not consistent in parallel systems +|42 |Converter setting not consistent in parallel systems +|43 |High loss point for frequency in bypass mode not consistent in parallel systems +|44 |Low loss point for frequency in bypass mode not consistent in parallel systems +|45 |High loss point for voltage in bypass mode not consistent in parallel systems +|46 |Low loss point for voltage in bypass mode not consistent in parallel systems +|47 |High loss point for frequency in AC mode not consistent in parallel systems +|48 |Low loss point for frequency in AC mode not consistent in parallel systems +|49 |High loss point for voltage in AC mode not consistent in parallel systems +|50 |Low loss point for voltage in AC mode not consistent in parallel systems +|51 |Warning for locking in bypass mode after 3 consecutive overloads within 30 min +|52 |Warning for three-phase AC input current unbalance +|53 |Warning for a three-phase input current unbalance detected in battery mode +|54 |Warning for Inverter inter-current unbalance +|55 |Programmable outlets cut off pre-alarm +|56 |Warning for Battery replace +|57 |Abnormal warning on input phase angle +|58 |Warning!! Cover of maintain switch is open +|62 |EEPROM operation error |==== @@ -637,6 +690,7 @@ linkman:upsmon[8], linkman:upsrw[8] + Internet Resources: ~~~~~~~~~~~~~~~~~~~ diff -Nru nut-2.7.1/docs/man/nut-ipmipsu.8 nut-2.7.2/docs/man/nut-ipmipsu.8 --- nut-2.7.1/docs/man/nut-ipmipsu.8 2013-09-13 22:39:16.000000000 +0200 +++ nut-2.7.2/docs/man/nut-ipmipsu.8 2014-02-25 23:47:20.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nut-ipmipsu .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUT\-IPMIPSU" "8" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUT\-IPMIPSU" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nut-recorder.8 nut-2.7.2/docs/man/nut-recorder.8 --- nut-2.7.1/docs/man/nut-recorder.8 2013-11-18 21:29:15.000000000 +0100 +++ nut-2.7.2/docs/man/nut-recorder.8 2014-02-25 16:42:25.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nut-recorder .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/18/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre2 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUT\-RECORDER" "8" "11/18/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUT\-RECORDER" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan.3 nut-2.7.2/docs/man/nutscan.3 --- nut-2.7.1/docs/man/nutscan.3 2013-09-13 22:39:03.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan.3 2014-02-15 13:33:24.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_add_device_to_device.3 nut-2.7.2/docs/man/nutscan_add_device_to_device.3 --- nut-2.7.1/docs/man/nutscan_add_device_to_device.3 2013-09-13 22:39:12.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_add_device_to_device.3 2014-02-15 13:33:32.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_add_device_to_device .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_ADD_DEVICE_T" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_ADD_DEVICE_T" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_add_option_to_device.3 nut-2.7.2/docs/man/nutscan_add_option_to_device.3 --- nut-2.7.1/docs/man/nutscan_add_option_to_device.3 2013-09-13 22:39:11.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_add_option_to_device.3 2014-02-15 13:33:32.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_add_option_to_device .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_ADD_OPTION_T" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_ADD_OPTION_T" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_cidr_to_ip.3 nut-2.7.2/docs/man/nutscan_cidr_to_ip.3 --- nut-2.7.1/docs/man/nutscan_cidr_to_ip.3 2013-09-13 22:39:09.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_cidr_to_ip.3 2014-02-15 13:33:30.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_cidr_to_ip .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_CIDR_TO_IP" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_CIDR_TO_IP" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_display_parsable.3 nut-2.7.2/docs/man/nutscan_display_parsable.3 --- nut-2.7.1/docs/man/nutscan_display_parsable.3 2013-09-13 22:39:09.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_display_parsable.3 2014-02-15 13:33:29.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_display_parsable .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_DISPLAY_PARS" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_DISPLAY_PARS" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_display_ups_conf.3 nut-2.7.2/docs/man/nutscan_display_ups_conf.3 --- nut-2.7.1/docs/man/nutscan_display_ups_conf.3 2013-09-13 22:39:08.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_display_ups_conf.3 2014-02-15 13:33:29.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_display_ups_conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_DISPLAY_UPS_" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_DISPLAY_UPS_" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_free_device.3 nut-2.7.2/docs/man/nutscan_free_device.3 --- nut-2.7.1/docs/man/nutscan_free_device.3 2013-09-13 22:39:11.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_free_device.3 2014-02-15 13:33:31.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_free_device .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_FREE_DEVICE" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_FREE_DEVICE" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_get_serial_ports_list.3 nut-2.7.2/docs/man/nutscan_get_serial_ports_list.3 --- nut-2.7.1/docs/man/nutscan_get_serial_ports_list.3 2013-09-13 22:39:13.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_get_serial_ports_list.3 2014-02-15 13:33:33.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_get_serial_ports_list .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_GET_SERIAL_P" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_GET_SERIAL_P" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_init.3 nut-2.7.2/docs/man/nutscan_init.3 --- nut-2.7.1/docs/man/nutscan_init.3 2013-09-13 22:39:13.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_init.3 2014-02-15 13:33:34.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_init .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_INIT" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_INIT" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nut-scanner.8 nut-2.7.2/docs/man/nut-scanner.8 --- nut-2.7.1/docs/man/nut-scanner.8 2013-07-26 23:14:07.000000000 +0200 +++ nut-2.7.2/docs/man/nut-scanner.8 2014-02-15 13:07:17.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nut-scanner .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUT\-SCANNER" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "NUT\-SCANNER" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_new_device.3 nut-2.7.2/docs/man/nutscan_new_device.3 --- nut-2.7.1/docs/man/nutscan_new_device.3 2013-09-13 22:39:10.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_new_device.3 2014-02-15 13:33:31.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_new_device .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_NEW_DEVICE" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_NEW_DEVICE" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_scan_avahi.3 nut-2.7.2/docs/man/nutscan_scan_avahi.3 --- nut-2.7.1/docs/man/nutscan_scan_avahi.3 2013-09-13 22:39:06.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_scan_avahi.3 2014-02-15 13:33:27.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_avahi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_SCAN_AVAHI" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_SCAN_AVAHI" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_scan_eaton_serial.3 nut-2.7.2/docs/man/nutscan_scan_eaton_serial.3 --- nut-2.7.1/docs/man/nutscan_scan_eaton_serial.3 2013-09-13 22:39:08.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_scan_eaton_serial.3 2014-02-15 13:33:28.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_eaton_serial .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_SCAN_EATON_S" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_SCAN_EATON_S" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_scan_ipmi.3 nut-2.7.2/docs/man/nutscan_scan_ipmi.3 --- nut-2.7.1/docs/man/nutscan_scan_ipmi.3 2013-09-13 22:39:07.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_scan_ipmi.3 2014-02-15 13:33:28.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_ipmi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_SCAN_IPMI" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_SCAN_IPMI" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_scan_nut.3 nut-2.7.2/docs/man/nutscan_scan_nut.3 --- nut-2.7.1/docs/man/nutscan_scan_nut.3 2013-09-13 22:39:06.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_scan_nut.3 2014-02-15 13:33:26.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_nut .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_SCAN_NUT" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_SCAN_NUT" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_scan_snmp.3 nut-2.7.2/docs/man/nutscan_scan_snmp.3 --- nut-2.7.1/docs/man/nutscan_scan_snmp.3 2013-09-13 22:39:04.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_scan_snmp.3 2014-02-15 13:33:25.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_snmp .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_SCAN_SNMP" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_SCAN_SNMP" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_scan_usb.3 nut-2.7.2/docs/man/nutscan_scan_usb.3 --- nut-2.7.1/docs/man/nutscan_scan_usb.3 2013-09-13 22:39:05.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_scan_usb.3 2014-02-15 13:33:25.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_usb .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_SCAN_USB" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_SCAN_USB" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutscan_scan_xml_http.3 nut-2.7.2/docs/man/nutscan_scan_xml_http.3 --- nut-2.7.1/docs/man/nutscan_scan_xml_http.3 2013-09-13 22:39:05.000000000 +0200 +++ nut-2.7.2/docs/man/nutscan_scan_xml_http.3 2014-02-15 13:33:26.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_xml_http .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTSCAN_SCAN_XML_HTT" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "NUTSCAN_SCAN_XML_HTT" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/nutupsdrv.8 nut-2.7.2/docs/man/nutupsdrv.8 --- nut-2.7.1/docs/man/nutupsdrv.8 2013-11-20 20:55:34.000000000 +0100 +++ nut-2.7.2/docs/man/nutupsdrv.8 2014-02-25 16:42:22.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: nutupsdrv .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/20/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "NUTUPSDRV" "8" "11/20/2013" "Network UPS Tools 2\&.7\&.1" "NUT Manual" +.TH "NUTUPSDRV" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/oneac.8 nut-2.7.2/docs/man/oneac.8 --- nut-2.7.1/docs/man/oneac.8 2013-07-26 23:14:25.000000000 +0200 +++ nut-2.7.2/docs/man/oneac.8 2014-02-15 13:07:38.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: oneac .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "ONEAC" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "ONEAC" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/optiups.8 nut-2.7.2/docs/man/optiups.8 --- nut-2.7.1/docs/man/optiups.8 2013-07-26 23:14:26.000000000 +0200 +++ nut-2.7.2/docs/man/optiups.8 2014-02-15 13:07:39.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: optiups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "OPTIUPS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "OPTIUPS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/powercom.8 nut-2.7.2/docs/man/powercom.8 --- nut-2.7.1/docs/man/powercom.8 2013-07-26 23:14:27.000000000 +0200 +++ nut-2.7.2/docs/man/powercom.8 2014-02-25 16:42:30.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: powercom .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "POWERCOM" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "POWERCOM" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -73,8 +73,10 @@ \fIKP625AP\fR, \fIIMP\fR, \fIKIN\fR, -\fIBNT\fR, and -\fIBNT\-other\fR\&. The default is +\fIBNT\fR, +\fIBNT\-other\fR +and +\fIOPTI\fR\&. The default is \fITrust\fR\&. .sp \fIBNT\-other\fR @@ -257,6 +259,20 @@ .fi .if n \{\ .RE +.\} +.SS "OPTI" +.sp +.if n \{\ +.RS 4 +.\} +.nf +numOfBytesFromUPS = 16 +methodOfFlowControl = no_flow_control +validationSequence = {{5,0xFF},{7,0},{8,0}} +shutdownArguments = {{1,30},y} +.fi +.if n \{\ +.RE .\} .SH "AUTHOR" .sp diff -Nru nut-2.7.1/docs/man/powercom.txt nut-2.7.2/docs/man/powercom.txt --- nut-2.7.1/docs/man/powercom.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/man/powercom.txt 2014-02-25 16:39:34.000000000 +0100 @@ -46,7 +46,7 @@ The exact type of the communication protocol within the powercom family, that will be used to communicate with the UPS. The type is named after the first modelname that was coded with that protocol. The acceptable names are -'Trust', 'Egys', 'KP625AP', 'IMP', 'KIN', 'BNT', and 'BNT-other'. +'Trust', 'Egys', 'KP625AP', 'IMP', 'KIN', 'BNT', 'BNT-other' and 'OPTI'. The default is 'Trust'. + 'BNT-other' is a special type for other BNT models (such as the 1500A at 120V @@ -186,6 +186,13 @@ batteryPercentage = {1.0000,0.0000,0.0000,1.0000,0.0000} voltage = {2.0000,0.0000,2.0000,0.0000} +OPTI +~~~~ + numOfBytesFromUPS = 16 + methodOfFlowControl = no_flow_control + validationSequence = {{5,0xFF},{7,0},{8,0}} + shutdownArguments = {{1,30},y} + AUTHOR ------ Peter Bieringer , diff -Nru nut-2.7.1/docs/man/powerman-pdu.8 nut-2.7.2/docs/man/powerman-pdu.8 --- nut-2.7.1/docs/man/powerman-pdu.8 2013-09-13 22:39:15.000000000 +0200 +++ nut-2.7.2/docs/man/powerman-pdu.8 2014-02-25 23:47:20.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: powerman-pdu .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "POWERMAN\-PDU" "8" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "POWERMAN\-PDU" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/powerpanel.8 nut-2.7.2/docs/man/powerpanel.8 --- nut-2.7.1/docs/man/powerpanel.8 2013-07-26 23:14:28.000000000 +0200 +++ nut-2.7.2/docs/man/powerpanel.8 2014-02-15 13:07:40.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: powerpanel .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "POWERPANEL" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "POWERPANEL" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/rhino.8 nut-2.7.2/docs/man/rhino.8 --- nut-2.7.1/docs/man/rhino.8 2013-07-26 23:14:29.000000000 +0200 +++ nut-2.7.2/docs/man/rhino.8 2014-02-15 13:07:41.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: rhino .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "RHINO" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "RHINO" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/richcomm_usb.8 nut-2.7.2/docs/man/richcomm_usb.8 --- nut-2.7.1/docs/man/richcomm_usb.8 2013-07-26 23:14:35.000000000 +0200 +++ nut-2.7.2/docs/man/richcomm_usb.8 2014-02-15 13:07:50.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: richcomm_usb .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "RICHCOMM_USB" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "RICHCOMM_USB" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/riello_ser.8 nut-2.7.2/docs/man/riello_ser.8 --- nut-2.7.1/docs/man/riello_ser.8 2013-07-26 23:14:29.000000000 +0200 +++ nut-2.7.2/docs/man/riello_ser.8 2014-02-15 13:07:42.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: riello_ser .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "RIELLO_SER" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "RIELLO_SER" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/riello_usb.8 nut-2.7.2/docs/man/riello_usb.8 --- nut-2.7.1/docs/man/riello_usb.8 2013-07-26 23:14:35.000000000 +0200 +++ nut-2.7.2/docs/man/riello_usb.8 2014-02-15 13:07:50.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: riello_usb .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "RIELLO_USB" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "RIELLO_USB" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/safenet.8 nut-2.7.2/docs/man/safenet.8 --- nut-2.7.1/docs/man/safenet.8 2013-07-26 23:14:30.000000000 +0200 +++ nut-2.7.2/docs/man/safenet.8 2014-02-15 13:07:42.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: safenet .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "SAFENET" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "SAFENET" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/snmp-ups.8 nut-2.7.2/docs/man/snmp-ups.8 --- nut-2.7.1/docs/man/snmp-ups.8 2013-09-13 22:39:14.000000000 +0200 +++ nut-2.7.2/docs/man/snmp-ups.8 2014-02-25 16:42:31.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: snmp-ups .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "SNMP\-UPS" "8" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "SNMP\-UPS" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -34,7 +34,12 @@ This man page only documents the hardware\-specific features of the snmp\-ups driver\&. For information about the core driver, see \fBnutupsdrv\fR(8)\&. .SH "SUPPORTED HARDWARE" .sp -The snmp\-ups driver automatically detects and supports a wide range of devices by loading various MIBS: \fBietf\fR:: UPS that is RFC 1628 (UPS MIB) compliant, e\&.g\&. MGE UPS SYSTEMS, Liebert, perhaps others (default) +The snmp\-ups driver automatically detects and supports a wide range of devices by loading various MIBS: +.PP +\fBietf\fR +.RS 4 +UPS that is RFC 1628 (UPS MIB) compliant, e\&.g\&. MGE UPS SYSTEMS, Liebert, perhaps others (default) +.RE .PP \fBmge\fR .RS 4 @@ -91,14 +96,12 @@ .PP \fBmibs\fR=\fIname\fR .RS 4 -Set MIB compliance (default=auto, allowed entries: refer to the above SUPPORTED HARDWARE)\&. With "auto", the driver will try a select set of SNMP objects until it finds one that the device responds to\&. Note that, since NUT 2\&.6\&.2, snmp\-ups has a new method that uses sysObjectID, which is a pointer to the prefered MIB of the device, to detect supported devices\&. This renders void the use of -\fImib\fR -option\&. +Set MIB compliance (default=auto, allowed entries: refer to SUPPORTED HARDWARE above)\&. With "auto", the driver will try a select set of SNMP objects until it finds one that the device responds to\&. Note that since NUT 2\&.6\&.2, snmp\-ups has a new method that uses sysObjectID (which is a pointer to the prefered MIB of the device) to detect supported devices\&. This renders void the use of "mibs" option\&. .RE .PP \fBcommunity\fR=\fIname\fR .RS 4 -Set community name (default = public)\&. Note that you require a RW community name to change UPS settings (as for a powerdown)\&. +Set community name (default = public)\&. Note that a RW community name is required to change UPS settings (as for a powerdown)\&. .RE .PP \fBsnmp_version\fR=\fIversion\fR @@ -150,16 +153,16 @@ You will need to install the Net\-SNMP package from http://www\&.net\-snmp\&.org/ before building this driver\&. .sp SNMP v3 also requires OpenSSL support from http://www\&.openssl\&.org\&. -.SH "LIMITATION" +.SH "LIMITATIONS" .SS "Shutdown" .sp -This driver does not provide a proper upsdrv_shutdown() function\&. There probably never will be one, since at the time this script should run (near the end of the system halt script), there will be no network capabilities anymore\&. Probably the only way to shutdown an SNMP UPS is by sending it a shutdown with delay command through \fBupscmd\fR(8) and hope for the best that the system will have finished shutting down before the power is cut\&. +The shutdown sequence should be tested before relying on NUT to send a shutdown command to the UPS\&. The problem is that the host network stack may have been torn down by the time the driver is invoked to send the shutdown command\&. The driver attempts to send shutdown\&.return, shutdown\&.reboot, and load\&.off\&.delay commands to the UPS in sequence, stopping after the first supported command\&. .SH "INSTALLATION" .sp -This driver is only built if the Net\-SNMP development files are present on the system\&. You can also force it to be built by using "configure \-\-with\-snmp=yes" before calling make\&. -.SH "IMPLEMENTATION" +This driver is only built if the Net\-SNMP development files are present at configuration time\&. You can also force it to be built by using configure \-\-with\-snmp=yes before calling make\&. +.SH "EXAMPLES" .sp -The hostname of the UPS is specified with the "port" value in ups\&.conf, i\&.e\&.: +The hostname of the UPS is specified with the "port" value in ups\&.conf: .sp .if n \{\ .RS 4 diff -Nru nut-2.7.1/docs/man/snmp-ups.txt nut-2.7.2/docs/man/snmp-ups.txt --- nut-2.7.1/docs/man/snmp-ups.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/man/snmp-ups.txt 2014-02-25 16:39:34.000000000 +0100 @@ -16,6 +16,7 @@ ------------------ The snmp-ups driver automatically detects and supports a wide range of devices by loading various MIBS: + *ietf*:: UPS that is RFC 1628 (UPS MIB) compliant, e.g. MGE UPS SYSTEMS, Liebert, perhaps others (default) @@ -56,15 +57,15 @@ linkman:ups.conf[5]: *mibs*='name':: -Set MIB compliance (default=auto, allowed entries: refer to the above SUPPORTED HARDWARE). +Set MIB compliance (default=auto, allowed entries: refer to SUPPORTED HARDWARE above). With "auto", the driver will try a select set of SNMP objects until it finds -one that the device responds to. Note that, since NUT 2.6.2, snmp-ups has a new -method that uses sysObjectID, which is a pointer to the prefered MIB of the -device, to detect supported devices. This renders void the use of 'mib' option. +one that the device responds to. Note that since NUT 2.6.2, snmp-ups has a new +method that uses sysObjectID (which is a pointer to the prefered MIB of the +device) to detect supported devices. This renders void the use of "mibs" option. *community*='name':: Set community name (default = public). -Note that you require a RW community name to change UPS settings (as for a powerdown). +Note that a RW community name is required to change UPS settings (as for a powerdown). *snmp_version*='version':: Set SNMP version (default = v1, allowed: v2c, v3) @@ -107,27 +108,28 @@ SNMP v3 also requires OpenSSL support from http://www.openssl.org. -LIMITATION ----------- +LIMITATIONS +----------- Shutdown ~~~~~~~~ -This driver does not provide a proper upsdrv_shutdown() function. There probably -never will be one, since at the time this script should run (near the end of -the system halt script), there will be no network capabilities anymore. -Probably the only way to shutdown an SNMP UPS is by sending it a shutdown -with delay command through linkman:upscmd[8] and hope for the best that the -system will have finished shutting down before the power is cut. +The shutdown sequence should be tested before relying on NUT to send a +shutdown command to the UPS. The problem is that the host network stack may +have been torn down by the time the driver is invoked to send the shutdown +command. The driver attempts to send +shutdown.return+, +shutdown.reboot+, +and +load.off.delay+ commands to the UPS in sequence, stopping after the first +supported command. INSTALLATION ------------ -This driver is only built if the Net-SNMP development files are present on the system. -You can also force it to be built by using "configure --with-snmp=yes" before calling make. +This driver is only built if the Net-SNMP development files are present at +configuration time. You can also force it to be built by using ++configure --with-snmp=yes+ before calling make. -IMPLEMENTATION --------------- +EXAMPLES +-------- The hostname of the UPS is specified with the "port" value in -`ups.conf`, i.e.: +`ups.conf`: [snmpv1] driver = snmp-ups diff -Nru nut-2.7.1/docs/man/solis.8 nut-2.7.2/docs/man/solis.8 --- nut-2.7.1/docs/man/solis.8 2013-07-26 23:14:31.000000000 +0200 +++ nut-2.7.2/docs/man/solis.8 2014-02-15 13:07:43.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: solis .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "SOLIS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "SOLIS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/tripplite.8 nut-2.7.2/docs/man/tripplite.8 --- nut-2.7.1/docs/man/tripplite.8 2013-07-26 23:14:31.000000000 +0200 +++ nut-2.7.2/docs/man/tripplite.8 2014-02-15 13:07:44.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: tripplite .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "TRIPPLITE" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "TRIPPLITE" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/tripplitesu.8 nut-2.7.2/docs/man/tripplitesu.8 --- nut-2.7.1/docs/man/tripplitesu.8 2013-07-26 23:14:32.000000000 +0200 +++ nut-2.7.2/docs/man/tripplitesu.8 2014-02-15 13:07:44.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: tripplitesu .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "TRIPPLITESU" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "TRIPPLITESU" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/tripplite_usb.8 nut-2.7.2/docs/man/tripplite_usb.8 --- nut-2.7.1/docs/man/tripplite_usb.8 2013-07-26 23:14:36.000000000 +0200 +++ nut-2.7.2/docs/man/tripplite_usb.8 2014-02-15 13:07:51.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: tripplite_usb .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "TRIPPLITE_USB" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "TRIPPLITE_USB" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsc.8 nut-2.7.2/docs/man/upsc.8 --- nut-2.7.1/docs/man/upsc.8 2013-07-31 23:29:19.000000000 +0200 +++ nut-2.7.2/docs/man/upsc.8 2014-02-25 16:42:22.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsc .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/31/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSC" "8" "07/31/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSC" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_add_host_cert.3 nut-2.7.2/docs/man/upscli_add_host_cert.3 --- nut-2.7.1/docs/man/upscli_add_host_cert.3 2013-09-13 22:38:49.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_add_host_cert.3 2014-02-15 13:33:10.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_add_host_cert .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_ADD_HOST_CERT" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_ADD_HOST_CERT" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_cleanup.3 nut-2.7.2/docs/man/upscli_cleanup.3 --- nut-2.7.1/docs/man/upscli_cleanup.3 2013-09-13 22:38:49.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_cleanup.3 2014-02-15 13:33:11.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_cleanup .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_CLEANUP" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_CLEANUP" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_connect.3 nut-2.7.2/docs/man/upscli_connect.3 --- nut-2.7.1/docs/man/upscli_connect.3 2013-09-13 22:38:50.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_connect.3 2014-02-15 13:33:11.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_connect .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_CONNECT" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_CONNECT" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_disconnect.3 nut-2.7.2/docs/man/upscli_disconnect.3 --- nut-2.7.1/docs/man/upscli_disconnect.3 2013-09-13 22:38:51.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_disconnect.3 2014-02-15 13:33:12.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_disconnect .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_DISCONNECT" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_DISCONNECT" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsclient.3 nut-2.7.2/docs/man/upsclient.3 --- nut-2.7.1/docs/man/upsclient.3 2013-09-13 22:38:48.000000000 +0200 +++ nut-2.7.2/docs/man/upsclient.3 2014-02-15 13:33:09.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsclient .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLIENT" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLIENT" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_fd.3 nut-2.7.2/docs/man/upscli_fd.3 --- nut-2.7.1/docs/man/upscli_fd.3 2013-09-13 22:38:51.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_fd.3 2014-02-15 13:33:12.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_fd .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_FD" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_FD" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_get.3 nut-2.7.2/docs/man/upscli_get.3 --- nut-2.7.1/docs/man/upscli_get.3 2013-09-13 22:38:52.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_get.3 2014-02-15 13:33:13.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_get .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_GET" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_GET" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_init.3 nut-2.7.2/docs/man/upscli_init.3 --- nut-2.7.1/docs/man/upscli_init.3 2013-09-13 22:38:53.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_init.3 2014-02-15 13:33:14.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_init .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_INIT" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_INIT" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_list_next.3 nut-2.7.2/docs/man/upscli_list_next.3 --- nut-2.7.1/docs/man/upscli_list_next.3 2013-09-13 22:38:53.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_list_next.3 2014-02-15 13:33:14.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_list_next .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_LIST_NEXT" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_LIST_NEXT" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_list_start.3 nut-2.7.2/docs/man/upscli_list_start.3 --- nut-2.7.1/docs/man/upscli_list_start.3 2013-09-13 22:38:54.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_list_start.3 2014-02-15 13:33:15.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_list_start .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_LIST_START" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_LIST_START" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_readline.3 nut-2.7.2/docs/man/upscli_readline.3 --- nut-2.7.1/docs/man/upscli_readline.3 2013-09-13 22:38:54.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_readline.3 2014-02-15 13:33:15.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_readline .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_READLINE" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_READLINE" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_sendline.3 nut-2.7.2/docs/man/upscli_sendline.3 --- nut-2.7.1/docs/man/upscli_sendline.3 2013-09-13 22:38:55.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_sendline.3 2014-02-15 13:33:16.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_sendline .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_SENDLINE" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_SENDLINE" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_splitaddr.3 nut-2.7.2/docs/man/upscli_splitaddr.3 --- nut-2.7.1/docs/man/upscli_splitaddr.3 2013-09-13 22:38:56.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_splitaddr.3 2014-02-15 13:33:17.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_splitaddr .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_SPLITADDR" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_SPLITADDR" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_splitname.3 nut-2.7.2/docs/man/upscli_splitname.3 --- nut-2.7.1/docs/man/upscli_splitname.3 2013-09-13 22:38:56.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_splitname.3 2014-02-15 13:33:17.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_splitname .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_SPLITNAME" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_SPLITNAME" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_ssl.3 nut-2.7.2/docs/man/upscli_ssl.3 --- nut-2.7.1/docs/man/upscli_ssl.3 2013-09-13 22:38:57.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_ssl.3 2014-02-15 13:33:18.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_ssl .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_SSL" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_SSL" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_strerror.3 nut-2.7.2/docs/man/upscli_strerror.3 --- nut-2.7.1/docs/man/upscli_strerror.3 2013-09-13 22:38:57.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_strerror.3 2014-02-15 13:33:18.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_strerror .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_STRERROR" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_STRERROR" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscli_upserror.3 nut-2.7.2/docs/man/upscli_upserror.3 --- nut-2.7.1/docs/man/upscli_upserror.3 2013-09-13 22:38:58.000000000 +0200 +++ nut-2.7.2/docs/man/upscli_upserror.3 2014-02-15 13:33:19.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscli_upserror .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCLI_UPSERROR" "3" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSCLI_UPSERROR" "3" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscmd.8 nut-2.7.2/docs/man/upscmd.8 --- nut-2.7.1/docs/man/upscmd.8 2013-07-31 23:29:20.000000000 +0200 +++ nut-2.7.2/docs/man/upscmd.8 2014-02-25 16:42:23.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscmd .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/31/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCMD" "8" "07/31/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSCMD" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upscode2.8 nut-2.7.2/docs/man/upscode2.8 --- nut-2.7.1/docs/man/upscode2.8 2013-07-26 23:14:33.000000000 +0200 +++ nut-2.7.2/docs/man/upscode2.8 2014-02-15 13:07:45.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upscode2 .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSCODE2" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSCODE2" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/ups.conf.5 nut-2.7.2/docs/man/ups.conf.5 --- nut-2.7.1/docs/man/ups.conf.5 2013-11-18 21:29:13.000000000 +0100 +++ nut-2.7.2/docs/man/ups.conf.5 2014-02-25 16:42:20.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: ups.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/18/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre2 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPS\&.CONF" "5" "11/18/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPS\&.CONF" "5" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -85,6 +85,23 @@ Optional\&. Same as the UPS field of the same name, but this is the default for UPSes that don\(cqt have the field\&. .RE .PP +\fBmaxretry\fR +.RS 4 +Optional\&. Specify the number of attempts to start the driver(s), in case of failure, before giving up\&. A delay of +\fIretrydelay\fR +is inserted between each attempt\&. Caution should be taken when using this option, since it can impact the time taken by your system to start\&. +.sp +The default is 1 attempt\&. +.RE +.PP +\fBretrydelay\fR +.RS 4 +Optional\&. Specify the delay between each restart attempt of the driver(s), as specified by +\fImaxretry\fR\&. Caution should be taken when using this option, since it can impact the time taken by your system to start\&. +.sp +The default is 5 seconds\&. +.RE +.PP \fBpollinterval\fR .RS 4 Optional\&. The status of the UPS will be refreshed after a maximum delay which is controlled by this setting\&. This is normally 2 seconds\&. This may be useful if the driver is creating too much of a load on your system or network\&. diff -Nru nut-2.7.1/docs/man/ups.conf.txt nut-2.7.2/docs/man/ups.conf.txt --- nut-2.7.1/docs/man/ups.conf.txt 2013-11-18 21:27:51.000000000 +0100 +++ nut-2.7.2/docs/man/ups.conf.txt 2014-02-25 16:39:34.000000000 +0100 @@ -58,6 +58,21 @@ Optional. Same as the UPS field of the same name, but this is the default for UPSes that don't have the field. +*maxretry*:: +Optional. Specify the number of attempts to start the driver(s), in case of +failure, before giving up. A delay of 'retrydelay' is inserted between each +attempt. Caution should be taken when using this option, since it can +impact the time taken by your system to start. ++ +The default is 1 attempt. + +*retrydelay*:: +Optional. Specify the delay between each restart attempt of the driver(s), +as specified by 'maxretry'. Caution should be taken when using this option, +since it can impact the time taken by your system to start. ++ +The default is 5 seconds. + *pollinterval*:: Optional. The status of the UPS will be refreshed after a maximum diff -Nru nut-2.7.1/docs/man/upsd.8 nut-2.7.2/docs/man/upsd.8 --- nut-2.7.1/docs/man/upsd.8 2013-07-26 23:14:02.000000000 +0200 +++ nut-2.7.2/docs/man/upsd.8 2014-02-15 13:07:12.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsd .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSD" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSD" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsd.conf.5 nut-2.7.2/docs/man/upsd.conf.5 --- nut-2.7.1/docs/man/upsd.conf.5 2013-07-26 23:13:56.000000000 +0200 +++ nut-2.7.2/docs/man/upsd.conf.5 2014-02-15 13:07:07.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsd.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSD\&.CONF" "5" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSD\&.CONF" "5" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsdrvctl.8 nut-2.7.2/docs/man/upsdrvctl.8 --- nut-2.7.1/docs/man/upsdrvctl.8 2013-11-18 21:29:15.000000000 +0100 +++ nut-2.7.2/docs/man/upsdrvctl.8 2014-02-25 16:42:24.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsdrvctl .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/18/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre2 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSDRVCTL" "8" "11/18/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSDRVCTL" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -84,7 +84,12 @@ .PP \fBstart\fR .RS 4 -Start the UPS driver(s)\&. +Start the UPS driver(s)\&. In case of failure, further attempts may be executed by using the +\fImaxretry\fR +and +\fIretrydelay\fR +options \- see +\fBups.conf\fR(5)\&. .RE .PP \fBstop\fR diff -Nru nut-2.7.1/docs/man/upsdrvctl.txt nut-2.7.2/docs/man/upsdrvctl.txt --- nut-2.7.1/docs/man/upsdrvctl.txt 2013-11-18 21:27:51.000000000 +0100 +++ nut-2.7.2/docs/man/upsdrvctl.txt 2014-02-25 16:39:34.000000000 +0100 @@ -63,7 +63,8 @@ configured. *start*:: -Start the UPS driver(s). +Start the UPS driver(s). In case of failure, further attempts may be executed +by using the 'maxretry' and 'retrydelay' options - see linkman:ups.conf[5]. *stop*:: Stop the UPS driver(s). diff -Nru nut-2.7.1/docs/man/upsd.users.5 nut-2.7.2/docs/man/upsd.users.5 --- nut-2.7.1/docs/man/upsd.users.5 2013-07-26 23:13:57.000000000 +0200 +++ nut-2.7.2/docs/man/upsd.users.5 2014-02-15 13:07:08.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsd.users .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSD\&.USERS" "5" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSD\&.USERS" "5" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsimage.cgi.8 nut-2.7.2/docs/man/upsimage.cgi.8 --- nut-2.7.1/docs/man/upsimage.cgi.8 2013-09-13 22:38:47.000000000 +0200 +++ nut-2.7.2/docs/man/upsimage.cgi.8 2014-03-21 20:51:11.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsimage.cgi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 03/21/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSIMAGE\&.CGI" "8" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSIMAGE\&.CGI" "8" "03/21/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -64,6 +64,6 @@ \fBupsd\fR(8), \fBupsstats.cgi\fR(8) .SS "Internet resources:" .sp -The gd home page: http://www\&.boutell\&.com/gd/ +The gd home page: http://libgd\&.bitbucket\&.org .sp The NUT (Network UPS Tools) home page: http://www\&.networkupstools\&.org/ diff -Nru nut-2.7.1/docs/man/upsimage.cgi.txt nut-2.7.2/docs/man/upsimage.cgi.txt --- nut-2.7.1/docs/man/upsimage.cgi.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/man/upsimage.cgi.txt 2014-03-21 20:27:16.000000000 +0100 @@ -45,6 +45,6 @@ Internet resources: ~~~~~~~~~~~~~~~~~~~ -The gd home page: http://www.boutell.com/gd/ +The gd home page: http://libgd.bitbucket.org The NUT (Network UPS Tools) home page: http://www.networkupstools.org/ diff -Nru nut-2.7.1/docs/man/upslog.8 nut-2.7.2/docs/man/upslog.8 --- nut-2.7.1/docs/man/upslog.8 2013-07-26 23:14:03.000000000 +0200 +++ nut-2.7.2/docs/man/upslog.8 2014-02-15 13:07:14.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upslog .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSLOG" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSLOG" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsmon.8 nut-2.7.2/docs/man/upsmon.8 --- nut-2.7.1/docs/man/upsmon.8 2013-07-26 23:14:04.000000000 +0200 +++ nut-2.7.2/docs/man/upsmon.8 2014-02-15 13:07:15.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsmon .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSMON" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSMON" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsmon.conf.5 nut-2.7.2/docs/man/upsmon.conf.5 --- nut-2.7.1/docs/man/upsmon.conf.5 2013-11-18 21:29:14.000000000 +0100 +++ nut-2.7.2/docs/man/upsmon.conf.5 2014-02-25 16:42:21.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsmon.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 11/18/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre2 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSMON\&.CONF" "5" "11/18/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSMON\&.CONF" "5" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsrw.8 nut-2.7.2/docs/man/upsrw.8 --- nut-2.7.1/docs/man/upsrw.8 2013-07-31 23:29:20.000000000 +0200 +++ nut-2.7.2/docs/man/upsrw.8 2014-02-25 16:42:24.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsrw .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/31/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSRW" "8" "07/31/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSRW" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upssched.8 nut-2.7.2/docs/man/upssched.8 --- nut-2.7.1/docs/man/upssched.8 2013-07-26 23:14:06.000000000 +0200 +++ nut-2.7.2/docs/man/upssched.8 2014-02-15 13:07:16.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upssched .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSSCHED" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSSCHED" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upssched.conf.5 nut-2.7.2/docs/man/upssched.conf.5 --- nut-2.7.1/docs/man/upssched.conf.5 2013-07-26 23:13:59.000000000 +0200 +++ nut-2.7.2/docs/man/upssched.conf.5 2014-02-15 13:07:10.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upssched.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSSCHED\&.CONF" "5" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "UPSSCHED\&.CONF" "5" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsset.cgi.8 nut-2.7.2/docs/man/upsset.cgi.8 --- nut-2.7.1/docs/man/upsset.cgi.8 2013-09-13 22:38:45.000000000 +0200 +++ nut-2.7.2/docs/man/upsset.cgi.8 2014-02-25 23:47:16.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsset.cgi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSSET\&.CGI" "8" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSSET\&.CGI" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsset.conf.5 nut-2.7.2/docs/man/upsset.conf.5 --- nut-2.7.1/docs/man/upsset.conf.5 2013-09-13 22:38:44.000000000 +0200 +++ nut-2.7.2/docs/man/upsset.conf.5 2014-02-25 23:47:15.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsset.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSSET\&.CONF" "5" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSSET\&.CONF" "5" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsstats.cgi.8 nut-2.7.2/docs/man/upsstats.cgi.8 --- nut-2.7.1/docs/man/upsstats.cgi.8 2013-09-13 22:38:46.000000000 +0200 +++ nut-2.7.2/docs/man/upsstats.cgi.8 2014-02-25 23:47:17.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsstats.cgi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSSTATS\&.CGI" "8" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSSTATS\&.CGI" "8" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/upsstats.html.5 nut-2.7.2/docs/man/upsstats.html.5 --- nut-2.7.1/docs/man/upsstats.html.5 2013-09-13 22:38:45.000000000 +0200 +++ nut-2.7.2/docs/man/upsstats.html.5 2014-02-25 23:47:16.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: upsstats.html .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 09/13/2013 +.\" Date: 02/25/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.7.1-pre1 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "UPSSTATS\&.HTML" "5" "09/13/2013" "Network UPS Tools 2\&.7\&.1\-p" "NUT Manual" +.TH "UPSSTATS\&.HTML" "5" "02/25/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/usbhid-ups.8 nut-2.7.2/docs/man/usbhid-ups.8 --- nut-2.7.1/docs/man/usbhid-ups.8 2013-07-26 23:14:37.000000000 +0200 +++ nut-2.7.2/docs/man/usbhid-ups.8 2014-02-15 13:07:52.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: usbhid-ups .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "USBHID\-UPS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "USBHID\-UPS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/man/victronups.8 nut-2.7.2/docs/man/victronups.8 --- nut-2.7.1/docs/man/victronups.8 2013-07-26 23:14:33.000000000 +0200 +++ nut-2.7.2/docs/man/victronups.8 2014-02-15 13:07:45.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: victronups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 07/26/2013 +.\" Date: 02/15/2014 .\" Manual: NUT Manual -.\" Source: Network UPS Tools 2.6.5 +.\" Source: Network UPS Tools 2.7.1.5 .\" Language: English .\" -.TH "VICTRONUPS" "8" "07/26/2013" "Network UPS Tools 2\&.6\&.5" "NUT Manual" +.TH "VICTRONUPS" "8" "02/15/2014" "Network UPS Tools 2\&.7\&.1\&." "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru nut-2.7.1/docs/net-protocol.txt nut-2.7.2/docs/net-protocol.txt --- nut-2.7.1/docs/net-protocol.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/net-protocol.txt 2014-02-25 16:39:34.000000000 +0100 @@ -13,6 +13,7 @@ A library, named libupsclient, that implement this protocol is provided in both static and shared version to help the client application development. + Old command removal notice -------------------------- @@ -20,6 +21,7 @@ have been removed from the specification. For more information, consult an older version of the software. + Command reference ----------------- @@ -28,13 +30,14 @@ also escaped by representing them as \\. This protocol is intended to be interpreted with parseconf (NUT parser) or something similar. + Revision history ---------------- Here's a table to present the various changes that happened to the NUT network protocol, over the time: -[options="header",style="asciidoc",cols="^.^,^.^,<"] +[options="header,autowidth",frame="topbot",grid="rows",cols="^.^,^.^,<",align="center"] |=============================================================================== |Protocol version |NUT version |Description |1.0 |< 1.5.0 |Original protocol (legacy version) @@ -46,6 +49,7 @@ NOTE: any new version of the protocol implies an update of NUT_NETVERSION in *configure.in*. + GET --- @@ -53,6 +57,7 @@ Possible sub-commands: + NUMLOGINS ~~~~~~~~~ @@ -72,6 +77,7 @@ This replaces the old "REQ NUMLOGINS" command. + UPSDESC ~~~~~~~ @@ -91,6 +97,7 @@ This can be used to provide human-readable descriptions instead of a cryptic "upsname@hostname" string. + VAR ~~~ @@ -106,6 +113,7 @@ This replaces the old "REQ" command. + TYPE ~~~~ @@ -131,6 +139,7 @@ This replaces the old "VARTYPE" command. + DESC ~~~~ @@ -153,6 +162,7 @@ This replaces the old "VARDESC" command. + CMDDESC ~~~~~~~ @@ -170,6 +180,7 @@ This replaces the old "INSTCMDDESC" command. + LIST ---- @@ -183,6 +194,7 @@ for it to get back to you. When it arrives, you don't need complicated state machines to remember which list is which. + UPS ~~~ @@ -211,6 +223,7 @@ Clients which perform a UPS discovery process may find this useful. + VAR ~~~ @@ -234,6 +247,7 @@ This replaces the old "LISTVARS" command. + RW ~~ @@ -257,6 +271,7 @@ This replaces the old "LISTRW" command. + CMD ~~~ @@ -280,6 +295,7 @@ This replaces the old "LISTINSTCMD" command. + ENUM ~~~~ @@ -306,6 +322,7 @@ NOTE: this does not support the old "SELECTED" notation. You must request the current value separately. + RANGE ~~~~~ @@ -327,6 +344,7 @@ ... END LIST RANGE su700 input.transfer.low + CLIENT ~~~~~~ @@ -347,6 +365,7 @@ CLIENT ups1 192.168.1.2 END LIST CLIENT ups1 + SET --- @@ -355,6 +374,7 @@ SET VAR "" SET VAR su700 ups.id "My UPS" + INSTCMD ------- @@ -363,6 +383,7 @@ INSTCMD INSTCMD su700 test.panel.start + LOGOUT ------ @@ -377,6 +398,7 @@ Used to disconnect gracefully from the server. + LOGIN ----- @@ -387,7 +409,8 @@ Response: OK (upon success) - or <> + +or <> NOTE: This requires "upsmon slave" or "upsmon master" in upsd.users @@ -398,6 +421,7 @@ NOTE: You probably shouldn't send this command unless you are upsmon, or a upsmon replacement. + MASTER ------ @@ -408,13 +432,15 @@ Response: OK (upon success) - or <> + +or <> NOTE: This requires "upsmon master" in upsd.users This function doesn't do much by itself. It is used by upsmon to make sure that master-level functions like FSD are available if necessary. + FSD --- @@ -425,7 +451,8 @@ Response: OK FSD-SET (success) - or <> + +or <> NOTE: This requires "upsmon master" in upsd.users, or "FSD" action granted in upsd.users @@ -443,6 +470,7 @@ it in the ups.conf. This may cause issues when upsd is running on a system that is not shut down due to the UPS event. + PASSWORD -------- @@ -453,11 +481,13 @@ Response: OK (upon success) - or <> + +or <> Sets the password associated with a connection. Used for later authentication for commands that require it. + USERNAME -------- @@ -468,11 +498,13 @@ Response: OK (upon success) - or <> + +or <> Sets the username associated with a connection. This is also used for authentication, specifically in conjunction with the upsd.users file. + STARTTLS -------- @@ -483,12 +515,14 @@ Response: OK STARTTLS - or <> + +or <> This tells upsd to switch to TLS mode internally, so all future communications will be encrypted. You must also change to TLS mode in the client after receiving the OK, or the connection will be useless. + Other commands -------------- @@ -502,6 +536,8 @@ upsd doesn't speak telnet and will probably misunderstand your first request due to the extra junk in the buffer. + +[[np-errors]] Error responses --------------- @@ -639,9 +675,11 @@ applies to a SET of an ENUM type which is using a value which is not in the list of allowed values. + Future ideas ------------ + Dense lists ~~~~~~~~~~~ @@ -649,12 +687,14 @@ For example, "LIST VARS +DESC" would return the current value like now, but it would also append the description of that variable. + Command status ~~~~~~~~~~~~~~ After sending an INSTCMD or SET, a client will eventually be able to poll to see whether it was completed successfully by the driver. + Get collection ~~~~~~~~~~~~~~ diff -Nru nut-2.7.1/docs/new-drivers.txt nut-2.7.2/docs/new-drivers.txt --- nut-2.7.1/docs/new-drivers.txt 2013-11-20 20:53:31.000000000 +0100 +++ nut-2.7.2/docs/new-drivers.txt 2014-02-27 22:17:32.000000000 +0100 @@ -494,8 +494,7 @@ You should us the usb_device_id structure, and the USB_DEVICE macro to declare the supported devices. This allows the automatic extraction of -USB information, to generate the HAL, Hotplug, udev and DeviceKit-power -support files. +USB information, to generate the Hotplug, udev and UPower support files. For example: diff -Nru nut-2.7.1/docs/nutdrv_qx-subdrivers.txt nut-2.7.2/docs/nutdrv_qx-subdrivers.txt --- nut-2.7.1/docs/nutdrv_qx-subdrivers.txt 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/docs/nutdrv_qx-subdrivers.txt 2014-02-25 16:39:34.000000000 +0100 @@ -1,6 +1,7 @@ How to make a new subdriver to support another Q* UPS ----------------------------------------------------- + Overall concept ~~~~~~~~~~~~~~~ @@ -187,19 +188,19 @@ Driver's own flags. + -- -[cols="l,",options="autowidth"] +[cols="m,",options="autowidth",frame="topbot",grid="rows"] |==== -|QX_FLAG_STATIC |Retrieve this variable only once. -|QX_FLAG_SEMI_STATIC |Retrieve this info smartly, i.e. only when a command/setvar is executed and we expect that data could have been changed. -|QX_FLAG_ABSENT |Data is absent in the device, use default value. -|QX_FLAG_QUICK_POLL |Mandatory vars. -|QX_FLAG_CMD |Instant command. -|QX_FLAG_SETVAR |The var is settable and the actual item stores info on how to set it. -|QX_FLAG_TRIM |This var's value need to be trimmed of leading/trailing spaces/hashes. -|QX_FLAG_ENUM |Enum values exist. -|QX_FLAG_RANGE |Ranges for this var are available. -|QX_FLAG_NONUT |This var doesn't have a corresponding var in NUT. -|QX_FLAG_SKIP |Skip this var: this item won't be processed. +|QX_FLAG_STATIC |Retrieve this variable only once. +|QX_FLAG_SEMI_STATIC |Retrieve this info smartly, i.e. only when a command/setvar is executed and we expect that data could have been changed. +|QX_FLAG_ABSENT |Data is absent in the device, use default value. +|QX_FLAG_QUICK_POLL |Mandatory vars. +|QX_FLAG_CMD |Instant command. +|QX_FLAG_SETVAR |The var is settable and the actual item stores info on how to set it. +|QX_FLAG_TRIM |This var's value need to be trimmed of leading/trailing spaces/hashes. +|QX_FLAG_ENUM |Enum values exist. +|QX_FLAG_RANGE |Ranges for this var are available. +|QX_FLAG_NONUT |This var doesn't have a corresponding var in NUT. +|QX_FLAG_SKIP |Skip this var: this item won't be processed. |==== [NOTE] @@ -254,25 +255,48 @@ { "output.voltage", 0, NULL, "QGS\r", "", 76, '(', "", 12, 16, "%.1f", 0, NULL }, ---- -[cols="l,",options="autowidth"] -|==== -|info_type |+output.voltage+ -|info_flags |+0+ -|info_rw |+NULL+ -|command |+QGS\r+ -|answer |Filled at runtime -|answer_len |+76+ -|leading |+(+ -|value |Filled at runtime -|from |+12+ -> the index at which the info (i.e. +value+) starts -|to |+16+ -> the index at which the info (i.e. +value+) ends -|dfl |+%.1f+ +[horizontal] ++info_type+:: ++output.voltage+ + ++info_flags+:: ++0+ + ++info_rw+:: ++NULL+ + ++command+:: ++QGS\r+ + ++answer+:: +Filled at runtime + ++answer_len+:: ++76+ + ++leading+:: ++(+ + ++value+:: +Filled at runtime ++from+:: ++12+ -> the index at which the info (i.e. +value+) starts + ++to+:: ++16+ -> the index at which the info (i.e. +value+) ends + ++dfl+:: ++%.1f+ ++ We are expecting a number, so at first the core driver will check if it's made up entirely of digits/points/spaces, then it'll convert it into a double. Because of that we need to provide a floating point specifier. -|qxflags |+0+ -|preprocess |+NULL+ -|==== + ++qxflags+:: ++0+ + ++preprocess+:: ++NULL+ Mandatory vars @@ -293,27 +317,50 @@ { "ups.status", 0, NULL, "QGS\r", "", 76, '(', "", 71, 71, "%s", QX_FLAG_QUICK_POLL, voltronic_status }, ---- -[cols="l,",options="autowidth"] -|==== -|info_type |+ups.status+ -|info_flags |+0+ -|info_rw |+NULL+ -|command |+QGS\r+ -|answer |Filled at runtime -|answer_len |+76+ -|leading |+(+ -|value |Filled at runtime -|from |+71+ -> the index at which the info (i.e. +value+) starts -|to |+71+ -> the index at which the info (i.e. +value+) ends -|dfl |+%s+ +[horizontal] ++info_type+:: ++ups.status+ + ++info_flags+:: ++0+ + ++info_rw+:: ++NULL+ ++command+:: ++QGS\r+ + ++answer+:: +Filled at runtime + ++answer_len+:: ++76+ + ++leading+:: ++(+ + ++value+:: +Filled at runtime + ++from+:: ++71+ -> the index at which the info (i.e. +value+) starts + ++to+:: ++71+ -> the index at which the info (i.e. +value+) ends + ++dfl+:: ++%s+ ++ Since a +preprocess+ function is defined for this item, this could have been +NULL+, however, if we want - like here -, we can use it in our +preprocess+ function. -|qxflags |+QX_FLAG_QUICK_POLL+ -> this item will be polled every time the driver will check for updates. + ++qxflags+:: ++QX_FLAG_QUICK_POLL+ -> this item will be polled every time the driver will check for updates. Since this item is mandatory to run the driver, if a problem arises in +QX_WALKMODE_INIT+ the driver won't skip it an it'll set +datastale+. -|preprocess |+voltronic_status+ ++preprocess+:: ++voltronic_status+ ++ This function will be called *after* the +command+ has been sent to the UPS and we got back the +answer+ and stored the +value+ in order to process it to NUT standards: in this case we will convert the binary +value+ to a NUT status. -|==== Settable vars @@ -334,30 +381,53 @@ { "battery.type", ST_FLAG_RW, voltronic_e_batt_type, "QBT\r", "", 4, '(', "", 1, 2, "%s", QX_FLAG_SEMI_STATIC | QX_FLAG_ENUM, voltronic_p31b }, ---- -[cols="l,",options="autowidth"] -|==== -|info_type |+battery.type+ -|info_flags |+ST_FLAG_RW+ -> this is a r/w var -|info_rw |+voltronic_e_batt_type+ +[horizontal] ++info_type+:: ++battery.type+ + ++info_flags+:: ++ST_FLAG_RW+ -> this is a r/w var ++info_rw+:: ++voltronic_e_batt_type+ ++ The values stored here will be added to the NUT variable, setting its boundaries: in this case +Li+, +Flooded+ and +AGM+ will be added as enumerated values. -|command |+QBT\r+ -|answer |Filled at runtime -|answer_len |+4+ -|leading |+(+ -|value |Filled at runtime -|from |+1+ -> the index at which the info (i.e. +value+) starts -|to |+2+ -> the index at which the info (i.e. +value+) ends -|dfl |+%s+ ++command+:: ++QBT\r+ + ++answer+:: +Filled at runtime + ++answer_len+:: ++4+ + ++leading+:: ++(+ + ++value+:: +Filled at runtime + ++from+:: ++1+ -> the index at which the info (i.e. +value+) starts + ++to+:: ++2+ -> the index at which the info (i.e. +value+) ends + ++dfl+:: ++%s+ ++ Since a +preprocess+ function is defined for this item, this could have been +NULL+, however, if we want - like here -, we can use it in our +preprocess+ function. -|qxflags |+QX_FLAG_SEMI_STATIC+ -> this item changes - and will therefore updated - only when we send a command/setvar to the UPS ++qxflags+:: ++QX_FLAG_SEMI_STATIC+ -> this item changes - and will therefore updated - only when we send a command/setvar to the UPS ++ +QX_FLAG_ENUM+ -> this r/w variable is of the enumerated type and the enumerated values are listed in the +info_rw+ structure (i.e. +voltronic_e_batt_type+) -|preprocess |+voltronic_p31b+ ++preprocess+:: ++voltronic_p31b+ ++ This function will be called *after* the +command+ has been sent to the UPS and we got back the +answer+ and stored the +value+ in order to process it to NUT standards: in this case we will check if the value is in the range and then publish the human readable form of it (i.e. +Li+, +Flooded+ or +AGM+). -|==== We also know that we can change battery type with the +PBTnn\r+ command; we are expecting either +(ACK\r+ if the command succeded or +(NAK\r+ if the command is rejected. @@ -374,28 +444,51 @@ { "battery.type", 0, voltronic_e_batt_type, "PBT%02.0f\r", "", 5, '(', "", 1, 4, NULL, QX_FLAG_SETVAR | QX_FLAG_ENUM, voltronic_p31b_set }, ---- -[cols="l,",options="autowidth"] -|==== -|info_type |+battery.type+ -|info_flags |+0+ -|info_rw |+voltronic_e_batt_type+ +[horizontal] ++info_type+:: ++battery.type+ ++info_flags+:: ++0+ + ++info_rw+:: ++voltronic_e_batt_type+ ++ The value provided by the user will be automagically checked by the core nutdrv_qx driver against the enumerated values already set by the non setvar item (i.e. +Li+, +Flooded+ or +AGM+), so this could have been +NULL+, however if we want - like here - we can use it in our +preprocess+ function. -|command |+PBT%02.0f\r+ -|answer |Filled at runtime -|answer_len |+5+ <- either +(NAK\r+ or +(ACK\r+ -|leading |+(+ -|value |Filled at runtime -|from |+1+ -> the index at which the info (i.e. +value+) starts -|to |+3+ -> the index at which the info (i.e. +value+) ends -|dfl |Not used for +QX_FLAG_SETVAR+ -|qxflags |+QX_FLAG_SETVAR+ -> this item is used to set the variable +info_type+ (i.e. +battery.type+) ++command+:: ++PBT%02.0f\r+ + ++answer+:: +Filled at runtime + ++answer_len+:: ++5+ <- either +(NAK\r+ or +(ACK\r+ + ++leading+:: ++(+ + ++value+:: +Filled at runtime + ++from+:: ++1+ -> the index at which the info (i.e. +value+) starts + ++to+:: ++3+ -> the index at which the info (i.e. +value+) ends + ++dfl+:: +Not used for +QX_FLAG_SETVAR+ + ++qxflags+:: ++QX_FLAG_SETVAR+ -> this item is used to set the variable +info_type+ (i.e. +battery.type+) ++ +QX_FLAG_ENUM+ -> this r/w variable is of the enumerated type and the enumerated values are listed in the +info_rw+ structure (i.e. +voltronic_e_batt_type+) -|preprocess |+voltronic_p31b_set+ ++preprocess+:: ++voltronic_p31b_set+ ++ This function will be called *before* the +command+ is sent to the UPS so that we can fill +command+ with the value provided by the user: in this case the function will simply translate the human readable form of battery type (i.e. +Li+, +Flooded+ or +AGM+) to the UPS compliant type (i.e. +00+, +01+ and +02+) and then fill +value+ (the second argument passed to the +preprocess+ function). -|==== Instant commands @@ -416,24 +509,47 @@ { "test.battery.start", 0, NULL, "T%s\r", "", 5, '(', "", 1, 4, NULL, QX_FLAG_CMD, voltronic_process_command }, ---- -[cols="l,",options="autowidth"] -|==== -|info_type |+test.battery.start+ -|info_flags |+0+ -|info_rw |+NULL+ -|command |+T%s\r+ -|answer |Filled at runtime -|answer_len |+5+ <- either +(NAK\r+ or +(ACK\r+ -|leading |+(+ -|value |Filled at runtime -|from |+1+ -> the index at which the info (i.e. +value+) starts -|to |+3+ -> the index at which the info (i.e. +value+) ends -|dfl |Not used for +QX_TYPECMD+ -|qxflags |+QX_FLAG_CMD+ -> this item is an instant command that will be fired when +info_type+ (i.e. +test.battery.start+) is called -|preprocess |+voltronic_process_command+ +[horizontal] ++info_type+:: ++test.battery.start+ + ++info_flags+:: ++0+ + ++info_rw+:: ++NULL+ + ++command+:: ++T%s\r+ + ++answer+:: +Filled at runtime ++answer_len+:: ++5+ <- either +(NAK\r+ or +(ACK\r+ + ++leading+:: ++(+ + ++value+:: +Filled at runtime + ++from+:: ++1+ -> the index at which the info (i.e. +value+) starts + ++to+:: ++3+ -> the index at which the info (i.e. +value+) ends + ++dfl+:: +Not used for +QX_FLAG_CMD+ + ++qxflags+:: ++QX_FLAG_CMD+ -> this item is an instant command that will be fired when +info_type+ (i.e. +test.battery.start+) is called + ++preprocess+:: ++voltronic_process_command+ ++ This function will be called *before* the +command+ is sent to the UPS so that we can fill +command+ with the value provided by the user: in this case the function will check if the value is in the accepted range and then fill +value+ (the second argument passed to the +preprocess+ function) with +command+ and the given value. -|==== Informations absent in the device @@ -445,31 +561,54 @@ { "ups.delay.start", ST_FLAG_RW, voltronic_r_ondelay, NULL, "", 0, 0, "", 0, 0, "180", QX_FLAG_ABSENT | QX_FLAG_SETVAR | QX_FLAG_RANGE, voltronic_process_setvar }, ---- -[cols="l,",options="autowidth"] -|==== -|info_type |+ups.delay.start+ -|info_flags |+ST_FLAG_RW+ -> this is a r/w var -|info_rw |+voltronic_r_ondelay+ +[horizontal] ++info_type+:: ++ups.delay.start+ + ++info_flags+:: ++ST_FLAG_RW+ -> this is a r/w var ++info_rw+:: ++voltronic_r_ondelay+ ++ The values stored here will be added to the NUT variable, setting its boundaries: in this case +0+ and +599940+ will be set as the minimum and maximum value of the variable's range. Those values will then be used by the driver to check the user provided value. -|command |Not used for +QX_FLAG_ABSENT+ -|answer |Not used for +QX_FLAG_ABSENT+ -|answer_len |Not used for +QX_FLAG_ABSENT+ -|leading |Not used for +QX_FLAG_ABSENT+ -|value |Not used for +QX_FLAG_ABSENT+ -|from |Not used for +QX_FLAG_ABSENT+ -|to |Not used for +QX_FLAG_ABSENT+ -|dfl |+180+ <- the default value that will be set for this variable -|qxflags |+QX_FLAG_ABSENT+ -> this item isn't available in the device -+QX_FLAG_SETVAR+ -> this item is used to set the variable +info_type+ (i.e. +ups.delay.start+) ++command+:: +Not used for +QX_FLAG_ABSENT+ + ++answer+:: +Not used for +QX_FLAG_ABSENT+ + ++answer_len+:: +Not used for +QX_FLAG_ABSENT+ + ++leading+:: +Not used for +QX_FLAG_ABSENT+ + ++value+:: +Not used for +QX_FLAG_ABSENT+ ++from+:: +Not used for +QX_FLAG_ABSENT+ + ++to+:: +Not used for +QX_FLAG_ABSENT+ + ++dfl+:: ++180+ <- the default value that will be set for this variable + ++qxflags+:: ++QX_FLAG_ABSENT+ -> this item isn't available in the device ++ ++QX_FLAG_SETVAR+ -> this item is used to set the variable +info_type+ (i.e. +ups.delay.start+) ++ +QX_FLAG_RANGE+ -> this r/w variable has a settable range and its boundaries are listed in the +info_rw+ structure (i.e. +voltronic_r_ondelay+) -|preprocess |+voltronic_process_setvar+ -This function will be called, in setvar, before the driver stores the value in the NUT var: here is used to truncate the user-provided value to the neareset settable interval. -|==== ++preprocess+:: ++voltronic_process_setvar+ ++ +This function will be called, in setvar, before the driver stores the value in the NUT var: here it's used to truncate the user-provided value to the neareset settable interval. Informations not yet available in NUT @@ -492,31 +631,54 @@ { "input_phase_angle", 0, NULL, "QPD\r", "", 9, '(', "", 1, 3, "%03.0f", QX_FLAG_STATIC | QX_FLAG_NONUT, voltronic_phase }, ---- -[cols="l,",options="autowidth"] -|==== -|info_type |+input_phase_angle+ - +[horizontal] ++info_type+:: ++input_phase_angle+ ++ This information will be used to print the value we got back from the UPS in the logs. -|info_flags |+0+ -|info_rw |+NULL+ -|command |+QPD\r+ -|answer |Filled at runtime -|answer_len |+9+ -|leading |+(+ -|value |Filled at runtime -|from |+1+ -> the index at which the info (i.e. +value+) starts -|to |+3+ -> the index at which the info (i.e. +value+) ends -|dfl |+%03.0f+ ++info_flags+:: ++0+ + ++info_rw+:: ++NULL+ + ++command+:: ++QPD\r+ + ++answer+:: +Filled at runtime + ++answer_len+:: ++9+ + ++leading+:: ++(+ + ++value+:: +Filled at runtime + ++from+:: ++1+ -> the index at which the info (i.e. +value+) starts + ++to+:: ++3+ -> the index at which the info (i.e. +value+) ends + ++dfl+:: ++%03.0f+ ++ If there's no +preprocess+ function, the format is used to print the value to the logs. -Here instead is used by the +preprocess+ function. -|qxflags |+QX_FLAG_STATIC+ -> this item doesn't change +Here instead it's used by the +preprocess+ function. ++qxflags+:: ++QX_FLAG_STATIC+ -> this item doesn't change ++ +QX_FLAG_NONUT+ -> this item doesn't have yet a NUT variable -|preprocess |+voltronic_phase+ ++preprocess+:: ++voltronic_phase+ ++ This function will be called *after* the +command+ has been sent to the UPS so that we can parse the value we got back and check it. -|==== Here's the +item_t+ for output phase angle: @@ -524,39 +686,62 @@ { "output_phase_angle", ST_FLAG_RW, voltronic_e_phase, "QPD\r", "", 9, '(', "", 5, 7, "%03.0f", QX_FLAG_SEMI_STATIC | QX_FLAG_ENUM | QX_FLAG_NONUT, voltronic_phase }, ---- -[cols="l,",options="autowidth"] -|==== -|info_type |+output_phase_angle+ - +[horizontal] ++info_type+:: ++output_phase_angle+ ++ This information will be used to print the value we got back from the UPS in the logs. -|info_flags |+ST_FLAG_RW+ ++info_flags+:: ++ST_FLAG_RW+ ++ This could also be +0+ (it's not really used by the driver), but it's set to +ST_FLAG_RW+ for cohesion with other rw vars - also, if ever a NUT variable would become available for this item, it'll be easier to change this item and its +QX_FLAG_SETVAR+ counterpart to use it. -|info_rw |+voltronic_e_phase+ ++info_rw+:: ++voltronic_e_phase+ ++ Enumerated list of available value (here: +000+, +120+, +240+ and +360+). Since +QX_FLAG_NONUT+ is set the driver will print those values to the logs, plus you could use it in the +preprocess+ function to check the value we got back from the UPS (as done here). -|command |+QPD\r+ -|answer |Filled at runtime -|answer_len |+9+ -|leading |+(+ -|value |Filled at runtime -|from |+5+ -> the index at which the info (i.e. +value+) starts -|to |+7+ -> the index at which the info (i.e. +value+) ends -|dfl |+%03.0f+ ++command+:: ++QPD\r+ + ++answer+:: +Filled at runtime + ++answer_len+:: ++9+ + ++leading+:: ++(+ + ++value+:: +Filled at runtime + ++from+ :: ++5+ -> the index at which the info (i.e. +value+) starts + ++to+:: ++7+ -> the index at which the info (i.e. +value+) ends + ++dfl+:: ++%03.0f+ ++ If there's no +preprocess+ function, the format is used to print the value to the logs. -Here instead is used by the +preprocess+ function. -|qxflags |+QX_FLAG_SEMI_STATIC+ -> this item changes - and will therefore updated - only when we send a command/setvar to the UPS +Here instead it's used by the +preprocess+ function. ++qxflags+:: ++QX_FLAG_SEMI_STATIC+ -> this item changes - and will therefore updated - only when we send a command/setvar to the UPS ++ +QX_FLAG_ENUM+ -> this r/w variable is of the enumerated type and the enumerated values are listed in the +info_rw+ structure (i.e. +voltronic_e_phase+). - ++ +QX_FLAG_NONUT+ -> this item doesn't have yet a NUT variable -|preprocess |+voltronic_phase+ ++preprocess+:: ++voltronic_phase+ ++ This function will be called *after* the +command+ has been sent to the UPS so that we can parse the value we got back and check it. -Here is used also to store a var that will then be used to check the value in setvar's preprocess function. -|==== +Here it's used also to store a var that will then be used to check the value in setvar's preprocess function. If you need also to change some values in the UPS you can add a +ups.conf+ var/flag in the subdriver's own +makevartable+ and then process it adding to its +qxflags+ both +QX_FLAG_NONUT+ and +QX_FLAG_SETVAR+: this item will be processed only once in +QX_WALKMODE_INIT+. @@ -577,34 +762,57 @@ { "output_phase_angle", 0, voltronic_e_phase, "PPD%03.0f\r", "", 5, '(', "", 1, 4, NULL, QX_FLAG_SETVAR | QX_FLAG_ENUM | QX_FLAG_NONUT, voltronic_phase_set }, ---- -[cols="l,",options="autowidth"] -|==== -|info_type |+output_phase_angle+ - +[horizontal] ++info_type+:: ++output_phase_angle+ ++ This information will be used to print the value we got back from the UPS in the logs and to retrieve the user-provided value in +ups.conf+. So, name it after the variable you created to use in +ups.conf+ in the subdriver's own +makevartable+. -|info_flags |+0+ -|info_rw |+voltronic_e_phase+ ++info_flags+:: ++0+ + ++info_rw+:: ++voltronic_e_phase+ ++ Enumerated list of available values (here: +000+, +120+, +240+ and +360+). The value provided by the user will be automagically checked by the core nutdrv_qx driver against the enumerated values stored here. -|command |+PPD%03.0f\r+ -|answer |Filled at runtime -|answer_len |+5+ <- either +(NAK\r+ or +(ACK\r+ -|leading |+(+ -|value |Filled at runtime -|from |+1+ -> the index at which the info (i.e. +value+) starts -|to |+3+ -> the index at which the info (i.e. +value+) ends -|dfl |Not used for +QX_FLAG_SETVAR+ -|qxflags |+QX_FLAG_SETVAR+ -> this item is used to set the variable +info_type+ (i.e. +output_phase_angle+) -+QX_FLAG_ENUM+ -> this r/w variable is of the enumerated type and the enumerated values are listed in the +info_rw+ structure (i.e. +voltronic_e_phase+). ++command+:: ++PPD%03.0f\r+ + ++answer+:: +Filled at runtime + ++answer_len+:: ++5+ <- either +(NAK\r+ or +(ACK\r+ + ++leading+:: ++(+ + ++value+:: +Filled at runtime ++from+:: ++1+ -> the index at which the info (i.e. +value+) starts + ++to+:: ++3+ -> the index at which the info (i.e. +value+) ends + ++dfl+:: +Not used for +QX_FLAG_SETVAR+ + ++qxflags+:: ++QX_FLAG_SETVAR+ -> this item is used to set the variable +info_type+ (i.e. +output_phase_angle+) ++ ++QX_FLAG_ENUM+ -> this r/w variable is of the enumerated type and the enumerated values are listed in the +info_rw+ structure (i.e. +voltronic_e_phase+). ++ +QX_FLAG_NONUT+ -> this item doesn't have yet a NUT variable -|preprocess |+voltronic_phase_set+ ++preprocess+:: ++voltronic_phase_set+ ++ This function will be called *before* the +command+ is sent to the UPS so that we can check user-provided value and fill +command+ with it and then fill +value+ (the second argument passed to the +preprocess+ function). -|==== Support functions @@ -656,6 +864,8 @@ - +nutdrv_qx_megatec.+{+c+,+h+} - +nutdrv_qx_megatec-old.+{+c+,+h+} - +nutdrv_qx_mustek.+{+c+,+h+} +- +nutdrv_qx_q1.+{+c+,+h+} - +nutdrv_qx_voltronic.+{+c+,+h+} +- +nutdrv_qx_voltronic-qs.+{+c+,+h+} - +nutdrv_qx_zinto.+{+c+,+h+} diff -Nru nut-2.7.1/docs/nut-hal.txt nut-2.7.2/docs/nut-hal.txt --- nut-2.7.1/docs/nut-hal.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/nut-hal.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,118 +0,0 @@ -Desc: NUT integration with FreeDesktop HAL - Hardware Abstraction Layer -File: nut-hal.txt -Date: 05 March 2008 -Auth: Arnaud Quette - -This document introduces NUT integration with FreeDesktop HAL -(Hardware Abstraction Layer), also called Integrated Power Management (IPM). - -Introduction ------------- - -This feature, also known as the Common Power Management integration, -allows NUT drivers to feed the HAL system, which will itself feeds -applications such as the Gnome Power Manager, in charge of the -system protection and notification. - -This allows a better integration with the HAL supported systems -(Linux, *BSD and Solaris), and to reuse applications that have -been written to support laptop batteries. This also means that -we avoid the code / application redundancy by not using the upsd -and upsmon / NUT Client layer. - -Since the NUT driver subset is limited to USB only, at least for -the moment, this should allow this feature to be shipped with a -base system. - -From a user point of view, since all the needed components are -present on the system, we can achieve a full plug and play system. -That is to say when you plug your USB UPS, the needed driver is -automatically loaded and the according application (ie GPM) is -made available (displayed) at runtime without having to install -anything else than the base system. Nothing more to install, -nothing more to configure... - -Detailed usage ---------------- - -Since this feature is still a work in progress, the below information -details how to get, install and test it. - -Note that the minimum HAL version required is 0.5.8 - -* install libhal-dev and its dependencies (libdbus-dev) -or equivalent packages for your system. - -* "./configure --with-hal && make" from within the nut dir - -* either do a "make install" or simply copy the file -drivers/hald-addon* to the HAL addons directory (ie -/usr/lib/hal/ on Debian) or equivalent dir. - -* copy the scripts/hal/20-ups-nut-device.fdi file to -$datadir/hal/fdi/information/20thirdparty -for example on Debian: /usr/share/hal/fdi/information/20thirdparty/ - -* create the (nut user and) group for the udev rule: -addgroup --quiet --system nut - -* add the hal user (ex: haldaemon) to the nut group using: -adduser --quiet haldaemon nut - -* restart HAL (ie using "/etc/init.d/dbus restart"). -I've personaly used "killall hal" and restarted it using -"hald --daemon=no --verbose=yes" to see the verbose logs - -* plug your UPS' USB cord into your computer - -* you should now see the UPS using: -- [kde-]hal-device-manager, -- gnome power manager (standard applet for battery management), which -will pop up and state that there is an UPS -- ... - -Packaging information ---------------------- - -The HAL support in NUT must currently be packaged separatly (ie in a -specific nut-hal package) and must conflict with the classic nut packages. -This is in order to: -- allow shipping of the HAL support only in the base system, -without including all the NUT drivers and software, -- prevent the NUT HAL addons to get an exclusive -and automatic access on a device, when a user only want to use the -USB support with a classic NUT installation. - -This will be addressed when the new NUT configuration framework -will be merged in the main code branch. - -Developing information ----------------------- - -As of NUT 2.2.2, the HAL integration also provide a DBus interface to -allow the calling of two method: -- Shutdown -- SetBeeper (boolean) - -Example: -dbus-send --system --print-reply --dest=org.freedesktop.Hal \ - /org/freedesktop/Hal/devices/usb_device_463_ffff_1H2E300AH \ - org.freedesktop.Hal.Device.UPS.Shutdown - -For development purposes, you might want to set the environment variable -"NUT_HAL_DEBUG" to something between "1" and "5". This matches the NUT debug -levels (-DDDDD). - -Credits -------- - -Thanks to the following people who made this possible: -- David Zeuthen, HAL Project Leader, -- Richard Hughes, Gnome Power Manager Developer. - -References ----------- - -* FreeDesktop HAL: http://freedesktop.org/wiki/Software_2fhal -* Gnome Power Manager: http://www.gnome.org/projects/gnome-power-manager/ - diff -Nru nut-2.7.1/docs/nut-qa.txt nut-2.7.2/docs/nut-qa.txt --- nut-2.7.1/docs/nut-qa.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/nut-qa.txt 2014-03-21 20:27:16.000000000 +0100 @@ -1,124 +1,136 @@ -NUT Quality Assurance -===================== - -Recognizing the critical nature of NUT, the NUT Quality Assurance (NQA) effort -has been established to improve NUT where necessary, and to maintain software -quality as high as it should be. - -NQA is present in many aspects and areas of NUT. - -Documentation -------------- - -The documentation toolchain now use -link:http://www.methods.co.nz/asciidoc/[AsciiDoc] to output both HTML pages and -manual pages (troff). This single point of control permitted to fill many gaps, -to suppress many redundancies and to optimize documentation management in -general. - -- the NUT website and HTML documentation are tested for W3C XHTML 1.1 and CSS -compliance. This can be counter verified by clicking the W3C XHTML 1.1 and CSS -icons, at the bottom of each page. - -- the manual pages conformance is tested with -link:http://catb.org/~esr/doclifter/index.html[doclifter] (outdated) - -- Documentation source files are spell checked, using -link:http://aspell.net[Aspell], both interactively (using -'make spellcheck-interactive') and automatically in Buildbot (using -'make spellcheck'). - -NOTE: A NUT dictionnary is also available (docs/nut.dict), providing a glossary -of terms related to power devices and management. - -Source code ------------ - -Use of standards -~~~~~~~~~~~~~~~~ - -NUT promotes and uses many standards, like: - -- the variable names standard used in NUT, -- the coding rules and best practices for developers, -- the use of a software architecture limiting developments to the very minimum, -- the use of standard Free and OpenSource Software components, like: - * the USB library, - * the Net SNMP project, - * the Neon library, - * the OpenSSL library (to be replaced by NSS, which is more license compliant - with NUT and is FIPS 140 certified), - * the TCP Wrappers library. - -QA tools and metrics -~~~~~~~~~~~~~~~~~~~~ - -NUT's quality is constently monitored using many tools, like: - -- a Revision Control System (link:http://svn.debian.org/wsvn/nut[Subversion]) to -track development and ease regression fixes. Any modification on the NUT source -trees are reported on the link:http://lists.alioth.debian.org/mailman/listinfo/nut-commits[NUT Commits] -mailing list. -- link:http://buildbot.networkupstools.org/public/nut/[Buildbot] to automate the compile/test -cycle. Any build failure is caught early, reported through the -link:http://lists.alioth.debian.org/mailman/listinfo/nut-commits[NUT Commits] -mailing list, and fixed quickly. -- a project portal with trackers for bugs, feature request, patchs -and tasks - -NUT QA also relies on external tools, like: - -//////////////////////////////////////////////////////////////////////////////// -FIXME (POST): -- integrate static code analysis - - consider splint, Frama-C, BLAST and Clang, and choose one. - - integrate link:http://scan.coverity.com[Coverity Scan] program. - Note: request made by Arnaud to scan-admin@coverity.com on Sep 24 2009 -- point other distro BTS (use Launchpad as an aggregator?!) - -//////////////////////////////////////////////////////////////////////////////// - - -- the Debian QA tools, available through the link:http://packages.qa.debian.org/n/nut.html[NUT Package Tracking System]: - - * Lintian general QA checks, - * link:http://piuparts.debian.org/sid/source/n/nut.html[piuparts] automates - the installation, upgrade and removal testing processes. - -- a runtime testing suite, which automates the inter layer communication testing -(driver - upsd - upsmon / clients), that is part of Ubuntu. -link:http://bazaar.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/master/view/head:/scripts/test-nut.py[The NUT testing script] -is available in the link:https://code.edge.launchpad.net/qa-regression-testing[Ubuntu QA Regression Testing suite]. -It installs nut, configure with for the dummy-ups driver, changes a few data and -check that these are well propagated with upsc. - - -Runtime quality -~~~~~~~~~~~~~~~ - -- NUT provides many link:user-manual.html#NUT_Security[security features] to -ensure a maximum runtime security level. - -- Packages use several link:http://wiki.debian.org/Hardening[Hardening methods] -to protect NUT binaries. - -//////////////////////////////////////////////////////////////////////////////// -FIXME (POST): - -- write a code conformance checker (nut-lint) -- write a § on driver maintainance status -- consider using [http://forge.novell.com/modules/xfmod/project/?opensuse OpenSUSE Build Service tools] -- provide software metrics and evolution over the time - - * [http://www.flossmetrics.org/ FlossMetrics] - * [http://en.wikipedia.org/wiki/Software_metric Wikipedia] - * [http://cccc.sourceforge.net/ CCCC - C and C++ Code Counter] - * [http://open.ncsu.edu/se/tutorials/metrics/ Metrics with Eclipse] - -- Code documentation, for the core architecture (client and drivers are already -documented) - - * [http://doxygen.org/ Doxygen] - * [http://naturaldocs.org/ NaturalDocs] - -//////////////////////////////////////////////////////////////////////////////// +NUT Quality Assurance +===================== + +Recognizing the critical nature of NUT, the NUT Quality Assurance (NQA) effort +has been established to improve NUT where necessary, and to maintain software +quality as high as it should be. + +NQA is present in many aspects and areas of NUT. + +Documentation +------------- + +The documentation toolchain uses +link:http://www.methods.co.nz/asciidoc/[AsciiDoc] to output both HTML pages and +manual pages (troff). This single point of control fills many gaps, +suppresses many redundancies, and optimizes documentation management in +general. + +- The NUT website and HTML documentation are tested for W3C XHTML 1.1 and CSS +compliance. This can be counter verified by clicking the W3C XHTML 1.1 and CSS +icons, at the bottom of each page. + +//////////////////////////////////////////////////////////////////////////////// +- the manual pages conformance is tested with +link:http://catb.org/~esr/doclifter/index.html[doclifter] (outdated) +//////////////////////////////////////////////////////////////////////////////// + +- Documentation source files are spell checked, using +link:http://aspell.net[Aspell], both interactively (using +'make spellcheck-interactive') and automatically in Buildbot (using +'make spellcheck'). + +NOTE: A NUT dictionary is also available (docs/nut.dict), providing a glossary +of terms related to power devices and management. + +Source code +----------- + +Use of standards +~~~~~~~~~~~~~~~~ + +NUT promotes and uses many standards, such as: + +- the variable names standard used in NUT, +- the coding rules and best practices for developers, +- the use of a software architecture limiting developments to the very minimum, +- the use of standard Free and OpenSource Software components, like: + * the USB library, + * the Net SNMP project, + * the Neon library, + * the OpenSSL library (to be replaced by NSS, which is more license compliant + with NUT and can be FIPS 140 certified), + * the TCP Wrappers library. + +QA tools and metrics +~~~~~~~~~~~~~~~~~~~~ + +NUT's quality is constently monitored using many tools, like: + +- a Revision Control System (link:https://github.com/networkupstools/nut[Git]) to +track development and ease regression fixes. + +//////////////////////////////////////////////////////////////////////////////// +Any modification on the NUT source +trees are reported on the link:http://lists.alioth.debian.org/mailman/listinfo/nut-commits[NUT Commits] +mailing list. +//////////////////////////////////////////////////////////////////////////////// + +- link:http://buildbot.networkupstools.org/public/nut/[Buildbot] to automate the compile/test +cycle. Any build failure is caught early, and fixed quickly. + +//////////////////////////////////////////////////////////////////////////////// + reported through the +link:http://lists.alioth.debian.org/mailman/listinfo/nut-commits[NUT Commits] +mailing list, and fixed quickly. +//////////////////////////////////////////////////////////////////////////////// + +- a project portal with trackers for bugs, feature request, patchs +and tasks + +NUT QA also relies on external tools, like: + +//////////////////////////////////////////////////////////////////////////////// +FIXME (POST): +- integrate static code analysis + - consider splint, Frama-C, BLAST and Clang, and choose one. + - integrate link:http://scan.coverity.com[Coverity Scan] program. + Note: request made by Arnaud to scan-admin@coverity.com on Sep 24 2009 +- point other distro BTS (use Launchpad as an aggregator?!) + +//////////////////////////////////////////////////////////////////////////////// + +- Clang +- the Debian QA tools, available through the link:http://packages.qa.debian.org/n/nut.html[NUT Package Tracking System]: + + * Lintian general QA checks, + * link:http://piuparts.debian.org/sid/source/n/nut.html[piuparts] automates + the installation, upgrade and removal testing processes. + +- a runtime testing suite, which automates the inter-layer communication testing +(driver - upsd - upsmon / clients), that is part of Ubuntu. +link:http://bazaar.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/master/view/head:/scripts/test-nut.py[The NUT testing script] +is available in the link:https://code.edge.launchpad.net/qa-regression-testing[Ubuntu QA Regression Testing suite]. +It installs NUT, configures it with the dummy-ups driver, changes a few data and +checks that these are well propagated with upsc. + + +Runtime quality +~~~~~~~~~~~~~~~ + +- NUT provides many link:user-manual.html#NUT_Security[security features] to +ensure a maximum runtime security level. + +- Packages use several link:http://wiki.debian.org/Hardening[Hardening methods] +to protect NUT binaries. + +//////////////////////////////////////////////////////////////////////////////// +FIXME (POST): + +- write a code conformance checker (nut-lint) +- write a § on driver maintenance status +- consider using [http://forge.novell.com/modules/xfmod/project/?opensuse OpenSUSE Build Service tools] +- provide software metrics and evolution over the time + + * [http://www.flossmetrics.org/ FlossMetrics] + * [http://en.wikipedia.org/wiki/Software_metric Wikipedia] + * [http://cccc.sourceforge.net/ CCCC - C and C++ Code Counter] + * [http://open.ncsu.edu/se/tutorials/metrics/ Metrics with Eclipse] + +- Code documentation, for the core architecture (client and drivers are already +documented) + + * [http://doxygen.org/ Doxygen] + * [http://naturaldocs.org/ NaturalDocs] + +//////////////////////////////////////////////////////////////////////////////// diff -Nru nut-2.7.1/docs/packager-guide.txt nut-2.7.2/docs/packager-guide.txt --- nut-2.7.1/docs/packager-guide.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/packager-guide.txt 2014-02-27 22:17:32.000000000 +0100 @@ -35,7 +35,7 @@ ------------------------------------------------------------------------ *sandbox* This document assumes that you have read the other NUT document such -as INSTALL, FAQ, shutdown.txt, ... +as INSTALL.nut, FAQ, shutdown.txt, ... Facts about NUT packaging ========================= @@ -54,7 +54,7 @@ 1) Debian: http://packages.qa.debian.org/n/nut.html - nut, nut-dev, nut-usb, nut-snmp, nut-xml, nut-cgi, nut-doc [, nut-hal-drivers] + nut, nut-dev, nut-usb, nut-snmp, nut-xml, nut-cgi, nut-doc 2) Mandriva http://cvs.mandriva.com/cgi-bin/cvsweb.cgi/SPECS/nut/ @@ -169,7 +169,6 @@ - <> - <> - <> -- <> - <> - <> - <> @@ -238,13 +237,6 @@ - Size: - Deps: -[[pkg-nut-hal-drivers]] -nut-hal-drivers -^^^^^^^^^^^^^^^ -- Desc: -- Files: -- Size: -- Deps: [[pkg-nut-powerman-pdu]] nut-powerman-pdu diff -Nru nut-2.7.1/docs/stable-hcl.txt nut-2.7.2/docs/stable-hcl.txt --- nut-2.7.1/docs/stable-hcl.txt 2013-11-18 21:28:04.000000000 +0100 +++ nut-2.7.2/docs/stable-hcl.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,188 +0,0 @@ -ifdef::website[] -Hardware compatibility list -=========================== -endif::website[] - -[NOTE] -================================================================================ - -Before you buy, take a look at the link:acknowledgements.html[Acknowledgements] -for information about which drivers are developed with the support of the manufacturer. - -Be sure to also read the <>. - -================================================================================ - -ifdef::website[] -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -
- Support level legend -
-
1
protocol based on reverse engineering
-
2
based on fragments of publicly available protocol
-
3
based on publicly available protocol
-
4
vendor provided protocol
-
5
vendor provided protocol and hardware
-
-
-
- Filters - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - -
- - - -
-
- -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -include::ups-html.txt[] - -endif::website[] - -[[footnotes]] -[NOTE] -================================================================================ - - -*If your device isn't listed* - -First, if there are other models by the same manufacturer, try their drivers. -You may find that it "just works" or mostly works. - -In either case, send in a report so this list and the driver can be improved. - -Next, if you don't find any match, there are a few drivers that have a good -chance of working on random hardware. These are indicated in the -link:stable-hcl.html?manufacturer=Various[Various] entries above. - -After doing that, if those aren't working, you might try running other ones -from the set to see if anything works. Sometimes you get lucky. Finally, if -absolutely nothing works and your cabling is OK, try contacting the list and -we will see what we can do for you. - -In general, if a driver does not exist, that's due to the lack of overlap -between the set of developers and the set of owners of that hardware. - -The way to fix it is to turn a developer into an owner, or an owner into a -developer. - - -*Report new devices, omissions or errors* - -There are a lot of power devices hardware for sale, and it's possible -that we have missed listing some that are supported, or made an error. - -So that this list can be as accurate as possible, please report any -omissions to the -link:http://lists.alioth.debian.org/mailman/listinfo/nut-upsdev[NUT Developers] mailing list -or the NUT link:https://github.com/networkupstools/nut/issues/new[issue tracker on GitHub], -including the following information: - -- mail subject: [HCL] supported by -- or tag the issue "HCL" and title it: supported by -replacing Manufacturer, Device and driver by your specific values, -- mail or issue body: - - Device manufacturer and name, - - upsc output (upsrw and upscmd outputs are also welcome), - - link:docs/user-manual.chunked/ar01s06.html#Shutdown_design[shutdown sequence] -testing results: a statement that you have actually tested it successfully is -enough for now, - - a link to the manufacturer's online description of the device is also appreciated. - - -*Linking to the HCL* - -You can create a direct link to the HCL, specifying some filters within the URL -(JavaScript must be enabled in the browser for this to work). This allows you -to select devices that matches some specific criteria, like a connection type -or a manufacturer. All filters available on the page itself are also available -for use in the URL. - -The form of the URL is the following: - - http://www.networkupstools.org/stable-hcl.html?= - -.Possible values -[options="header,autowidth",style="asciidoc",cols="<,<"] -|=================================================================== -| | -|support-level |a number from '1' to '5' -|device-type |- 'ups' for uninterruptible power supply - - 'pdu' for power distribution unit - - 'psu' for power supply unit - - 'scd' for solar controller device -|manufacturer |a manufacturer name from the selection list -|model |a model name from the selection list -|connection |- 'USB' - - 'Serial' - - 'Network' -|=================================================================== - -You can combine multiple filters, using ampersand (*&*). - -For example, if you only want to select USB units from Eaton, use: - - http://www.networkupstools.org/stable-hcl.html?manufacturer=Eaton&connection=USB - - - -================================================================================ - -//////////////////////////////////////////////////////////////////////////////// -FIXME: -- point and complete the "user manual -> support" section for success report -link:user-manual.html#Support_Request[Support instructions] in the user manual. -//////////////////////////////////////////////////////////////////////////////// diff -Nru nut-2.7.1/docs/user-manual.txt nut-2.7.2/docs/user-manual.txt --- nut-2.7.1/docs/user-manual.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/user-manual.txt 2014-02-25 16:39:34.000000000 +0100 @@ -81,7 +81,7 @@ [[_installation_instructions]] -include::../INSTALL[] +include::../INSTALL.nut[] [[Configuration_notes]] @@ -139,13 +139,7 @@ Appendix D: Hardware Compatibility List ======================================= -ifdef::website[] -include::stable-hcl.txt[] -endif::website[] - -ifndef::website[] Refer to the link:http://www.networkupstools.org/stable-hcl.html[online HCL]. -endif::website[] Appendix E: Documentation diff -Nru nut-2.7.1/docs/website/css/ie-overrides.css nut-2.7.2/docs/website/css/ie-overrides.css --- nut-2.7.1/docs/website/css/ie-overrides.css 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/website/css/ie-overrides.css 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -#layout-content-box { - margin-left: 207px; -} - -#support-level-legend { width: 400px; } -#support-level-legend ul { margin: 0; } -.support-level-descr { float: none; } \ Pas de fin de ligne à la fin du fichier diff -Nru nut-2.7.1/docs/website/css/web-layout.css nut-2.7.2/docs/website/css/web-layout.css --- nut-2.7.1/docs/website/css/web-layout.css 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/docs/website/css/web-layout.css 1970-01-01 01:00:00.000000000 +0100 @@ -1,222 +0,0 @@ -body { - margin: 0; - font-size: 0.9em; - background-color: #f4f4f4; -} - -#layout-banner-box { - width: 100%; - height: 110px; - z-index: 2; - background-color: #0067cd; -} - -#layout-menu-box { - float: left; - height: 100%; - z-index: 1; -} - -#layout-content-box { - border-left: 3px solid #eeeeee; - background-color: white; - overflow-y: auto; -} - -h1 { - margin-top: 0.5em; -} - -#layout-banner { - color: white; - font-family: sans-serif; - text-align: left; - padding: 0.8em 20px; -} - -#layout-logo { - float: left; - padding: 5px 20px 5px 10px; -} - -#layout-title { - font-family: monospace; - font-size: 3.5em; - font-weight: bold; - letter-spacing: 0.2em; - margin: 0; -} - -#layout-description { - font-size: 1.2em; - letter-spacing: 0.1em; -} - -#sponsor { - clear: both; - font-size: small; - margin-top: 50px; - margin-bottom: 10px; - color:#0067CD; - font-weight:bold; -} - -#sponsor span { margin-left: 10px; } -#sponsor img { border: 0; } - -#layout-menu { - padding-top: 0.8em; - padding-left: 20px; - margin-left: 0; - font-size: 1.0em; - font-family: sans-serif; - font-weight: bold; - list-style: none; - list-style-image: url(../images/blue-arrow.png) -} -#layout-menu li { margin-left: 10px; } -#layout-menu a { - line-height: 2em; - margin-left: 0.5em; -} -#layout-menu a:link, #layout-menu a:visited, #layout-menu a:hover { - color: #0067cd; - text-decoration: none; -} -#layout-menu a:hover { - color: navy; - text-decoration: none; -} -#layout-menu #page-source { - border-top: 2px solid silver; - margin-top: 0.2em; -} - -#layout-content { - padding-top: 0.2em; - padding-left: 1.0em; - padding-right: 0.4em; -} - -@media print { - #layout-banner-box { display: none; } - #layout-menu-box { display: none; } - #layout-content-box { margin-top: 0; margin-left: 0; } -} - - -#ups_list -{ - margin: 20px 0 0 0; width: 100%; - border-collapse: collapse; -} -#ups_list td { border: 1px solid silver; } -#ups_list thead { font-weight: bold; background: #bbb; } -#ups_list .odd { background: #eee; } -#ups_list .even { background: #ddd; } -.filter { min-width: 100px; } - -td#manufacturer-col { width: 20%; } -td#model-col { width: 50%; } -td#driver-col { width: 30%; } - -.blue { background-color: #cfd9fe; } -.green { background-color: #b1fea7; } -.yellow { background-color: #fdf88e; } -.orange { background-color: #fccb81; } -.red { background-color: #ffa4a4; } - -.hidden { display: none; } - -/* HCL Chooser/Legend */ -#filters-set { - display: none; - border: 1px solid silver; - padding: 10px; -} - -#filters-set legend, #support-level-legend legend { - font-weight: bold; -} - -#filters-set td { - border: 0; -} - -#filters-set select { - max-width: 200px; -} - -/* Clear HCL Legend */ -#filters-set + * { - clear: both; -} - -#support-level-legend { - width: 31.25em; - float: right; - margin: 0 0 1em 1em; - padding: 10px; - border: 1px solid silver; -} - -#support-level-legend dt { - margin: 0; - padding: 0; - width: 15%; - float: left; -} - -.hcl-legend-level { - visibility: hidden; - position: relative; -} - -.red.hcl-legend-level:after { - content: '*'; - position: absolute; - visibility: visible; - background-color: #ffa4a4; -} - -.orange.hcl-legend-level:after { - content: '**'; - position: absolute; - visibility: visible; - background-color: #fccb81; -} - -.yellow.hcl-legend-level:after { - content: '***'; - position: absolute; - visibility: visible; - background-color: #fdf88e; -} - -.blue.hcl-legend-level:after { - content: '****'; - position: absolute; - visibility: visible; - background-color: #cfd9fe; -} - -.green.hcl-legend-level:after { - content: '*****'; - position: absolute; - visibility: visible; - background-color: #b1fea7; -} - -#support-level-legend dd { - margin: 0; - padding: 0; - width: 85%; - float: left; -} - -/*.support-level-descr { margin-left: 20px; float: right; }*/ - -/* Remove text underscores on href */ -div#footer-badges a:link, #layout-menu a:visited, #layout-menu a:hover { - text-decoration: none; -} diff -Nru nut-2.7.1/docs/website/css/xhtml11.css nut-2.7.2/docs/website/css/xhtml11.css --- nut-2.7.1/docs/website/css/xhtml11.css 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/website/css/xhtml11.css 1970-01-01 01:00:00.000000000 +0100 @@ -1,333 +0,0 @@ -/* Debug borders */ -p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { -/* - border: 1px solid red; -*/ -} - -body { - margin: 1em 5% 1em 5%; -} - -a { - color: blue; - text-decoration: underline; -} -a:visited { - color: fuchsia; -} - -em { - font-style: italic; - color: navy; -} - -strong { - font-weight: bold; - color: #083194; -} - -tt { - color: navy; -} - -h1, h2, h3, h4, h5, h6 { - color: #527bbd; - font-family: sans-serif; - margin-top: 1.2em; - margin-bottom: 0.5em; - line-height: 1.3; -} - -h1, h2, h3 { - border-bottom: 2px solid silver; -} -h2 { - padding-top: 0.5em; -} -h3 { - float: left; -} -h3 + * { - clear: left; -} - -div.sectionbody { - font-family: serif; - margin-left: 0; -} - -hr { - border: 1px solid silver; -} - -p { - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -ul, ol, li > p { - margin-top: 0; -} - -pre { - padding: 0; - margin: 0; -} - -span#author { - color: #527bbd; - font-family: sans-serif; - font-weight: bold; - font-size: 1.1em; -} -span#email { -} -span#revnumber, span#revdate, span#revremark { - font-family: sans-serif; -} - -div#footer { - font-family: sans-serif; - font-size: small; - border-top: 2px solid silver; - padding-top: 0.5em; - margin-top: 4.0em; -} -div#footer-text { - float: left; - padding-bottom: 0.5em; -} -div#footer-badges { - float: right; - padding-bottom: 0.5em; -} - -div#preamble { - margin-top: 1.5em; - margin-bottom: 1.5em; -} -div.tableblock, div.imageblock, div.exampleblock, div.verseblock, -div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, -div.admonitionblock { - margin-top: 1.5em; - margin-bottom: 1.5em; -} -div.admonitionblock { - margin-top: 2.5em; - margin-bottom: 2.5em; -} - -div.content { /* Block element content. */ - padding: 0; -} - -/* Block element titles. */ -div.title, caption.title { - color: #527bbd; - font-family: sans-serif; - font-weight: bold; - text-align: left; - margin-top: 1.0em; - margin-bottom: 0.5em; -} -div.title + * { - margin-top: 0; -} - -td div.title:first-child { - margin-top: 0.0em; -} -div.content div.title:first-child { - margin-top: 0.0em; -} -div.content + div.title { - margin-top: 0.0em; -} - -div.sidebarblock > div.content { - background: #ffffee; - border: 1px solid silver; - padding: 0.5em; -} - -div.listingblock > div.content { - border: 1px solid silver; - background: #f4f4f4; - padding: 0.5em; -} - -div.quoteblock { - padding-left: 2.0em; - margin-right: 10%; -} -div.quoteblock > div.attribution { - padding-top: 0.5em; - text-align: right; -} - -div.verseblock { - padding-left: 2.0em; - margin-right: 10%; -} -div.verseblock > div.content { - white-space: pre; -} -div.verseblock > div.attribution { - padding-top: 0.75em; - text-align: left; -} -/* DEPRECATED: Pre version 8.2.7 verse style literal block. */ -div.verseblock + div.attribution { - text-align: left; -} - -div.admonitionblock .icon { - vertical-align: top; - font-size: 1.1em; - font-weight: bold; - text-decoration: underline; - color: #527bbd; - padding-right: 0.5em; -} -div.admonitionblock td.content { - padding-left: 0.5em; - border-left: 2px solid silver; -} - -div.exampleblock > div.content { - border-left: 2px solid silver; - padding: 0.5em; -} - -div.imageblock div.content { padding-left: 0; } -span.image img { border-style: none; } -a.image:visited { color: white; } - -dl { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -dt { - margin-top: 0.5em; - margin-bottom: 0; - font-style: normal; - color: navy; -} -dd > *:first-child { - margin-top: 0.1em; -} - -ul, ol { - list-style-position: outside; -} -ol.arabic { - list-style-type: decimal; -} -ol.loweralpha { - list-style-type: lower-alpha; -} -ol.upperalpha { - list-style-type: upper-alpha; -} -ol.lowerroman { - list-style-type: lower-roman; -} -ol.upperroman { - list-style-type: upper-roman; -} - -div.compact ul, div.compact ol, -div.compact p, div.compact p, -div.compact div, div.compact div { - margin-top: 0.1em; - margin-bottom: 0.1em; -} - -div.tableblock > table { - border: 3px solid #527bbd; -} -thead { - font-family: sans-serif; - font-weight: bold; -} -tfoot { - font-weight: bold; -} -td > div.verse { - white-space: pre; -} -p.table { - margin-top: 0; -} -/* Because the table frame attribute is overriden by CSS in most browsers. */ -div.tableblock > table[frame="void"] { - border-style: none; -} -div.tableblock > table[frame="hsides"] { - border-left-style: none; - border-right-style: none; -} -div.tableblock > table[frame="vsides"] { - border-top-style: none; - border-bottom-style: none; -} - - -div.hdlist { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -div.hdlist tr { - padding-bottom: 15px; -} -dt.hdlist1.strong, td.hdlist1.strong { - font-weight: bold; -} -td.hdlist1 { - vertical-align: top; - font-style: normal; - padding-right: 0.8em; - color: navy; -} -td.hdlist2 { - vertical-align: top; -} -div.hdlist.compact tr { - margin: 0; - padding-bottom: 0; -} - -.comment { - background: yellow; -} - -@media print { - div#footer-badges { display: none; } -} - -div#toctitle { - color: #527bbd; - font-family: sans-serif; - font-size: 1.1em; - font-weight: bold; - margin-top: 1.0em; - margin-bottom: 0.1em; -} - -div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { - margin-top: 0; - margin-bottom: 0; -} -div.toclevel2 { - margin-left: 2em; - font-size: 0.9em; -} -div.toclevel3 { - margin-left: 4em; - font-size: 0.9em; -} -div.toclevel4 { - margin-left: 6em; - font-size: 0.9em; -} diff -Nru nut-2.7.1/docs/website/css/xhtml11-quirks.css nut-2.7.2/docs/website/css/xhtml11-quirks.css --- nut-2.7.1/docs/website/css/xhtml11-quirks.css 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/website/css/xhtml11-quirks.css 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -/* Workarounds for IE6's broken and incomplete CSS2. */ - -div.sidebar-content { - background: #ffffee; - border: 1px solid silver; - padding: 0.5em; -} -div.sidebar-title, div.image-title { - color: #527bbd; - font-family: sans-serif; - font-weight: bold; - margin-top: 0.0em; - margin-bottom: 0.5em; -} - -div.listingblock div.content { - border: 1px solid silver; - background: #f4f4f4; - padding: 0.5em; -} - -div.quoteblock-attribution { - padding-top: 0.5em; - text-align: right; -} - -div.verseblock-content { - white-space: pre; -} -div.verseblock-attribution { - padding-top: 0.75em; - text-align: left; -} - -div.exampleblock-content { - border-left: 2px solid silver; - padding-left: 0.5em; -} - -/* IE6 sets dynamically generated links as visited. */ -div#toc a:visited { color: blue; } Les fichiers binaires /tmp/UtAENumll_/nut-2.7.1/docs/website/faviconut.ico et /tmp/yo9X217e84/nut-2.7.2/docs/website/faviconut.ico sont différents Les fichiers binaires /tmp/UtAENumll_/nut-2.7.1/docs/website/faviconut.png et /tmp/yo9X217e84/nut-2.7.2/docs/website/faviconut.png sont différents diff -Nru nut-2.7.1/docs/website/Makefile.am nut-2.7.2/docs/website/Makefile.am --- nut-2.7.1/docs/website/Makefile.am 2013-11-07 21:43:51.000000000 +0100 +++ nut-2.7.2/docs/website/Makefile.am 1970-01-01 01:00:00.000000000 +0100 @@ -1,130 +0,0 @@ -# FIXME: do we really have to distribute these many Kb too? -# RCS should be enough, and website generation should use -# source from subversion tags! -EXTRA_DIST = news.txt old-news.txt projects.txt website.txt \ - ups-protocols.txt $(LAYOUT).conf $(SCRIPT_FILES) $(LAYOUT_FILES) \ - $(FAVICON_FILES) - -IMAGE_FILES = images/asciidoc.png \ - images/hostedby.png \ - images/blue-arrow.png \ - images/simple.png \ - images/advanced.png \ - images/bigbox.png \ - images/bizarre.png \ - images/note.png \ - images/nut-logo.png \ - images/warning.png - -FAVICON_FILES = faviconut.ico faviconut.png - -LAYOUT_FILES = css/ie-overrides.css \ - css/web-layout.css \ - css/xhtml11-quirks.css \ - css/xhtml11.css - -SCRIPT_FILES = scripts/filter_png.js \ - scripts/jquery.js \ - scripts/nut_jquery.js \ - scripts/toc.js - -WEBSITE_FILES = index.html projects.html stable-hcl.html \ - documentation.html acknowledgements.html features.html \ - ups-protocols.html cables.html nut-qa.html download.html \ - support.html old-news.html - -WEBSITE_DEPS = ../user-manual.chunked ../packager-guide.chunked \ - ../FAQ.html ../developer-guide.chunked \ - ../user-manual.pdf \ - ../developer-guide.pdf \ - ../packager-guide.pdf \ - ../FAQ.pdf ../man/man-index.html - -# CSS based simulated frames layout. -LAYOUT = web-layout - -# Add --unsafe to allow includes on older versions of asciidoc ( < 8.5.3 ): -ASCIIDOC_PARAMS = --unsafe --backend=xhtml11 \ - --conf-file=$(srcdir)/$(LAYOUT).conf \ - --attribute icons \ - --attribute iconsdir=$(srcdir)/images \ - --attribute scriptsdir=$(srcdir)/scripts \ - --attribute=badges \ - --attribute=website \ - --attribute=quirks \ - --attribute=revision=$(PACKAGE_VERSION) \ - --attribute tree_version=@TREE_VERSION@ \ - --attribute localdate=`TZ=UTC date +%Y-%m-%d` \ - --attribute localtime=`TZ=UTC date +%H:%M:%S` \ - --attribute=date="`TZ=UTC date`" - -all: - -OUTDIR = output -$(WEBSITE_FILES): $(LAYOUT).conf - -images/: - $(MKDIR_P) images - -$(IMAGE_FILES): images/ - cp -f ../$@ images/ - -# Keep using 'HAVE_ASCIIDOC', instead of 'WITH_ASCIIDOC' since we have -# an explicit target -if HAVE_ASCIIDOC -website: $(WEBSITE_FILES) $(WEBSITE_DEPS) $(IMAGE_FILES) $(SCRIPT_FILES) \ - $(LAYOUT_FILES) scripts/ups_data.js ../stable-hcl.txt ../ups-html.txt \ - $(OUTDIR) $(FAVICON_FILES) - -else !HAVE_ASCIIDOC -website: - @echo "Not building website since 'asciidoc' was not found." -endif !HAVE_ASCIIDOC - -.PHONY: website $(OUTDIR) - -$(OUTDIR): - $(RM) -r $(OUTDIR) - $(MKDIR_P) $(OUTDIR)/docs/man - cp -fR $(WEBSITE_FILES) css images scripts $(OUTDIR) - cp -fR $(WEBSITE_DEPS) $(OUTDIR)/docs/ - cp -f ../man/man-index.html $(OUTDIR)/docs/man/ - cp -f ../man/*.html $(OUTDIR)/docs/man/ - -clean-local: - rm -rf $(WEBSITE_FILES) $(OUTDIR) images/ - -SUFFIXES = .txt .html - -index.html: website.txt news.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a index-only $< - -acknowledgements.html: ../acknowledgements.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -features.html: ../features.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -cables.html: ../cables.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $< - -download.html: ../download.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $< - -documentation.html: ../documentation.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -projects.html: projects.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $< - -support.html: ../support.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -nut-qa.html: ../nut-qa.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -stable-hcl.html: ../stable-hcl.txt ../ups-html.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a hcl $< - -.txt.html: - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< diff -Nru nut-2.7.1/docs/website/Makefile.in nut-2.7.2/docs/website/Makefile.in --- nut-2.7.1/docs/website/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/docs/website/Makefile.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,600 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = docs/website -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/nut_arg_with.m4 \ - $(top_srcdir)/m4/nut_check_asciidoc.m4 \ - $(top_srcdir)/m4/nut_check_libavahi.m4 \ - $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ - $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ - $(top_srcdir)/m4/nut_check_libltdl.m4 \ - $(top_srcdir)/m4/nut_check_libneon.m4 \ - $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ - $(top_srcdir)/m4/nut_check_libnss.m4 \ - $(top_srcdir)/m4/nut_check_libopenssl.m4 \ - $(top_srcdir)/m4/nut_check_libpowerman.m4 \ - $(top_srcdir)/m4/nut_check_libusb.m4 \ - $(top_srcdir)/m4/nut_check_libwrap.m4 \ - $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ - $(top_srcdir)/m4/nut_report_feature.m4 \ - $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -ASPELL = @ASPELL@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINDIR = @BINDIR@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFPATH = @CONFPATH@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@ -CPPUNIT_LIBS = @CPPUNIT_LIBS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DBLATEX = @DBLATEX@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DOC_BUILD_LIST = @DOC_BUILD_LIST@ -DRIVER_BUILD_LIST = @DRIVER_BUILD_LIST@ -DRIVER_INSTALL_TARGET = @DRIVER_INSTALL_TARGET@ -DRIVER_MAN_LIST = @DRIVER_MAN_LIST@ -DRVPATH = @DRVPATH@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBAVAHI_CFLAGS = @LIBAVAHI_CFLAGS@ -LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ -LIBGD_CFLAGS = @LIBGD_CFLAGS@ -LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ -LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ -LIBIPMI_LIBS = @LIBIPMI_LIBS@ -LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ -LIBLTDL_LIBS = @LIBLTDL_LIBS@ -LIBNEON_CFLAGS = @LIBNEON_CFLAGS@ -LIBNEON_LIBS = @LIBNEON_LIBS@ -LIBNETSNMP_CFLAGS = @LIBNETSNMP_CFLAGS@ -LIBNETSNMP_LIBS = @LIBNETSNMP_LIBS@ -LIBOBJS = @LIBOBJS@ -LIBPOWERMAN_CFLAGS = @LIBPOWERMAN_CFLAGS@ -LIBPOWERMAN_LIBS = @LIBPOWERMAN_LIBS@ -LIBS = @LIBS@ -LIBSSL_CFLAGS = @LIBSSL_CFLAGS@ -LIBSSL_LIBS = @LIBSSL_LIBS@ -LIBTOOL = @LIBTOOL@ -LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ -LIBUSB_LIBS = @LIBUSB_LIBS@ -LIBWRAP_CFLAGS = @LIBWRAP_CFLAGS@ -LIBWRAP_LIBS = @LIBWRAP_LIBS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NETLIBS = @NETLIBS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NUT_NETVERSION = @NUT_NETVERSION@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS_NAME = @OS_NAME@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PIDPATH = @PIDPATH@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PORT = @PORT@ -RANLIB = @RANLIB@ -RUN_AS_GROUP = @RUN_AS_GROUP@ -RUN_AS_USER = @RUN_AS_USER@ -SBINDIR = @SBINDIR@ -SED = @SED@ -SERLIBS = @SERLIBS@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STATEPATH = @STATEPATH@ -STRIP = @STRIP@ -SUN_LIBUSB = @SUN_LIBUSB@ -TREE_VERSION = @TREE_VERSION@ -VERSION = @VERSION@ -WORDS_BIGENDIAN = @WORDS_BIGENDIAN@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -cgiexecdir = @cgiexecdir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -driverexecdir = @driverexecdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -hotplugdir = @hotplugdir@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgconfigdir = @pkgconfigdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -systemdsystemshutdowndir = @systemdsystemshutdowndir@ -systemdsystemunitdir = @systemdsystemunitdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -udevdir = @udevdir@ - -# FIXME: do we really have to distribute these many Kb too? -# RCS should be enough, and website generation should use -# source from subversion tags! -EXTRA_DIST = news.txt old-news.txt projects.txt website.txt \ - ups-protocols.txt $(LAYOUT).conf $(SCRIPT_FILES) $(LAYOUT_FILES) \ - $(FAVICON_FILES) - -IMAGE_FILES = images/asciidoc.png \ - images/hostedby.png \ - images/blue-arrow.png \ - images/simple.png \ - images/advanced.png \ - images/bigbox.png \ - images/bizarre.png \ - images/note.png \ - images/nut-logo.png \ - images/warning.png - -FAVICON_FILES = faviconut.ico faviconut.png -LAYOUT_FILES = css/ie-overrides.css \ - css/web-layout.css \ - css/xhtml11-quirks.css \ - css/xhtml11.css - -SCRIPT_FILES = scripts/filter_png.js \ - scripts/jquery.js \ - scripts/nut_jquery.js \ - scripts/toc.js - -WEBSITE_FILES = index.html projects.html stable-hcl.html \ - documentation.html acknowledgements.html features.html \ - ups-protocols.html cables.html nut-qa.html download.html \ - support.html old-news.html - -WEBSITE_DEPS = ../user-manual.chunked ../packager-guide.chunked \ - ../FAQ.html ../developer-guide.chunked \ - ../user-manual.pdf \ - ../developer-guide.pdf \ - ../packager-guide.pdf \ - ../FAQ.pdf ../man/man-index.html - - -# CSS based simulated frames layout. -LAYOUT = web-layout - -# Add --unsafe to allow includes on older versions of asciidoc ( < 8.5.3 ): -ASCIIDOC_PARAMS = --unsafe --backend=xhtml11 \ - --conf-file=$(srcdir)/$(LAYOUT).conf \ - --attribute icons \ - --attribute iconsdir=$(srcdir)/images \ - --attribute scriptsdir=$(srcdir)/scripts \ - --attribute=badges \ - --attribute=website \ - --attribute=quirks \ - --attribute=revision=$(PACKAGE_VERSION) \ - --attribute tree_version=@TREE_VERSION@ \ - --attribute localdate=`TZ=UTC date +%Y-%m-%d` \ - --attribute localtime=`TZ=UTC date +%H:%M:%S` \ - --attribute=date="`TZ=UTC date`" - -OUTDIR = output -SUFFIXES = .txt .html -all: all-am - -.SUFFIXES: -.SUFFIXES: .txt .html -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/website/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu docs/website/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-local mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - clean-local distclean distclean-generic distclean-libtool \ - distdir dvi dvi-am html html-am info info-am install \ - install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am - - -all: -$(WEBSITE_FILES): $(LAYOUT).conf - -images/: - $(MKDIR_P) images - -$(IMAGE_FILES): images/ - cp -f ../$@ images/ - -# Keep using 'HAVE_ASCIIDOC', instead of 'WITH_ASCIIDOC' since we have -# an explicit target -@HAVE_ASCIIDOC_TRUE@website: $(WEBSITE_FILES) $(WEBSITE_DEPS) $(IMAGE_FILES) $(SCRIPT_FILES) \ -@HAVE_ASCIIDOC_TRUE@ $(LAYOUT_FILES) scripts/ups_data.js ../stable-hcl.txt ../ups-html.txt \ -@HAVE_ASCIIDOC_TRUE@ $(OUTDIR) $(FAVICON_FILES) - -@HAVE_ASCIIDOC_FALSE@website: -@HAVE_ASCIIDOC_FALSE@ @echo "Not building website since 'asciidoc' was not found." - -.PHONY: website $(OUTDIR) - -$(OUTDIR): - $(RM) -r $(OUTDIR) - $(MKDIR_P) $(OUTDIR)/docs/man - cp -fR $(WEBSITE_FILES) css images scripts $(OUTDIR) - cp -fR $(WEBSITE_DEPS) $(OUTDIR)/docs/ - cp -f ../man/man-index.html $(OUTDIR)/docs/man/ - cp -f ../man/*.html $(OUTDIR)/docs/man/ - -clean-local: - rm -rf $(WEBSITE_FILES) $(OUTDIR) images/ - -index.html: website.txt news.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a index-only $< - -acknowledgements.html: ../acknowledgements.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -features.html: ../features.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -cables.html: ../cables.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $< - -download.html: ../download.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $< - -documentation.html: ../documentation.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -projects.html: projects.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $< - -support.html: ../support.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -nut-qa.html: ../nut-qa.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -stable-hcl.html: ../stable-hcl.txt ../ups-html.txt - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a hcl $< - -.txt.html: - $(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $< - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru nut-2.7.1/docs/website/news.txt nut-2.7.2/docs/website/news.txt --- nut-2.7.1/docs/website/news.txt 2013-11-20 20:53:31.000000000 +0100 +++ nut-2.7.2/docs/website/news.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -- November 20, 2013: 2.7.1 released -- June 21, 2013: new client link:https://github.com/zykh/walNUT[walNUT] released -- February 10, 2013: NUT source repository is converted to link:https://github.com/networkupstools/nut[Git] using link:http://www.catb.org/~esr/reposurgeon/[reposurgeon] -- September 19, 2012: link:download.html#_binary_packages[Beta NUT 2.6.5-3 package for Windows released] -- September 17, 2012: link:download.html#_binary_packages[Beta NUT 2.6.5-2 package for Windows released] -- August 9, 2012: link:download.html#_binary_packages[Beta NUT 2.6.5-1 package for Windows released] -- August 8, 2012: 2.6.5 released -- June 27, 2012: link:download.html#_virtualization_packages[VMware NUT client for ESXI 5.0] -- June 5, 2012: link:http://wmnut.networkupstools.org[WMNut] 0.64 released, and move hosting -- June 4, 2012: link:download.html#_binary_packages[Beta NUT 2.6.4-1 package for Windows released] -- May 31, 2012: 2.6.4 released, including link:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-2944[CVE-2012-2944] fix -- May 10, 2012: link:http://wmnut.mgeops.org[WMNut] 0.63 released -- May 9, 2012: Official publication of Riello communication protocols -- May 2, 2012: link:download.html#_binary_packages[Beta NUT 2.6.3-3 package for Windows released] -- April 26, 2012: link:download.html#_binary_packages[Beta NUT 2.6.3-1 package for Windows released] -- January 4, 2012: 2.6.3 released - -link:old-news.html[Older news] diff -Nru nut-2.7.1/docs/website/old-news.txt nut-2.7.2/docs/website/old-news.txt --- nut-2.7.1/docs/website/old-news.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/website/old-news.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,63 +0,0 @@ -Archived news -------------- - -- October 31, 2011: link:download.html#_java_packages[jNUT and jNutWebAPI 0.2-SNAPSHOT released] -- September 15, 2011: 2.6.2 released -- September 2, 2011: link:download.html#_java_packages[jNUT (NUT Java support) 0.1-SNAPSHOT released] -- July 4, 2011: link:download.html#_binary_packages[Beta NUT 2.6.1-1 package for Windows released] -- June 8, 2011: link:http://www.dell.com/us/business/p/powervault-nx3500/pd[Dell PowerVault NX3500] use NUT for power protection -- June 1, 2011: 2.6.1 released -- May 19, 2011: link:download.html#_binary_packages[Beta NUT 2.6.0-1 package for Windows released] -- January 14, 2011: 2.6.0 released -- December 24, 2010: 2.6.0-pre1 released -- December 16, 2010: link:http://www.lestat.st/en/informatique/projets/nut-monitor[NUT-Monitor] 1.3 released -- July 22, 2010: new client link:http://www.revpol.com/xymon_nut_scripts[Hobbit (Xymon) monitor plugin] -- July 2, 2010: link:http://knut.prynych.cz[KNutClient] 1.0.3 and link update -- May 12, 2010: link:http://www.lestat.st/en/informatique/projets/nut-monitor[NUT-Monitor] 1.2 released -- March 22, 2010: link:http://knut.prynych.cz[KNutClient] 1.0 -- February 23, 2010: 2.4.3 released -- February 19, 2010: 2.4.2 released -- February 17, 2009: 2.4.1 released -- January 28, 2009: 2.4.0 released -- January 21, 2009: 2.4.0-pre2 released -- December 24, 2008: 2.4.0-pre1 released -- July 7, 2008: Client activity: new client link:http://www.lestat.st/en/informatique/projets/nut-monitor[NUT-Monitor] -- June 27, 2008: Client activity: new Python class link:http://www.lestat.st/en/informatique/projets/pynut[PyNUT] -- June 19, 2008: Client activity: KNutClient 0.9.4 -- May 7, 2008: 2.2.2 released -- April 25, 2008: 2.2.2-pre3 released -- April 15, 2008: 2.2.2-pre2 released -- April 2, 2008: 2.2.2-pre1 released -- December 21, 2007: 2.2.1 released -- December 17, 2007: 2.2.1-pre2 released -- October 4, 2007: 2.2.1-pre1 released -- August 31, 2007: Client activity: UPS Monitor link update -- August 31, 2007: Client activity: link:http://sourceforge.net/projects/winnutclient/[Windows NUT client 1.5.0] -- July 5, 2007: 2.2.0 released -- June 26, 2007: 2.2.0-pre2 released -- June 5, 2007: Client activity: link:http://collectd.org/[collectd NUT plugin] -- June 4, 2007: 2.2.0-pre1 released -- April 10, 2007: Client activity: KNutClient 0.9.3 -- January 15, 2007: 2.0.5 released -- January 8, 2007: Client activity: link:http://sourceforge.net/projects/winnutclient/[Windows NUT client] -- January 4, 2007: 2.0.5-pre2 released -- December 20, 2006: 2.0.5-pre1 released -- July 27, 2006: 2.0.4 released -- July 18, 2006: 2.0.4-pre2 released -- July 7, 2006: 2.0.4-pre1 released -- February 7, 2006: 2.0.3 released -- December 22, 2005: 2.0.3-pre2 released -- August 16, 2005: 2.0.3-pre1 released -- June 27, 2005: 2.0.2 released -- June 22, 2005: 2.0.2-pre2 released -- June 15, 2005: new mailing lists ready on link:http://alioth.debian.org/mail/?group_id=30602[Alioth] -- May 4, 2005: 2.0.2-pre1 released -- April 15, 2005: new development infrastructure ready on link:http://alioth.debian.org/projects/nut/[Alioth] -- March 15, 2005: Client activity: first beta of MGE Personal Solution Pac -- March 11, 2005: Client activity: UPS Monitor 0.8 released -- February 24, 2005: 2.0.1 released -- February 2, 2005: Belated announcement: WMNut 0.61 released -- October 20, 2004: Client activity: KNutClient 0.8.5 released -- September 22, 2004: New driver project: BCMXCP -- September 3, 2004: New EU mirror (thanks to Gilles, from Signetic) -- August 10, 2004: Client activity: ups_control 1.7 released diff -Nru nut-2.7.1/docs/website/projects.txt nut-2.7.2/docs/website/projects.txt --- nut-2.7.1/docs/website/projects.txt 2013-11-20 20:53:31.000000000 +0100 +++ nut-2.7.2/docs/website/projects.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,233 +0,0 @@ -Related projects -================ - -There are many programs and devices that integrate NUT support. - -This page tries to track them. - -Graphical desktop clients -------------------------- - -link:http://knut.prynych.cz[KNutClient] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -KNutClient is a visual client for NUT. - -link:http://www.lestat.st/en/informatique/projets/nut-monitor[NUT-Monitor] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -NUT-Monitor is a graphical application to monitor and manage UPSes connected to -a NUT server. This application is written in Python and PyGTK, and uses the -<> class. - -NOTE: NUT-Monitor is part of NUT since version NUT 2.4.1. -It will further evolve toward the NUT Control Center. - -link:https://github.com/zykh/walNUT[walNUT] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A Gnome Shell extension that uses upsc/upscmd to monitor devices and invoke instant commands. - -link:http://sourceforge.net/projects/winnutclient[Windows NUT client] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Windows NUT client is a partial port of KNutClient to Windows using -link:http://www.autoitscript.com[AUTOIT] scripting language. - -link:http://csociety.ecn.purdue.edu/~delpha/winnut/[WinNUT] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -WinNUT is a partial port of the client side of Network UPS Tools (NUT) to Windows. - -NOTE: WinNUT is currently being replaced by a full port to Windows, part of the -official NUT distribution. link:download.html#_binary_packages[MSI packages] -are available too. - -link:http://wmnut.networkupstools.org[WMNUT] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -WMNut is a dockapp program to monitor multiple UPSs statistics through the NUT -(Network UPS Tools) framework on Linux and other systems. - -Network Management Systems (NMS) integration --------------------------------------------- - -link:http://bigsister.graeff.com/[Big Sister system and network monitor] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The "nut" module monitors uninterruptible power supplies under control of the -NUT (Network UPS Tools) free software suite. -It sends alerts on power outages, overload and battery problems. The longterm -graphing may point you to battery aging problems. - -link:http://cacti.net[Cacti monitoring tool] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are three different scripts that add NUT support to Cacti: - -- link:http://forums.cacti.net/about19250.html[PHP script] -- link:http://forums.cacti.net/about14475.html[Ruby script] -- link:http://forums.cacti.net/about9729.html[shell script] - -[[collectd]] -link:http://collectd.org[collectd] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The `collectd` system statistics collection daemon features a -link:http://collectd.org/wiki/index.php/Plugin:NUT[NUT plugin] to -collect statistics from UPSes. - -link:http://xymon.sourceforge.net/[Xymon (Hobbit) monitor] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A link:http://www.revpol.com/xymon_nut_scripts[NUT plugin] is available. - -link:http://monami.sourceforge.net[MonAMI NUT plugin] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A plugin to return UPS status to the MonAMI universal sensor framework. - -link:http://munin.projects.linpro.no[Munin NUT plugin] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A link:http://muninexchange.projects.linpro.no/?search&cid=0&pid=136&phid=279[NUT plugin] is available. - -link:http://www.nagios.org/[Nagios plugin] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The link:http://sourceforge.net/projects/nagiosplug/[check_ups] plugin returns -UPS status to the Nagios monitoring system using NUT. - -Configuration GUIs ------------------- - -link:http://www.knut.noveradsl.cz/knutsetting/index.html[KNutSetting] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -KNutSetting is a visual KDE tool for configuring NUT - Network UPS Tools. - -Other software projects ------------------------ - -[[PyNUT]] -link:http://www.lestat.st/en/informatique/projets/pynut[PyNUT] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -PyNUT is an abstraction class written in Python to access NUT (Network UPS -Tools) server and execute commands without needing to know the communication -protocol. - -NOTE: PyNUT is part of NUT since version NUT 2.4.1. - -link:http://bugs.debian.org/343530[RRDtool logging support] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This patch adds link:http://oss.oetiker.ch/rrdtool[RRDtool] logging support to -NUT. (See also <>.) - -link:http://elrik75.free.fr/ups_control/[ups_control] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A developing Python wrapper to upsc which can generate mails and shutdown the -machine. - -link:http://search.cpan.org/search?dist=ups-nut[UPS::Nut] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A Perl module to talk to an UPS via NUT (Network UPS Tools) upsd. - -NOTE: UPS::Nut is part of NUT since version NUT 2.6.1. - -Hardware projects involving NUT -------------------------------- - -This is an incomplete list of the hardware known to embed NUT. - -link:http://www.dell.com/us/business/p/powervault-nx3500/pd[Dell PowerVault NX3500] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Dell is using NUT to protect the new PowerVault NX3500 storage devices. - -link:http://www.opengear.com/UPS.html[OpenGear] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Opengear provides an advanced NUT integration into many models. -There is also a -link:http://www.opengear.com/Videos/Network-UPS-Tools/Network-UPS-Tools.html[video presentation] -of the NUT integration. - -For more information on Opengear's contributions to NUT, have a look at the -link:acknowledgements.html[acknowledgements information]. - -Synology -~~~~~~~~ - -link:http://www.synology.com[Synology] has worked closely with Arnaud to integrate -link:http://www.synology.com/support/faq_show.php?lang=enu&q_id=300[UPS support] on all -its devices. - -Alcatel Lucent IPBX -~~~~~~~~~~~~~~~~~~~ - -Alcatel has been working for years with us (Patrick Agrain and Arnaud) to -improve NUT integration into some of their IPBX. - -link:http://www.readynas.com/?page_id=92[Netgear ReadyNAS] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The RAIDiator firmware for the ReadyNAS product line includes NUT to either -monitor a local USB UPS, or to connect as a slave to a NUT server. - -link:http://www.thecus.com[Thecus NAS] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Thecus NAS firmware includes NUT for UPS support. The -link:http://www.thecus.com/Downloads/Compatible_List/UPS_List_v1.0_ALL.pdf[following list of devices] is known to be supported. - - -link:http://www.buffalotech.com[Buffalo NAS] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Buffalo TeraStation NAS (Business-class) include NUT for UPS support. - -link:http://www.webbastards.com/projects/[lcd-nut] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A Project to display the status of a UPS on computer through one of the many -cheap LCD matrix displays available on the market. - - -Legacy and discontinued projects --------------------------------- - -link:http://sourceforge.net/projects/gknut/[GKrellM NUT] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Simple UPS monitoring plugin for GKrellM. Uses NUT (Network UPS Tools) for UPS -connection. - -Nut-Graph -~~~~~~~~~ - -PHP4 / GD / MySQL / jpgraph package to visualize logged UPS status data. - -Eaton - Personal Solution Pac -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -NUT configuration and monitoring software for Eaton (previously MGE Office -Protection Systems) units. - -UPS Monitor -~~~~~~~~~~~ - -Multi-threaded python/GTK2 graphical monitoring application. - - -Notes -------- - -- Client authors: send updates on your releases to the NUT users mailing list. -We will also put a link to you in the news section of the top page when things -change. - -- If you know of a project which should be listed, please send in the URL. diff -Nru nut-2.7.1/docs/website/scripts/filter_png.js nut-2.7.2/docs/website/scripts/filter_png.js --- nut-2.7.1/docs/website/scripts/filter_png.js 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/website/scripts/filter_png.js 1970-01-01 01:00:00.000000000 +0100 @@ -1,14 +0,0 @@ -$(function() -{ - var imgs = $("img"); - for(var i = 0; i < imgs.length; i++) - { - var img = $(imgs[i]); - if(img.attr("src").match(/\.png$/i)) - { - img.replaceWith( - "
" - ); - } - } -}); \ Pas de fin de ligne à la fin du fichier diff -Nru nut-2.7.1/docs/website/scripts/jquery.js nut-2.7.2/docs/website/scripts/jquery.js --- nut-2.7.1/docs/website/scripts/jquery.js 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/website/scripts/jquery.js 1970-01-01 01:00:00.000000000 +0100 @@ -1,19 +0,0 @@ -/* - * jQuery JavaScript Library v1.3.2 - * http://jquery.com/ - * - * Copyright (c) 2009 John Resig - * Dual licensed under the MIT and GPL licenses. - * http://docs.jquery.com/License - * - * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) - * Revision: 6246 - */ -(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); -/* - * Sizzle CSS Selector Engine - v0.9.3 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ Pas de fin de ligne à la fin du fichier diff -Nru nut-2.7.1/docs/website/scripts/nut_jquery.js nut-2.7.2/docs/website/scripts/nut_jquery.js --- nut-2.7.1/docs/website/scripts/nut_jquery.js 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/docs/website/scripts/nut_jquery.js 1970-01-01 01:00:00.000000000 +0100 @@ -1,577 +0,0 @@ -var NUT = { - - // UPS table DOM ids - listID: "#ups_list", - listBodyID: "#ups_list_body", - - // Field names - fields: [ - "manufacturer", - "device-type", - "support-level", - "model", - "comment", - "driver" - ], - - // Actual HTML table columns - columns: [ - [ "manufacturer" ], - [ "model", "comment" ], - [ "driver" ], - [ "support-level" ], - ], - - // driver => connection type mappings - driverMap: function(driver) { - - // Try not to catch "usb" across a word boundary: - if (driver.match(/_usb|usbserial|usbhid-ups/)) - return "USB"; - - // TODO: what about IPMI/powerman-pdu? - if (driver.match(/snmp-ups|netxml-ups/)) - return "Network"; - - return "Serial"; - - }, - - // Support level => CSS class mappings - supportLevelClasses: { - 0: "", - 1: "red", - 2: "orange", - 3: "yellow", - 4: "blue", - 5: "green" - }, - - tableCache: false, - - // Parse GET parameters from window url and return them as a hash - // The call format is: - // stable-hcl.html?= - // Refer to docs/stable-hcl.txt for examples - parseGetParameters: function() { - - var url = window.location.href; - url = url.replace(/#$/, ""); - - var fieldPos = url.indexOf("?"); - - var get = {}; - - if (fieldPos > -1) { - - var fileName = url.substring(0, fieldPos); - var getList = url.substring(fieldPos + 1).split("&"); - - for (var i = 0; i < getList.length; i++) { - - var getField = getList[i].split("="); - - key = unescape(getField[0]).toLowerCase(); - - value = unescape(getField[1]); - - // just in case there are any old links out there. - if (key === "manufacturer" && value === "Tripp-Lite") { - value = "Tripp Lite"; - } - - get[key] = value; - - } - - } - - return get; - - }, - - // UPS filter renderers by data column index - filterRenderers: { - - "support-level": function(value) { - - var result = []; - - for (var i = 0; i < value; i++) - result.push("*"); - - return result.join(""); - - }, - - "driver": function(value) { - - return this.driverMap(value); - - }, - - "device-type": function(value) { - - var map = { - "pdu": "Power Distribution Unit", - "ups": "Uninterruptible Power Supply", - "scd": "Solar Controller Device" - } - - return map[value]; - - } - - }, - - // Specific filter handlers - filterHandlers: { - - // Filter functions: - // @param {string} value value to filter - // @param {array} row raw data fields - // @return {boolean} true if value passes the filter, false otherwise - - "driver": function(value, row) { - - var driver = row[this.fields.indexOf("driver")]; - - if (this.driverMap(driver) == value) - return true; - - return false; - - }, - - "support-level": function(value, row) { - - var level = row[this.fields.indexOf("support-level")]; - - if (level >= value) - return true; - - return false; - - } - - }, - - // Returns rendered UPS data according to column index - // @param {integer} index - // @param {string} value - renderFilter: function(index, value) { - - var renderer = this.filterRenderers[this.fields[index]]; - - if (typeof renderer == "function") - return renderer.call(this, value); - - return value; - - }, - - // Initialization method - init: function() { - - this.initFilters(); - this.sortUPSData(UPSData); - this.buildUPSList(UPSData); - this.buildFilters(UPSData); - - var get = this.parseGetParameters(); - - for (var param in get) { - - var filter = $("#"+param); - - if (filter) { - - filter.val(get[param]); - - this.doFilter(); - - } - - } - - }, - - // Initialize filter filters references - initFilters: function() { - - // Display filters fieldset hidden by default for user-agents not using javascript - $("#filters-set").show(); - - this.filters = { - - "support-level": { - index: this.fields.indexOf("support-level"), - field: $("#support-level") - }, - - "device-type": { - index: this.fields.indexOf("device-type"), - field: $("#device-type") - }, - - "manufacturer": { - index: this.fields.indexOf("manufacturer"), - field: $("#manufacturer") - }, - - "model": { - index: this.fields.indexOf("model"), - field: $("#model") - }, - - "driver": { - index: this.fields.indexOf("driver"), - field: $("#connection") - } - - } - - }, - - // Sorts table data by manufacturer and driver - // @param {Object} data - sortUPSData: function(data) { - - var mI = this.fields.indexOf("manufacturer"), - dI = this.fields.indexOf("driver"); - - data.sort(function(a, b) { - - var toLower = function(ar) { - - var res = ar.slice(); - - res.forEach(function(i, index) { - - if (typeof i == "string") - res[index] = i.toLowerCase() - - }); - - return res; - - } - - var c = toLower(a), - d = toLower(b); - - return c[mI] == d[mI] ? c[dI] > d[dI] : c[mI] > d[mI]; - - }); - - }, - - // Builds UPS list from provided data - // @param {array} data - buildUPSList: function(data) { - - var list = $(this.listBodyID); - - // Initialize table cache - if (!this.tableCache) - this.tableCache = list.html(); - - // If we're rebuilding the original table, just use the one in cache - if (data == UPSData && this.tableCache) { - list.html(this.tableCache); - return; - } - - list.empty(); - - // Bailout if no data - if (!data || data.length == 0) - return; - - // Build rows - var cellHistory = [], rows = []; - - var rowHistory = data[0][0]; - - var classes = [ "even", "odd" ], - manufIndex = this.fields.indexOf("manufacturer"), - currentClass = 0; - - data.forEach(function(upsRow, rowIndex) { - - if (upsRow[manufIndex] != rowHistory) { - currentClass = Number(!currentClass); - rowHistory = upsRow[manufIndex]; - } - - var cells = []; - - // Build cells - this.columns.forEach(function(column, colIndex) { - - var cellContent = []; - - column.forEach(function(field) { - cellContent.push(upsRow[this.fields.indexOf(field)]) - }, this); - - cellContent = cellContent.join("
"); - - // Inspect the last cell on this column and increase row span if the current cell has the same content - var cH = cellHistory[colIndex]; - - if (column.indexOf("driver") == -1 && cH && cH.html == cellContent) - cH.rowSpan += 1; - else { - - var cell = ""; - - if (column.indexOf("driver") != -1) { - - cell = { - html: cellContent, - rowSpan: 1, - cls: this.supportLevelClasses[upsRow[this.fields.indexOf("support-level") || ""]] - }; - - } else { - - cell = { - html: cellContent, - rowSpan: 1, - cls: classes[currentClass] - } - - } - - if (column.indexOf("support-level") != -1) - cell.cls += " hidden"; - - cells.push(cell); - - cellHistory[colIndex] = cell; - - } - - }, this); - - rows.push(cells); - - }, this); - - // Generate actual rows/cells tags - rows.forEach(function(r, index) { - - r.forEach(function(c, index) { - r[index] = [ "", c.html, "" ].join(""); - }); - - rows[index] = [ "", r.join(""), "" ].join(""); - - }); - - list.html(rows.join("")); - - }, - - // Initialize filters event listeners - // @param {Object} data - buildFilters: function(data) { - - for (var f in this.filters) { - - var filter = this.filters[f]; - - this.populateCombo(data, filter); - - filter.field.change(this.doFilter); - - var op = $("#op-" + (filter.index)); - - if (op) - op.change(this.doFilter); - - } - - }, - - // Load data in filter combos - // @param {array} data - // @param {object} combo - // @param {integer} index - populateCombo: function(data, filter) { - - var values = []; - var valueDict = {}; - - var combo = filter.field; - var oldValue = combo.val(); - - combo.html(""); - - // Special case for connection type - if (filter.field.attr("id") == "connection") { - - [ "Serial", "USB", "Network" ].forEach(function(type) { - - values.push([ type, type ]); - - }, this); - - } else { - - data.forEach(function(row) { - - var value = row[filter.index]; - - if (value != "" && !valueDict[value]) { - - values.push([ value, this.renderFilter(filter.index, value) ]); - - valueDict[value] = true; - - } - - }, this); - - values = values.sort(); - - } - - values.forEach(function(value) { - - var option = $(document.createElement("option")); - - option.val(value[0]); - option.text(value[1]); - - combo.append(option); - - }, this); - - combo.val(oldValue); - - }, - - // Apply selected filters on UPS list - doFilter: function() { - - var initialRows = UPSData.slice(); - var filteredRows = UPSData.slice(); - - // Applies a single filter on provided UPS data set - // @param {string} value - // @param {integer} index - // @param {array} data - // @returns {array} filtered data set - var applyFilter = function(value, index, data) { - - var tmpData = []; - tmpData = data.slice(); - - tmpData.forEach(function(row, rowIndex) { - - var field = row[index]; - - var handler = this.filterHandlers[this.fields[index]]; - - if (handler) { - - if (!handler.apply(this, [ value, row ])) - data.splice(data.indexOf(row), 1); - - } else if (row[index] != value) - data.splice(data.indexOf(row), 1); - - }, this); - - return data; - - } - - // Sequentially apply filters - for (var f in NUT.filters) { - - var filter = NUT.filters[f]; - var value = filter.field.val(); - - // Is filter active, i.e have the user picked a value in the filter combo - if (value != "-1") { - var opField = $("#op-" + filter.index); - filteredRows = applyFilter.apply(NUT, [ value, filter.index, filteredRows ]); - } - - } - - // Rebuild UPS list and combos according to filtered data - NUT.buildUPSList(filteredRows); - - [ "manufacturer", "model", "driver" ].forEach(function(id) { - - if (this.id != id) - this.populateCombo(filteredRows, this.filters[id]); - - }, NUT); - - }, - - resetCombos: function() { - - for (var f in this.filters) { - - var field = this.filters[f].field; - - this.populateCombo(UPSData, this.filters[f]); - - field.val("-1"); - - } - - this.buildUPSList(UPSData); - - } - -} - -if (typeof Array.prototype.indexOf != "function") { - - Array.prototype.indexOf = function(elt) { - - var i = 0; - - while (i < this.length) { - - if (this[i] == elt) - return i; - - i++; - - } - - return -1; - - } - -} - -if (typeof Array.prototype.forEach != "function") { - - Array.prototype.forEach = function(cb, scope) { - - for (var i = 0, n = this.length; i < n; i++) { - - if (i in this) - cb.call(scope, this[i], i, this); - - } - - } - -} - -// Global initialization -$(function() { - - NUT.init.call(NUT); - -}); diff -Nru nut-2.7.1/docs/website/scripts/toc.js nut-2.7.2/docs/website/scripts/toc.js --- nut-2.7.1/docs/website/scripts/toc.js 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/website/scripts/toc.js 1970-01-01 01:00:00.000000000 +0100 @@ -1,69 +0,0 @@ -/* Author: Mihai Bazon, September 2002 - * http://students.infoiasi.ro/~mishoo - * - * Table Of Content generator - * Version: 0.4 - * - * Feel free to use this script under the terms of the GNU General Public - * License, as long as you do not remove or alter this notice. - */ - - /* modified by Troy D. Hanson, September 2006. License: GPL */ - /* modified by Stuart Rackham, October 2006. License: GPL */ - -function getText(el) { - var text = ""; - for (var i = el.firstChild; i != null; i = i.nextSibling) { - if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants. - text += i.data; - else if (i.firstChild != null) - text += getText(i); - } - return text; -} - -function TocEntry(el, text, toclevel) { - this.element = el; - this.text = text; - this.toclevel = toclevel; -} - -function tocEntries(el, toclevels) { - var result = new Array; - var re = new RegExp('[hH]([2-'+(toclevels+1)+'])'); - // Function that scans the DOM tree for header elements (the DOM2 - // nodeIterator API would be a better technique but not supported by all - // browsers). - var iterate = function (el) { - for (var i = el.firstChild; i != null; i = i.nextSibling) { - if (i.nodeType == 1 /* Node.ELEMENT_NODE */) { - var mo = re.exec(i.tagName) - if (mo) - result[result.length] = new TocEntry(i, getText(i), mo[1]-1); - iterate(i); - } - } - } - iterate(el); - return result; -} - -// This function does the work. toclevels = 1..4. -function generateToc(toclevels) { - var toc = document.getElementById("toc"); - var entries = tocEntries(document.getElementsByTagName("body")[0], toclevels); - for (var i = 0; i < entries.length; ++i) { - var entry = entries[i]; - if (entry.element.id == "") - entry.element.id = "toc" + i; - var a = document.createElement("a"); - a.href = "#" + entry.element.id; - a.appendChild(document.createTextNode(entry.text)); - var div = document.createElement("div"); - div.appendChild(a); - div.className = "toclevel" + entry.toclevel; - toc.appendChild(div); - } - if (entries.length == 0) - document.getElementById("header").removeChild(toc); -} diff -Nru nut-2.7.1/docs/website/ups-protocols.txt nut-2.7.2/docs/website/ups-protocols.txt --- nut-2.7.1/docs/website/ups-protocols.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/website/ups-protocols.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,110 +0,0 @@ - -WARNING: this is a Work In Progress document. For the time being, you -should refer to the -link:http://old.networkupstools.org/protocols/[old NUT website library]. - -UPS Protocols -------------- - -All protocol information on this site is provided in the hope that it will be -useful. - -Some are officialy provided by the manufacturers, while others are the result of -reverse engineering work. - -However, UPS hardware is plentiful and varied. Test your software thoroughly, as -these documents may not always reflect the reality within your equipment! - -APC -~~~ - -- link:ups-protocols/apcsmart.html[APC's smart protocol] - unofficial decoding work - -Belkin -~~~~~~ - -- link:ups-protocols/belkinsmart.html[Belkin's smart protocol] - unofficial decoding work on the Regulator Pro - -- link:ups-protocols/belkinuniversal.html[Belkin Universal UPS] - courtesy of Peter Selinger - -Eaton -~~~~~ - -- Eaton Protocols Library - all official Eaton documents are here, including Powerware, MGE, ... - -- Best Fortress protocol - for LI 520, 720, 1020, and 1420 models - -- SOLA/Best Power protocol (Phoenixtec) - courtesy of Invensys Energy Systems - -MicroDowell -~~~~~~~~~~~ - -- MicroDowell UPS Serial Protocol v3.3.1 (PDF, 225KB) - -MGE -~~~ - -- MGE Protocols Library - all official MGE documents are here - -ONEAC -~~~~~ - -- ONEAC serial information - two scans - -Opti-UPS -~~~~~~~~ - -- Opti-UPS protocol - more guesswork - -Powercom -~~~~~~~~ - -All these document are officially provided by Powercom - -- link:ups-protocols/powercom/Software_USB_communication_controller_BNT_series.doc[USB information for BNT series] -- link:ups-protocols/powercom/Software_USB_communication_controller_IMPERIAL_series_R21.doc[USB information for IMPERIAL series] -- link:ups-protocols/powercom/Software_USB_communication_controller_SKP_series.doc[USB information for SKP series] -- link:ups-protocols/powercom/Software_USB_communication_controller_WOW_series.doc[USB information for WOW series] - -PowerKinetics -~~~~~~~~~~~~~ - -- PowerKinetics MiniCOL protocol - courtesy of PowerKinetics technical support - -Riello -~~~~~~ - -All these document are officially provided by Riello - -- link:ups-protocols/riello/PSGPSER-0104.pdf[GPSER protocol] -- link:ups-protocols/riello/PSSENTR-0100.pdf[Sentry HPS / HTS protocol] -- link:ups-protocols/riello/Riello_UPS_protocol_list.pdf[UPS protocol list] - -Standard protocols -~~~~~~~~~~~~~~~~~~ - -SEC -^^^ -- link:ups-protocols/sec.html[SEC protocol] - superset of the US9003, below - -- link:ups-protocols/sec-standard.html[SEC standard UPS Communication interface] - 15 scanned pages - -- link:us9003.html[US9003 UPS Communication Interface] - -SNMP -^^^^ - -- link:ups-protocols/snmp.html[SNMP] -- link:http://powerquality.eaton.com/Support/Software-Drivers/Downloads/connectivity-firmware/bestpwr2.mib[Best Power MIB] - -USB/HID Power Devices Class -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -- link:http://www.usb.org/developers/devclass_docs/pdcv10.pdf[USB Usage Tables for HID Power Devices] (offsite PDF, 351K) - - -Various -~~~~~~~ - -- link:ups-protocols/megatec.html[Megatec] UPS Protocol - diff -Nru nut-2.7.1/docs/website/web-layout.conf nut-2.7.2/docs/website/web-layout.conf --- nut-2.7.1/docs/website/web-layout.conf 2013-07-31 22:41:31.000000000 +0200 +++ nut-2.7.2/docs/website/web-layout.conf 1970-01-01 01:00:00.000000000 +0100 @@ -1,185 +0,0 @@ -# -# Network UPS Tools website layout (based on AsciiDoc's). -# Three division CSS based layout -# -# Simulated frames using CSS (fixed banner and menu, scrolling content). -# NOTE: This layout does not work with IE6. -# -# +-----------------------------------------------------+ -# | #layout-banner | -# +--------------+--------------------------------------+ -# | | | -# | | | -# | #layout-menu | #layout-content | -# | | | -# | | | -# | | | -# +--------------+--------------------------------------+ -# -# Each of the three divisions is enclosed in a same-named *-box division -# which position and size the layout. -# -# - The #layout-content division is a container for AsciiDoc page documents. -# - Documents rendered in the #layout-content use the standard AsciiDoc -# xhtml11 backend stylesheets. - -[specialwords] -#emphasizedwords=(?u)\\?\bNetwork UPS Tools\b -#monospacedwords=(?u)\\?\basciidoc\(1\) (?u)\\?\ba2x\(1\) - -[header] - - - -Network UPS Tools - {doctitle} - - - - - -{doctype-manpage} -ifdef::quirks[] - -endif::quirks[] - - - -ifdef::toc[] - - -endif::toc[] -ifdef::hcl[] - - - -endif::hcl[] - - - - -
-
- -
Network UPS Tools
-
Power Devices support
-
-
- -
-
-# Article, book header. -ifndef::doctype-manpage[] - -ifdef::toc[] -
-
Table of Contents
- -
-endif::toc[] -endif::doctype-manpage[] -# Man page header. -ifdef::doctype-manpage[] - -endif::doctype-manpage[] - -[footer] - -
-
- - -endif::analytics[] - - diff -Nru nut-2.7.1/docs/website/website.txt nut-2.7.2/docs/website/website.txt --- nut-2.7.1/docs/website/website.txt 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/docs/website/website.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,19 +0,0 @@ -Welcome -======= - -The primary goal of the Network UPS Tools (NUT) project is to provide support -for Power Devices, such as Uninterruptible Power Supplies, Power Distribution -Units and Solar Controllers. - -NUT provides many control and monitoring link:features.html[features], with a -uniform control and management interface. - -More than 100 different manufacturers, and several thousands models are -link:stable-hcl.html[compatible]. - -This software is the combined effort of many -link:acknowledgements.html[individuals and companies]. - -News ----- -include::news.txt[] diff -Nru nut-2.7.1/docs/xhtml.xsl nut-2.7.2/docs/xhtml.xsl --- nut-2.7.1/docs/xhtml.xsl 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/docs/xhtml.xsl 2014-02-25 16:39:55.000000000 +0100 @@ -0,0 +1,19 @@ + + + + + + + + + + diff -Nru nut-2.7.1/drivers/al175.c nut-2.7.2/drivers/al175.c --- nut-2.7.1/drivers/al175.c 2013-11-20 20:53:31.000000000 +0100 +++ nut-2.7.2/drivers/al175.c 2014-04-05 21:45:39.000000000 +0200 @@ -53,7 +53,7 @@ #define DRIVER_NAME "Eltek AL175/COMLI driver" -#define DRIVER_VERSION "0.11" +#define DRIVER_VERSION "0.12" /* driver description structure */ upsdrv_info_t upsdrv_info = { @@ -462,7 +462,7 @@ const byte_t *reply_head = raw_reply_head.begin - 1; if ( (raw_reply_head.end - raw_reply_head.begin) != 10) { - upsdebugx(3, "%s: wrong size\t(%i != 10)", __func__, (raw_reply_head.end - raw_reply_head.begin)); + upsdebugx(3, "%s: wrong size\t(%i != 10)", __func__, (int)(raw_reply_head.end - raw_reply_head.begin)); return -1; /* wrong size */ } @@ -549,7 +549,7 @@ if ( (raw_reply.end - raw_reply.begin) != (ptrdiff_t)(10 + io_head->len)) { upsdebugx(3, "%s: corrupt sentence\t(%i != %i)", - __func__, raw_reply.end - raw_reply.begin, 10 + io_head->len); + __func__, (int)(raw_reply.end - raw_reply.begin), 10 + io_head->len); return -1; /* corrupt sentence */ } @@ -597,7 +597,7 @@ const byte_t *ack = raw_ack.begin - 1; if ( (raw_ack.end - raw_ack.begin) !=5) { - upsdebugx(3, "%s: wrong size\t(%i != 5)", __func__, raw_ack.end - raw_ack.begin); + upsdebugx(3, "%s: wrong size\t(%i != 5)", __func__, (int)(raw_ack.end - raw_ack.begin)); return -1; /* wrong size */ } @@ -965,7 +965,8 @@ if ( (io.addr != addr) || (io.len != count) ) { upsdebugx(3, "%s: io_head mismatch\t(%x,%x != %x,%x)", - __func__, io.addr, io.len, addr, count); + __func__, io.addr, io.len, addr, + (unsigned int)count); return -1; } diff -Nru nut-2.7.1/drivers/apc-mib.c nut-2.7.2/drivers/apc-mib.c --- nut-2.7.1/drivers/apc-mib.c 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/drivers/apc-mib.c 2014-02-25 16:39:34.000000000 +0100 @@ -72,7 +72,7 @@ { 1, "" }, /* unknown */ { 2, "OL" }, /* onLine */ { 3, "OB" }, /* onBattery */ - { 4, "BOOST" }, /* onSmartBoost */ + { 4, "OL BOOST" }, /* onSmartBoost */ { 5, "OFF" }, /* timedSleeping */ { 6, "OFF" }, /* softwareBypass */ { 7, "OFF" }, /* off */ @@ -80,7 +80,7 @@ { 9, "BYPASS" }, /* switchedBypass */ { 10, "BYPASS" }, /* hardwareFailureBypass */ { 11, "OFF" }, /* sleepingUntilPowerReturn */ - { 12, "TRIM" }, /* onSmartTrim */ + { 12, "OL TRIM" }, /* onSmartTrim */ { 0, "NULL" } } ; diff -Nru nut-2.7.1/drivers/belkin-hid.c nut-2.7.2/drivers/belkin-hid.c --- nut-2.7.1/drivers/belkin-hid.c 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/drivers/belkin-hid.c 2014-04-07 20:37:40.000000000 +0200 @@ -3,7 +3,7 @@ * Copyright (C) * 2003 - 2008 Arnaud Quette * 2005 Peter Selinger - * 2011 Charles Lepple + * 2011, 2014 Charles Lepple * * Sponsored by MGE UPS SYSTEMS * @@ -29,7 +29,7 @@ #include "belkin-hid.h" #include "usb-common.h" -#define BELKIN_HID_VERSION "Belkin HID 0.15" +#define BELKIN_HID_VERSION "Belkin HID 0.16" /* Belkin */ #define BELKIN_VENDORID 0x050d @@ -65,6 +65,8 @@ /* Liebert PowerSure PSA UPS */ { USB_DEVICE(LIEBERT_VENDORID, 0x0001), NULL }, + /* Liebert PowerSure PSI 1440 */ + { USB_DEVICE(LIEBERT_VENDORID, 0x0004), NULL }, /* Terminating entry */ { -1, -1, NULL } diff -Nru nut-2.7.1/drivers/blazer_ser.c nut-2.7.2/drivers/blazer_ser.c --- nut-2.7.1/drivers/blazer_ser.c 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/blazer_ser.c 2014-02-25 16:39:34.000000000 +0100 @@ -100,7 +100,7 @@ void upsdrv_help(void) { - printf("Read The Fine Manual ('man 8 blazer')\n"); + printf("Read The Fine Manual ('man 8 blazer_ser')\n"); } diff -Nru nut-2.7.1/drivers/blazer_usb.c nut-2.7.2/drivers/blazer_usb.c --- nut-2.7.1/drivers/blazer_usb.c 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/blazer_usb.c 2014-02-27 22:17:32.000000000 +0100 @@ -28,7 +28,7 @@ #include "blazer.h" #define DRIVER_NAME "Megatec/Q1 protocol USB driver" -#define DRIVER_VERSION "0.10" +#define DRIVER_VERSION "0.11" /* driver description structure */ upsdrv_info_t upsdrv_info = { @@ -176,7 +176,7 @@ static int ippon_command(const char *cmd, char *buf, size_t buflen) { char tmp[64]; - int ret; + int ret, len; size_t i; snprintf(tmp, sizeof(tmp), "%s", cmd); @@ -207,10 +207,19 @@ return ret; } - snprintf(buf, buflen, "%.*s", ret, tmp); - - upsdebugx(3, "read: %.*s", (int)strcspn(buf, "\r"), buf); - return ret; + /* + * As Ippon will always return 64 bytes in response, we have to + * calculate and return length of actual response data here. + * Empty response will look like 0x00 0x0D, otherwise it will be + * data string terminated by 0x0D. + */ + len = (int)strcspn(tmp, "\r"); + upsdebugx(3, "read: %.*s", len, tmp); + if (len > 0) { + len ++; + } + snprintf(buf, buflen, "%.*s", len, tmp); + return len; } @@ -443,7 +452,9 @@ case -ETIMEDOUT: /* Connection timed out */ case -EOVERFLOW: /* Value too large for defined data type */ +#ifdef EPROTO case -EPROTO: /* Protocol error */ +#endif default: break; } @@ -480,7 +491,7 @@ void upsdrv_help(void) { - printf("Read The Fine Manual ('man 8 blazer')\n"); + printf("Read The Fine Manual ('man 8 blazer_usb')\n"); } @@ -585,7 +596,7 @@ "and make sure you have an up-to-date version of NUT. If this does not help,\n" "try running the driver with at least 'subdriver', 'vendorid' and 'productid'\n" "options specified. Please refer to the man page for details about these options\n" - "(man 8 blazer).\n"); + "(man 8 blazer_usb).\n"); } if (!subdriver_command) { diff -Nru nut-2.7.1/drivers/compaq-mib.c nut-2.7.2/drivers/compaq-mib.c --- nut-2.7.1/drivers/compaq-mib.c 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/drivers/compaq-mib.c 2014-04-07 21:09:21.000000000 +0200 @@ -30,7 +30,7 @@ #include "compaq-mib.h" -#define CPQPOWER_MIB_VERSION "1.5" +#define CPQPOWER_MIB_VERSION "1.6" #define DEFAULT_ONDELAY 30 #define DEFAULT_OFFDELAY 20 @@ -188,9 +188,10 @@ { "ups.L3.realpower", 0, 0.1, CPQPOWER_OID_OUT_POWER ".3", "", SU_OUTPUT_3, NULL }, { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, CPQPOWER_OID_POWER_STATUS, "OFF", SU_STATUS_PWR, cpqpower_pwr_info }, { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, CPQPOWER_OID_BATT_STATUS, "", SU_STATUS_PWR, cpqpower_battery_abm_status }, - { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, CPQPOWER_OID_ALARM_OB, "", SU_STATUS_BATT, cpqpower_alarm_ob }, - { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, CPQPOWER_OID_ALARM_LB, "", SU_STATUS_BATT, cpqpower_alarm_lb }, -/* { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, IETF_OID_BATT_STATUS, "", SU_STATUS_BATT, ietf_batt_info }, */ + /* The next two lines are no longer supported by MIB ver. 1.76 (Github issue 118) + * { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, CPQPOWER_OID_ALARM_OB, "", SU_STATUS_BATT, cpqpower_alarm_ob }, + * { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, CPQPOWER_OID_ALARM_LB, "", SU_STATUS_BATT, cpqpower_alarm_lb }, */ + /* { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, IETF_OID_BATT_STATUS, "", SU_STATUS_BATT, ietf_batt_info }, */ /* FIXME: this should use either .1.3.6.1.4.1.232.165.3.11.1.0 (upsTopologyType) * or .1.3.6.1.4.1.232.165.3.11.2.0 (upsTopoMachineCode) */ { "ups.type", ST_FLAG_STRING, SU_INFOSIZE, CPQPOWER_OID_POWER_STATUS, "", SU_STATUS_PWR, cpqpower_mode_info }, diff -Nru nut-2.7.1/drivers/dstate-hal.c nut-2.7.2/drivers/dstate-hal.c --- nut-2.7.1/drivers/dstate-hal.c 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/dstate-hal.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,710 +0,0 @@ -/* dstate-hal.c - Network UPS Tools driver-side state management - This is a compatibility interface that encapsulate the HAL bridge - into the NUT dstate API for NUT drivers - - Copyright (C) 2006-2007 Arnaud Quette - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include -#include -#include -#include -#include -#include -#include - -#include "common.h" -#include "config.h" -#include "dstate-hal.h" -#include "extstate.h" -/* #include "state.h" -#include "parseconf.h" */ - -#include - -/* FIXME: export command and RW variables (using the HAL example: addon-cpufreq and macbook addon) */ -/* beeper.enable, beeper.disable => SetBeeper(bool) - beeper.toggle => ToggleBeeper(void) - -org.freedesktop.Hal.Device.UPS.SetSounder (bool) - - -Shutdown() or ShutOff() - shutdown.return - shutdown.stayoff - shutdown.reboot - shutdown.reboot.graceful - -#define UPS_ERROR_GENERAL "GeneralError" -#define UPS_ERROR_UNSUPPORTED_FEATURE "FeatureNotSupported" -#define UPS_ERROR_PERMISSION_DENIED "PermissionDenied" - -****** implementation ******* - -#define DBUS_INTERFACE "org.freedesktop.Hal.Device.UPS" - -if (!libhal_device_claim_interface(halctx, udi, DBUS_INTERFACE, - - " \n" - " \n" - " \n" - " \n" - - &dbus_dbus_error)) { - fprintf(stderr, "Cannot claim interface: %s", dbus_dbus_error.message); - goto Error; - } - - -*/ - -/* - * static int sockfd = -1, stale = 1, alarm_active = 0; - * static struct st_tree_t *dtree_root = NULL; - * static struct conn_t *connhead = NULL; - * static struct cmdlist_t *cmdhead = NULL; - * static char *sockfn = NULL; - * static char status_buf[ST_MAX_VALUE_LEN], - * alarm_buf[ST_MAX_VALUE_LEN]; - */ - -struct ups_handler upsh; - -LibHalContext *halctx = NULL; -char *udi; -int ac_present = 0; /* 0 = false ; 1 = true */ -extern char *dbus_methods_introspection; - -static void* runtime_handler(LibHalChangeSet *cs, char* runtime); -static void* level_handler(LibHalChangeSet *cs, char* critical_level); -static void* battery_type_handler(LibHalChangeSet *cs, char* battery_type); - -/* Structure to lookup between NUT and HAL data */ -typedef struct { - const char *nut_name; /* NUT variable name */ - const char *hal_name; /* HAL variable name */ - int hal_type; /* HAL variable type */ - void *(*fun)(LibHalChangeSet *cs, - char *value); /* conversion function. */ -} info_lkp_t; - -enum hal_type_t -{ - NONE = 0, - HAL_TYPE_INT, - HAL_TYPE_BOOL, - HAL_TYPE_STRING -}; - -/* Structure to lookup between NUT commands and HAL/DBus methods */ -typedef struct { - char *nut_name; /* NUT command name */ - char *hal_name; /* HAL/DBus method name */ - char *xml_introspection; /* HAL/DBus method introspection */ -/* FIXME: how to lookup param values between HAL and NUT?? */ -/* void *(*fun)(LibHalChangeSet *cs, - char *value);*/ /* NUT function */ -} method_lkp_t; - -#if 0 -/* Data to lookup between NUT commands and HAL/DBus methods - * for dstate_addcmd() */ -static method_lkp_t nut2hal_cmd[] = -{ - /* ups.status is handled by status_set() calls */ - { - "beeper.enable", - "SetBeeper", - " \n" - " \n" - " \n" - " \n" - }, - - /* Terminating element */ - { NULL, NULL, NULL } -}; -#endif - -/* Data to lookup between NUT and HAL for dstate_setinfo() */ -static info_lkp_t nut2hal_info[] = -{ - /* ups.status is handled by status_set() calls */ - { "battery.charge.low", "battery.charge_level.low", HAL_TYPE_INT, *level_handler }, - /* { "battery.charge.low", "battery.reporting.low", HAL_TYPE_INT, NULL }, */ - { "battery.charge.low", "battery.alarm.design", HAL_TYPE_INT, NULL }, - - { "battery.charge", "battery.charge_level.current", HAL_TYPE_INT, NULL }, - { "battery.charge", "battery.charge_level.percentage", HAL_TYPE_INT, NULL }, - { "battery.charge", "battery.reporting.current", HAL_TYPE_INT, NULL }, - { "battery.charge", "battery.reporting.percentage", HAL_TYPE_INT, NULL }, - { "battery.runtime", "battery.remaining_time", HAL_TYPE_INT, *runtime_handler }, - /* raw version (PbAc) */ - { "battery.type", "battery.reporting.technology", HAL_TYPE_STRING, NULL }, - /* Human readable version */ - { "battery.type", "battery.technology", HAL_TYPE_STRING, *battery_type_handler }, - - /* AQ note: Not sure it fits! */ - /* HAL marked as mandatory! */ - { "battery.voltage", "battery.voltage.current", HAL_TYPE_INT, NULL }, - { "battery.voltage.nominal", "battery.voltage.design", HAL_TYPE_INT, NULL }, - - { "ups.mfr", "battery.vendor", HAL_TYPE_STRING, NULL }, - { "ups.model", "battery.model", HAL_TYPE_STRING, NULL }, - { "ups.serial", "battery.serial", HAL_TYPE_STRING, NULL }, - - /* Terminating element */ - { NULL, NULL, NONE, NULL } -}; - -/* Functions to lookup between NUT and HAL */ -static info_lkp_t *find_nut_info(const char *nut_varname, info_lkp_t *prev_info_item); - -/* HAL accessors wrappers */ -void hal_set_string(LibHalChangeSet *cs, const char *key, const char *value); -void hal_set_int(LibHalChangeSet *cs, const char *key, const int value); -void hal_set_bool(LibHalChangeSet *cs, const char *key, const dbus_bool_t value); -int hal_get_int(const char *key); -char *hal_get_string(const char *key); - -/* Handle warning charge level according to the critical level */ -static void* level_handler(LibHalChangeSet *cs, char* critical_level) -{ - /* Magic formula to generate the warning level */ - int int_critical_level = atoi(critical_level); - /* warning level = critical + 1/3 of (100 % - critical level), approx at the leat mod 10 */ - int int_warning_level = int_critical_level + ((100 - int_critical_level) / 3); - int_warning_level -= (int_warning_level % 10); - - /* Set the critical level value */ - hal_set_int (cs, "battery.charge_level.low", int_critical_level); - hal_set_int (cs, "battery.reporting.low", int_critical_level); - - /* Set the warning level value (FIXME: set to 50 % for now) */ - hal_set_int (cs, "battery.charge_level.warning", int_warning_level); - hal_set_int (cs, "battery.reporting.warning", int_warning_level); - - return NULL; /* Nothing to return */ -} - -/* Handle runtime exposition according to the AC status */ -static void* runtime_handler(LibHalChangeSet *cs, char* runtime) -{ - if (ac_present == 0) { - /* unSet the runtime auto computation and rely upon NUT.battery.runtime*/ - hal_set_bool (cs, "battery.remaining_time.calculate_per_time", FALSE); - - /* Set the runtime value */ - hal_set_int (cs, "battery.remaining_time", atoi(runtime)); - } - else { - /* Set the runtime auto computation */ - hal_set_bool (cs, "battery.remaining_time.calculate_per_time", TRUE); - - /* Set the runtime value */ - hal_set_int (cs, "battery.remaining_time", 0); - } - return NULL; /* Nothing to return */ -} - -/* Handle the battery technology reporting */ -static void* battery_type_handler(LibHalChangeSet *cs, char* battery_type) -{ - if (!strncmp (battery_type, "PbAc", 4)) { - hal_set_string(cs, "battery.technology", "lead-acid"); - } - /* FIXME: manage other types (lithium-ion, lithium-polymer, - * nickel-metal-hydride, unknown */ - - return NULL; /* Nothing to return */ -} - -/******************************************************************** - * dstate compatibility interface - *******************************************************************/ -void dstate_init(const char *prog, const char *port) -{ - DBusError dbus_error; - LibHalChangeSet *cs; - - dbus_error_init (&dbus_error); - - cs = libhal_device_new_changeset (udi); - if (cs == NULL) { - fatalx (EXIT_FAILURE, "Cannot initialize changeset"); - } - - /* UPS always report charge as percent */ - hal_set_string (cs, "battery.charge_level.unit", "percent"); - hal_set_string (cs, "battery.reporting.unit", "percent"); - hal_set_string (cs, "battery.alarm.unit", "percent"); - - /* Various UPSs assumptions */ - /****************************/ - /* UPS are always rechargeable! */ - /* FIXME: Check for NUT extension however: ie HID->UPS.PowerSummary.Rechargeable - * into battery.rechargeable - * or always expose it? - */ - hal_set_bool (cs, "battery.is_rechargeable", TRUE); - - /* UPS always has a max battery charge of 100 % */ - hal_set_int (cs, "battery.charge_level.design", 100); - hal_set_int (cs, "battery.charge_level.last_full", 100); - hal_set_int (cs, "battery.reporting.design", 100); - hal_set_int (cs, "battery.reporting.last_full", 100); - - /* NUT always express Voltage in Volts "V" */ - /* But not all UPSs provide the data - * battery.voltage.{design,current} */ - hal_set_string (cs, "battery.voltage.unit", "V"); - - /* UPS always have a battery! */ - /* Note(AQU): wrong with some solar panel usage, where the UPS */ - /* is just an energy source switch! */ - /* FIXME: to be processed (need possible NUT extension) */ - hal_set_bool (cs, "battery.present", TRUE); - - /* FIXME: can be improved?! (implies "info.recall.vendor") */ - hal_set_bool (cs, "info.is_recalled", FALSE); - - /* Set generic properties */ - hal_set_string (cs, "battery.type", "ups"); - libhal_device_add_capability (halctx, udi, "battery", &dbus_error); - libhal_device_add_capability (halctx, udi, "ac_adaptor", &dbus_error); - - /* FIXME: can be improved?! Set granularity (1 %)*/ - hal_set_int (cs, "battery.charge_level.granularity_1", 1); - hal_set_int (cs, "battery.charge_level.granularity_2", 1); - hal_set_int (cs, "battery.reporting.granularity_1", 1); - hal_set_int (cs, "battery.reporting.granularity_2", 1); - - dbus_error_init (&dbus_error); - /* NOTE: commit_changeset won't do IPC if set is empty */ - libhal_device_commit_changeset (halctx, cs, &dbus_error); - libhal_device_free_changeset (cs); - - if (dbus_error_is_set (&dbus_error)) - dbus_error_free (&dbus_error); -} - - -const char *dstate_getinfo(const char *var) -{ - info_lkp_t *nut2hal_info = find_nut_info(var, NULL); - -/* FIXME: use the data exposed by NUT on the DBus when available */ - - if (nut2hal_info != NULL) { - - switch (nut2hal_info->hal_type) - { -/* case HAL_TYPE_INT: - static char value[8]; - snprintf(value, sizeof(value), "%i", hal_get_int(nut2hal_info->hal_name)); - return value; - case HAL_TYPE_BOOL: - hal_set_bool(cs, nut2hal_info->hal_name, TRUE); - break; -*/ - case HAL_TYPE_STRING: - return hal_get_string(nut2hal_info->hal_name); - } - } - return NULL; -} - -int dstate_setinfo(const char *var, const char *fmt, ...) -{ - va_list ap; - int ret = 1; - LibHalChangeSet *cs; - DBusError dbus_error; - char value[ST_MAX_VALUE_LEN]; - info_lkp_t *nut2hal_info = NULL, *prev_nut2hal_info = NULL; - - va_start(ap, fmt); - vsnprintf(value, sizeof(value), fmt, ap); - va_end(ap); - - cs = libhal_device_new_changeset (udi); - if (cs == NULL) { - fatalx (EXIT_FAILURE, "Cannot initialize changeset"); - } - - /* Loop on getting HAL variable(s) matching this NUT variable */ - while ( (nut2hal_info = find_nut_info(var, prev_nut2hal_info)) != NULL) - { - upsdebugx(2, "dstate_setinfo: %s => %s (%s)\n", var, nut2hal_info->hal_name, value); - - if (nut2hal_info->fun != NULL) - nut2hal_info->fun(cs, value); - else { - switch (nut2hal_info->hal_type) - { - case HAL_TYPE_INT: - hal_set_int(cs, nut2hal_info->hal_name, atoi(value)); - break; - case HAL_TYPE_BOOL: - /* FIXME: howto lookup TRUE/FALSE? */ - hal_set_bool(cs, nut2hal_info->hal_name, TRUE); - break; - case HAL_TYPE_STRING: - hal_set_string(cs, nut2hal_info->hal_name, value); - break; - } - } - prev_nut2hal_info = nut2hal_info; - } - - dbus_error_init (&dbus_error); - /* NOTE: commit_changeset won't do IPC if set is empty */ - libhal_device_commit_changeset(halctx,cs,&dbus_error); - libhal_device_free_changeset (cs); - - if (dbus_error_is_set (&dbus_error)) - dbus_error_free (&dbus_error); - - return ret; -} - - -int dstate_addenum(const char *var, const char *fmt, ...) -{ - return 0; -} - -int dstate_addrange(const char *var, const int min, const int max) -{ - return 0; -} - -const st_tree_t *dstate_getroot(void) -{ - return NULL; -} - -int dstate_delinfo(const char *var) -{ - return 0; -} - -int dstate_delcmd(const char *var) -{ - return 0; -} - -void dstate_setflags(const char *var, int flags) -{ - return; -} - -void dstate_setaux(const char *var, int aux) -{ - return; -} - -void dstate_dataok(void) -{ - return; -} - -void dstate_datastale(void) -{ - return; -} - -void dstate_free(void) -{ - return; -} - -/* extrafd: provided for waking up based on the driver's UPS fd */ -int dstate_poll_fds(struct timeval timeout, int extrafd) -{ - /* drivers expect us to limit the polling rate here */ - sleep(timeout.tv_sec); - - /* the timeout expired */ - return 1; -} - -/* clean out the temp space for a new pass */ -void status_init(void) -{ - /* Nothing to do */ - return; -} - -/* ups.status element conversion */ -void status_set(const char *buf) -{ - upsdebugx(2, "status_set: %s", buf); - - /* Note: only usbhid-ups supported devices expose [DIS]CHRG status */ - /* along with the standard OL (online) / OB (on battery) status! */ - if ( (strcmp(buf, "DISCHRG") == 0) || (strcmp(buf, "OB") == 0) ) - { - ac_present = 0; - } - else if ( (strcmp(buf, "CHRG") == 0) || (strcmp(buf, "OL") == 0) ) - { - ac_present = 1; - } - else - upsdebugx(2, "status_set: dropping status %s (not managed)\n", buf); - - return; -} - -/* write the status_buf into the externally visible dstate storage */ -void status_commit(void) -{ - LibHalChangeSet *cs; - DBusError dbus_error; - int curlevel, warnlevel, lowlevel; - - upsdebugx(2, "status_commit"); - - cs = libhal_device_new_changeset (udi); - if (cs == NULL) { - fatalx (EXIT_FAILURE, "Cannot initialize changeset"); - } - - /* Retrieve the levels */ - curlevel = hal_get_int ("battery.charge_level.current"); - warnlevel = hal_get_int ("battery.charge_level.warning"); - lowlevel = hal_get_int ("battery.charge_level.low"); - - /* Set AC present status */ - /* Note: UPSs are also AC adaptors! */ - hal_set_bool (cs, "ac_adaptor.present", (ac_present == 0)?FALSE:TRUE); - - /* Set discharging status */ - hal_set_bool (cs, "battery.rechargeable.is_discharging", (ac_present == 0)?TRUE:FALSE); - - /* Set charging status */ - if (curlevel != 100) - hal_set_bool (cs, "battery.rechargeable.is_charging", (ac_present == 0)?FALSE:TRUE); - - /* Set the battery status (FIXME: are these values valid?) */ - if (curlevel <= lowlevel) - hal_set_string(cs, "battery.charge_level.capacity_state", "critical"); - else if (curlevel <= warnlevel) - hal_set_string(cs, "battery.charge_level.capacity_state", "warning"); /*low?*/ - else - hal_set_string(cs, "battery.charge_level.capacity_state", "ok"); - - dbus_error_init (&dbus_error); - /* NOTE: commit_changeset won't do IPC if set is empty */ - libhal_device_commit_changeset (halctx, cs, &dbus_error); - libhal_device_free_changeset (cs); - - if (dbus_error_is_set (&dbus_error)) - dbus_error_free (&dbus_error); - - return; -} - -/* similar functions for ups.alarm */ -void alarm_init(void) -{ - return; -} - -void alarm_set(const char *buf) -{ - return; -} - -void alarm_commit(void) -{ - return; -} - -/* FIXME: complete and use nut2hal_cmd */ -/* Register DBus methods, by feeling the methods buffer */ -void dstate_addcmd(const char *cmdname) -{ - DBusError dbus_error; - dbus_error_init (&dbus_error); - - upsdebugx(2, "dstate_addcmd: %s\n", cmdname); - - /* beeper.{on,off} */ - /* FIXME: how to deal with beeper.toggle */ - if (!strncasecmp(cmdname, "beeper.disable", 14)) - { - strcat(dbus_methods_introspection, - " \n" - " \n" - " \n" - " \n"); - } -} - - - -/******************************************************************* - * internal functions - *******************************************************************/ - -/**************** - * HAL wrappers * - ****************/ -/* Only update HAL string values if there are real changes */ -void hal_set_string(LibHalChangeSet *cs, const char *key, const char *value) -{ - DBusError dbus_error; - char *new_value = NULL; - - upsdebugx(2, "hal_set_string: %s => %s", key, value); - - dbus_error_init(&dbus_error); - - /* Check if the property already exists */ - if (libhal_device_property_exists (halctx, udi, key, &dbus_error) == TRUE) { - - new_value = libhal_device_get_property_string (halctx, udi, - key, &dbus_error); - - /* Check if the value has really changed */ - if (strcmp(value, new_value)) - libhal_changeset_set_property_string (cs, key, value); - - /* Free the new_value string */ - if (new_value != NULL) - libhal_free_string (new_value); - } - else { - libhal_changeset_set_property_string (cs, key, value); - } -} - -/* Only update HAL int values if there are real changes */ -void hal_set_int(LibHalChangeSet *cs, const char *key, const int value) -{ - DBusError dbus_error; - int new_value; - - upsdebugx(2, "hal_set_int: %s => %i", key, value); - - dbus_error_init(&dbus_error); - - /* Check if the property already exists */ - if (libhal_device_property_exists (halctx, udi, key, &dbus_error) == TRUE) { - - new_value = libhal_device_get_property_int (halctx, udi, - key, &dbus_error); - - /* Check if the value has really changed */ - if (value != new_value) - libhal_changeset_set_property_int (cs, key, value); - } - else { - libhal_changeset_set_property_int (cs, key, value); - } -} - -char *hal_get_string(const char *key) -{ - DBusError dbus_error; - char *value = NULL; - - upsdebugx(2, "hal_get_string: %s", key); - - dbus_error_init(&dbus_error); - - /* Check if the property already exists */ - if (libhal_device_property_exists (halctx, udi, key, &dbus_error) == TRUE) { - - value = libhal_device_get_property_string (halctx, udi, - key, &dbus_error); - } - return value; -} - -int hal_get_int(const char *key) -{ - DBusError dbus_error; - int value = -1; - - upsdebugx(2, "hal_get_int: %s", key); - - dbus_error_init(&dbus_error); - - /* Check if the property already exists */ - if (libhal_device_property_exists (halctx, udi, key, &dbus_error) == TRUE) { - - value = libhal_device_get_property_int (halctx, udi, - key, &dbus_error); - } - return value; -} - -/* Only update HAL int values if there are real changes */ -void hal_set_bool(LibHalChangeSet *cs, const char *key, const dbus_bool_t value) -{ - DBusError dbus_error; - dbus_bool_t new_value; - - upsdebugx(2, "hal_set_bool: %s => %s", key, (value==TRUE)?"true":"false"); - - dbus_error_init(&dbus_error); - - /* Check if the property already exists */ - if (libhal_device_property_exists (halctx, udi, key, &dbus_error) == TRUE) { - - new_value = libhal_device_get_property_bool (halctx, udi, - key, &dbus_error); - - /* Check if the value has really changed */ - if (value != new_value) - libhal_changeset_set_property_bool (cs, key, value); - } - else { - libhal_changeset_set_property_bool (cs, key, value); - } -} - -/* find the next info element definition in info array - * that matches nut_varname, and that is after prev_info_item - * if specified. - * Note that 1 nut item can matches several HAL items - */ -static info_lkp_t *find_nut_info(const char *nut_varname, info_lkp_t *prev_info_item) -{ - info_lkp_t *info_item; - - upsdebugx(2, "find_nut_info: looking up => %s\n", nut_varname); - - if (prev_info_item != NULL) { - /* Start from the item following prev_info_item */ - info_item = ++prev_info_item; - } - else { - info_item = nut2hal_info; - } - - for ( ; info_item != NULL && info_item->nut_name != NULL ; info_item++) { - - if (!strcasecmp(info_item->nut_name, nut_varname)) - return info_item; - } - - return NULL; -} diff -Nru nut-2.7.1/drivers/dstate-hal.h nut-2.7.2/drivers/dstate-hal.h --- nut-2.7.1/drivers/dstate-hal.h 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/dstate-hal.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,94 +0,0 @@ -/* dstate-hal.h - Network UPS Tools driver-side state management - - Copyright (C) 2006 Arnaud Quette - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef DSTATE_HAL_H_SEEN -#define DSTATE_HAL_H_SEEN 1 - -#include "state.h" -#include "attribute.h" - -/*#include "parseconf.h"*/ -#include "upshandler.h" - -#include -#include -#include -#include - -#define DS_LISTEN_BACKLOG 16 -#define DS_MAX_READ 256 /* don't read forever from upsd */ - -/* HAL specific */ -#define DBUS_INTERFACE "org.freedesktop.Hal.Device.UPS" - -DBusHandlerResult dbus_filter_function(DBusConnection *connection, - DBusMessage *message, - void *user_data); - -gboolean dbus_init_local (void); - -#define HAL_WARNING - -/* track client connections */ -/* typedef struct conn_s { - * int fd; - * PCONF_CTX_t ctx; - * struct conn_s *next; - *} conn_t; - */ - extern struct ups_handler upsh; - -void dstate_init(const char *prog, const char *port); -int dstate_poll_fds(struct timeval timeout, int extrafd); -int dstate_setinfo(const char *var, const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 2, 3))); -int dstate_addenum(const char *var, const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 2, 3))); -int dstate_addrange(const char *var, const int min, const int max); -void dstate_setflags(const char *var, int flags); -void dstate_setaux(const char *var, int aux); -const char *dstate_getinfo(const char *var); -void dstate_addcmd(const char *cmdname); -int dstate_delinfo(const char *var); -int dstate_delenum(const char *var, const char *val); -int dstate_delcmd(const char *cmd); -void dstate_free(void); -const st_tree_t *dstate_getroot(void); -const cmdlist_t *dstate_getcmdlist(void); - -void dstate_dataok(void); -void dstate_datastale(void); - -int dstate_is_stale(void); - -/* clean out the temp space for a new pass */ -void status_init(void); - -/* add a status element */ -void status_set(const char *buf); - -/* write the temporary status_buf into ups.status */ -void status_commit(void); - -/* similar functions for ups.alarm */ -void alarm_init(void); -void alarm_set(const char *buf); -void alarm_commit(void); - -#endif /* DSTATE_HAL_H_SEEN */ diff -Nru nut-2.7.1/drivers/libshut.c nut-2.7.2/drivers/libshut.c --- nut-2.7.1/drivers/libshut.c 2013-10-02 14:16:42.000000000 +0200 +++ nut-2.7.2/drivers/libshut.c 2014-02-25 16:39:34.000000000 +0100 @@ -312,7 +312,7 @@ /* FIXME: add variable baudrate detection */ *upsfd = ser_open(device_path); ser_set_speed(*upsfd, device_path, B2400); - setline(*upsfd, 0); + setline(*upsfd, 1); /* initialise communication */ if (!shut_synchronise(*upsfd)) diff -Nru nut-2.7.1/drivers/libusb.c nut-2.7.2/drivers/libusb.c --- nut-2.7.1/drivers/libusb.c 2013-07-31 22:41:31.000000000 +0200 +++ nut-2.7.2/drivers/libusb.c 2014-02-27 22:17:32.000000000 +0100 @@ -33,9 +33,6 @@ #include "usb-common.h" #include "libusb.h" -/* USB standard timeout */ -#define USB_TIMEOUT 5000 - #define USB_DRIVER_NAME "USB communication driver" #define USB_DRIVER_VERSION "0.32" @@ -375,7 +372,9 @@ return 0; case -EOVERFLOW: /* Value too large for defined data type */ +#ifdef EPROTO case -EPROTO: /* Protocol error */ +#endif upsdebugx(2, "%s: %s", desc, usb_strerror()); return 0; diff -Nru nut-2.7.1/drivers/main-hal.c nut-2.7.2/drivers/main-hal.c --- nut-2.7.1/drivers/main-hal.c 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/drivers/main-hal.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,571 +0,0 @@ -/* main-hal.c - Network UPS Tools driver core for HAL - - Copyright (C) 2006 Arnaud Quette - Copyright (C) 1999 Russell Kroll - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* TODO list: - * -more cleanup - * - dstate-hal: expose all data on org.freedesktop.NUT to prepare - * a full HAL/DBus enabled nut (remove the need of {d,s}state layer - * - use HAL logging functions - */ - -#include "main-hal.h" -#include "dstate-hal.h" -#include - -#ifdef HAVE_POLKIT -#include -#endif - - /* HAL specific */ - extern LibHalContext *halctx; - extern char *udi; - - /* data which may be useful to the drivers */ - int upsfd = -1; - char *device_path = NULL; - const char *progname = NULL, *upsname = NULL, - *device_name = NULL; - - /* may be set by the driver to wake up while in dstate_poll_fds */ - int extrafd = -1; - - /* for ser_open */ - int do_lock_port = 1; - - /* set by the drivers */ - int experimental_driver = 0; - int broken_driver = 0; - - static vartab_t *vartab_h = NULL; - - /* variables possibly set by the global part of ups.conf */ - unsigned int poll_interval = 2; - static char *chroot_path = NULL; - - /* signal handling */ - int exit_flag = 0; - - /* everything else */ - static char *pidfn = NULL; - GMainLoop *gmain; - char *dbus_methods_introspection; - -/* retrieve the value of variable if possible */ -char *getval(const char *var) -{ - vartab_t *tmp = vartab_h; - - while (tmp) { - if (!strcasecmp(tmp->var, var)) - return(tmp->val); - tmp = tmp->next; - } - - return NULL; -} - -/* see if has been defined, even if no value has been given to it */ -int testvar(const char *var) -{ - vartab_t *tmp = vartab_h; - - while (tmp) { - if (!strcasecmp(tmp->var, var)) - return tmp->found; - tmp = tmp->next; - } - - return 0; /* not found */ -} - -/* callback from driver - create the table for -x/conf entries */ -void addvar(int vartype, const char *name, const char *desc) -{ - vartab_t *tmp, *last; - - tmp = last = vartab_h; - - while (tmp) { - last = tmp; - tmp = tmp->next; - } - - tmp = xmalloc(sizeof(vartab_t)); - - tmp->vartype = vartype; - tmp->var = xstrdup(name); - tmp->val = NULL; - tmp->desc = xstrdup(desc); - tmp->found = 0; - tmp->next = NULL; - - if (last) - last->next = tmp; - else - vartab_h = tmp; -} - -static void vartab_free(void) -{ - vartab_t *tmp, *next; - - tmp = vartab_h; - - while (tmp) { - next = tmp->next; - - free(tmp->var); - free(tmp->val); - free(tmp->desc); - free(tmp); - - tmp = next; - } -} - -static void exit_cleanup(int sig) -{ - upsdebugx(2, "exit_cleanup(%i", sig); - - exit_flag = sig; - - upsdrv_cleanup(); - - free(chroot_path); - free(device_path); - - if (pidfn) { - unlink(pidfn); - free(pidfn); - } - - dstate_free(); - vartab_free(); - - /* break the main loop */ - g_main_loop_quit(gmain); -} - -static void setup_signals(void) -{ - struct sigaction sa; - - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_RESTART | SA_NOCLDSTOP; - - sa.sa_handler = exit_cleanup; - sigaction(SIGTERM, &sa, NULL); - sigaction(SIGINT, &sa, NULL); - sigaction(SIGQUIT, &sa, NULL); - -/* sa.sa_handler = SIG_IGN; - sigaction(SIGHUP, &sa, NULL); - sigaction(SIGPIPE, &sa, NULL);*/ -} - -/* (*GSourceFunc) wrapper */ -static gboolean update_data (gpointer data) -{ - upsdrv_updateinfo(); - return (exit_flag == 0); -} - -int main(int argc, char **argv) -{ - DBusError dbus_error; - DBusConnection *dbus_connection; - struct passwd *new_uid = NULL; - char *hal_debug_level; -/* int i, do_forceshutdown = 0; */ - - if (experimental_driver) { - printf("Warning: This is an experimental driver.\n"); - printf("Some features may not function correctly.\n\n"); - } - - progname = xbasename(argv[0]); - open_syslog(progname); - - dbus_methods_introspection = xmalloc(1024); - - /* Register the basic supported method (Shutdown) - * Leave other methods registration to driver core calls to - * dstate_addcmd(), at initinfo() time - */ - snprintf(dbus_methods_introspection, 1024, "%s", - " \n" -/* " \n" */ - " \n" - " \n"); - - /* initialise HAL and DBus interface*/ - halctx = NULL; - udi = getenv ("UDI"); - if (udi == NULL) { - fprintf(stderr, "Error: UDI is null.\n"); - exit(EXIT_FAILURE); - } - - dbus_error_init (&dbus_error); - if ((halctx = libhal_ctx_init_direct (&dbus_error)) == NULL) { - fprintf(stderr, "Error: can't initialise libhal.\n"); - exit(EXIT_FAILURE); - } - if (dbus_error_is_set (&dbus_error)) - { - fatalx(EXIT_FAILURE, "Error in context creation: %s\n", dbus_error.message); - dbus_error_free (&dbus_error); - } - - if ((dbus_connection = libhal_ctx_get_dbus_connection(halctx)) == NULL) { - fprintf(stderr, "Error: can't get DBus connection.\n"); - exit(EXIT_FAILURE); - } - - /* FIXME: rework HAL param interface! or get path/regex from UDI - * Example: - * /org/freedesktop/Hal/devices/usb_device_463_ffff_1H2E300AH - * => linux.device_file = /dev/bus/usb/002/065 - */ - /* FIXME: the naming should be abstracted to os.device_file! */ - device_path = xstrdup("auto"); - - /* FIXME: bridge debug/warning on HAL equivalent (need them - * to externalize these in a lib... */ - hal_debug_level = getenv ("NUT_HAL_DEBUG"); - if (hal_debug_level == NULL) - nut_debug_level = 0; - else - nut_debug_level = atoi(hal_debug_level); - - /* Sleep 2 seconds to be able to view the device through usbfs! */ - sleep(2); - - /* build the driver's extra (-x) variable table */ - upsdrv_makevartable(); - - /* Switch to the HAL user */ - new_uid = get_user_pwent(HAL_USER); - become_user(new_uid); - - /* Only switch to statepath if we're not powering off */ - /* This avoid case where ie /var is umounted */ -/* ?! Not needed for HAL !? - if (!do_forceshutdown) - if (chdir(dflt_statepath())) - fatal_with_errno(EXIT_FAILURE, "Can't chdir to %s", dflt_statepath()); -*/ - setup_signals(); - - /* clear out callback handler data */ - memset(&upsh, '\0', sizeof(upsh)); - - upsdrv_initups(); - -#if 0 - if (do_forceshutdown) - forceshutdown(); -#endif - - /* get the supported data and commands before allowing connections */ - upsdrv_initinfo(); - upsdrv_updateinfo(); - - /* now we can start servicing requests */ - dstate_init(NULL, NULL); - - /* Commit DBus methods */ - if (!libhal_device_claim_interface(halctx, udi, DBUS_INTERFACE, - dbus_methods_introspection, &dbus_error)) { - fprintf(stderr, "Cannot claim interface: %s\n", dbus_error.message); - } - else - fprintf(stdout, "Claimed the following DBus interfaces on %s:\n%s", - DBUS_INTERFACE, dbus_methods_introspection); - - /* Complete DBus binding */ - dbus_connection_setup_with_g_main(dbus_connection, NULL); - dbus_connection_add_filter(dbus_connection, dbus_filter_function, NULL, NULL); - dbus_connection_set_exit_on_disconnect(dbus_connection, 0); - - dbus_init_local(); - /* end of HAL init */ - -#if 0 - /* publish the top-level data: version number, driver name */ - dstate_setinfo("driver.version", "%s", UPS_VERSION); - dstate_setinfo("driver.name", "%s", progname); - - /* The poll_interval may have been changed from the default */ - dstate_setinfo("driver.parameter.pollinterval", "%d", poll_interval); - -/* FIXME: needed? */ - if (nut_debug_level == 0) { - background(); - writepid(pidfn); - } -#endif - /* End HAL init */ - dbus_error_init (&dbus_error); - if (!libhal_device_addon_is_ready (halctx, udi, &dbus_error)) { - fprintf(stderr, "Error (libhal): device addon is not ready\n"); - exit(EXIT_FAILURE); - } - - /* add a timer for data update */ -#ifdef HAVE_G_TIMEOUT_ADD_SECONDS - g_timeout_add_seconds (poll_interval, -#else - g_timeout_add (1000 * poll_interval, /* seconds */ -#endif - (GSourceFunc)update_data, - NULL); - - /* setup and run the main loop */ - gmain = g_main_loop_new(NULL, FALSE); - g_main_loop_run(gmain); - - /* reached upon addon exit */ - upslogx(LOG_INFO, "Signal %d: exiting", exit_flag); - exit(EXIT_SUCCESS); -} - -/******************************************************************** - * DBus interface functions and data - *******************************************************************/ - -static DBusHandlerResult dbus_filter_function_local(DBusConnection *connection, - DBusMessage *message, - void *user_data) -{ - if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected")) { - upsdebugx(1, "DBus daemon disconnected. Trying to reconnect..."); - dbus_connection_unref(connection); - g_timeout_add(5000, (GSourceFunc)dbus_init_local, NULL); - } - return DBUS_HANDLER_RESULT_HANDLED; -} - -/* returns FALSE on success because it's used as a callback */ -gboolean dbus_init_local(void) -{ - DBusConnection *dbus_connection; - DBusError dbus_error; - - dbus_error_init(&dbus_error); - - dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &dbus_error); - if (dbus_error_is_set(&dbus_error)) { - upsdebugx(1, "Cannot get D-Bus connection"); -/* dbus_error_free (&dbus_error); */ - return TRUE; - } - - dbus_connection_setup_with_g_main(dbus_connection, NULL); - dbus_connection_add_filter(dbus_connection, dbus_filter_function_local, - NULL, NULL); - dbus_connection_set_exit_on_disconnect(dbus_connection, 0); - return FALSE; -} - -#ifdef HAVE_POLKIT -/** - * dbus_is_privileged: - * @connection: connection to D-Bus - * @message: Message - * @error: the error - * - * Returns: TRUE if the caller is privileged - * - * checks if caller of message possesses the CPUFREQ_POLKIT_PRIVILGE - */ -static gboolean -dbus_is_privileged (DBusConnection *connection, DBusMessage *message, DBusError *error) -{ - gboolean ret; - char *polkit_result; - const char *invoked_by_syscon_name; - - ret = FALSE; - polkit_result = NULL; -/* FIXME: CPUFREQ_POLKIT_PRIVILEGE, CPUFREQ_ERROR_GENERAL */ - invoked_by_syscon_name = dbus_message_get_sender (message); - - polkit_result = libhal_device_is_caller_privileged (halctx, - udi, - CPUFREQ_POLKIT_PRIVILEGE, - invoked_by_syscon_name, - error); - if (polkit_result == NULL) { - dbus_raise_error (connection, message, CPUFREQ_ERROR_GENERAL, - "Cannot determine if caller is privileged"); - } - else { - if (strcmp (polkit_result, "yes") != 0) { - - dbus_raise_error (connection, message, - "org.freedesktop.Hal.Device.PermissionDeniedByPolicy", - "%s %s <-- (action, result)", - CPUFREQ_POLKIT_PRIVILEGE, polkit_result); - } - else - ret = TRUE; - } - - if (polkit_result != NULL) - libhal_free_string (polkit_result); - return ret; -} -#endif - -/** - * dbus_send_reply: - * @connection: connection to D-Bus - * @message: Message - * @type: the type of data param - * @data: data to send - * - * Returns: TRUE/FALSE - * - * sends a reply to message with the given data and its dbus_type - */ -static gboolean dbus_send_reply(DBusConnection *connection, DBusMessage *message, - int dbus_type, void *data) -{ - DBusMessage *reply; - - if ((reply = dbus_message_new_method_return(message)) == NULL) { - upslogx(LOG_WARNING, "Could not allocate memory for the DBus reply"); - return FALSE; - } - - if (data != NULL) - dbus_message_append_args(reply, dbus_type, data, DBUS_TYPE_INVALID); - - if (!dbus_connection_send(connection, reply, NULL)) { - upslogx(LOG_WARNING, "Could not sent reply"); - return FALSE; - } - dbus_connection_flush(connection); - dbus_message_unref(reply); - - return TRUE; -} - -/** - * dbus_get_argument: - * @connection: connection to D-Bus - * @message: Message - * @dbus_error: the D-Bus error - * @type: the type of arg param - * @arg: the value to get from the message - * - * Returns: TRUE/FALSE - * - * gets one argument from message with the given dbus_type and stores it in arg - */ -static gboolean dbus_get_argument(DBusConnection *connection, DBusMessage *message, - DBusError *dbus_error, int dbus_type, void *arg) -{ - dbus_message_get_args(message, dbus_error, dbus_type, arg, - DBUS_TYPE_INVALID); - if (dbus_error_is_set(dbus_error)) { - upslogx(LOG_WARNING, "Could not get argument of DBus message: %s", - dbus_error->message); - dbus_error_free(dbus_error); - return FALSE; - } - return TRUE; -} - -/** - * dbus_filter_function: - * @connection: connection to D-Bus - * @message: message - * @user_data: pointer to the data - * - * Returns: the result - * - * @raises UnknownMethod - * - * D-Bus filter function - */ -DBusHandlerResult dbus_filter_function(DBusConnection *connection, - DBusMessage *message, - void *user_data) -{ - DBusError dbus_error; - int retcode = -1; - const char *member = dbus_message_get_member(message); - const char *path = dbus_message_get_path(message); -/* int ret = DBUS_HANDLER_RESULT_NOT_YET_HANDLED; */ - - /* upsdebugx(2, "Received DBus message with member %s path %s", member, path); */ - fprintf(stdout, "Received DBus message with member %s on path %s\n", member, path); - - dbus_error_init(&dbus_error); - if (dbus_error_is_set (&dbus_error)) - { - fprintf (stderr, "an error occurred: %s\n", dbus_error.message); -/* dbus_error_free (&dbus_error); */ - } - else - { -#ifdef HAVE_POLKIT - if (!dbus_is_privileged(connection, message, &dbus_error)) - return DBUS_HANDLER_RESULT_HANDLED; -#endif - - if (dbus_message_is_method_call(message, DBUS_INTERFACE, "Shutdown")) { - - fprintf(stdout, "executing Shutdown\n"); - upsdrv_shutdown(); - dbus_send_reply(connection, message, DBUS_TYPE_INVALID, NULL); - - } else if (dbus_message_is_method_call(message, - DBUS_INTERFACE, "SetBeeper")) { - fprintf(stdout, "executing SetBeeper\n"); - gboolean b_enable; - if (!dbus_get_argument(connection, message, &dbus_error, - DBUS_TYPE_BOOLEAN, &b_enable)) { - fprintf(stderr, "Error receiving boolean argument\n"); - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - fprintf(stdout, "Received argument: %s\n", (b_enable==TRUE)?"true":"false"); - - if (b_enable==TRUE) { - if (upsh.instcmd("beeper.enable", NULL) != STAT_INSTCMD_HANDLED) { - dbus_send_reply(connection, message, DBUS_TYPE_INT32, &retcode); - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - } - else { - if (upsh.instcmd("beeper.disable", NULL) != STAT_INSTCMD_HANDLED) { - dbus_send_reply(connection, message, DBUS_TYPE_INT32, &retcode); - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - } - } else { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - } - dbus_send_reply(connection, message, DBUS_TYPE_INVALID, NULL); - return DBUS_HANDLER_RESULT_HANDLED; -} diff -Nru nut-2.7.1/drivers/main-hal.h nut-2.7.2/drivers/main-hal.h --- nut-2.7.1/drivers/main-hal.h 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/drivers/main-hal.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,51 +0,0 @@ -#include "common.h" -#include "config.h" -/* #include "upsconf.h" */ -#include "dstate.h" -#include "extstate.h" - -/* public functions & variables from main.c */ -extern const char *progname; -extern char *device_path; -extern const char *device_name; -extern int upsfd, extrafd, broken_driver, experimental_driver, exit_flag; -extern unsigned int poll_interval; - -/* functions & variables required in each driver */ -void upsdrv_initups(void); /* open connection to UPS, fail if not found */ -void upsdrv_initinfo(void); /* prep data, settings for UPS monitoring */ -void upsdrv_updateinfo(void); /* update state data if possible */ -void upsdrv_shutdown(void); /* make the UPS power off the load */ -void upsdrv_help(void); /* tack on anything useful for the -h text */ -void upsdrv_banner(void); /* print your version information */ -void upsdrv_cleanup(void); /* free any resources before shutdown */ - -/* --- details for the variable/value sharing --- */ - -/* main calls this driver function - it needs to call addvar */ -void upsdrv_makevartable(void); - -/* retrieve the value of variable if possible */ -char *getval(const char *var); - -/* see if has been defined, even if no value has been given to it */ -int testvar(const char *var); - -/* extended variable table - used for -x defines/flags */ -typedef struct vartab_s { - int vartype; /* VAR_* value, below */ - char *var; /* left side of =, or whole word if none */ - char *val; /* right side of = */ - char *desc; /* 40 character description for -h text */ - int found; /* set once encountered, for testvar() */ - struct vartab_s *next; -} vartab_t; - -/* flags to define types in the vartab */ - -#define VAR_FLAG 0x0001 /* argument is a flag (no value needed) */ -#define VAR_VALUE 0x0002 /* argument requires a value setting */ -#define VAR_SENSITIVE 0x0004 /* do not publish in driver.parameter */ - -/* callback from driver - create the table for future -x entries */ -void addvar(int vartype, const char *name, const char *desc); diff -Nru nut-2.7.1/drivers/Makefile.am nut-2.7.2/drivers/Makefile.am --- nut-2.7.1/drivers/Makefile.am 2013-11-20 20:53:31.000000000 +0100 +++ nut-2.7.2/drivers/Makefile.am 2014-02-27 22:17:32.000000000 +0100 @@ -5,7 +5,6 @@ #FIXME: SERLIBS is only useful for LDADD_DRIVERS_SERIAL not for LDADD_COMMON LDADD_COMMON = ../common/libcommon.la ../common/libparseconf.la LDADD_DRIVERS = $(LDADD_COMMON) main.o dstate.o -LDADD_HAL_DRIVERS = $(LDADD_COMMON) libnuthalmain.a LDADD_DRIVERS_SERIAL = $(LDADD_DRIVERS) $(SERLIBS) serial.o # most targets are drivers, so make this the default @@ -14,9 +13,6 @@ # files. In any case, CFLAGS are only -I options, so there is no harm, # but only add them if we really use the target. AM_CFLAGS = -I$(top_srcdir)/include -if WITH_HAL - AM_CFLAGS += $(LIBHAL_CFLAGS) -endif if WITH_USB AM_CFLAGS += $(LIBUSB_CFLAGS) endif @@ -42,11 +38,10 @@ nutdrv_qx SNMP_DRIVERLIST = snmp-ups USB_LIBUSB_DRIVERLIST = usbhid-ups bcmxcp_usb tripplite_usb \ - blazer_usb richcomm_usb riello_usb nutdrv_qx + blazer_usb richcomm_usb riello_usb \ + nutdrv_atcl_usb \ + nutdrv_qx USB_DRIVERLIST = $(USB_LIBUSB_DRIVERLIST) -HAL_DRIVERLIST = hald-addon-usbhid-ups hald-addon-bcmxcp_usb \ - hald-addon-tripplite_usb hald-addon-blazer_usb hald-addon-riello_usb \ - hald-addon-nutdrv_qx NEONXML_DRIVERLIST = netxml-ups MACOSX_DRIVERLIST = macosx-ups @@ -67,10 +62,6 @@ if WITH_USB driverexec_PROGRAMS += $(USB_LIBUSB_DRIVERLIST) endif -if WITH_HAL - halexecdir = $(HAL_CALLOUTS_PATH) - halexec_PROGRAMS = $(HAL_DRIVERLIST) -endif if WITH_NEON driverexec_PROGRAMS += $(NEONXML_DRIVERLIST) endif @@ -88,7 +79,7 @@ endif # always build upsdrvctl -driverexec_PROGRAMS += upsdrvctl +sbin_PROGRAMS = upsdrvctl # ========================================================================== # Driver build details @@ -185,12 +176,16 @@ blazer_usb_SOURCES = blazer.c blazer_usb.c libusb.c usb-common.c blazer_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) -lm +nutdrv_atcl_usb_SOURCES = nutdrv_atcl_usb.c usb-common.c +nutdrv_atcl_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) + richcomm_usb_SOURCES = richcomm_usb.c usb-common.c richcomm_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) riello_usb_SOURCES = riello.c riello_usb.c libusb.c usb-common.c riello_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) -lm + # HID-over-serial mge_shut_SOURCES = usbhid-ups.c libshut.c libhid.c hidparser.c mge-hid.c # per-target CFLAGS are necessary here @@ -200,30 +195,10 @@ # SNMP snmp_ups_SOURCES = snmp-ups.c apc-mib.c baytech-mib.c compaq-mib.c eaton-mib.c \ ietf-mib.c mge-mib.c netvision-mib.c powerware-mib.c raritan-pdu-mib.c \ - bestpower-mib.c cyberpower-mib.c delta_ups-mib.c + bestpower-mib.c cyberpower-mib.c delta_ups-mib.c \ + xppc-mib.c snmp_ups_LDADD = $(LDADD_DRIVERS) $(LIBNETSNMP_LIBS) -# HAL -hald_addon_usbhid_ups_SOURCES = usbhid-ups.c libhid.c libusb.c hidparser.c \ - $(USBHID_UPS_SUBDRIVERS) -hald_addon_usbhid_ups_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) - -hald_addon_tripplite_usb_SOURCES = tripplite_usb.c libusb.c -hald_addon_tripplite_usb_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -lm - -hald_addon_bcmxcp_usb_SOURCES = bcmxcp_usb.c bcmxcp.c -hald_addon_bcmxcp_usb_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) - -hald_addon_blazer_usb_SOURCES = blazer.c blazer_usb.c libusb.c -hald_addon_blazer_usb_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -lm - -hald_addon_riello_usb_SOURCES = riello.c riello_usb.c libusb.c -hald_addon_riello_usb_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -lm - -hald_addon_nutdrv_qx_SOURCES = nutdrv_qx.c libusb.c $(NUTDRV_QX_SUBDRIVERS) -hald_addon_nutdrv_qx_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -lm -hald_addon_nutdrv_qx_CFLAGS = $(AM_CFLAGS) -DQX_USB - # NEON XML/HTTP netxml_ups_SOURCES = netxml-ups.c mge-xml.c netxml_ups_LDADD = $(LDADD_DRIVERS) $(LIBNEON_LIBS) @@ -259,7 +234,7 @@ endif NUTDRV_QX_SUBDRIVERS = nutdrv_qx_blazer-common.c nutdrv_qx_mecer.c \ nutdrv_qx_megatec.c nutdrv_qx_megatec-old.c nutdrv_qx_mustek.c \ - nutdrv_qx_voltronic.c nutdrv_qx_zinto.c + nutdrv_qx_q1.c nutdrv_qx_voltronic.c nutdrv_qx_voltronic-qs.c nutdrv_qx_zinto.c nutdrv_qx_SOURCES += $(NUTDRV_QX_SUBDRIVERS) # ---------------------------------------------------------------------- @@ -269,30 +244,20 @@ dist_noinst_HEADERS = apc-mib.h apc-hid.h baytech-mib.h bcmxcp.h \ bcmxcp_io.h belkin.h belkin-hid.h bestpower-mib.h blazer.h cps-hid.h dstate.h \ - dstate-hal.h dummy-ups.h eaton-mib.h explore-hid.h gamatronic.h genericups.h \ + dummy-ups.h eaton-mib.h explore-hid.h gamatronic.h genericups.h \ hidparser.h hidtypes.h ietf-mib.h libhid.h libshut.h libusb.h liebert-hid.h \ - main.h main-hal.h mge-hid.h mge-mib.h mge-shut.h mge-utalk.h \ + main.h mge-hid.h mge-mib.h mge-shut.h mge-utalk.h \ mge-xml.h microdowell.h netvision-mib.h netxml-ups.h nut-ipmi.h oneac.h \ powercom.h powerpanel.h powerp-bin.h powerp-txt.h powerware-mib.h raritan-pdu-mib.h \ safenet.h serial.h snmp-ups.h solis.h tripplite.h tripplite-hid.h \ upshandler.h usb-common.h usbhid-ups.h powercom-hid.h compaq-mib.h idowell-hid.h \ apcsmart.h apcsmart_tabs.h apcsmart-old.h apcupsd-ups.h cyberpower-mib.h riello.h openups-hid.h \ delta_ups-mib.h nutdrv_qx.h nutdrv_qx_blazer-common.h nutdrv_qx_mecer.h \ - nutdrv_qx_megatec.h nutdrv_qx_megatec-old.h nutdrv_qx_mustek.h nutdrv_qx_voltronic.h \ - nutdrv_qx_zinto.h + nutdrv_qx_megatec.h nutdrv_qx_megatec-old.h nutdrv_qx_mustek.h nutdrv_qx_q1.h \ + nutdrv_qx_voltronic.h nutdrv_qx_voltronic-qs.h nutdrv_qx_zinto.h \ + xppc-mib.h # Define a dummy library so that Automake builds rules for the # corresponding object files. This library is not actually built, EXTRA_LIBRARIES = libdummy.a libdummy_a_SOURCES = main.c dstate.c serial.c - -# the nuthalmain library combines the code for main-hal.c and -# dstate-hal.c. It is necessary for Automake-technical reasons, -# because per-object CFLAGS can only be specified for libraries, not -# for object files. This library is used during the build process, -# and is not meant to be installed. - -EXTRA_LIBRARIES += libnuthalmain.a -libnuthalmain_a_SOURCES = main-hal.c dstate-hal.c usb-common.c - -MOSTLYCLEANFILES = libnuthalmain.a diff -Nru nut-2.7.1/drivers/Makefile.in nut-2.7.2/drivers/Makefile.in --- nut-2.7.1/drivers/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/drivers/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -55,42 +55,38 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -@WITH_HAL_TRUE@am__append_1 = $(LIBHAL_CFLAGS) -@WITH_USB_TRUE@am__append_2 = $(LIBUSB_CFLAGS) -@WITH_SNMP_TRUE@am__append_3 = $(LIBNETSNMP_CFLAGS) -@WITH_NEON_TRUE@am__append_4 = $(LIBNEON_CFLAGS) -@WITH_LIBPOWERMAN_TRUE@am__append_5 = $(LIBPOWERMAN_CFLAGS) -@WITH_IPMI_TRUE@am__append_6 = $(LIBIPMI_CFLAGS) +@WITH_USB_TRUE@am__append_1 = $(LIBUSB_CFLAGS) +@WITH_SNMP_TRUE@am__append_2 = $(LIBNETSNMP_CFLAGS) +@WITH_NEON_TRUE@am__append_3 = $(LIBNEON_CFLAGS) +@WITH_LIBPOWERMAN_TRUE@am__append_4 = $(LIBPOWERMAN_CFLAGS) +@WITH_IPMI_TRUE@am__append_5 = $(LIBIPMI_CFLAGS) EXTRA_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_4) \ $(am__EXEEXT_5) $(am__EXEEXT_6) @SOME_DRIVERS_FALSE@driverexec_PROGRAMS = $(am__EXEEXT_7) \ @SOME_DRIVERS_FALSE@ $(am__EXEEXT_8) $(am__EXEEXT_9) \ @SOME_DRIVERS_FALSE@ $(am__EXEEXT_10) $(am__EXEEXT_11) \ -@SOME_DRIVERS_FALSE@ $(am__EXEEXT_12) $(am__EXEEXT_13) \ -@SOME_DRIVERS_FALSE@ upsdrvctl$(EXEEXT) +@SOME_DRIVERS_FALSE@ $(am__EXEEXT_12) $(am__EXEEXT_13) @SOME_DRIVERS_TRUE@driverexec_PROGRAMS = $(DRIVER_BUILD_LIST) \ @SOME_DRIVERS_TRUE@ $(am__EXEEXT_7) $(am__EXEEXT_8) \ @SOME_DRIVERS_TRUE@ $(am__EXEEXT_9) $(am__EXEEXT_10) \ @SOME_DRIVERS_TRUE@ $(am__EXEEXT_11) $(am__EXEEXT_12) \ -@SOME_DRIVERS_TRUE@ $(am__EXEEXT_13) skel$(EXEEXT) \ -@SOME_DRIVERS_TRUE@ upsdrvctl$(EXEEXT) -@SOME_DRIVERS_FALSE@@WITH_SERIAL_TRUE@am__append_7 = $(SERIAL_DRIVERLIST) -@SOME_DRIVERS_FALSE@@WITH_SNMP_TRUE@am__append_8 = $(SNMP_DRIVERLIST) -@SOME_DRIVERS_FALSE@@WITH_USB_TRUE@am__append_9 = $(USB_LIBUSB_DRIVERLIST) -@SOME_DRIVERS_FALSE@@WITH_HAL_TRUE@halexec_PROGRAMS = \ -@SOME_DRIVERS_FALSE@@WITH_HAL_TRUE@ $(am__EXEEXT_14) -@SOME_DRIVERS_FALSE@@WITH_NEON_TRUE@am__append_10 = $(NEONXML_DRIVERLIST) -@SOME_DRIVERS_FALSE@@WITH_LIBPOWERMAN_TRUE@am__append_11 = powerman-pdu -@SOME_DRIVERS_FALSE@@WITH_IPMI_TRUE@am__append_12 = nut-ipmipsu -@SOME_DRIVERS_FALSE@@WITH_MACOSX_TRUE@am__append_13 = $(MACOSX_DRIVERLIST) -@WITH_SSL_TRUE@am__append_14 = $(LIBSSL_CFLAGS) -@WITH_SSL_TRUE@am__append_15 = $(LIBSSL_LIBS) -@WITH_FREEIPMI_TRUE@am__append_16 = nut-libfreeipmi.c -@WITH_SERIAL_TRUE@am__append_17 = -DQX_SERIAL -@WITH_SERIAL_TRUE@am__append_18 = $(SERLIBS) serial.o -@WITH_USB_TRUE@am__append_19 = -DQX_USB -@WITH_USB_TRUE@am__append_20 = libusb.c usb-common.c -@WITH_USB_TRUE@am__append_21 = $(LIBUSB_LIBS) +@SOME_DRIVERS_TRUE@ $(am__EXEEXT_13) skel$(EXEEXT) +@SOME_DRIVERS_FALSE@@WITH_SERIAL_TRUE@am__append_6 = $(SERIAL_DRIVERLIST) +@SOME_DRIVERS_FALSE@@WITH_SNMP_TRUE@am__append_7 = $(SNMP_DRIVERLIST) +@SOME_DRIVERS_FALSE@@WITH_USB_TRUE@am__append_8 = $(USB_LIBUSB_DRIVERLIST) +@SOME_DRIVERS_FALSE@@WITH_NEON_TRUE@am__append_9 = $(NEONXML_DRIVERLIST) +@SOME_DRIVERS_FALSE@@WITH_LIBPOWERMAN_TRUE@am__append_10 = powerman-pdu +@SOME_DRIVERS_FALSE@@WITH_IPMI_TRUE@am__append_11 = nut-ipmipsu +@SOME_DRIVERS_FALSE@@WITH_MACOSX_TRUE@am__append_12 = $(MACOSX_DRIVERLIST) +sbin_PROGRAMS = upsdrvctl$(EXEEXT) +@WITH_SSL_TRUE@am__append_13 = $(LIBSSL_CFLAGS) +@WITH_SSL_TRUE@am__append_14 = $(LIBSSL_LIBS) +@WITH_FREEIPMI_TRUE@am__append_15 = nut-libfreeipmi.c +@WITH_SERIAL_TRUE@am__append_16 = -DQX_SERIAL +@WITH_SERIAL_TRUE@am__append_17 = $(SERLIBS) serial.o +@WITH_USB_TRUE@am__append_18 = -DQX_USB +@WITH_USB_TRUE@am__append_19 = libusb.c usb-common.c +@WITH_USB_TRUE@am__append_20 = $(LIBUSB_LIBS) subdir = drivers DIST_COMMON = $(dist_noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in @@ -104,7 +100,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -114,10 +109,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -130,11 +124,6 @@ am_libdummy_a_OBJECTS = main.$(OBJEXT) dstate.$(OBJEXT) \ serial.$(OBJEXT) libdummy_a_OBJECTS = $(am_libdummy_a_OBJECTS) -libnuthalmain_a_AR = $(AR) $(ARFLAGS) -libnuthalmain_a_LIBADD = -am_libnuthalmain_a_OBJECTS = main-hal.$(OBJEXT) dstate-hal.$(OBJEXT) \ - usb-common.$(OBJEXT) -libnuthalmain_a_OBJECTS = $(am_libnuthalmain_a_OBJECTS) am__EXEEXT_1 = al175$(EXEEXT) bcmxcp$(EXEEXT) belkin$(EXEEXT) \ belkinunv$(EXEEXT) bestfcom$(EXEEXT) bestfortress$(EXEEXT) \ bestuferrups$(EXEEXT) bestups$(EXEEXT) dummy-ups$(EXEEXT) \ @@ -153,7 +142,8 @@ am__EXEEXT_2 = snmp-ups$(EXEEXT) am__EXEEXT_3 = usbhid-ups$(EXEEXT) bcmxcp_usb$(EXEEXT) \ tripplite_usb$(EXEEXT) blazer_usb$(EXEEXT) \ - richcomm_usb$(EXEEXT) riello_usb$(EXEEXT) nutdrv_qx$(EXEEXT) + richcomm_usb$(EXEEXT) riello_usb$(EXEEXT) \ + nutdrv_atcl_usb$(EXEEXT) nutdrv_qx$(EXEEXT) am__EXEEXT_4 = $(am__EXEEXT_3) am__EXEEXT_5 = netxml-ups$(EXEEXT) am__EXEEXT_6 = macosx-ups$(EXEEXT) @@ -165,14 +155,8 @@ @SOME_DRIVERS_FALSE@@WITH_IPMI_TRUE@am__EXEEXT_12 = \ @SOME_DRIVERS_FALSE@@WITH_IPMI_TRUE@ nut-ipmipsu$(EXEEXT) @SOME_DRIVERS_FALSE@@WITH_MACOSX_TRUE@am__EXEEXT_13 = $(am__EXEEXT_6) -am__installdirs = "$(DESTDIR)$(driverexecdir)" \ - "$(DESTDIR)$(halexecdir)" -am__EXEEXT_14 = hald-addon-usbhid-ups$(EXEEXT) \ - hald-addon-bcmxcp_usb$(EXEEXT) \ - hald-addon-tripplite_usb$(EXEEXT) \ - hald-addon-blazer_usb$(EXEEXT) hald-addon-riello_usb$(EXEEXT) \ - hald-addon-nutdrv_qx$(EXEEXT) -PROGRAMS = $(driverexec_PROGRAMS) $(halexec_PROGRAMS) +am__installdirs = "$(DESTDIR)$(driverexecdir)" "$(DESTDIR)$(sbindir)" +PROGRAMS = $(driverexec_PROGRAMS) $(sbin_PROGRAMS) am_al175_OBJECTS = al175.$(OBJEXT) al175_OBJECTS = $(am_al175_OBJECTS) al175_LDADD = $(LDADD) @@ -264,56 +248,6 @@ genericups_OBJECTS = $(am_genericups_OBJECTS) genericups_LDADD = $(LDADD) genericups_DEPENDENCIES = $(am__DEPENDENCIES_2) -am_hald_addon_bcmxcp_usb_OBJECTS = bcmxcp_usb.$(OBJEXT) \ - bcmxcp.$(OBJEXT) -hald_addon_bcmxcp_usb_OBJECTS = $(am_hald_addon_bcmxcp_usb_OBJECTS) -hald_addon_bcmxcp_usb_DEPENDENCIES = $(LDADD_HAL_DRIVERS) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am_hald_addon_blazer_usb_OBJECTS = blazer.$(OBJEXT) \ - blazer_usb.$(OBJEXT) libusb.$(OBJEXT) -hald_addon_blazer_usb_OBJECTS = $(am_hald_addon_blazer_usb_OBJECTS) -hald_addon_blazer_usb_DEPENDENCIES = $(LDADD_HAL_DRIVERS) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am__objects_1 = \ - hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.$(OBJEXT) \ - hald_addon_nutdrv_qx-nutdrv_qx_mecer.$(OBJEXT) \ - hald_addon_nutdrv_qx-nutdrv_qx_megatec.$(OBJEXT) \ - hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.$(OBJEXT) \ - hald_addon_nutdrv_qx-nutdrv_qx_mustek.$(OBJEXT) \ - hald_addon_nutdrv_qx-nutdrv_qx_voltronic.$(OBJEXT) \ - hald_addon_nutdrv_qx-nutdrv_qx_zinto.$(OBJEXT) -am_hald_addon_nutdrv_qx_OBJECTS = \ - hald_addon_nutdrv_qx-nutdrv_qx.$(OBJEXT) \ - hald_addon_nutdrv_qx-libusb.$(OBJEXT) $(am__objects_1) -hald_addon_nutdrv_qx_OBJECTS = $(am_hald_addon_nutdrv_qx_OBJECTS) -hald_addon_nutdrv_qx_DEPENDENCIES = $(LDADD_HAL_DRIVERS) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -hald_addon_nutdrv_qx_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -am_hald_addon_riello_usb_OBJECTS = riello.$(OBJEXT) \ - riello_usb.$(OBJEXT) libusb.$(OBJEXT) -hald_addon_riello_usb_OBJECTS = $(am_hald_addon_riello_usb_OBJECTS) -hald_addon_riello_usb_DEPENDENCIES = $(LDADD_HAL_DRIVERS) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am_hald_addon_tripplite_usb_OBJECTS = tripplite_usb.$(OBJEXT) \ - libusb.$(OBJEXT) -hald_addon_tripplite_usb_OBJECTS = \ - $(am_hald_addon_tripplite_usb_OBJECTS) -hald_addon_tripplite_usb_DEPENDENCIES = $(LDADD_HAL_DRIVERS) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am__objects_2 = apc-hid.$(OBJEXT) belkin-hid.$(OBJEXT) \ - cps-hid.$(OBJEXT) explore-hid.$(OBJEXT) liebert-hid.$(OBJEXT) \ - mge-hid.$(OBJEXT) powercom-hid.$(OBJEXT) \ - tripplite-hid.$(OBJEXT) idowell-hid.$(OBJEXT) \ - openups-hid.$(OBJEXT) -am_hald_addon_usbhid_ups_OBJECTS = usbhid-ups.$(OBJEXT) \ - libhid.$(OBJEXT) libusb.$(OBJEXT) hidparser.$(OBJEXT) \ - $(am__objects_2) -hald_addon_usbhid_ups_OBJECTS = $(am_hald_addon_usbhid_ups_OBJECTS) -hald_addon_usbhid_ups_DEPENDENCIES = $(LDADD_HAL_DRIVERS) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_isbmex_OBJECTS = isbmex.$(OBJEXT) isbmex_OBJECTS = $(am_isbmex_OBJECTS) isbmex_DEPENDENCIES = $(am__DEPENDENCIES_3) @@ -363,25 +297,32 @@ netxml_ups_OBJECTS = $(am_netxml_ups_OBJECTS) netxml_ups_DEPENDENCIES = $(LDADD_DRIVERS) $(am__DEPENDENCIES_1) am__nut_ipmipsu_SOURCES_DIST = nut-ipmipsu.c nut-libfreeipmi.c -@WITH_FREEIPMI_TRUE@am__objects_3 = nut-libfreeipmi.$(OBJEXT) -am_nut_ipmipsu_OBJECTS = nut-ipmipsu.$(OBJEXT) $(am__objects_3) +@WITH_FREEIPMI_TRUE@am__objects_1 = nut-libfreeipmi.$(OBJEXT) +am_nut_ipmipsu_OBJECTS = nut-ipmipsu.$(OBJEXT) $(am__objects_1) nut_ipmipsu_OBJECTS = $(am_nut_ipmipsu_OBJECTS) nut_ipmipsu_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) +am_nutdrv_atcl_usb_OBJECTS = nutdrv_atcl_usb.$(OBJEXT) \ + usb-common.$(OBJEXT) +nutdrv_atcl_usb_OBJECTS = $(am_nutdrv_atcl_usb_OBJECTS) +nutdrv_atcl_usb_DEPENDENCIES = $(LDADD_DRIVERS) $(am__DEPENDENCIES_1) am__nutdrv_qx_SOURCES_DIST = nutdrv_qx.c libusb.c usb-common.c \ nutdrv_qx_blazer-common.c nutdrv_qx_mecer.c \ nutdrv_qx_megatec.c nutdrv_qx_megatec-old.c nutdrv_qx_mustek.c \ - nutdrv_qx_voltronic.c nutdrv_qx_zinto.c -@WITH_USB_TRUE@am__objects_4 = nutdrv_qx-libusb.$(OBJEXT) \ + nutdrv_qx_q1.c nutdrv_qx_voltronic.c nutdrv_qx_voltronic-qs.c \ + nutdrv_qx_zinto.c +@WITH_USB_TRUE@am__objects_2 = nutdrv_qx-libusb.$(OBJEXT) \ @WITH_USB_TRUE@ nutdrv_qx-usb-common.$(OBJEXT) -am__objects_5 = nutdrv_qx-nutdrv_qx_blazer-common.$(OBJEXT) \ +am__objects_3 = nutdrv_qx-nutdrv_qx_blazer-common.$(OBJEXT) \ nutdrv_qx-nutdrv_qx_mecer.$(OBJEXT) \ nutdrv_qx-nutdrv_qx_megatec.$(OBJEXT) \ nutdrv_qx-nutdrv_qx_megatec-old.$(OBJEXT) \ nutdrv_qx-nutdrv_qx_mustek.$(OBJEXT) \ + nutdrv_qx-nutdrv_qx_q1.$(OBJEXT) \ nutdrv_qx-nutdrv_qx_voltronic.$(OBJEXT) \ + nutdrv_qx-nutdrv_qx_voltronic-qs.$(OBJEXT) \ nutdrv_qx-nutdrv_qx_zinto.$(OBJEXT) -am_nutdrv_qx_OBJECTS = nutdrv_qx-nutdrv_qx.$(OBJEXT) $(am__objects_4) \ - $(am__objects_5) +am_nutdrv_qx_OBJECTS = nutdrv_qx-nutdrv_qx.$(OBJEXT) $(am__objects_2) \ + $(am__objects_3) nutdrv_qx_OBJECTS = $(am_nutdrv_qx_OBJECTS) @WITH_SERIAL_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) serial.o @WITH_USB_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1) @@ -438,7 +379,7 @@ ietf-mib.$(OBJEXT) mge-mib.$(OBJEXT) netvision-mib.$(OBJEXT) \ powerware-mib.$(OBJEXT) raritan-pdu-mib.$(OBJEXT) \ bestpower-mib.$(OBJEXT) cyberpower-mib.$(OBJEXT) \ - delta_ups-mib.$(OBJEXT) + delta_ups-mib.$(OBJEXT) xppc-mib.$(OBJEXT) snmp_ups_OBJECTS = $(am_snmp_ups_OBJECTS) snmp_ups_DEPENDENCIES = $(LDADD_DRIVERS) $(am__DEPENDENCIES_1) am_solis_OBJECTS = solis.$(OBJEXT) @@ -462,9 +403,14 @@ am_upsdrvctl_OBJECTS = upsdrvctl.$(OBJEXT) upsdrvctl_OBJECTS = $(am_upsdrvctl_OBJECTS) upsdrvctl_DEPENDENCIES = $(LDADD_COMMON) +am__objects_4 = apc-hid.$(OBJEXT) belkin-hid.$(OBJEXT) \ + cps-hid.$(OBJEXT) explore-hid.$(OBJEXT) liebert-hid.$(OBJEXT) \ + mge-hid.$(OBJEXT) powercom-hid.$(OBJEXT) \ + tripplite-hid.$(OBJEXT) idowell-hid.$(OBJEXT) \ + openups-hid.$(OBJEXT) am_usbhid_ups_OBJECTS = usbhid-ups.$(OBJEXT) libhid.$(OBJEXT) \ libusb.$(OBJEXT) hidparser.$(OBJEXT) usb-common.$(OBJEXT) \ - $(am__objects_2) + $(am__objects_4) usbhid_ups_OBJECTS = $(am_usbhid_ups_OBJECTS) usbhid_ups_DEPENDENCIES = $(LDADD_DRIVERS) $(am__DEPENDENCIES_1) am_victronups_OBJECTS = victronups.$(OBJEXT) @@ -484,25 +430,20 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -SOURCES = $(libdummy_a_SOURCES) $(libnuthalmain_a_SOURCES) \ - $(al175_SOURCES) $(apcsmart_SOURCES) $(apcsmart_old_SOURCES) \ - $(apcupsd_ups_SOURCES) $(bcmxcp_SOURCES) $(bcmxcp_usb_SOURCES) \ - $(belkin_SOURCES) $(belkinunv_SOURCES) $(bestfcom_SOURCES) \ - bestfortress.c $(bestuferrups_SOURCES) $(bestups_SOURCES) \ +SOURCES = $(libdummy_a_SOURCES) $(al175_SOURCES) $(apcsmart_SOURCES) \ + $(apcsmart_old_SOURCES) $(apcupsd_ups_SOURCES) \ + $(bcmxcp_SOURCES) $(bcmxcp_usb_SOURCES) $(belkin_SOURCES) \ + $(belkinunv_SOURCES) $(bestfcom_SOURCES) bestfortress.c \ + $(bestuferrups_SOURCES) $(bestups_SOURCES) \ $(blazer_ser_SOURCES) $(blazer_usb_SOURCES) $(clone_SOURCES) \ $(clone_outlet_SOURCES) $(dummy_ups_SOURCES) $(etapro_SOURCES) \ $(everups_SOURCES) $(gamatronic_SOURCES) $(genericups_SOURCES) \ - $(hald_addon_bcmxcp_usb_SOURCES) \ - $(hald_addon_blazer_usb_SOURCES) \ - $(hald_addon_nutdrv_qx_SOURCES) \ - $(hald_addon_riello_usb_SOURCES) \ - $(hald_addon_tripplite_usb_SOURCES) \ - $(hald_addon_usbhid_ups_SOURCES) $(isbmex_SOURCES) \ - $(ivtscd_SOURCES) $(liebert_SOURCES) $(liebert_esp2_SOURCES) \ - $(macosx_ups_SOURCES) $(masterguard_SOURCES) \ - $(metasys_SOURCES) $(mge_shut_SOURCES) $(mge_utalk_SOURCES) \ - $(microdowell_SOURCES) $(netxml_ups_SOURCES) \ - $(nut_ipmipsu_SOURCES) $(nutdrv_qx_SOURCES) \ + $(isbmex_SOURCES) $(ivtscd_SOURCES) $(liebert_SOURCES) \ + $(liebert_esp2_SOURCES) $(macosx_ups_SOURCES) \ + $(masterguard_SOURCES) $(metasys_SOURCES) $(mge_shut_SOURCES) \ + $(mge_utalk_SOURCES) $(microdowell_SOURCES) \ + $(netxml_ups_SOURCES) $(nut_ipmipsu_SOURCES) \ + $(nutdrv_atcl_usb_SOURCES) $(nutdrv_qx_SOURCES) \ $(oldmge_shut_SOURCES) $(oneac_SOURCES) $(optiups_SOURCES) \ $(powercom_SOURCES) $(powerman_pdu_SOURCES) \ $(powerpanel_SOURCES) $(rhino_SOURCES) $(richcomm_usb_SOURCES) \ @@ -512,25 +453,20 @@ $(tripplitesu_SOURCES) $(upscode2_SOURCES) \ $(upsdrvctl_SOURCES) $(usbhid_ups_SOURCES) \ $(victronups_SOURCES) -DIST_SOURCES = $(libdummy_a_SOURCES) $(libnuthalmain_a_SOURCES) \ - $(al175_SOURCES) $(apcsmart_SOURCES) $(apcsmart_old_SOURCES) \ +DIST_SOURCES = $(libdummy_a_SOURCES) $(al175_SOURCES) \ + $(apcsmart_SOURCES) $(apcsmart_old_SOURCES) \ $(apcupsd_ups_SOURCES) $(bcmxcp_SOURCES) $(bcmxcp_usb_SOURCES) \ $(belkin_SOURCES) $(belkinunv_SOURCES) $(bestfcom_SOURCES) \ bestfortress.c $(bestuferrups_SOURCES) $(bestups_SOURCES) \ $(blazer_ser_SOURCES) $(blazer_usb_SOURCES) $(clone_SOURCES) \ $(clone_outlet_SOURCES) $(dummy_ups_SOURCES) $(etapro_SOURCES) \ $(everups_SOURCES) $(gamatronic_SOURCES) $(genericups_SOURCES) \ - $(hald_addon_bcmxcp_usb_SOURCES) \ - $(hald_addon_blazer_usb_SOURCES) \ - $(hald_addon_nutdrv_qx_SOURCES) \ - $(hald_addon_riello_usb_SOURCES) \ - $(hald_addon_tripplite_usb_SOURCES) \ - $(hald_addon_usbhid_ups_SOURCES) $(isbmex_SOURCES) \ - $(ivtscd_SOURCES) $(liebert_SOURCES) $(liebert_esp2_SOURCES) \ - $(macosx_ups_SOURCES) $(masterguard_SOURCES) \ - $(metasys_SOURCES) $(mge_shut_SOURCES) $(mge_utalk_SOURCES) \ - $(microdowell_SOURCES) $(netxml_ups_SOURCES) \ - $(am__nut_ipmipsu_SOURCES_DIST) $(am__nutdrv_qx_SOURCES_DIST) \ + $(isbmex_SOURCES) $(ivtscd_SOURCES) $(liebert_SOURCES) \ + $(liebert_esp2_SOURCES) $(macosx_ups_SOURCES) \ + $(masterguard_SOURCES) $(metasys_SOURCES) $(mge_shut_SOURCES) \ + $(mge_utalk_SOURCES) $(microdowell_SOURCES) \ + $(netxml_ups_SOURCES) $(am__nut_ipmipsu_SOURCES_DIST) \ + $(nutdrv_atcl_usb_SOURCES) $(am__nutdrv_qx_SOURCES_DIST) \ $(oldmge_shut_SOURCES) $(oneac_SOURCES) $(optiups_SOURCES) \ $(powercom_SOURCES) $(powerman_pdu_SOURCES) \ $(powerpanel_SOURCES) $(rhino_SOURCES) $(richcomm_usb_SOURCES) \ @@ -591,10 +527,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -606,8 +538,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -693,6 +623,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ @@ -740,7 +671,6 @@ #FIXME: SERLIBS is only useful for LDADD_DRIVERS_SERIAL not for LDADD_COMMON LDADD_COMMON = ../common/libcommon.la ../common/libparseconf.la LDADD_DRIVERS = $(LDADD_COMMON) main.o dstate.o -LDADD_HAL_DRIVERS = $(LDADD_COMMON) libnuthalmain.a LDADD_DRIVERS_SERIAL = $(LDADD_DRIVERS) $(SERLIBS) serial.o # most targets are drivers, so make this the default @@ -749,8 +679,7 @@ # files. In any case, CFLAGS are only -I options, so there is no harm, # but only add them if we really use the target. AM_CFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \ - $(am__append_3) $(am__append_4) $(am__append_5) \ - $(am__append_6) + $(am__append_3) $(am__append_4) $(am__append_5) SERIAL_DRIVERLIST = al175 bcmxcp belkin belkinunv bestfcom \ bestfortress bestuferrups bestups dummy-ups etapro everups \ gamatronic genericups isbmex liebert liebert-esp2 masterguard metasys \ @@ -761,16 +690,13 @@ SNMP_DRIVERLIST = snmp-ups USB_LIBUSB_DRIVERLIST = usbhid-ups bcmxcp_usb tripplite_usb \ - blazer_usb richcomm_usb riello_usb nutdrv_qx + blazer_usb richcomm_usb riello_usb \ + nutdrv_atcl_usb \ + nutdrv_qx USB_DRIVERLIST = $(USB_LIBUSB_DRIVERLIST) -HAL_DRIVERLIST = hald-addon-usbhid-ups hald-addon-bcmxcp_usb \ - hald-addon-tripplite_usb hald-addon-blazer_usb hald-addon-riello_usb \ - hald-addon-nutdrv_qx - NEONXML_DRIVERLIST = netxml-ups MACOSX_DRIVERLIST = macosx-ups -@SOME_DRIVERS_FALSE@@WITH_HAL_TRUE@halexecdir = $(HAL_CALLOUTS_PATH) # ========================================================================== # Driver build details @@ -830,9 +756,9 @@ # dummy dummy_ups_SOURCES = dummy-ups.c dummy_ups_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/clients \ - $(am__append_14) + $(am__append_13) dummy_ups_LDADD = $(LDADD_DRIVERS) ../clients/libupsclient.la \ - $(am__append_15) + $(am__append_14) # Clone drivers clone_SOURCES = clone.c @@ -862,6 +788,8 @@ bcmxcp_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) blazer_usb_SOURCES = blazer.c blazer_usb.c libusb.c usb-common.c blazer_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) -lm +nutdrv_atcl_usb_SOURCES = nutdrv_atcl_usb.c usb-common.c +nutdrv_atcl_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) richcomm_usb_SOURCES = richcomm_usb.c usb-common.c richcomm_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) riello_usb_SOURCES = riello.c riello_usb.c libusb.c usb-common.c @@ -876,27 +804,11 @@ # SNMP snmp_ups_SOURCES = snmp-ups.c apc-mib.c baytech-mib.c compaq-mib.c eaton-mib.c \ ietf-mib.c mge-mib.c netvision-mib.c powerware-mib.c raritan-pdu-mib.c \ - bestpower-mib.c cyberpower-mib.c delta_ups-mib.c + bestpower-mib.c cyberpower-mib.c delta_ups-mib.c \ + xppc-mib.c snmp_ups_LDADD = $(LDADD_DRIVERS) $(LIBNETSNMP_LIBS) -# HAL -hald_addon_usbhid_ups_SOURCES = usbhid-ups.c libhid.c libusb.c hidparser.c \ - $(USBHID_UPS_SUBDRIVERS) - -hald_addon_usbhid_ups_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -hald_addon_tripplite_usb_SOURCES = tripplite_usb.c libusb.c -hald_addon_tripplite_usb_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -lm -hald_addon_bcmxcp_usb_SOURCES = bcmxcp_usb.c bcmxcp.c -hald_addon_bcmxcp_usb_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -hald_addon_blazer_usb_SOURCES = blazer.c blazer_usb.c libusb.c -hald_addon_blazer_usb_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -lm -hald_addon_riello_usb_SOURCES = riello.c riello_usb.c libusb.c -hald_addon_riello_usb_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -lm -hald_addon_nutdrv_qx_SOURCES = nutdrv_qx.c libusb.c $(NUTDRV_QX_SUBDRIVERS) -hald_addon_nutdrv_qx_LDADD = $(LDADD_HAL_DRIVERS) $(LIBUSB_LIBS) $(LIBHAL_LIBS) -lm -hald_addon_nutdrv_qx_CFLAGS = $(AM_CFLAGS) -DQX_USB - # NEON XML/HTTP netxml_ups_SOURCES = netxml-ups.c mge-xml.c netxml_ups_LDADD = $(LDADD_DRIVERS) $(LIBNEON_LIBS) @@ -906,7 +818,7 @@ powerman_pdu_LDADD = $(LDADD) $(LIBPOWERMAN_LIBS) # IPMI PSU -nut_ipmipsu_SOURCES = nut-ipmipsu.c $(am__append_16) +nut_ipmipsu_SOURCES = nut-ipmipsu.c $(am__append_15) nut_ipmipsu_LDADD = $(LDADD) $(LIBIPMI_LIBS) # Mac OS X metadriver @@ -915,14 +827,14 @@ macosx_ups_SOURCES = macosx-ups.c # nutdrv_qx USB/Serial -nutdrv_qx_SOURCES = nutdrv_qx.c $(am__append_20) \ +nutdrv_qx_SOURCES = nutdrv_qx.c $(am__append_19) \ $(NUTDRV_QX_SUBDRIVERS) -nutdrv_qx_LDADD = $(LDADD_DRIVERS) -lm $(am__append_18) \ - $(am__append_21) -nutdrv_qx_CFLAGS = $(AM_CFLAGS) $(am__append_17) $(am__append_19) +nutdrv_qx_LDADD = $(LDADD_DRIVERS) -lm $(am__append_17) \ + $(am__append_20) +nutdrv_qx_CFLAGS = $(AM_CFLAGS) $(am__append_16) $(am__append_18) NUTDRV_QX_SUBDRIVERS = nutdrv_qx_blazer-common.c nutdrv_qx_mecer.c \ nutdrv_qx_megatec.c nutdrv_qx_megatec-old.c nutdrv_qx_mustek.c \ - nutdrv_qx_voltronic.c nutdrv_qx_zinto.c + nutdrv_qx_q1.c nutdrv_qx_voltronic.c nutdrv_qx_voltronic-qs.c nutdrv_qx_zinto.c # ---------------------------------------------------------------------- @@ -931,31 +843,24 @@ # distributed by "make dist". dist_noinst_HEADERS = apc-mib.h apc-hid.h baytech-mib.h bcmxcp.h \ bcmxcp_io.h belkin.h belkin-hid.h bestpower-mib.h blazer.h cps-hid.h dstate.h \ - dstate-hal.h dummy-ups.h eaton-mib.h explore-hid.h gamatronic.h genericups.h \ + dummy-ups.h eaton-mib.h explore-hid.h gamatronic.h genericups.h \ hidparser.h hidtypes.h ietf-mib.h libhid.h libshut.h libusb.h liebert-hid.h \ - main.h main-hal.h mge-hid.h mge-mib.h mge-shut.h mge-utalk.h \ + main.h mge-hid.h mge-mib.h mge-shut.h mge-utalk.h \ mge-xml.h microdowell.h netvision-mib.h netxml-ups.h nut-ipmi.h oneac.h \ powercom.h powerpanel.h powerp-bin.h powerp-txt.h powerware-mib.h raritan-pdu-mib.h \ safenet.h serial.h snmp-ups.h solis.h tripplite.h tripplite-hid.h \ upshandler.h usb-common.h usbhid-ups.h powercom-hid.h compaq-mib.h idowell-hid.h \ apcsmart.h apcsmart_tabs.h apcsmart-old.h apcupsd-ups.h cyberpower-mib.h riello.h openups-hid.h \ delta_ups-mib.h nutdrv_qx.h nutdrv_qx_blazer-common.h nutdrv_qx_mecer.h \ - nutdrv_qx_megatec.h nutdrv_qx_megatec-old.h nutdrv_qx_mustek.h nutdrv_qx_voltronic.h \ - nutdrv_qx_zinto.h + nutdrv_qx_megatec.h nutdrv_qx_megatec-old.h nutdrv_qx_mustek.h nutdrv_qx_q1.h \ + nutdrv_qx_voltronic.h nutdrv_qx_voltronic-qs.h nutdrv_qx_zinto.h \ + xppc-mib.h # Define a dummy library so that Automake builds rules for the # corresponding object files. This library is not actually built, - -# the nuthalmain library combines the code for main-hal.c and -# dstate-hal.c. It is necessary for Automake-technical reasons, -# because per-object CFLAGS can only be specified for libraries, not -# for object files. This library is used during the build process, -# and is not meant to be installed. -EXTRA_LIBRARIES = libdummy.a libnuthalmain.a +EXTRA_LIBRARIES = libdummy.a libdummy_a_SOURCES = main.c dstate.c serial.c -libnuthalmain_a_SOURCES = main-hal.c dstate-hal.c usb-common.c -MOSTLYCLEANFILES = libnuthalmain.a all: all-am .SUFFIXES: @@ -994,10 +899,6 @@ -rm -f libdummy.a $(libdummy_a_AR) libdummy.a $(libdummy_a_OBJECTS) $(libdummy_a_LIBADD) $(RANLIB) libdummy.a -libnuthalmain.a: $(libnuthalmain_a_OBJECTS) $(libnuthalmain_a_DEPENDENCIES) $(EXTRA_libnuthalmain_a_DEPENDENCIES) - -rm -f libnuthalmain.a - $(libnuthalmain_a_AR) libnuthalmain.a $(libnuthalmain_a_OBJECTS) $(libnuthalmain_a_LIBADD) - $(RANLIB) libnuthalmain.a install-driverexecPROGRAMS: $(driverexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(driverexec_PROGRAMS)'; test -n "$(driverexecdir)" || list=; \ @@ -1044,12 +945,12 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -install-halexecPROGRAMS: $(halexec_PROGRAMS) +install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) - @list='$(halexec_PROGRAMS)'; test -n "$(halexecdir)" || list=; \ + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(halexecdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(halexecdir)" || exit 1; \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ @@ -1067,23 +968,23 @@ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(halexecdir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(halexecdir)$$dir" || exit $$?; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done -uninstall-halexecPROGRAMS: +uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) - @list='$(halexec_PROGRAMS)'; test -n "$(halexecdir)" || list=; \ + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(halexecdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(halexecdir)" && rm -f $$files + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files -clean-halexecPROGRAMS: - @list='$(halexec_PROGRAMS)'; test -n "$$list" || exit 0; \ +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ @@ -1153,24 +1054,6 @@ genericups$(EXEEXT): $(genericups_OBJECTS) $(genericups_DEPENDENCIES) $(EXTRA_genericups_DEPENDENCIES) @rm -f genericups$(EXEEXT) $(LINK) $(genericups_OBJECTS) $(genericups_LDADD) $(LIBS) -hald-addon-bcmxcp_usb$(EXEEXT): $(hald_addon_bcmxcp_usb_OBJECTS) $(hald_addon_bcmxcp_usb_DEPENDENCIES) $(EXTRA_hald_addon_bcmxcp_usb_DEPENDENCIES) - @rm -f hald-addon-bcmxcp_usb$(EXEEXT) - $(LINK) $(hald_addon_bcmxcp_usb_OBJECTS) $(hald_addon_bcmxcp_usb_LDADD) $(LIBS) -hald-addon-blazer_usb$(EXEEXT): $(hald_addon_blazer_usb_OBJECTS) $(hald_addon_blazer_usb_DEPENDENCIES) $(EXTRA_hald_addon_blazer_usb_DEPENDENCIES) - @rm -f hald-addon-blazer_usb$(EXEEXT) - $(LINK) $(hald_addon_blazer_usb_OBJECTS) $(hald_addon_blazer_usb_LDADD) $(LIBS) -hald-addon-nutdrv_qx$(EXEEXT): $(hald_addon_nutdrv_qx_OBJECTS) $(hald_addon_nutdrv_qx_DEPENDENCIES) $(EXTRA_hald_addon_nutdrv_qx_DEPENDENCIES) - @rm -f hald-addon-nutdrv_qx$(EXEEXT) - $(hald_addon_nutdrv_qx_LINK) $(hald_addon_nutdrv_qx_OBJECTS) $(hald_addon_nutdrv_qx_LDADD) $(LIBS) -hald-addon-riello_usb$(EXEEXT): $(hald_addon_riello_usb_OBJECTS) $(hald_addon_riello_usb_DEPENDENCIES) $(EXTRA_hald_addon_riello_usb_DEPENDENCIES) - @rm -f hald-addon-riello_usb$(EXEEXT) - $(LINK) $(hald_addon_riello_usb_OBJECTS) $(hald_addon_riello_usb_LDADD) $(LIBS) -hald-addon-tripplite_usb$(EXEEXT): $(hald_addon_tripplite_usb_OBJECTS) $(hald_addon_tripplite_usb_DEPENDENCIES) $(EXTRA_hald_addon_tripplite_usb_DEPENDENCIES) - @rm -f hald-addon-tripplite_usb$(EXEEXT) - $(LINK) $(hald_addon_tripplite_usb_OBJECTS) $(hald_addon_tripplite_usb_LDADD) $(LIBS) -hald-addon-usbhid-ups$(EXEEXT): $(hald_addon_usbhid_ups_OBJECTS) $(hald_addon_usbhid_ups_DEPENDENCIES) $(EXTRA_hald_addon_usbhid_ups_DEPENDENCIES) - @rm -f hald-addon-usbhid-ups$(EXEEXT) - $(LINK) $(hald_addon_usbhid_ups_OBJECTS) $(hald_addon_usbhid_ups_LDADD) $(LIBS) isbmex$(EXEEXT): $(isbmex_OBJECTS) $(isbmex_DEPENDENCIES) $(EXTRA_isbmex_DEPENDENCIES) @rm -f isbmex$(EXEEXT) $(LINK) $(isbmex_OBJECTS) $(isbmex_LDADD) $(LIBS) @@ -1207,6 +1090,9 @@ nut-ipmipsu$(EXEEXT): $(nut_ipmipsu_OBJECTS) $(nut_ipmipsu_DEPENDENCIES) $(EXTRA_nut_ipmipsu_DEPENDENCIES) @rm -f nut-ipmipsu$(EXEEXT) $(LINK) $(nut_ipmipsu_OBJECTS) $(nut_ipmipsu_LDADD) $(LIBS) +nutdrv_atcl_usb$(EXEEXT): $(nutdrv_atcl_usb_OBJECTS) $(nutdrv_atcl_usb_DEPENDENCIES) $(EXTRA_nutdrv_atcl_usb_DEPENDENCIES) + @rm -f nutdrv_atcl_usb$(EXEEXT) + $(LINK) $(nutdrv_atcl_usb_OBJECTS) $(nutdrv_atcl_usb_LDADD) $(LIBS) nutdrv_qx$(EXEEXT): $(nutdrv_qx_OBJECTS) $(nutdrv_qx_DEPENDENCIES) $(EXTRA_nutdrv_qx_DEPENDENCIES) @rm -f nutdrv_qx$(EXEEXT) $(nutdrv_qx_LINK) $(nutdrv_qx_OBJECTS) $(nutdrv_qx_LDADD) $(LIBS) @@ -1308,7 +1194,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cps-hid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cyberpower-mib.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delta_ups-mib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dstate-hal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dstate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy_ups-dummy-ups.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaton-mib.Po@am__quote@ @@ -1317,15 +1202,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/explore-hid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gamatronic.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genericups.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_nutdrv_qx-libusb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mecer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mustek.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_voltronic.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_zinto.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hidparser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idowell-hid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ietf-mib.Po@am__quote@ @@ -1337,7 +1213,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liebert-hid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liebert.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/macosx-ups.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main-hal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/masterguard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metasys.Po@am__quote@ @@ -1356,6 +1231,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netxml-ups.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nut-ipmipsu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nut-libfreeipmi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_atcl_usb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-libusb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-nutdrv_qx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-nutdrv_qx_blazer-common.Po@am__quote@ @@ -1363,6 +1239,8 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-nutdrv_qx_megatec-old.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-nutdrv_qx_megatec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-nutdrv_qx_mustek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-nutdrv_qx_q1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic-qs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-nutdrv_qx_zinto.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nutdrv_qx-usb-common.Po@am__quote@ @@ -1396,6 +1274,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usb-common.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usbhid-ups.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/victronups.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xppc-mib.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -1446,132 +1325,6 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dummy_ups_CFLAGS) $(CFLAGS) -c -o dummy_ups-dummy-ups.obj `if test -f 'dummy-ups.c'; then $(CYGPATH_W) 'dummy-ups.c'; else $(CYGPATH_W) '$(srcdir)/dummy-ups.c'; fi` -hald_addon_nutdrv_qx-nutdrv_qx.o: nutdrv_qx.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx.o -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx.o `test -f 'nutdrv_qx.c' || echo '$(srcdir)/'`nutdrv_qx.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx.c' object='hald_addon_nutdrv_qx-nutdrv_qx.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx.o `test -f 'nutdrv_qx.c' || echo '$(srcdir)/'`nutdrv_qx.c - -hald_addon_nutdrv_qx-nutdrv_qx.obj: nutdrv_qx.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx.obj -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx.obj `if test -f 'nutdrv_qx.c'; then $(CYGPATH_W) 'nutdrv_qx.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx.c' object='hald_addon_nutdrv_qx-nutdrv_qx.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx.obj `if test -f 'nutdrv_qx.c'; then $(CYGPATH_W) 'nutdrv_qx.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx.c'; fi` - -hald_addon_nutdrv_qx-libusb.o: libusb.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-libusb.o -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-libusb.Tpo -c -o hald_addon_nutdrv_qx-libusb.o `test -f 'libusb.c' || echo '$(srcdir)/'`libusb.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-libusb.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-libusb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libusb.c' object='hald_addon_nutdrv_qx-libusb.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-libusb.o `test -f 'libusb.c' || echo '$(srcdir)/'`libusb.c - -hald_addon_nutdrv_qx-libusb.obj: libusb.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-libusb.obj -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-libusb.Tpo -c -o hald_addon_nutdrv_qx-libusb.obj `if test -f 'libusb.c'; then $(CYGPATH_W) 'libusb.c'; else $(CYGPATH_W) '$(srcdir)/libusb.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-libusb.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-libusb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libusb.c' object='hald_addon_nutdrv_qx-libusb.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-libusb.obj `if test -f 'libusb.c'; then $(CYGPATH_W) 'libusb.c'; else $(CYGPATH_W) '$(srcdir)/libusb.c'; fi` - -hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.o: nutdrv_qx_blazer-common.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.o -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.o `test -f 'nutdrv_qx_blazer-common.c' || echo '$(srcdir)/'`nutdrv_qx_blazer-common.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_blazer-common.c' object='hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.o `test -f 'nutdrv_qx_blazer-common.c' || echo '$(srcdir)/'`nutdrv_qx_blazer-common.c - -hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.obj: nutdrv_qx_blazer-common.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.obj -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.obj `if test -f 'nutdrv_qx_blazer-common.c'; then $(CYGPATH_W) 'nutdrv_qx_blazer-common.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_blazer-common.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_blazer-common.c' object='hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_blazer-common.obj `if test -f 'nutdrv_qx_blazer-common.c'; then $(CYGPATH_W) 'nutdrv_qx_blazer-common.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_blazer-common.c'; fi` - -hald_addon_nutdrv_qx-nutdrv_qx_mecer.o: nutdrv_qx_mecer.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_mecer.o -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mecer.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_mecer.o `test -f 'nutdrv_qx_mecer.c' || echo '$(srcdir)/'`nutdrv_qx_mecer.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mecer.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mecer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_mecer.c' object='hald_addon_nutdrv_qx-nutdrv_qx_mecer.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_mecer.o `test -f 'nutdrv_qx_mecer.c' || echo '$(srcdir)/'`nutdrv_qx_mecer.c - -hald_addon_nutdrv_qx-nutdrv_qx_mecer.obj: nutdrv_qx_mecer.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_mecer.obj -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mecer.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_mecer.obj `if test -f 'nutdrv_qx_mecer.c'; then $(CYGPATH_W) 'nutdrv_qx_mecer.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_mecer.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mecer.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mecer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_mecer.c' object='hald_addon_nutdrv_qx-nutdrv_qx_mecer.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_mecer.obj `if test -f 'nutdrv_qx_mecer.c'; then $(CYGPATH_W) 'nutdrv_qx_mecer.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_mecer.c'; fi` - -hald_addon_nutdrv_qx-nutdrv_qx_megatec.o: nutdrv_qx_megatec.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_megatec.o -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_megatec.o `test -f 'nutdrv_qx_megatec.c' || echo '$(srcdir)/'`nutdrv_qx_megatec.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_megatec.c' object='hald_addon_nutdrv_qx-nutdrv_qx_megatec.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_megatec.o `test -f 'nutdrv_qx_megatec.c' || echo '$(srcdir)/'`nutdrv_qx_megatec.c - -hald_addon_nutdrv_qx-nutdrv_qx_megatec.obj: nutdrv_qx_megatec.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_megatec.obj -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_megatec.obj `if test -f 'nutdrv_qx_megatec.c'; then $(CYGPATH_W) 'nutdrv_qx_megatec.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_megatec.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_megatec.c' object='hald_addon_nutdrv_qx-nutdrv_qx_megatec.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_megatec.obj `if test -f 'nutdrv_qx_megatec.c'; then $(CYGPATH_W) 'nutdrv_qx_megatec.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_megatec.c'; fi` - -hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.o: nutdrv_qx_megatec-old.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.o -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.o `test -f 'nutdrv_qx_megatec-old.c' || echo '$(srcdir)/'`nutdrv_qx_megatec-old.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_megatec-old.c' object='hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.o `test -f 'nutdrv_qx_megatec-old.c' || echo '$(srcdir)/'`nutdrv_qx_megatec-old.c - -hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.obj: nutdrv_qx_megatec-old.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.obj -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.obj `if test -f 'nutdrv_qx_megatec-old.c'; then $(CYGPATH_W) 'nutdrv_qx_megatec-old.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_megatec-old.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_megatec-old.c' object='hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_megatec-old.obj `if test -f 'nutdrv_qx_megatec-old.c'; then $(CYGPATH_W) 'nutdrv_qx_megatec-old.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_megatec-old.c'; fi` - -hald_addon_nutdrv_qx-nutdrv_qx_mustek.o: nutdrv_qx_mustek.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_mustek.o -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mustek.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_mustek.o `test -f 'nutdrv_qx_mustek.c' || echo '$(srcdir)/'`nutdrv_qx_mustek.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mustek.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mustek.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_mustek.c' object='hald_addon_nutdrv_qx-nutdrv_qx_mustek.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_mustek.o `test -f 'nutdrv_qx_mustek.c' || echo '$(srcdir)/'`nutdrv_qx_mustek.c - -hald_addon_nutdrv_qx-nutdrv_qx_mustek.obj: nutdrv_qx_mustek.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_mustek.obj -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mustek.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_mustek.obj `if test -f 'nutdrv_qx_mustek.c'; then $(CYGPATH_W) 'nutdrv_qx_mustek.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_mustek.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mustek.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_mustek.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_mustek.c' object='hald_addon_nutdrv_qx-nutdrv_qx_mustek.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_mustek.obj `if test -f 'nutdrv_qx_mustek.c'; then $(CYGPATH_W) 'nutdrv_qx_mustek.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_mustek.c'; fi` - -hald_addon_nutdrv_qx-nutdrv_qx_voltronic.o: nutdrv_qx_voltronic.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_voltronic.o -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_voltronic.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_voltronic.o `test -f 'nutdrv_qx_voltronic.c' || echo '$(srcdir)/'`nutdrv_qx_voltronic.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_voltronic.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_voltronic.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_voltronic.c' object='hald_addon_nutdrv_qx-nutdrv_qx_voltronic.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_voltronic.o `test -f 'nutdrv_qx_voltronic.c' || echo '$(srcdir)/'`nutdrv_qx_voltronic.c - -hald_addon_nutdrv_qx-nutdrv_qx_voltronic.obj: nutdrv_qx_voltronic.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_voltronic.obj -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_voltronic.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_voltronic.obj `if test -f 'nutdrv_qx_voltronic.c'; then $(CYGPATH_W) 'nutdrv_qx_voltronic.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_voltronic.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_voltronic.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_voltronic.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_voltronic.c' object='hald_addon_nutdrv_qx-nutdrv_qx_voltronic.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_voltronic.obj `if test -f 'nutdrv_qx_voltronic.c'; then $(CYGPATH_W) 'nutdrv_qx_voltronic.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_voltronic.c'; fi` - -hald_addon_nutdrv_qx-nutdrv_qx_zinto.o: nutdrv_qx_zinto.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_zinto.o -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_zinto.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_zinto.o `test -f 'nutdrv_qx_zinto.c' || echo '$(srcdir)/'`nutdrv_qx_zinto.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_zinto.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_zinto.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_zinto.c' object='hald_addon_nutdrv_qx-nutdrv_qx_zinto.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_zinto.o `test -f 'nutdrv_qx_zinto.c' || echo '$(srcdir)/'`nutdrv_qx_zinto.c - -hald_addon_nutdrv_qx-nutdrv_qx_zinto.obj: nutdrv_qx_zinto.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -MT hald_addon_nutdrv_qx-nutdrv_qx_zinto.obj -MD -MP -MF $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_zinto.Tpo -c -o hald_addon_nutdrv_qx-nutdrv_qx_zinto.obj `if test -f 'nutdrv_qx_zinto.c'; then $(CYGPATH_W) 'nutdrv_qx_zinto.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_zinto.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_zinto.Tpo $(DEPDIR)/hald_addon_nutdrv_qx-nutdrv_qx_zinto.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_zinto.c' object='hald_addon_nutdrv_qx-nutdrv_qx_zinto.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_nutdrv_qx_CFLAGS) $(CFLAGS) -c -o hald_addon_nutdrv_qx-nutdrv_qx_zinto.obj `if test -f 'nutdrv_qx_zinto.c'; then $(CYGPATH_W) 'nutdrv_qx_zinto.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_zinto.c'; fi` - mge_shut-usbhid-ups.o: usbhid-ups.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-usbhid-ups.o -MD -MP -MF $(DEPDIR)/mge_shut-usbhid-ups.Tpo -c -o mge_shut-usbhid-ups.o `test -f 'usbhid-ups.c' || echo '$(srcdir)/'`usbhid-ups.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-usbhid-ups.Tpo $(DEPDIR)/mge_shut-usbhid-ups.Po @@ -1754,6 +1507,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -c -o nutdrv_qx-nutdrv_qx_mustek.obj `if test -f 'nutdrv_qx_mustek.c'; then $(CYGPATH_W) 'nutdrv_qx_mustek.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_mustek.c'; fi` +nutdrv_qx-nutdrv_qx_q1.o: nutdrv_qx_q1.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -MT nutdrv_qx-nutdrv_qx_q1.o -MD -MP -MF $(DEPDIR)/nutdrv_qx-nutdrv_qx_q1.Tpo -c -o nutdrv_qx-nutdrv_qx_q1.o `test -f 'nutdrv_qx_q1.c' || echo '$(srcdir)/'`nutdrv_qx_q1.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/nutdrv_qx-nutdrv_qx_q1.Tpo $(DEPDIR)/nutdrv_qx-nutdrv_qx_q1.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_q1.c' object='nutdrv_qx-nutdrv_qx_q1.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -c -o nutdrv_qx-nutdrv_qx_q1.o `test -f 'nutdrv_qx_q1.c' || echo '$(srcdir)/'`nutdrv_qx_q1.c + +nutdrv_qx-nutdrv_qx_q1.obj: nutdrv_qx_q1.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -MT nutdrv_qx-nutdrv_qx_q1.obj -MD -MP -MF $(DEPDIR)/nutdrv_qx-nutdrv_qx_q1.Tpo -c -o nutdrv_qx-nutdrv_qx_q1.obj `if test -f 'nutdrv_qx_q1.c'; then $(CYGPATH_W) 'nutdrv_qx_q1.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_q1.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/nutdrv_qx-nutdrv_qx_q1.Tpo $(DEPDIR)/nutdrv_qx-nutdrv_qx_q1.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_q1.c' object='nutdrv_qx-nutdrv_qx_q1.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -c -o nutdrv_qx-nutdrv_qx_q1.obj `if test -f 'nutdrv_qx_q1.c'; then $(CYGPATH_W) 'nutdrv_qx_q1.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_q1.c'; fi` + nutdrv_qx-nutdrv_qx_voltronic.o: nutdrv_qx_voltronic.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -MT nutdrv_qx-nutdrv_qx_voltronic.o -MD -MP -MF $(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic.Tpo -c -o nutdrv_qx-nutdrv_qx_voltronic.o `test -f 'nutdrv_qx_voltronic.c' || echo '$(srcdir)/'`nutdrv_qx_voltronic.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic.Tpo $(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic.Po @@ -1768,6 +1535,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -c -o nutdrv_qx-nutdrv_qx_voltronic.obj `if test -f 'nutdrv_qx_voltronic.c'; then $(CYGPATH_W) 'nutdrv_qx_voltronic.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_voltronic.c'; fi` +nutdrv_qx-nutdrv_qx_voltronic-qs.o: nutdrv_qx_voltronic-qs.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -MT nutdrv_qx-nutdrv_qx_voltronic-qs.o -MD -MP -MF $(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic-qs.Tpo -c -o nutdrv_qx-nutdrv_qx_voltronic-qs.o `test -f 'nutdrv_qx_voltronic-qs.c' || echo '$(srcdir)/'`nutdrv_qx_voltronic-qs.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic-qs.Tpo $(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic-qs.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_voltronic-qs.c' object='nutdrv_qx-nutdrv_qx_voltronic-qs.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -c -o nutdrv_qx-nutdrv_qx_voltronic-qs.o `test -f 'nutdrv_qx_voltronic-qs.c' || echo '$(srcdir)/'`nutdrv_qx_voltronic-qs.c + +nutdrv_qx-nutdrv_qx_voltronic-qs.obj: nutdrv_qx_voltronic-qs.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -MT nutdrv_qx-nutdrv_qx_voltronic-qs.obj -MD -MP -MF $(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic-qs.Tpo -c -o nutdrv_qx-nutdrv_qx_voltronic-qs.obj `if test -f 'nutdrv_qx_voltronic-qs.c'; then $(CYGPATH_W) 'nutdrv_qx_voltronic-qs.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_voltronic-qs.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic-qs.Tpo $(DEPDIR)/nutdrv_qx-nutdrv_qx_voltronic-qs.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nutdrv_qx_voltronic-qs.c' object='nutdrv_qx-nutdrv_qx_voltronic-qs.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -c -o nutdrv_qx-nutdrv_qx_voltronic-qs.obj `if test -f 'nutdrv_qx_voltronic-qs.c'; then $(CYGPATH_W) 'nutdrv_qx_voltronic-qs.c'; else $(CYGPATH_W) '$(srcdir)/nutdrv_qx_voltronic-qs.c'; fi` + nutdrv_qx-nutdrv_qx_zinto.o: nutdrv_qx_zinto.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nutdrv_qx_CFLAGS) $(CFLAGS) -MT nutdrv_qx-nutdrv_qx_zinto.o -MD -MP -MF $(DEPDIR)/nutdrv_qx-nutdrv_qx_zinto.Tpo -c -o nutdrv_qx-nutdrv_qx_zinto.o `test -f 'nutdrv_qx_zinto.c' || echo '$(srcdir)/'`nutdrv_qx_zinto.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/nutdrv_qx-nutdrv_qx_zinto.Tpo $(DEPDIR)/nutdrv_qx-nutdrv_qx_zinto.Po @@ -1874,7 +1655,7 @@ check: check-am all-am: Makefile $(PROGRAMS) $(HEADERS) installdirs: - for dir in "$(DESTDIR)$(driverexecdir)" "$(DESTDIR)$(halexecdir)"; do \ + for dir in "$(DESTDIR)$(driverexecdir)" "$(DESTDIR)$(sbindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -1897,7 +1678,6 @@ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: @@ -1910,8 +1690,8 @@ @echo "it deletes files that may require special tools to rebuild." clean: clean-am -clean-am: clean-driverexecPROGRAMS clean-generic clean-halexecPROGRAMS \ - clean-libtool mostlyclean-am +clean-am: clean-driverexecPROGRAMS clean-generic clean-libtool \ + clean-sbinPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) @@ -1937,7 +1717,7 @@ install-dvi-am: -install-exec-am: install-driverexecPROGRAMS install-halexecPROGRAMS +install-exec-am: install-driverexecPROGRAMS install-sbinPROGRAMS install-html: install-html-am @@ -1977,25 +1757,25 @@ ps-am: -uninstall-am: uninstall-driverexecPROGRAMS uninstall-halexecPROGRAMS +uninstall-am: uninstall-driverexecPROGRAMS uninstall-sbinPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean \ - clean-driverexecPROGRAMS clean-generic clean-halexecPROGRAMS \ - clean-libtool ctags distclean distclean-compile \ + clean-driverexecPROGRAMS clean-generic clean-libtool \ + clean-sbinPROGRAMS ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-driverexecPROGRAMS \ install-dvi install-dvi-am install-exec install-exec-am \ - install-halexecPROGRAMS install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-driverexecPROGRAMS \ - uninstall-halexecPROGRAMS + uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru nut-2.7.1/drivers/mge-hid.c nut-2.7.2/drivers/mge-hid.c --- nut-2.7.1/drivers/mge-hid.c 2013-10-30 14:47:15.000000000 +0100 +++ nut-2.7.2/drivers/mge-hid.c 2014-02-25 16:47:46.000000000 +0100 @@ -36,7 +36,7 @@ #include "usbhid-ups.h" #include "mge-hid.h" -#define MGE_HID_VERSION "MGE HID 1.32" +#define MGE_HID_VERSION "MGE HID 1.33" /* (prev. MGE Office Protection Systems, prev. MGE UPS SYSTEMS) */ /* Eaton */ @@ -98,7 +98,8 @@ MGE_PULSAR_M = 0x400, /* MGE Pulsar M series */ MGE_PULSAR_M_2200, MGE_PULSAR_M_3000, - MGE_PULSAR_M_3000_XL + MGE_PULSAR_M_3000_XL, + EATON_5P = 0x500 /* Eaton 5P / 5PX series */ } models_type_t; /* Default to line-interactive or online (ie, not offline). @@ -211,6 +212,7 @@ break; case MGE_PULSAR_M: + case EATON_5P: break; default: @@ -234,6 +236,7 @@ { case MGE_EVOLUTION: case MGE_PULSAR_M: + case EATON_5P: break; default: @@ -774,6 +777,12 @@ { "Evolution", "S 2500", MGE_EVOLUTION_S_2500, NULL }, { "Evolution", "S 3000", MGE_EVOLUTION_S_3000, NULL }, + /* Eaton 5P */ + { "Eaton 5P", "650", EATON_5P, "5P 650" }, + { "Eaton 5P", "850", EATON_5P, "5P 850" }, + { "Eaton 5P", "1150", EATON_5P, "5P 1150" }, + { "Eaton 5P", "1550", EATON_5P, "5P 1550" }, + /* Pulsar M models */ { "PULSAR M", "2200", MGE_PULSAR_M_2200, NULL }, { "PULSAR M", "3000", MGE_PULSAR_M_3000, NULL }, diff -Nru nut-2.7.1/drivers/mge-xml.c nut-2.7.2/drivers/mge-xml.c --- nut-2.7.1/drivers/mge-xml.c 2013-10-30 14:47:15.000000000 +0100 +++ nut-2.7.2/drivers/mge-xml.c 2014-04-07 20:37:40.000000000 +0200 @@ -31,7 +31,7 @@ #include "netxml-ups.h" #include "mge-xml.h" -#define MGE_XML_VERSION "MGEXML/0.22" +#define MGE_XML_VERSION "MGEXML/0.23" #define MGE_XML_INITUPS "/" #define MGE_XML_INITINFO "/mgeups/product.xml /product.xml /ws/product.xml" @@ -1489,7 +1489,7 @@ /* Convert */ if (NULL != info->convert) { - char *vconv = info->convert(vcpy); + char *vconv = (char *)info->convert(vcpy); free(vcpy); @@ -1510,7 +1510,7 @@ xml_info_t *info = mge_xml2nut + i; if (NULL != info->nutname && info->nutflags & ST_FLAG_RW) { - dstate_setinfo(info->nutname, ""); + dstate_setinfo(info->nutname, "%s", ""); dstate_setflags(info->nutname, ST_FLAG_RW); } } diff -Nru nut-2.7.1/drivers/nutdrv_atcl_usb.c nut-2.7.2/drivers/nutdrv_atcl_usb.c --- nut-2.7.1/drivers/nutdrv_atcl_usb.c 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_atcl_usb.c 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,498 @@ +/* + * nutdrv_atcl_usb.c - driver for generic-brand "ATCL FOR UPS" + * + * Copyright (C) 2013-2014 Charles Lepple + * + * Loosely based on richcomm_usb.c, + * Copyright (C) 2007 Peter van Valderen + * Dirk Teurlings + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "usb-common.h" + +/* driver version */ +#define DRIVER_NAME "'ATCL FOR UPS' USB driver" +#define DRIVER_VERSION "1.1" + +/* driver description structure */ +upsdrv_info_t upsdrv_info = { + DRIVER_NAME, + DRIVER_VERSION, + "Charles Lepple ", + DRV_EXPERIMENTAL, + { NULL } +}; + +#define STATUS_ENDPOINT (USB_ENDPOINT_IN | 1) +#define SHUTDOWN_ENDPOINT (USB_ENDPOINT_OUT | 2) +#define STATUS_PACKETSIZE 8 +#define SHUTDOWN_PACKETSIZE 8 + +/* Probably can reduce this, since the pcap file shows mostly 1050-ish ms response times */ +#define ATCL_USB_TIMEOUT USB_TIMEOUT + +/* limit the amount of spew that goes in the syslog when we lose the UPS (from nut_usb.h) */ +#define USB_ERR_LIMIT 10 /* start limiting after 10 in a row */ +#define USB_ERR_RATE 10 /* then only print every 10th error */ + +#define USB_VENDOR_STRING "ATCL FOR UPS" + +static usb_device_id_t atcl_usb_id[] = { + /* ATCL FOR UPS */ + { USB_DEVICE(0x0001, 0x0000), NULL }, + + /* end of list */ + {-1, -1, NULL} +}; + +static usb_dev_handle *udev = NULL; +static USBDevice_t usbdevice; +static unsigned int comm_failures = 0; + +static int device_match_func(USBDevice_t *device, void *privdata) +{ + char *requested_vendor; + switch (is_usb_device_supported(atcl_usb_id, device)) + { + case SUPPORTED: + if(!device->Vendor) { + upsdebugx(1, "Couldn't retrieve USB string descriptor for vendor. Check permissions?"); + requested_vendor = getval("vendor"); + if(requested_vendor) { + if(!strcmp("NULL", requested_vendor)) { + upsdebugx(3, "Matched device with NULL vendor string."); + return 1; + } + } + upsdebugx(1, "To keep trying (in case your device does not have a vendor string), use vendor=NULL"); + return 0; + } + + if(!strcmp(device->Vendor, USB_VENDOR_STRING)) { + upsdebugx(4, "Matched expected vendor='%s'.", USB_VENDOR_STRING); + return 1; + } + /* Didn't match, but the user provided an alternate vendor ID: */ + requested_vendor = getval("vendor"); + if(requested_vendor) { + if(!strcmp(device->Vendor, requested_vendor)) { + upsdebugx(3, "Matched device with vendor='%s'.", requested_vendor); + return 1; + } else { + upsdebugx(2, "idVendor=%04x and idProduct=%04x, but provided vendor '%s' does not match device: '%s'.", + device->VendorID, device->ProductID, requested_vendor, device->Vendor); + return 0; + } + } + + /* TODO: automatic way of suggesting other drivers? */ + upsdebugx(2, "idVendor=%04x and idProduct=%04x, but device vendor string '%s' does not match expected string '%s'. " + "Have you tried the nutdrv_qx driver?", + device->VendorID, device->ProductID, device->Vendor, USB_VENDOR_STRING); + return 0; + + case POSSIBLY_SUPPORTED: + case NOT_SUPPORTED: + default: + return 0; + } +} + +static USBDeviceMatcher_t device_matcher = { + &device_match_func, + NULL, + NULL +}; + +static int query_ups(char *reply) +{ + int ret; + + ret = usb_interrupt_read(udev, STATUS_ENDPOINT, reply, STATUS_PACKETSIZE, ATCL_USB_TIMEOUT); + + if (ret <= 0) { + upsdebugx(2, "status interrupt read: %s", ret ? usb_strerror() : "timeout"); + return ret; + } + + upsdebug_hex(3, "read", reply, ret); + return ret; +} + +static void usb_comm_fail(const char *fmt, ...) +{ + int ret; + char why[SMALLBUF]; + va_list ap; + + /* this means we're probably here because select was interrupted */ + if (exit_flag != 0) { + return; /* ignored, since we're about to exit anyway */ + } + + comm_failures++; + + if ((comm_failures == USB_ERR_LIMIT) || ((comm_failures % USB_ERR_RATE) == 0)) { + upslogx(LOG_WARNING, "Warning: excessive comm failures, limiting error reporting"); + } + + /* once it's past the limit, only log once every USB_ERR_LIMIT calls */ + if ((comm_failures > USB_ERR_LIMIT) && ((comm_failures % USB_ERR_LIMIT) != 0)) { + return; + } + + /* generic message if the caller hasn't elaborated */ + if (!fmt) { + upslogx(LOG_WARNING, "Communications with UPS lost - check cabling"); + return; + } + + va_start(ap, fmt); + ret = vsnprintf(why, sizeof(why), fmt, ap); + va_end(ap); + + if ((ret < 1) || (ret >= (int) sizeof(why))) { + upslogx(LOG_WARNING, "usb_comm_fail: vsnprintf needed more than %d bytes", (int)sizeof(why)); + } + + upslogx(LOG_WARNING, "Communications with UPS lost: %s", why); +} + +static void usb_comm_good(void) +{ + if (comm_failures == 0) { + return; + } + + upslogx(LOG_NOTICE, "Communications with UPS re-established"); + comm_failures = 0; +} + +/* + * Callback that is called by usb_device_open() that handles USB device + * settings prior to accepting the devide. At the very least claim the + * device here. Detaching the kernel driver will be handled by the + * caller, don't do this here. Return < 0 on error, 0 or higher on + * success. + */ +static int driver_callback(usb_dev_handle *handle, USBDevice_t *device) +{ + if (usb_set_configuration(handle, 1) < 0) { + upslogx(LOG_WARNING, "Can't set USB configuration: %s", usb_strerror()); + return -1; + } + + if (usb_claim_interface(handle, 0) < 0) { + upslogx(LOG_WARNING, "Can't claim USB interface: %s", usb_strerror()); + return -1; + } + + /* TODO: HID SET_IDLE to 0 (not necessary?) */ + + return 1; +} + +static int usb_device_close(usb_dev_handle *handle) +{ + if (!handle) { + return 0; + } + + /* usb_release_interface() sometimes blocks and goes + into uninterruptible sleep. So don't do it. */ + /* usb_release_interface(handle, 0); */ + return usb_close(handle); +} + +static int usb_device_open(usb_dev_handle **handlep, USBDevice_t *device, USBDeviceMatcher_t *matcher, + int (*callback)(usb_dev_handle *handle, USBDevice_t *device)) +{ + struct usb_bus *bus; + + /* libusb base init */ + usb_init(); + usb_find_busses(); + usb_find_devices(); + +#ifndef __linux__ /* SUN_LIBUSB (confirmed to work on Solaris and FreeBSD) */ + /* Causes a double free corruption in linux if device is detached! */ + usb_device_close(*handlep); +#endif + + for (bus = usb_busses; bus; bus = bus->next) { + + struct usb_device *dev; + usb_dev_handle *handle; + + for (dev = bus->devices; dev; dev = dev->next) { + + int i, ret; + USBDeviceMatcher_t *m; + + upsdebugx(3, "Checking USB device [%04x:%04x] (%s/%s)", dev->descriptor.idVendor, + dev->descriptor.idProduct, bus->dirname, dev->filename); + + /* supported vendors are now checked by the supplied matcher */ + + /* open the device */ + *handlep = handle = usb_open(dev); + if (!handle) { + upsdebugx(4, "Failed to open USB device, skipping: %s", usb_strerror()); + continue; + } + + /* collect the identifying information of this + device. Note that this is safe, because + there's no need to claim an interface for + this (and therefore we do not yet need to + detach any kernel drivers). */ + + free(device->Vendor); + free(device->Product); + free(device->Serial); + free(device->Bus); + + memset(device, 0, sizeof(*device)); + + device->VendorID = dev->descriptor.idVendor; + device->ProductID = dev->descriptor.idProduct; + device->Bus = strdup(bus->dirname); + + if (dev->descriptor.iManufacturer) { + char buf[SMALLBUF]; + ret = usb_get_string_simple(handle, dev->descriptor.iManufacturer, + buf, sizeof(buf)); + if (ret > 0) { + device->Vendor = strdup(buf); + } + } + + if (dev->descriptor.iProduct) { + char buf[SMALLBUF]; + ret = usb_get_string_simple(handle, dev->descriptor.iProduct, + buf, sizeof(buf)); + if (ret > 0) { + device->Product = strdup(buf); + } + } + + if (dev->descriptor.iSerialNumber) { + char buf[SMALLBUF]; + ret = usb_get_string_simple(handle, dev->descriptor.iSerialNumber, + buf, sizeof(buf)); + if (ret > 0) { + device->Serial = strdup(buf); + } + } + + upsdebugx(4, "- VendorID : %04x", device->VendorID); + upsdebugx(4, "- ProductID : %04x", device->ProductID); + upsdebugx(4, "- Manufacturer : %s", device->Vendor ? device->Vendor : "unknown"); + upsdebugx(4, "- Product : %s", device->Product ? device->Product : "unknown"); + upsdebugx(4, "- Serial Number: %s", device->Serial ? device->Serial : "unknown"); + upsdebugx(4, "- Bus : %s", device->Bus ? device->Bus : "unknown"); + + for (m = matcher; m; m = m->next) { + + switch (m->match_function(device, m->privdata)) + { + case 0: + upsdebugx(4, "Device does not match - skipping"); + goto next_device; + case -1: + fatal_with_errno(EXIT_FAILURE, "matcher"); + goto next_device; + case -2: + upsdebugx(4, "matcher: unspecified error"); + goto next_device; + } + } + + for (i = 0; i < 3; i++) { + + ret = callback(handle, device); + if (ret >= 0) { + upsdebugx(3, "USB device [%04x:%04x] opened", device->VendorID, device->ProductID); + return ret; + } +#ifdef HAVE_USB_DETACH_KERNEL_DRIVER_NP + /* this method requires at least libusb 0.1.8: + * it forces device claiming by unbinding + * attached driver... From libhid */ + if (usb_detach_kernel_driver_np(handle, 0) < 0) { + upsdebugx(1, "failed to detach kernel driver from USB device: %s", usb_strerror()); + } else { + upsdebugx(4, "detached kernel driver from USB device..."); + } +#endif + } + + fatalx(EXIT_FAILURE, "USB device [%04x:%04x] matches, but driver callback failed: %s", + device->VendorID, device->ProductID, usb_strerror()); + + next_device: + usb_close(handle); + } + } + + *handlep = NULL; + upsdebugx(3, "No matching USB device found"); + + return -1; +} + +/* + * Initialise the UPS + */ +void upsdrv_initups(void) +{ + int i; + + upsdebugx(1, "Searching for USB device..."); + + for (i = 0; usb_device_open(&udev, &usbdevice, &device_matcher, &driver_callback) < 0; i++) { + + if ((i < 3) && (sleep(5) == 0)) { + usb_comm_fail("Can't open USB device, retrying ..."); + continue; + } + + fatalx(EXIT_FAILURE, + "Unable to find ATCL FOR UPS\n\n" + + "Things to try:\n" + " - Connect UPS device to USB bus\n" + " - Run this driver as another user (upsdrvctl -u or 'user=...' in ups.conf).\n" + " See upsdrvctl(8) and ups.conf(5).\n\n" + + "Fatal error: unusable configuration"); + } + +} + +void upsdrv_cleanup(void) +{ + usb_device_close(udev); + + free(usbdevice.Vendor); + free(usbdevice.Product); + free(usbdevice.Serial); + free(usbdevice.Bus); +} + +void upsdrv_initinfo(void) +{ + dstate_setinfo("ups.mfr", "%s", usbdevice.Vendor ? usbdevice.Vendor : "unknown"); + dstate_setinfo("ups.model", "%s", usbdevice.Product ? usbdevice.Product : "unknown"); + if(usbdevice.Serial && usbdevice.Product && strcmp(usbdevice.Serial, usbdevice.Product)) { + /* Only set "ups.serial" if it isn't the same as "ups.model": */ + dstate_setinfo("ups.serial", "%s", usbdevice.Serial); + } + + dstate_setinfo("ups.vendorid", "%04x", usbdevice.VendorID); + dstate_setinfo("ups.productid", "%04x", usbdevice.ProductID); +} + +void upsdrv_updateinfo(void) +{ + char reply[STATUS_PACKETSIZE]; + int ret; + + if (!udev) { + ret = usb_device_open(&udev, &usbdevice, &device_matcher, &driver_callback); + + if (ret < 0) { + return; + } + } + + ret = query_ups(reply); + + if (ret != STATUS_PACKETSIZE) { + usb_comm_fail("Query to UPS failed"); + dstate_datastale(); + + usb_device_close(udev); + udev = NULL; + + return; + } + + usb_comm_good(); + dstate_dataok(); + + status_init(); + + switch(reply[0]) { + case 3: + upsdebugx(2, "reply[0] = 0x%02x -> OL", reply[0]); + status_set("OL"); + break; + case 2: + upsdebugx(2, "reply[0] = 0x%02x -> LB", reply[0]); + status_set("LB"); + /* fall through */ + case 1: + upsdebugx(2, "reply[0] = 0x%02x -> OB", reply[0]); + status_set("OB"); + break; + default: + upslogx(LOG_ERR, "Unknown status: 0x%02x", reply[0]); + } + if(strnlen(reply + 1, 7) != 0) { + upslogx(LOG_NOTICE, "Status bytes 1-7 are not all zero"); + } + + status_commit(); +} + +/* If the UPS is on battery, it should shut down about 30 seconds after + * receiving this packet. + */ +void upsdrv_shutdown(void) +{ + const char shutdown_packet[SHUTDOWN_PACKETSIZE] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + int ret; + + upslogx(LOG_DEBUG, "%s: attempting to call usb_interrupt_write(01 00 00 00 00 00 00 00)", __func__); + + ret = usb_interrupt_write(udev, SHUTDOWN_ENDPOINT, (char *)shutdown_packet, SHUTDOWN_PACKETSIZE, ATCL_USB_TIMEOUT); + + if (ret <= 0) { + upslogx(LOG_NOTICE, "%s: first usb_interrupt_write() failed: %s", __func__, ret ? usb_strerror() : "timeout"); + } + + /* Totally guessing from the .pcap file here. TODO: configurable delay? */ + usleep(170*1000); + + ret = usb_interrupt_write(udev, SHUTDOWN_ENDPOINT, (char *)shutdown_packet, SHUTDOWN_PACKETSIZE, ATCL_USB_TIMEOUT); + + if (ret <= 0) { + upslogx(LOG_ERR, "%s: second usb_interrupt_write() failed: %s", __func__, ret ? usb_strerror() : "timeout"); + } + +} + +void upsdrv_help(void) +{ +} + +void upsdrv_makevartable(void) +{ + addvar(VAR_VALUE, "vendor", "USB vendor string (or NULL if none)"); +} diff -Nru nut-2.7.1/drivers/nutdrv_qx_blazer-common.c nut-2.7.2/drivers/nutdrv_qx_blazer-common.c --- nut-2.7.1/drivers/nutdrv_qx_blazer-common.c 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_blazer-common.c 2014-02-25 16:39:34.000000000 +0100 @@ -1,4 +1,4 @@ -/* nutdrv_qx_blazer-common.c - Common functions/settings for nutdrv_qx_{mecer,megatec,megatec-old,mustek,zinto}.{c,h} +/* nutdrv_qx_blazer-common.c - Common functions/settings for nutdrv_qx_{mecer,megatec,megatec-old,mustek,q1,voltronic-qs,zinto}.{c,h} * * Copyright (C) * 2013 Daniele Pezzini @@ -86,6 +86,30 @@ return 1; +} + +/* This function allows the subdriver to "claim" a device: return 1 if the device is supported by this subdriver, else 0. + * NOTE: this 'light' version only checks for status (Q1/QS/D/..) */ +int blazer_claim_light(void) { + + /* To tell whether the UPS is supported or not, we'll check just status (Q1/QS/D/..). */ + + item_t *item = find_nut_info("input.voltage", 0, 0); + + /* Don't know what happened */ + if (!item) + return 0; + + /* No reply/Unable to get value */ + if (qx_process(item, NULL)) + return 0; + + /* Unable to process value */ + if (ups_infoval_set(item) != 1) + return 0; + + return 1; + } /* Subdriver-specific flags/vars */ diff -Nru nut-2.7.1/drivers/nutdrv_qx_blazer-common.h nut-2.7.2/drivers/nutdrv_qx_blazer-common.h --- nut-2.7.1/drivers/nutdrv_qx_blazer-common.h 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_blazer-common.h 2014-02-25 16:39:34.000000000 +0100 @@ -1,4 +1,4 @@ -/* nutdrv_qx_blazer-common.h - Common functions/settings for nutdrv_qx_{mecer,megatec,megatec-old,mustek,zinto}.{c,h} +/* nutdrv_qx_blazer-common.h - Common functions/settings for nutdrv_qx_{mecer,megatec,megatec-old,mustek,q1,voltronic-qs,zinto}.{c,h} * * Copyright (C) * 2013 Daniele Pezzini @@ -28,6 +28,7 @@ void blazer_makevartable(void); void blazer_initups(item_t *qx2nut); int blazer_claim(void); +int blazer_claim_light(void); /* Preprocess functions */ int blazer_process_command(item_t *item, char *value, size_t valuelen); diff -Nru nut-2.7.1/drivers/nutdrv_qx.c nut-2.7.2/drivers/nutdrv_qx.c --- nut-2.7.1/drivers/nutdrv_qx.c 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx.c 2014-02-27 22:17:32.000000000 +0100 @@ -33,7 +33,7 @@ * */ -#define DRIVER_VERSION "0.01" +#define DRIVER_VERSION "0.06" #include "main.h" @@ -66,17 +66,22 @@ #include "nutdrv_qx_megatec.h" #include "nutdrv_qx_megatec-old.h" #include "nutdrv_qx_mustek.h" +#include "nutdrv_qx_q1.h" #include "nutdrv_qx_voltronic.h" +#include "nutdrv_qx_voltronic-qs.h" #include "nutdrv_qx_zinto.h" /* Master list of avaiable subdrivers */ static subdriver_t *subdriver_list[] = { &voltronic_subdriver, + &voltronic_qs_subdriver, &mustek_subdriver, &megatec_old_subdriver, - &megatec_subdriver, &mecer_subdriver, + &megatec_subdriver, &zinto_subdriver, + /* Fallback Q1 subdriver */ + &q1_subdriver, NULL }; @@ -534,7 +539,7 @@ static int ippon_command(const char *cmd, char *buf, size_t buflen) { char tmp[64]; - int ret; + int ret, len; size_t i; /* Send command */ @@ -562,10 +567,19 @@ return ret; } - snprintf(buf, buflen, "%.*s", ret, tmp); - - upsdebugx(3, "read: %.*s", (int)strcspn(buf, "\r"), buf); - return ret; + /* + * As Ippon will always return 64 bytes in response, we have to + * calculate and return length of actual response data here. + * Empty response will look like 0x00 0x0D, otherwise it will be + * data string terminated by 0x0D. + */ + len = (int)strcspn(tmp, "\r"); + upsdebugx(3, "read: %.*s", len, tmp); + if (len > 0) { + len ++; + } + snprintf(buf, buflen, "%.*s", len, tmp); + return len; } /* Krauler communication subdriver */ @@ -1759,7 +1773,9 @@ case -ETIMEDOUT: /* Connection timed out */ case -EOVERFLOW: /* Value too large for defined data type */ +#ifdef EPROTO case -EPROTO: /* Protocol error */ +#endif default: break; } diff -Nru nut-2.7.1/drivers/nutdrv_qx.h nut-2.7.2/drivers/nutdrv_qx.h --- nut-2.7.1/drivers/nutdrv_qx.h 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx.h 2014-03-21 20:27:16.000000000 +0100 @@ -45,7 +45,11 @@ #define DEFAULT_OFFDELAY "30" /* Delay before power off, in seconds */ #define DEFAULT_POLLFREQ 30 /* Polling interval between full updates, in seconds; the driver will do quick polls in the meantime */ +#ifndef TRUE typedef enum { FALSE, TRUE } bool_t; +#else +typedef int bool_t; +#endif /* Structure for rw vars */ typedef struct { diff -Nru nut-2.7.1/drivers/nutdrv_qx_mecer.c nut-2.7.2/drivers/nutdrv_qx_mecer.c --- nut-2.7.1/drivers/nutdrv_qx_mecer.c 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_mecer.c 2014-02-25 16:39:34.000000000 +0100 @@ -1,4 +1,4 @@ -/* nutdrv_qx_mecer.c - Subdriver for Mecer UPSes +/* nutdrv_qx_mecer.c - Subdriver for Mecer/Voltronic Power P98 UPSes * * Copyright (C) * 2013 Daniele Pezzini @@ -25,11 +25,29 @@ #include "nutdrv_qx_mecer.h" -#define MECER_VERSION "Mecer 0.01" +#define MECER_VERSION "Mecer 0.02" -/* qx2nut lookup table */ +/* Support functions */ +static int mecer_claim(void); +static void mecer_initups(void); + +/* Preprocess functions */ +static int voltronic_p98_protocol(item_t *item, char *value, size_t valuelen); +static int mecer_process_test_battery(item_t *item, char *value, size_t valuelen); + + +/* == qx2nut lookup table == */ static item_t mecer_qx2nut[] = { + /* Query UPS for protocol (Voltronic Power UPSes) + * > [QPI\r] + * < [(PI98\r] + * 012345 + * 0 + */ + + { "ups.firmware.aux", 0, NULL, "QPI\r", "", 6, '(', "", 1, 4, "%s", QX_FLAG_STATIC, voltronic_p98_protocol }, + /* * > [Q1\r] * < [(226.0 195.0 226.0 014 49.0 27.5 30.0 00001000\r] @@ -87,7 +105,7 @@ { "shutdown.return", 0, NULL, "S%s\r", "", 5, '(', "", 1, 3, NULL, QX_FLAG_CMD, blazer_process_command }, { "shutdown.stayoff", 0, NULL, "S%sR0000\r", "", 5, '(', "", 1, 3, NULL, QX_FLAG_CMD, blazer_process_command }, { "shutdown.stop", 0, NULL, "C\r", "", 5, '(', "", 1, 3, NULL, QX_FLAG_CMD, NULL }, - { "test.battery.start", 0, NULL, "T%02d\r", "", 5, '(', "", 1, 3, NULL, QX_FLAG_CMD, blazer_process_command }, + { "test.battery.start", 0, NULL, "T%s\r", "", 5, '(', "", 1, 3, NULL, QX_FLAG_CMD, mecer_process_test_battery }, { "test.battery.start.deep", 0, NULL, "TL\r", "", 5, '(', "", 1, 3, NULL, QX_FLAG_CMD, NULL }, { "test.battery.start.quick", 0, NULL, "T\r", "", 5, '(', "", 1, 3, NULL, QX_FLAG_CMD, NULL }, { "test.battery.stop", 0, NULL, "CT\r", "", 5, '(', "", 1, 3, NULL, QX_FLAG_CMD, NULL }, @@ -100,10 +118,12 @@ { NULL, 0, NULL, NULL, "", 0, 0, "", 0, 0, NULL, 0, NULL } }; -/* Testing table */ + +/* == Testing table == */ #ifdef TESTING static testing_t mecer_testing[] = { { "Q1\r", "(215.0 195.0 230.0 014 49.0 22.7 30.0 00000000\r" }, + { "QPI\r", "(PI98\r" }, { "F\r", "#230.0 000 024.0 50.0\r" }, { "I\r", "#NOT_A_LIVE_UPS TESTING TESTING \r" }, { "Q\r", "(ACK\r" }, @@ -119,6 +139,68 @@ }; #endif /* TESTING */ + +/* == Support functions == */ + +/* This function allows the subdriver to "claim" a device: return 1 if the device is supported by this subdriver, else 0. */ +static int mecer_claim(void) +{ + + /* Apart from status (Q1), try to identify protocol (QPI, for Voltronic Power P98 units) or whether the UPS uses '(ACK\r'/'(NAK\r' replies */ + + item_t *item = find_nut_info("input.voltage", 0, 0); + + /* Don't know what happened */ + if (!item) + return 0; + + /* No reply/Unable to get value */ + if (qx_process(item, NULL)) + return 0; + + /* Unable to process value */ + if (ups_infoval_set(item) != 1) + return 0; + + /* UPS Protocol */ + item = find_nut_info("ups.firmware.aux", 0, 0); + + /* Don't know what happened */ + if (!item) { + dstate_delinfo("input.voltage"); + return 0; + } + + /* No reply/Unable to get value/Command rejected */ + if (qx_process(item, NULL)) { + + /* No reply/Command echoed back or rejected with something other than '(NAK\r' -> Not a '(ACK/(NAK' unit */ + if (!strlen(item->answer) || strcasecmp(item->answer, "(NAK\r")) { + dstate_delinfo("input.voltage"); + return 0; + } + + /* Command rejected with '(NAK\r' -> '(ACK/(NAK' unit */ + + /* Skip protocol query from now on */ + item->qxflags |= QX_FLAG_SKIP; + + } else { + + /* Unable to process value/Command echoed back or rejected with something other than '(NAK\r'/Protocol not supported */ + if (ups_infoval_set(item) != 1) { + dstate_delinfo("input.voltage"); + return 0; + } + + /* Voltronic Power P98 unit */ + + } + + return 1; + +} + /* Subdriver-specific initups */ static void mecer_initups(void) { @@ -127,10 +209,72 @@ } -/* Subdriver interface */ + +/* == Preprocess functions == */ + +/* Protocol used by the UPS */ +static int voltronic_p98_protocol(item_t *item, char *value, size_t valuelen) +{ + if (strcasecmp(item->value, "PI98")) { + upslogx(LOG_ERR, "Protocol [%s] is not supported by this driver", item->value); + return -1; + } + + snprintf(value, valuelen, item->dfl, "Voltronic Power P98"); + + return 0; +} + +/* *CMD* Preprocess 'test.battery.start' instant command */ +static int mecer_process_test_battery(item_t *item, char *value, size_t valuelen) +{ + const char *protocol = dstate_getinfo("ups.firmware.aux"); + char buf[SMALLBUF] = ""; + int min, test_time; + + /* Voltronic P98 units -> Accepted values for test time: .2 -> .9 (.2=12sec ..), 01 -> 99 (minutes) -> range = [12..5940] */ + if (protocol && !strcasecmp(protocol, "Voltronic Power P98")) + min = 12; + /* Other units: 01 -> 99 (minutes) -> [60..5940] */ + else + min = 60; + + if (strlen(value) != strspn(value, "0123456789")) { + upslogx(LOG_ERR, "%s: non numerical value [%s]", item->info_type, value); + return -1; + } + + test_time = strlen(value) > 0 ? strtol(value, NULL, 10) : 600; + + if ((test_time < min) || (test_time > 5940)) { + upslogx(LOG_ERR, "%s: battery test time '%d' out of range [%d..5940] seconds", item->info_type, test_time, min); + return -1; + } + + /* test time < 1 minute */ + if (test_time < 60) { + + test_time = test_time / 6; + snprintf(buf, sizeof(buf), ".%d", test_time); + + /* test time > 1 minute */ + } else { + + test_time = test_time / 60; + snprintf(buf, sizeof(buf), "%02d", test_time); + + } + + snprintf(value, valuelen, item->command, buf); + + return 0; +} + + +/* == Subdriver interface == */ subdriver_t mecer_subdriver = { MECER_VERSION, - blazer_claim, + mecer_claim, mecer_qx2nut, mecer_initups, NULL, diff -Nru nut-2.7.1/drivers/nutdrv_qx_mecer.h nut-2.7.2/drivers/nutdrv_qx_mecer.h --- nut-2.7.1/drivers/nutdrv_qx_mecer.h 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_mecer.h 2014-02-25 16:39:34.000000000 +0100 @@ -1,4 +1,4 @@ -/* nutdrv_qx_mecer.h - Subdriver for Mecer UPSes +/* nutdrv_qx_mecer.h - Subdriver for Mecer/Voltronic Power P98 UPSes * * Copyright (C) * 2013 Daniele Pezzini diff -Nru nut-2.7.1/drivers/nutdrv_qx_megatec-old.c nut-2.7.2/drivers/nutdrv_qx_megatec-old.c --- nut-2.7.1/drivers/nutdrv_qx_megatec-old.c 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_megatec-old.c 2014-02-25 16:39:34.000000000 +0100 @@ -25,7 +25,7 @@ #include "nutdrv_qx_megatec-old.h" -#define MEGATEC_OLD_VERSION "Megatec/old 0.01" +#define MEGATEC_OLD_VERSION "Megatec/old 0.02" /* qx2nut lookup table */ static item_t megatec_old_qx2nut[] = { @@ -128,7 +128,7 @@ /* Subdriver interface */ subdriver_t megatec_old_subdriver = { MEGATEC_OLD_VERSION, - blazer_claim, + blazer_claim_light, megatec_old_qx2nut, megatec_old_initups, NULL, diff -Nru nut-2.7.1/drivers/nutdrv_qx_mustek.c nut-2.7.2/drivers/nutdrv_qx_mustek.c --- nut-2.7.1/drivers/nutdrv_qx_mustek.c 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_mustek.c 2014-02-25 16:39:34.000000000 +0100 @@ -25,7 +25,7 @@ #include "nutdrv_qx_mustek.h" -#define MUSTEK_VERSION "Mustek 0.01" +#define MUSTEK_VERSION "Mustek 0.02" /* qx2nut lookup table */ static item_t mustek_qx2nut[] = { @@ -128,7 +128,7 @@ /* Subdriver interface */ subdriver_t mustek_subdriver = { MUSTEK_VERSION, - blazer_claim, + blazer_claim_light, mustek_qx2nut, mustek_initups, NULL, diff -Nru nut-2.7.1/drivers/nutdrv_qx_q1.c nut-2.7.2/drivers/nutdrv_qx_q1.c --- nut-2.7.1/drivers/nutdrv_qx_q1.c 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_q1.c 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,118 @@ +/* nutdrv_qx_q1.c - Subdriver for Q1 protocol based UPSes + * + * Copyright (C) + * 2013 Daniele Pezzini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * NOTE: + * This subdriver implements the same protocol as the one used by the 'megatec' subdriver minus the vendor (I) and ratings (F) queries. + * In the claim function: + * - it doesn't even try to get 'vendor' informations (I) + * - it checks only status (Q1), through 'input.voltage' variable + * Therefore it should be able to work even if the UPS doesn't support vendor/ratings *and* the user doesn't use the 'novendor'/'norating' flags, as long as: + * - the UPS replies a Q1-compliant answer (i.e. not necessary filled with all of the Q1-required data, but at least of the right length and with not available data filled with some replacement character) + * - the UPS reports a valid input.voltage (used in the claim function) + * - the UPS reports valid status bits (1st, 2nd, 3rd, 6th, 7th are the mandatory ones) + * + */ + +#include "main.h" +#include "nutdrv_qx.h" +#include "nutdrv_qx_blazer-common.h" + +#include "nutdrv_qx_q1.h" + +#define Q1_VERSION "Q1 0.02" + +/* qx2nut lookup table */ +static item_t q1_qx2nut[] = { + + /* + * > [Q1\r] + * < [(226.0 195.0 226.0 014 49.0 27.5 30.0 00001000\r] + * 01234567890123456789012345678901234567890123456 + * 0 1 2 3 4 + */ + + { "input.voltage", 0, NULL, "Q1\r", "", 47, '(', "", 1, 5, "%.1f", 0, NULL }, + { "input.voltage.fault", 0, NULL, "Q1\r", "", 47, '(', "", 7, 11, "%.1f", 0, NULL }, + { "output.voltage", 0, NULL, "Q1\r", "", 47, '(', "", 13, 17, "%.1f", 0, NULL }, + { "ups.load", 0, NULL, "Q1\r", "", 47, '(', "", 19, 21, "%.0f", 0, NULL }, + { "input.frequency", 0, NULL, "Q1\r", "", 47, '(', "", 23, 26, "%.1f", 0, NULL }, + { "battery.voltage", 0, NULL, "Q1\r", "", 47, '(', "", 28, 31, "%.2f", 0, NULL }, + { "ups.temperature", 0, NULL, "Q1\r", "", 47, '(', "", 33, 36, "%.1f", 0, NULL }, + /* Status bits */ + { "ups.status", 0, NULL, "Q1\r", "", 47, '(', "", 38, 38, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Utility Fail (Immediate) */ + { "ups.status", 0, NULL, "Q1\r", "", 47, '(', "", 39, 39, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Battery Low */ + { "ups.status", 0, NULL, "Q1\r", "", 47, '(', "", 40, 40, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Bypass/Boost or Buck Active */ + { "ups.alarm", 0, NULL, "Q1\r", "", 47, '(', "", 41, 41, NULL, 0, blazer_process_status_bits }, /* UPS Failed */ + { "ups.type", 0, NULL, "Q1\r", "", 47, '(', "", 42, 42, "%s", QX_FLAG_STATIC, blazer_process_status_bits }, /* UPS Type */ + { "ups.status", 0, NULL, "Q1\r", "", 47, '(', "", 43, 43, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Test in Progress */ + { "ups.alarm", 0, NULL, "Q1\r", "", 47, '(', "", 44, 44, NULL, 0, blazer_process_status_bits }, /* Shutdown Active */ + { "ups.status", 0, NULL, "Q1\r", "", 47, '(', "", 44, 44, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Shutdown Active */ + { "ups.beeper.status", 0, NULL, "Q1\r", "", 47, '(', "", 45, 45, "%s", 0, blazer_process_status_bits }, /* Beeper status */ + + /* Instant commands */ + { "beeper.toggle", 0, NULL, "Q\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, NULL }, + { "load.off", 0, NULL, "S00R0000\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, NULL }, + { "load.on", 0, NULL, "C\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, NULL }, + { "shutdown.return", 0, NULL, "S%s\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, blazer_process_command }, + { "shutdown.stayoff", 0, NULL, "S%sR0000\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, blazer_process_command }, + { "shutdown.stop", 0, NULL, "C\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, NULL }, + { "test.battery.start", 0, NULL, "T%02d\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, blazer_process_command }, + { "test.battery.start.deep", 0, NULL, "TL\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, NULL }, + { "test.battery.start.quick", 0, NULL, "T\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, NULL }, + { "test.battery.stop", 0, NULL, "CT\r", "", 0, 0, "", 0, 0, NULL, QX_FLAG_CMD, NULL }, + + /* Server-side settable vars */ + { "ups.delay.start", ST_FLAG_RW, blazer_r_ondelay, NULL, "", 0, 0, "", 0, 0, DEFAULT_ONDELAY, QX_FLAG_ABSENT | QX_FLAG_SETVAR | QX_FLAG_RANGE, blazer_process_setvar }, + { "ups.delay.shutdown", ST_FLAG_RW, blazer_r_offdelay, NULL, "", 0, 0, "", 0, 0, DEFAULT_OFFDELAY, QX_FLAG_ABSENT | QX_FLAG_SETVAR | QX_FLAG_RANGE, blazer_process_setvar }, + + /* End of structure. */ + { NULL, 0, NULL, NULL, "", 0, 0, "", 0, 0, NULL, 0, NULL } +}; + +/* Testing table */ +#ifdef TESTING +static testing_t q1_testing[] = { + { "Q1\r", "(215.0 195.0 230.0 014 49.0 22.7 30.0 00000000\r" }, + { "Q\r", "" }, + { "S03\r", "" }, + { "C\r", "" }, + { "S02R0005\r", "" }, + { "S.5R0000\r", "" }, + { "T04\r", "" }, + { "TL\r", "" }, + { "T\r", "" }, + { "CT\r", "" }, + { NULL } +}; +#endif /* TESTING */ + +/* Subdriver interface */ +subdriver_t q1_subdriver = { + Q1_VERSION, + blazer_claim_light, + q1_qx2nut, + NULL, + NULL, + NULL, + "ACK", + NULL, +#ifdef TESTING + q1_testing, +#endif /* TESTING */ +}; diff -Nru nut-2.7.1/drivers/nutdrv_qx_q1.h nut-2.7.2/drivers/nutdrv_qx_q1.h --- nut-2.7.1/drivers/nutdrv_qx_q1.h 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_q1.h 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,39 @@ +/* nutdrv_qx_q1.h - Subdriver for Q1 protocol based UPSes + * + * Copyright (C) + * 2013 Daniele Pezzini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * NOTE: + * This subdriver implements the same protocol as the one used by the 'megatec' subdriver minus the vendor (I) and ratings (F) queries. + * In the claim function: + * - it doesn't even try to get 'vendor' informations (I) + * - it checks only status (Q1), through 'input.voltage' variable + * Therefore it should be able to work even if the UPS doesn't support vendor/ratings *and* the user doesn't use the 'novendor'/'norating' flags, as long as: + * - the UPS replies a Q1-compliant answer (i.e. not necessary filled with all of the Q1-required data, but at least of the right length and with not available data filled with some replacement character) + * - the UPS reports a valid input.voltage (used in the claim function) + * - the UPS reports valid status bits (1st, 2nd, 3rd, 6th, 7th are the mandatory ones) + * + */ + +#ifndef NUTDRV_QX_Q1_H +#define NUTDRV_QX_Q1_H + +#include "nutdrv_qx.h" + +extern subdriver_t q1_subdriver; + +#endif /* NUTDRV_QX_Q1_H */ diff -Nru nut-2.7.1/drivers/nutdrv_qx_voltronic-qs.c nut-2.7.2/drivers/nutdrv_qx_voltronic-qs.c --- nut-2.7.1/drivers/nutdrv_qx_voltronic-qs.c 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_voltronic-qs.c 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,214 @@ +/* nutdrv_qx_voltronic-qs.c - Subdriver for Voltronic Power UPSes with QS protocol + * + * Copyright (C) + * 2013 Daniele Pezzini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "main.h" +#include "nutdrv_qx.h" +#include "nutdrv_qx_blazer-common.h" + +#include "nutdrv_qx_voltronic-qs.h" + +#define VOLTRONIC_QS_VERSION "Voltronic-QS 0.01" + +/* Support functions */ +static int voltronic_qs_claim(void); + +/* Preprocess functions */ +static int voltronic_qs_protocol(item_t *item, char *value, size_t valuelen); + + +/* == Ranges == */ + +/* Range for ups.delay.start */ +static info_rw_t voltronic_qs_r_ondelay[] = { + { "60", 0 }, + { "599940", 0 }, + { "", 0 } +}; + +/* Range for ups.delay.shutdown */ +static info_rw_t voltronic_qs_r_offdelay[] = { + { "12", 0 }, + { "540", 0 }, + { "", 0 } +}; + + +/* == qx2nut lookup table == */ +static item_t voltronic_qs_qx2nut[] = { + + /* Query UPS for protocol + * > [M\r] + * < [V\r] + * 01 + * 0 + */ + + { "ups.firmware.aux", 0, NULL, "M\r", "", 2, 0, "", 0, 0, "%s", QX_FLAG_STATIC, voltronic_qs_protocol }, + + /* Query UPS for status + * > [QS\r] + * < [(226.0 195.0 226.0 014 49.0 27.5 30.0 00001000\r] + * 01234567890123456789012345678901234567890123456 + * 0 1 2 3 4 + */ + + { "input.voltage", 0, NULL, "QS\r", "", 47, '(', "", 1, 5, "%.1f", 0, NULL }, + { "input.voltage.fault", 0, NULL, "QS\r", "", 47, '(', "", 7, 11, "%.1f", 0, NULL }, + { "output.voltage", 0, NULL, "QS\r", "", 47, '(', "", 13, 17, "%.1f", 0, NULL }, + { "ups.load", 0, NULL, "QS\r", "", 47, '(', "", 19, 21, "%.0f", 0, NULL }, + { "input.frequency", 0, NULL, "QS\r", "", 47, '(', "", 23, 26, "%.1f", 0, NULL }, + { "battery.voltage", 0, NULL, "QS\r", "", 47, '(', "", 28, 31, "%.2f", 0, NULL }, + { "ups.temperature", 0, NULL, "QS\r", "", 47, '(', "", 33, 36, "%.1f", 0, NULL }, + /* Status bits */ + { "ups.status", 0, NULL, "QS\r", "", 47, '(', "", 38, 38, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Utility Fail (Immediate) */ + { "ups.status", 0, NULL, "QS\r", "", 47, '(', "", 39, 39, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Battery Low */ + { "ups.status", 0, NULL, "QS\r", "", 47, '(', "", 40, 40, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Bypass/Boost or Buck Active */ + { "ups.alarm", 0, NULL, "QS\r", "", 47, '(', "", 41, 41, NULL, 0, blazer_process_status_bits }, /* UPS Failed */ + { "ups.type", 0, NULL, "QS\r", "", 47, '(', "", 42, 42, "%s", QX_FLAG_STATIC, blazer_process_status_bits }, /* UPS Type */ + { "ups.status", 0, NULL, "QS\r", "", 47, '(', "", 43, 43, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Test in Progress */ + { "ups.alarm", 0, NULL, "QS\r", "", 47, '(', "", 44, 44, NULL, 0, blazer_process_status_bits }, /* Shutdown Active */ + { "ups.status", 0, NULL, "QS\r", "", 47, '(', "", 44, 44, NULL, QX_FLAG_QUICK_POLL, blazer_process_status_bits }, /* Shutdown Active */ + { "ups.beeper.status", 0, NULL, "QS\r", "", 47, '(', "", 45, 45, "%s", 0, blazer_process_status_bits }, /* Beeper status */ + + /* Query UPS for ratings + * > [F\r] + * < [#220.0 000 024.0 50.0\r] + * 0123456789012345678901 + * 0 1 2 + */ + + { "input.voltage.nominal", 0, NULL, "F\r", "", 22, '#', "", 1, 5, "%.0f", QX_FLAG_STATIC, NULL }, + { "input.current.nominal", 0, NULL, "F\r", "", 22, '#', "", 7, 9, "%.1f", QX_FLAG_STATIC, NULL }, + { "battery.voltage.nominal", 0, NULL, "F\r", "", 22, '#', "", 11, 15, "%.1f", QX_FLAG_STATIC, NULL }, + { "input.frequency.nominal", 0, NULL, "F\r", "", 22, '#', "", 17, 20, "%.0f", QX_FLAG_STATIC, NULL }, + + /* Instant commands */ + { "beeper.toggle", 0, NULL, "Q\r", "", 0, 0, "", 1, 3, NULL, QX_FLAG_CMD, NULL }, + { "load.off", 0, NULL, "S00R0000\r", "", 0, 0, "", 1, 3, NULL, QX_FLAG_CMD, NULL }, + { "load.on", 0, NULL, "C\r", "", 0, 0, "", 1, 3, NULL, QX_FLAG_CMD, NULL }, + { "shutdown.return", 0, NULL, "S%s\r", "", 0, 0, "", 1, 3, NULL, QX_FLAG_CMD, blazer_process_command }, + { "shutdown.stayoff", 0, NULL, "S%sR0000\r", "", 0, 0, "", 1, 3, NULL, QX_FLAG_CMD, blazer_process_command }, + { "shutdown.stop", 0, NULL, "C\r", "", 0, 0, "", 1, 3, NULL, QX_FLAG_CMD, NULL }, + { "test.battery.start.quick", 0, NULL, "T\r", "", 0, 0, "", 1, 3, NULL, QX_FLAG_CMD, NULL }, + + /* Server-side settable vars */ + { "ups.delay.start", ST_FLAG_RW, voltronic_qs_r_ondelay, NULL, "", 0, 0, "", 0, 0, DEFAULT_ONDELAY, QX_FLAG_ABSENT | QX_FLAG_SETVAR | QX_FLAG_RANGE, blazer_process_setvar }, + { "ups.delay.shutdown", ST_FLAG_RW, voltronic_qs_r_offdelay, NULL, "", 0, 0, "", 0, 0, DEFAULT_OFFDELAY, QX_FLAG_ABSENT | QX_FLAG_SETVAR | QX_FLAG_RANGE, blazer_process_setvar }, + + /* End of structure. */ + { NULL, 0, NULL, NULL, "", 0, 0, "", 0, 0, NULL, 0, NULL } +}; + + +/* == Testing table == */ +#ifdef TESTING +static testing_t voltronic_qs_testing[] = { + { "QS\r", "(215.0 195.0 230.0 014 49.0 22.7 30.0 00000000\r" }, + { "F\r", "#230.0 000 024.0 50.0\r" }, + { "M\r", "V\r" }, + { "Q\r", "" }, + { "C\r", "" }, + { "S02R0005\r", "" }, + { "S.5R0000\r", "" }, + { "T\r", "" }, + { NULL } +}; +#endif /* TESTING */ + + +/* == Support functions == */ + +/* This function allows the subdriver to "claim" a device: return 1 if the device is supported by this subdriver, else 0. */ +static int voltronic_qs_claim(void) +{ + + /* We need at least M and QS to run this subdriver */ + + /* UPS Protocol */ + item_t *item = find_nut_info("ups.firmware.aux", 0, 0); + + /* Don't know what happened */ + if (!item) + return 0; + + /* No reply/Unable to get value */ + if (qx_process(item, NULL)) + return 0; + + /* Unable to process value/Protocol not supported */ + if (ups_infoval_set(item) != 1) + return 0; + + item = find_nut_info("input.voltage", 0, 0); + + /* Don't know what happened */ + if (!item) { + dstate_delinfo("ups.firmware.aux"); + return 0; + } + + /* No reply/Unable to get value */ + if (qx_process(item, NULL)) { + dstate_delinfo("ups.firmware.aux"); + return 0; + } + + /* Unable to process value */ + if (ups_infoval_set(item) != 1) { + dstate_delinfo("ups.firmware.aux"); + return 0; + } + + return 1; + +} + + +/* == Preprocess functions == */ + +/* Protocol used by the UPS */ +static int voltronic_qs_protocol(item_t *item, char *value, size_t valuelen) +{ + if (strcasecmp(item->value, "V")) { + upsdebugx(2, "%s: invalid protocol [%s]", __func__, item->value); + return -1; + } + + snprintf(value, valuelen, item->dfl, "PMV"); + + return 0; +} + + +/* == Subdriver interface == */ +subdriver_t voltronic_qs_subdriver = { + VOLTRONIC_QS_VERSION, + voltronic_qs_claim, + voltronic_qs_qx2nut, + NULL, + NULL, + NULL, + "ACK", + "(NAK\r", +#ifdef TESTING + voltronic_qs_testing, +#endif /* TESTING */ +}; diff -Nru nut-2.7.1/drivers/nutdrv_qx_voltronic-qs.h nut-2.7.2/drivers/nutdrv_qx_voltronic-qs.h --- nut-2.7.1/drivers/nutdrv_qx_voltronic-qs.h 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/drivers/nutdrv_qx_voltronic-qs.h 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,29 @@ +/* nutdrv_qx_voltronic-qs.h - Subdriver for Voltronic Power UPSes with QS protocol + * + * Copyright (C) + * 2013 Daniele Pezzini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef NUTDRV_QX_VOLTRONIC_QS_H +#define NUTDRV_QX_VOLTRONIC_QS_H + +#include "nutdrv_qx.h" + +extern subdriver_t voltronic_qs_subdriver; + +#endif /* NUTDRV_QX_VOLTRONIC_QS_H */ diff -Nru nut-2.7.1/drivers/powercom.c nut-2.7.2/drivers/powercom.c --- nut-2.7.1/drivers/powercom.c 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/drivers/powercom.c 2014-02-25 16:39:34.000000000 +0100 @@ -6,8 +6,10 @@ * See http://www.advice.co.il/product/inter/ups.html for its specifications. * This model is based on PowerCom (www.powercom.com) models. * -Socomec Sicon Egys 420 + * -OptiUPS VS 575C * * Copyrights: + * (C) 2013 Florian Bruhin * (C) 2002 Simon Rozman * (C) 1999 Peter Bieringer * @@ -58,6 +60,10 @@ * * Tested on: BNT-1500A * + * rev 0.14: Florian Bruhin (The Compiler) + * - Added support for OptiUPS VS 575C + * This probably also works with others, but I don't have their model numbers. + * */ #include "main.h" @@ -66,7 +72,7 @@ #include "math.h" #define DRIVER_NAME "PowerCom protocol UPS driver" -#define DRIVER_VERSION "0.13" +#define DRIVER_VERSION "0.14" /* driver description structure */ upsdrv_info_t upsdrv_info = { @@ -74,7 +80,8 @@ DRIVER_VERSION, "Simon Rozman \n" \ "Peter Bieringer \n" \ - "Alexey Sidorov ", + "Alexey Sidorov \n" \ + "Florian Bruhin ", DRV_STABLE, { NULL } }; @@ -199,6 +206,17 @@ { 1.0000, 0.0000, 0.0000, 1.0000, 0.0000 }, { 2.0000, 0.0000, 2.0000, 0.0000 }, }, + { + "OPTI", + 16, + { "no_flow_control", no_flow_control }, + { { 5U, 0xFFU }, { 7U, 0U }, { 8U, 0U } }, + { { 1U, 30U }, 'y' }, + { 0.0000, 0.0000 }, + { 1.0000, 0.0000, 1.0000, 0.0000 }, + { 1.0000, 0.0000, 0.0000, 1.0000, 0.0000 }, + { 2.0000, 0.0000, 2.0000, 0.0000 }, + }, }; /* values for sending to UPS */ @@ -249,6 +267,7 @@ unsigned int BNTmodels[]={0,400,500,600,800,801,1000,1200,1500,2000,0,0,0,0,0,0}; unsigned int KINmodels[]={0,425,500,525,625,800,1000,1200,1500,1600,2200,2200,2500,3000,5000,0}; unsigned int IMPmodels[]={0,425,525,625,825,1025,1200,1500,2000,0,0,0,0,0,0,0}; +unsigned int OPTImodels[]={0,0,0,575,0,0,0,0,0,0,0,0,0,0,0,0}; /* * local used functions @@ -398,7 +417,7 @@ } else { tmp=1.625*raw_data[INPUT_VOLTAGE]; } - } else if ( !strcmp(types[type].name, "IMP")) { + } else if ( !strcmp(types[type].name, "IMP") || !strcmp(types[type].name, "OPTI")) { tmp=raw_data[INPUT_VOLTAGE]*2.0; } else { tmp=linevoltage >= 220 ? @@ -489,7 +508,7 @@ tmp=sqrt(tmp)*rdatay; } } - } else if ( !strcmp(types[type].name, "IMP")) { + } else if ( !strcmp(types[type].name, "IMP") || !strcmp(types[type].name, "OPTI")) { tmp=raw_data[OUTPUT_VOLTAGE]*2.0; } else { tmp= linevoltage >= 220 ? @@ -506,7 +525,7 @@ { if ( !strcmp(types[type].name, "BNT") || !strcmp(types[type].name, "KIN")) return 4807.0/raw_data[INPUT_FREQUENCY]; - else if ( !strcmp(types[type].name, "IMP")) + else if ( !strcmp(types[type].name, "IMP") || !strcmp(types[type].name, "OPTI")) return raw_data[INPUT_FREQUENCY]; return raw_data[INPUT_FREQUENCY] ? 1.0 / (types[type].freq[0] * @@ -518,7 +537,7 @@ { if ( !strcmp(types[type].name, "BNT") || !strcmp(types[type].name, "KIN")) return 4807.0/raw_data[OUTPUT_FREQUENCY]; - else if ( !strcmp(types[type].name, "IMP")) + else if ( !strcmp(types[type].name, "IMP") || !strcmp(types[type].name, "OPTI")) return raw_data[OUTPUT_FREQUENCY]; return raw_data[OUTPUT_FREQUENCY] ? 1.0 / (types[type].freq[0] * @@ -588,7 +607,7 @@ if (model<2000) return raw_data[UPS_LOAD]*1.66; if (model>=2000) return raw_data[UPS_LOAD]*110.0/load2ki[voltage]; } - } else if ( !strcmp(types[type].name, "IMP")) { + } else if ( !strcmp(types[type].name, "IMP") || !strcmp(types[type].name, "OPTI")) { return raw_data[UPS_LOAD]; } return raw_data[STATUS_A] & MAINS_FAILURE ? @@ -644,7 +663,7 @@ return 30.0+(battval-bat29)*70.0/(bat100-bat29); return 100; } - if ( !strcmp(types[type].name, "IMP")) + if ( !strcmp(types[type].name, "IMP") || !strcmp(types[type].name, "OPTI")) return raw_data[BATTERY_CHARGE]; return raw_data[STATUS_A] & ONLINE ? /* Are we on battery power? */ /* Yes */ @@ -885,10 +904,10 @@ types[type].flowControl.setup_flow_control(); /* Setup Model and LineVoltage */ - if (!strncmp(types[type].name, "BNT",3) || !strcmp(types[type].name, "KIN") || !strcmp(types[type].name, "IMP")){ + if (!strncmp(types[type].name, "BNT",3) || !strcmp(types[type].name, "KIN") || !strcmp(types[type].name, "IMP") || !strcmp(types[type].name, "OPTI")) { if (!ups_getinfo()) return; /* Give "BNT-other" a chance! */ - if (raw_data[MODELNAME]==0x42 || raw_data[MODELNAME]==0x4B){ + if (raw_data[MODELNAME]==0x42 || raw_data[MODELNAME]==0x4B || raw_data[MODELNAME]==0x4F){ model=BNTmodels[raw_data[MODELNUMBER]/16]; if (!strcmp(types[type].name, "BNT-other")) types[type].name="BNT-other"; @@ -897,6 +916,9 @@ else if (raw_data[MODELNAME]==0x4B){ types[type].name="KIN"; model=KINmodels[raw_data[MODELNUMBER]/16]; + } else if (raw_data[MODELNAME]==0x4F){ + types[type].name="OPTI"; + model=OPTImodels[raw_data[MODELNUMBER]/16]; } } else if (raw_data[UPSVERSION]==0xFF){ @@ -904,7 +926,11 @@ model=IMPmodels[raw_data[MODELNUMBER]/16]; } linevoltage=voltages[raw_data[MODELNUMBER]%16]; - snprintf(buf,sizeof(buf),"%s-%dAP",types[type].name,model); + if (!strcmp(types[type].name, "OPTI")) { + snprintf(buf,sizeof(buf),"%s-%d",types[type].name,model); + } else { + snprintf(buf,sizeof(buf),"%s-%dAP",types[type].name,model); + } if (!strcmp(modelname, "Unknown")) modelname=buf; upsdebugx(1,"Detected: %s , %dV",buf,linevoltage); @@ -962,7 +988,7 @@ printf("\n"); printf("Specify UPS information in the ups.conf file.\n"); printf(" type: Type of UPS: 'Trust','Egys','KP625AP','IMP','KIN','BNT',\n"); - printf(" 'BNT-other' (default: 'Trust')\n"); + printf(" 'BNT-other', 'OPTI' (default: 'Trust')\n"); printf(" 'BNT-other' is a special type intended for BNT 100-120V models,\n"); printf(" but can be used to override ALL models.\n"); printf("You can additional specify these variables:\n"); @@ -1042,7 +1068,7 @@ // 1 2 3 4 5 6 7 8 //2345678901234567890123456789012345678901234567890123456789012345678901234567890 MAX addvar(VAR_VALUE, "type", - "Type of UPS: 'Trust','Egys','KP625AP','IMP','KIN','BNT','BNT-other'\n" + "Type of UPS: 'Trust','Egys','KP625AP','IMP','KIN','BNT','BNT-other','OPTI'\n" " (default: 'Trust')"); addvar(VAR_VALUE, "manufacturer", "Manufacturer name (default: 'PowerCom')"); diff -Nru nut-2.7.1/drivers/riello_usb.c nut-2.7.2/drivers/riello_usb.c --- nut-2.7.1/drivers/riello_usb.c 2013-07-31 22:41:31.000000000 +0200 +++ nut-2.7.2/drivers/riello_usb.c 2014-02-27 22:17:32.000000000 +0100 @@ -355,7 +355,9 @@ case -ETIMEDOUT: /* Connection timed out */ case -EOVERFLOW: /* Value too large for defined data type */ +#ifdef EPROTO case -EPROTO: /* Protocol error */ +#endif default: break; } diff -Nru nut-2.7.1/drivers/snmp-ups.c nut-2.7.2/drivers/snmp-ups.c --- nut-2.7.1/drivers/snmp-ups.c 2013-10-30 14:47:15.000000000 +0100 +++ nut-2.7.2/drivers/snmp-ups.c 2014-02-26 21:48:36.000000000 +0100 @@ -3,7 +3,7 @@ * Based on NetSNMP API (Simple Network Management Protocol V1-2) * * Copyright (C) - * 2002 - 2012 Arnaud Quette + * 2002 - 2014 Arnaud Quette * 2002 - 2006 Dmitry Frolov * J.W. Hoogervorst * Niels Baggesen @@ -49,6 +49,7 @@ #include "cyberpower-mib.h" #include "delta_ups-mib.h" #include "ietf-mib.h" +#include "xppc-mib.h" /* Address API change */ #ifndef usmAESPrivProtocol @@ -71,6 +72,7 @@ &bestpower, &cyberpower, &delta_ups, + &xppc, /* * Prepend vendor specific MIB mappings before IETF, so that * if a device supports both IETF and vendor specific MIB, @@ -98,7 +100,7 @@ static void disable_transfer_oids(void); #define DRIVER_NAME "Generic SNMP UPS driver" -#define DRIVER_VERSION "0.70" +#define DRIVER_VERSION "0.72" /* driver description structure */ upsdrv_info_t upsdrv_info = { @@ -586,6 +588,9 @@ struct snmp_pdu ** pdu_array; struct snmp_pdu * ret_pdu; + if (OID == NULL) + return NULL; + upsdebugx(3, "nut_snmp_get(%s)", OID); pdu_array = nut_snmp_walk(OID,1); diff -Nru nut-2.7.1/drivers/upsdrvctl.c nut-2.7.2/drivers/upsdrvctl.c --- nut-2.7.1/drivers/upsdrvctl.c 2013-11-18 21:27:51.000000000 +0100 +++ nut-2.7.2/drivers/upsdrvctl.c 2014-02-25 16:39:34.000000000 +0100 @@ -45,6 +45,12 @@ /* timer - keeps us from getting stuck if a driver hangs */ static int maxstartdelay = 45; + /* counter - retry that many time(s) to start the driver if it fails to */ +static int maxretry = 1; + + /* timer - delay between each restart attempt of the driver(s) */ +static int retrydelay = 5; + /* Directory where driver executables live */ static char *driverpath = NULL; @@ -65,6 +71,12 @@ driverpath = xstrdup(val); } + if (!strcmp(var, "maxretry")) + maxretry = atoi(val); + + if (!strcmp(var, "retrydelay")) + retrydelay = atoi(val); + /* ignore anything else - it's probably for main */ return; @@ -248,6 +260,7 @@ char *argv[8]; char dfn[SMALLBUF]; int ret, arg = 0; + int initial_exec_error = exec_error, drv_maxretry = maxretry; struct stat fs; upsdebugx(1, "Starting UPS: %s", ups->upsname); @@ -276,10 +289,28 @@ /* tie it off */ argv[arg++] = NULL; - debugcmdline(2, "exec: ", argv); - if (!testmode) { - forkexec(argv, ups); + while (drv_maxretry > 0) { + int cur_exec_error = exec_error; + + upsdebugx(2, "%i remaining attempts", drv_maxretry); + debugcmdline(2, "exec: ", argv); + drv_maxretry--; + + if (!testmode) { + forkexec(argv, ups); + } + + /* driver command succeeded */ + if (cur_exec_error == exec_error) { + drv_maxretry = 0; + exec_error = initial_exec_error; + } + else { + /* otherwise, retry if still needed */ + if (drv_maxretry > 0) + sleep (retrydelay); + } } } diff -Nru nut-2.7.1/drivers/usb-common.h nut-2.7.2/drivers/usb-common.h --- nut-2.7.1/drivers/usb-common.h 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/drivers/usb-common.h 2014-02-25 16:39:34.000000000 +0100 @@ -25,6 +25,9 @@ #include #include +/* USB standard timeout [ms] */ +#define USB_TIMEOUT 5000 + /*! * USBDevice_t: Describe a USB device. This structure contains exactly * the 5 pieces of information by which a USB device identifies diff -Nru nut-2.7.1/drivers/usbhid-ups.c nut-2.7.2/drivers/usbhid-ups.c --- nut-2.7.1/drivers/usbhid-ups.c 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/drivers/usbhid-ups.c 2014-02-27 22:17:32.000000000 +0100 @@ -1269,7 +1269,9 @@ case -ETIMEDOUT: /* Connection timed out */ case -EOVERFLOW: /* Value too large for defined data type */ +#ifdef EPROTO case -EPROTO: /* Protocol error */ +#endif case -EPIPE: /* Broken pipe */ default: /* Don't know what happened, try again later... */ diff -Nru nut-2.7.1/drivers/xppc-mib.c nut-2.7.2/drivers/xppc-mib.c --- nut-2.7.1/drivers/xppc-mib.c 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/drivers/xppc-mib.c 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,126 @@ +/* xppc-mib.c - subdriver to monitor XPPC SNMP devices with NUT + * + * Copyright (C) + * 2011 - 2012 Arnaud Quette + * 2014 Charles Lepple + * + * Note: this subdriver was initially generated as a "stub" by the + * scripts/subdriver/gen-snmp-subdriver.sh script. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "xppc-mib.h" + +#define XPPC_MIB_VERSION "0.2" + +#define XPPC_SYSOID ".1.3.6.1.4.1.935" + +/* To create a value lookup structure (as needed on the 2nd line of the example + * below), use the following kind of declaration, outside of the present snmp_info_t[]: + * static info_lkp_t onbatt_info[] = { + * { 1, "OB" }, + * { 2, "OL" }, + * { 0, "NULL" } + * }; + */ + +/* upsBaseBatteryStatus */ +static info_lkp_t xpcc_onbatt_info[] = { + { 1, "" }, /* unknown */ + { 2, "" }, /* batteryNormal */ + { 3, "LB" } /* batteryLow */ +}; + +/* +upsBaseOutputStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + onLine(2), + onBattery(3), + onBoost(4), + sleeping(5), + onBypass(6), + rebooting(7), + standBy(8), + onBuck(9) } +*/ +static info_lkp_t xpcc_power_info[] = { + { 1, "" }, /* unknown */ + { 2, "OL" }, /* onLine */ + { 3, "OB" }, /* onBattery */ + { 4, "OL BOOST" }, /* onBoost */ + { 5, "OFF" }, /* sleeping */ + { 6, "BYPASS"}, /* onBypass */ + { 7, "" }, /* rebooting */ + { 8, "OFF" }, /* standBy */ + { 9, "OL TRIM"} /* onBuck */ +}; + +/* XPPC Snmp2NUT lookup table */ +static snmp_info_t xppc_mib[] = { + + /* Data format: + * { info_type, info_flags, info_len, OID, dfl, flags, oid2info, setvar }, + * + * info_type: NUT INFO_ or CMD_ element name + * info_flags: flags to set in addinfo + * info_len: length of strings if STR + * cmd value if CMD, multiplier otherwise + * OID: SNMP OID or NULL + * dfl: default value + * flags: snmp-ups internal flags (FIXME: ...) + * oid2info: lookup table between OID and NUT values + * setvar: variable to set for SU_FLAG_SETINT + * + * Example: + * { "input.voltage", 0, 0.1, ".1.3.6.1.4.1.705.1.6.2.1.2.1", "", SU_INPUT_1, NULL }, + * { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.705.1.7.3.0", "", SU_FLAG_OK | SU_STATUS_BATT, onbatt_info }, + * + * To create a value lookup structure (as needed on the 2nd line), use the + * following kind of declaration, outside of the present snmp_info_t[]: + * static info_lkp_t onbatt_info[] = { + * { 1, "OB" }, + * { 2, "OL" }, + * { 0, "NULL" } + * }; + */ + { "ups.mfr", ST_FLAG_STRING, SU_INFOSIZE, NULL, "Tripp Lite / Phoenixtec", + SU_FLAG_STATIC | SU_FLAG_ABSENT | SU_FLAG_OK, NULL }, + + /* upsBaseIdentModel.0 = STRING: "Intelligent" */ + { "ups.model", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.935.1.1.1.1.1.1.0", "Generic Phoenixtec SNMP device", SU_FLAG_OK, NULL }, + /* upsBaseBatteryStatus.0 = INTEGER: batteryNormal(2) */ + { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.935.1.1.1.2.1.1.0", "", SU_STATUS_BATT | SU_TYPE_INT | SU_FLAG_OK, xpcc_onbatt_info }, + /* upsSmartBatteryCapacity.0 = INTEGER: 100 */ + { "battery.charge", 0, 1, ".1.3.6.1.4.1.935.1.1.1.2.2.1.0", NULL, SU_TYPE_INT | SU_FLAG_OK, NULL }, + /* upsSmartBatteryTemperature.0 = INTEGER: 260 */ + { "ups.temperature", 0, 0.1, ".1.3.6.1.4.1.935.1.1.1.2.2.3.0", NULL, SU_TYPE_INT | SU_FLAG_OK, NULL }, + /* upsSmartInputLineVoltage.0 = INTEGER: 1998 */ + { "input.voltage", 0, 0.1, ".1.3.6.1.4.1.935.1.1.1.3.2.1.0", NULL, SU_TYPE_INT | SU_FLAG_OK, NULL }, + /* upsBaseOutputStatus.0 = INTEGER: onLine(2) */ + { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.935.1.1.1.4.1.1.0", "", SU_TYPE_INT | SU_STATUS_PWR, xpcc_power_info }, + /* upsSmartOutputVoltage.0 = INTEGER: 2309 */ + { "output.voltage", 0, 0.1, ".1.3.6.1.4.1.935.1.1.1.4.2.1.0", NULL, SU_TYPE_INT | SU_FLAG_OK, NULL }, + /* upsSmartOutputFrequency.0 = INTEGER: 500 */ + { "output.frequency", 0, 0.1, ".1.3.6.1.4.1.935.1.1.1.4.2.2.0", NULL, SU_TYPE_INT | SU_FLAG_OK, NULL }, + /* upsSmartOutputLoad.0 = INTEGER: 7 */ + { "ups.load", 0, 1, ".1.3.6.1.4.1.935.1.1.1.4.2.3.0", NULL, SU_TYPE_INT | SU_FLAG_OK, NULL }, + + /* end of structure. */ + { NULL, 0, 0, NULL, NULL, 0, NULL } +}; + +mib2nut_info_t xppc = { "xppc", XPPC_MIB_VERSION, NULL, NULL, xppc_mib, XPPC_SYSOID }; diff -Nru nut-2.7.1/drivers/xppc-mib.h nut-2.7.2/drivers/xppc-mib.h --- nut-2.7.1/drivers/xppc-mib.h 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/drivers/xppc-mib.h 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,29 @@ +/* xppc-mib.h - subdriver to monitor XPPC SNMP devices with NUT + * + * Copyright (C) + * 2011 - 2012 Arnaud Quette + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef XPPC_MIB_H +#define XPPC_MIB_H + +#include "main.h" +#include "snmp-ups.h" + +extern mib2nut_info_t xppc; + +#endif /* XPPC_MIB_H */ diff -Nru nut-2.7.1/include/config.h.in nut-2.7.2/include/config.h.in --- nut-2.7.1/include/config.h.in 2013-10-30 20:52:26.000000000 +0100 +++ nut-2.7.2/include/config.h.in 2014-02-27 21:30:16.000000000 +0100 @@ -1,4 +1,4 @@ -/* include/config.h.in. Generated from configure.in by autoheader. */ +/* include/config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD @@ -30,9 +30,6 @@ MSVC and with C++ compilers. */ #undef FLEXIBLE_ARRAY_MEMBER -/* addons run as user */ -#undef HAL_USER - /* Define to 1 if you have the `atexit' function. */ #undef HAVE_ATEXIT @@ -54,9 +51,6 @@ /* Define to 1 if C supports variable-length arrays. */ #undef HAVE_C_VARARRAYS -/* Define to 1 if you have the header file. */ -#undef HAVE_DBUS_DBUS_GLIB_H - /* Define to 1 if you have the declaration of `LOG_UPTO', and to 0 if you don't. */ #undef HAVE_DECL_LOG_UPTO @@ -116,12 +110,6 @@ /* Define to 1 if you have the `getpassphrase' function. */ #undef HAVE_GETPASSPHRASE -/* Define to 1 if you have the header file. */ -#undef HAVE_GLIB_H - -/* Define to 1 if you have the `g_timeout_add_seconds' function. */ -#undef HAVE_G_TIMEOUT_ADD_SECONDS - /* Define to 1 if you have the `init_snmp' function. */ #undef HAVE_INIT_SNMP @@ -134,12 +122,6 @@ /* Define if you have Boutell's libgd installed */ #undef HAVE_LIBGD -/* Define to 1 if you have the `libhal_device_new_changeset' function. */ -#undef HAVE_LIBHAL_DEVICE_NEW_CHANGESET - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIBHAL_H - /* Define to enable libltdl support */ #undef HAVE_LIBLTDL @@ -391,9 +373,6 @@ /* Define to enable IPMI support using FreeIPMI */ #undef WITH_FREEIPMI -/* Define to enable HAL support */ -#undef WITH_HAL - /* Define to enable IPMI support */ #undef WITH_IPMI diff -Nru nut-2.7.1/include/Makefile.in nut-2.7.2/include/Makefile.in --- nut-2.7.1/include/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/include/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -65,7 +65,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -75,10 +74,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -138,10 +136,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -153,8 +147,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -240,6 +232,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/INSTALL nut-2.7.2/INSTALL --- nut-2.7.1/INSTALL 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/INSTALL 2014-02-25 16:41:47.000000000 +0100 @@ -1,320 +1,370 @@ -Installation instructions -========================= +Installation Instructions +************************* -This chapter describe the various methods for installing Network UPS Tools. +Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, +Inc. -Whenever it is possible, prefer <>. -Packagers have done an excellent and hard work at improving NUT integration into -their system. + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + + The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. -[[Installing_source]] -Installing from source ----------------------- +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. -These are the essential steps for compiling and installing this software. - -The NUT linkdoc:packager-guide[Packager Guide], which presents the best -practices for installing and integrating NUT, is also a good reading. - -[NOTE] -.Keep in mind that... -================================================================================ - -- the paths shown below are the default values you get by just calling -configure by itself. If you have used --prefix or similar, things will be -different. Also, if you didn't install this program from source yourself, the -paths will probably have a number of differences. - -- by default, your system probably won't find the man pages, since they -install to /usr/local/ups/man. You can fix this by editing your MANPATH, or -just do this: - - man -M /usr/local/ups/man - -- if your favorite system offers up to date binary packages, you should always -prefer these over a source installation. Along with the known advantages of such -systems for installation, upgrade and removal, there are many integration issues -that have been addressed. - -================================================================================ - - -Prepare your system -~~~~~~~~~~~~~~~~~~~~ - -System User creation -^^^^^^^^^^^^^^^^^^^^ - -Create at least one system user and a group for running this software. You -might call them "ups" and "nut". The exact names aren't important as -long as you are consistent. - -The process for doing this varies from one system to the next, and -explaining how to add users is beyond the scope of this document. - -For the purposes of this document, the user name and group name -will be 'ups' and 'nut' respectively. - -Be sure the new user is a member of the new group! If you forget to -do this, you will have problems later on when you try to start upsd. - - -Build and install -~~~~~~~~~~~~~~~~~ - -[[Configuration]] -Configuration -^^^^^^^^^^^^^ - -Configure the source tree for your system. Add the '--with-user' and -'--with-group' switch to set the user name and group that you created -above. - - ./configure --with-user=ups --with-group=nut - -If you need any other switches for configure, add them here. For example: - -* to build and install USB drivers, add '--with-usb' (note that you - need to install libusb development package or files). - -* to build and install SNMP drivers, add '--with-snmp' (note that - you need to install libsnmp development package or files). - -* to build and install CGI scripts, add '--with-cgi'. - -See <> from the User Manual, -docs/configure.txt or './configure --help' for all the available -options. - -If you alter paths with additional switches, be sure to use those -new paths while reading the rest of the steps. - -Reference: <> from the -User Manual. - - -Build the programs -^^^^^^^^^^^^^^^^^^ - - make - -This will build the NUT client and server programs and the -selected drivers. It will also build any other features that were -selected during <> step above. - - -Installation -^^^^^^^^^^^^ - -[NOTE] -===================================================================== - -you should now gain privileges for installing software if necessary: - - su - -===================================================================== - -Install the files to a system level directory: - - make install - -This will install the compiled programs and man pages, as well as -some data files required by NUT. Any optional features selected -during configuration will also be installed. - -This will also install sample versions of the NUT configuration -files. Sample files are installed with names like ups.conf.sample -so they will not overwrite any existing real config files you may -have created. - -If you are packaging this software, then you will probably want to -use the DESTDIR variable to redirect the build into another place, -i.e.: - - make DESTDIR=/tmp/package install - make DESTDIR=/tmp/package install-conf - -[[StatePath]] -State path creation -^^^^^^^^^^^^^^^^^^^ - -Create the state path directory for the driver(s) and server to use -for storing UPS status data and other auxiliary files, and make it -owned by the user you created. - - mkdir -p /var/state/ups - chmod 0770 /var/state/ups - chown root:nut /var/state/ups - -[[Ownership]] -Ownership and permissions -^^^^^^^^^^^^^^^^^^^^^^^^^ - -Set ownership data and permissions on your serial or USB ports -that go to your UPS hardware. Be sure to limit access to just -the user you created earlier. - -These examples assume the second serial port (ttyS1) on a typical -Slackware system. On FreeBSD, that would be cuaa1. Serial ports -vary greatly, so yours may be called something else. - - chmod 0660 /dev/ttyS1 - chown root:nut /dev/ttyS1 - -//////////////////////////////////////////////////////////////////////////////// -FIXME: TBR -//////////////////////////////////////////////////////////////////////////////// - -The setup for USB ports is slightly more complicated. Device files -for USB devices, such as /proc/bus/usb/002/001, are usually -created "on the fly" when a device is plugged in, and disappear -when the device is disconnected. Moreover, the names of these -device files can change randomly. To set up the correct -permissions for the USB device, you may need to set up (operating -system dependent) hotplugging scripts. Sample scripts and -information are provided in the scripts/hotplug and -scripts/udev directories. For most users, the hotplugging scripts -will be installed automatically by "make install". - -(If you want to try if a driver works without setting up -hotplugging, you can add the "-u root" option to upsd, upsmon, and -drivers; this should allow you to follow the below -instructions. However, don't forget to set up the correct -permissions later!). - -NOTE: if you are using something like devfs or udev, make sure -these permissions stay set across a reboot. If they revert to the -old values, your drivers may fail to start. - - -You are now ready to configure NUT, and start testing and using it. - -You can jump directly to the <>. - - -[[Installing_packages]] -Installing from packages ------------------------- - -This chapter describes the specific installation steps when using -binary packages that exist on various major systems. - -[[Debian]] -Debian, Ubuntu and other derivatives -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -NOTE: NUT is packaged and well maintained in these systems. -The official Debian packager is part of the NUT Team. - -Using your prefered method (apt-get, aptitude, Synaptic, ...), install -the 'nut' package, and optionaly the following: - -- 'nut-cgi', if you need the CGI (HTML) option, -- 'nut-snmp', if you need the snmp-ups driver, -- 'nut-xml', for the netxml-ups driver, -- 'nut-powerman-pdu', to control the PowerMan daemon (PDU management) -- 'nut-dev', if you need the development files. - -//////////////////////////////////////////////////////////////////////////////// -- nut-client -- nut-hal-drivers -//////////////////////////////////////////////////////////////////////////////// - -Configuration files are located in /etc/nut. -linkman:nut.conf[5] must be edited to be able to invoke /etc/init.d/nut - -NOTE: Ubuntu users can access the APT URL installation by clicking on link:apt://nut[this link]. - - -[[Mandriva]] -Mandriva -~~~~~~~~ - -NOTE: NUT is packaged and well maintained in these systems. -The official Mandriva packager is part of the NUT Team. - -Using your prefered method (urpmi, RPMdrake, ...), install one of the two below -packages: - -- 'nut-server' if you have a 'standalone' or 'netserver' installation, -- 'nut' if you have a 'netclient' installation. - -Optionaly, you can also install the following: - -- 'nut-cgi', if you need the CGI (HTML) option, -- 'nut-devel', if you need the development files. - - -[[Suse]] -Suse / Opensuse -~~~~~~~~~~~~~~~ - -NOTE: NUT is packaged and well maintained in these systems. -The official Suse packager is part of the NUT Team. - -Install the 'nut-classic' package, and optionaly the following: - -- 'nut-drivers-net', if you need the snmp-ups or the netxml-ups drivers, -- 'nut-cgi', if you need the CGI (HTML) option, -- 'nut-devel', if you need the development files, - -NOTE: Suse and Opensuse users can use the -link:http://software.opensuse.org/search?baseproject=ALL&p=1&q=nut[one-click install method] -to install NUT. - - -[[RedHat]] -Red Hat, Fedora and CentOS -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -NOTE: NUT is packaged and well maintained in these systems. -The official Red Hat packager is part of the NUT Team. - -Using your prefered method (yum, Add/Remove Software, ...), install one of the -two below packages: - -- 'nut' if you have a 'standalone' or 'netserver' installation, -- 'nut-client' if you have a 'netclient' installation. - -Optionaly, you can also install the following: - -- 'nut-cgi', if you need the CGI (HTML) option, -- 'nut-xml', if you need the netxml-ups driver, -- 'nut-devel', if you need the development files. - - -[[FreeBSD]] -FreeBSD -~~~~~~~ - -You can either install NUT as a binary package or as a port. - -Binary package -^^^^^^^^^^^^^^ - -To install the main component, use the following command: - - # pkg_add -r nut - -Port -^^^^ - -The port is located under /usr/ports/sysutils/nut. -To install it, use the following command: - - # cd /usr/ports/sysutils/nut/ && make install clean - -You have to define WITH_NUT_CGI to build the optional CGI scripts. - -Optionaly, you can also install the following ports: - -- sysutils/nut-snmp, for the SNMP driver, -- sysutils/nut-usb, for the USB drivers, -- sysutils/nut-libupsclient, for the upsclient library. - - -You are now ready to configure NUT, and start testing and using it. - -You can jump directly to the -<>. diff -Nru nut-2.7.1/INSTALL.nut nut-2.7.2/INSTALL.nut --- nut-2.7.1/INSTALL.nut 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/INSTALL.nut 2014-02-27 22:17:32.000000000 +0100 @@ -0,0 +1,319 @@ +Installation instructions +========================= + +This chapter describe the various methods for installing Network UPS Tools. + +Whenever it is possible, prefer <>. +Packagers have done an excellent and hard work at improving NUT integration into +their system. + +[[Installing_source]] +Installing from source +---------------------- + +These are the essential steps for compiling and installing this software. + +The NUT linkdoc:packager-guide[Packager Guide], which presents the best +practices for installing and integrating NUT, is also a good reading. + +[NOTE] +.Keep in mind that... +================================================================================ + +- the paths shown below are the default values you get by just calling +configure by itself. If you have used --prefix or similar, things will be +different. Also, if you didn't install this program from source yourself, the +paths will probably have a number of differences. + +- by default, your system probably won't find the man pages, since they +install to /usr/local/ups/man. You can fix this by editing your MANPATH, or +just do this: + + man -M /usr/local/ups/man + +- if your favorite system offers up to date binary packages, you should always +prefer these over a source installation. Along with the known advantages of such +systems for installation, upgrade and removal, there are many integration issues +that have been addressed. + +================================================================================ + + +Prepare your system +~~~~~~~~~~~~~~~~~~~~ + +System User creation +^^^^^^^^^^^^^^^^^^^^ + +Create at least one system user and a group for running this software. You +might call them "ups" and "nut". The exact names aren't important as +long as you are consistent. + +The process for doing this varies from one system to the next, and +explaining how to add users is beyond the scope of this document. + +For the purposes of this document, the user name and group name +will be 'ups' and 'nut' respectively. + +Be sure the new user is a member of the new group! If you forget to +do this, you will have problems later on when you try to start upsd. + + +Build and install +~~~~~~~~~~~~~~~~~ + +[[Configuration]] +Configuration +^^^^^^^^^^^^^ + +Configure the source tree for your system. Add the '--with-user' and +'--with-group' switch to set the user name and group that you created +above. + + ./configure --with-user=ups --with-group=nut + +If you need any other switches for configure, add them here. For example: + +* to build and install USB drivers, add '--with-usb' (note that you + need to install libusb development package or files). + +* to build and install SNMP drivers, add '--with-snmp' (note that + you need to install libsnmp development package or files). + +* to build and install CGI scripts, add '--with-cgi'. + +See <> from the User Manual, +docs/configure.txt or './configure --help' for all the available +options. + +If you alter paths with additional switches, be sure to use those +new paths while reading the rest of the steps. + +Reference: <> from the +User Manual. + + +Build the programs +^^^^^^^^^^^^^^^^^^ + + make + +This will build the NUT client and server programs and the +selected drivers. It will also build any other features that were +selected during <> step above. + + +Installation +^^^^^^^^^^^^ + +[NOTE] +===================================================================== + +you should now gain privileges for installing software if necessary: + + su + +===================================================================== + +Install the files to a system level directory: + + make install + +This will install the compiled programs and man pages, as well as +some data files required by NUT. Any optional features selected +during configuration will also be installed. + +This will also install sample versions of the NUT configuration +files. Sample files are installed with names like ups.conf.sample +so they will not overwrite any existing real config files you may +have created. + +If you are packaging this software, then you will probably want to +use the DESTDIR variable to redirect the build into another place, +i.e.: + + make DESTDIR=/tmp/package install + make DESTDIR=/tmp/package install-conf + +[[StatePath]] +State path creation +^^^^^^^^^^^^^^^^^^^ + +Create the state path directory for the driver(s) and server to use +for storing UPS status data and other auxiliary files, and make it +owned by the user you created. + + mkdir -p /var/state/ups + chmod 0770 /var/state/ups + chown root:nut /var/state/ups + +[[Ownership]] +Ownership and permissions +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Set ownership data and permissions on your serial or USB ports +that go to your UPS hardware. Be sure to limit access to just +the user you created earlier. + +These examples assume the second serial port (ttyS1) on a typical +Slackware system. On FreeBSD, that would be cuaa1. Serial ports +vary greatly, so yours may be called something else. + + chmod 0660 /dev/ttyS1 + chown root:nut /dev/ttyS1 + +//////////////////////////////////////////////////////////////////////////////// +FIXME: TBR +//////////////////////////////////////////////////////////////////////////////// + +The setup for USB ports is slightly more complicated. Device files +for USB devices, such as /proc/bus/usb/002/001, are usually +created "on the fly" when a device is plugged in, and disappear +when the device is disconnected. Moreover, the names of these +device files can change randomly. To set up the correct +permissions for the USB device, you may need to set up (operating +system dependent) hotplugging scripts. Sample scripts and +information are provided in the scripts/hotplug and +scripts/udev directories. For most users, the hotplugging scripts +will be installed automatically by "make install". + +(If you want to try if a driver works without setting up +hotplugging, you can add the "-u root" option to upsd, upsmon, and +drivers; this should allow you to follow the below +instructions. However, don't forget to set up the correct +permissions later!). + +NOTE: if you are using something like devfs or udev, make sure +these permissions stay set across a reboot. If they revert to the +old values, your drivers may fail to start. + + +You are now ready to configure NUT, and start testing and using it. + +You can jump directly to the <>. + + +[[Installing_packages]] +Installing from packages +------------------------ + +This chapter describes the specific installation steps when using +binary packages that exist on various major systems. + +[[Debian]] +Debian, Ubuntu and other derivatives +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +NOTE: NUT is packaged and well maintained in these systems. +The official Debian packager is part of the NUT Team. + +Using your prefered method (apt-get, aptitude, Synaptic, ...), install +the 'nut' package, and optionaly the following: + +- 'nut-cgi', if you need the CGI (HTML) option, +- 'nut-snmp', if you need the snmp-ups driver, +- 'nut-xml', for the netxml-ups driver, +- 'nut-powerman-pdu', to control the PowerMan daemon (PDU management) +- 'nut-dev', if you need the development files. + +//////////////////////////////////////////////////////////////////////////////// +- nut-client +//////////////////////////////////////////////////////////////////////////////// + +Configuration files are located in /etc/nut. +linkman:nut.conf[5] must be edited to be able to invoke /etc/init.d/nut + +NOTE: Ubuntu users can access the APT URL installation by clicking on link:apt://nut[this link]. + + +[[Mandriva]] +Mandriva +~~~~~~~~ + +NOTE: NUT is packaged and well maintained in these systems. +The official Mandriva packager is part of the NUT Team. + +Using your prefered method (urpmi, RPMdrake, ...), install one of the two below +packages: + +- 'nut-server' if you have a 'standalone' or 'netserver' installation, +- 'nut' if you have a 'netclient' installation. + +Optionaly, you can also install the following: + +- 'nut-cgi', if you need the CGI (HTML) option, +- 'nut-devel', if you need the development files. + + +[[Suse]] +Suse / Opensuse +~~~~~~~~~~~~~~~ + +NOTE: NUT is packaged and well maintained in these systems. +The official Suse packager is part of the NUT Team. + +Install the 'nut-classic' package, and optionaly the following: + +- 'nut-drivers-net', if you need the snmp-ups or the netxml-ups drivers, +- 'nut-cgi', if you need the CGI (HTML) option, +- 'nut-devel', if you need the development files, + +NOTE: Suse and Opensuse users can use the +link:http://software.opensuse.org/search?baseproject=ALL&p=1&q=nut[one-click install method] +to install NUT. + + +[[RedHat]] +Red Hat, Fedora and CentOS +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +NOTE: NUT is packaged and well maintained in these systems. +The official Red Hat packager is part of the NUT Team. + +Using your prefered method (yum, Add/Remove Software, ...), install one of the +two below packages: + +- 'nut' if you have a 'standalone' or 'netserver' installation, +- 'nut-client' if you have a 'netclient' installation. + +Optionaly, you can also install the following: + +- 'nut-cgi', if you need the CGI (HTML) option, +- 'nut-xml', if you need the netxml-ups driver, +- 'nut-devel', if you need the development files. + + +[[FreeBSD]] +FreeBSD +~~~~~~~ + +You can either install NUT as a binary package or as a port. + +Binary package +^^^^^^^^^^^^^^ + +To install the main component, use the following command: + + # pkg_add -r nut + +Port +^^^^ + +The port is located under /usr/ports/sysutils/nut. +To install it, use the following command: + + # cd /usr/ports/sysutils/nut/ && make install clean + +You have to define WITH_NUT_CGI to build the optional CGI scripts. + +Optionaly, you can also install the following ports: + +- sysutils/nut-snmp, for the SNMP driver, +- sysutils/nut-usb, for the USB drivers, +- sysutils/nut-libupsclient, for the upsclient library. + + +You are now ready to configure NUT, and start testing and using it. + +You can jump directly to the +<>. diff -Nru nut-2.7.1/lib/Makefile.in nut-2.7.2/lib/Makefile.in --- nut-2.7.1/lib/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/lib/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -69,7 +69,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -79,10 +78,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -170,10 +168,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -185,8 +179,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -272,6 +264,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/m4/nut_check_libhal.m4 nut-2.7.2/m4/nut_check_libhal.m4 --- nut-2.7.1/m4/nut_check_libhal.m4 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/m4/nut_check_libhal.m4 1970-01-01 01:00:00.000000000 +0100 @@ -1,81 +0,0 @@ -dnl Check for LIBHAL compiler flags. On success, set nut_have_libhal="yes" -dnl and set LIBHAL_CFLAGS and LIBHAL_LIBS. On failure, set -dnl nut_have_libhal="no". This macro can be run multiple times, but will -dnl do the checking only once. -dnl NUT requires HAL version 0.5.8 at least - -AC_DEFUN([NUT_CHECK_LIBHAL], -[ -if test -z "${nut_have_libhal_seen}"; then - nut_have_libhal_seen=yes - - CFLAGS_ORIG="${CFLAGS}" - LIBS_ORIG="${LIBS}" - - AC_MSG_CHECKING(for libhal version via pkg-config (0.5.8 minimum required)) - HAL_VERSION="`pkg-config --silence-errors --modversion hal 2>/dev/null`" - if test "$?" != "0" -o -z "${HAL_VERSION}"; then - AC_MSG_RESULT(none found) - elif pkg-config --silence-errors --atleast-version=0.5.8 hal 2>/dev/null; then - AC_MSG_RESULT(${HAL_VERSION} found) - else - AC_MSG_WARN(${HAL_VERSION} is too old) - fi - - AC_MSG_CHECKING(for libhal cflags) - AC_ARG_WITH(hal-includes, - AS_HELP_STRING([@<:@--with-hal-includes=CFLAGS@:>@], [include flags for the HAL library]), - [ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-hal-includes - see docs/configure.txt) - ;; - *) - CFLAGS="${withval}" - ;; - esac - ], [ - dnl also get cflags from glib-2.0 to workaround a bug in dbus-glib - CFLAGS="`pkg-config --silence-errors --cflags hal dbus-glib-1 2>/dev/null`" - if test "$?" != "0"; then - CFLAGS="-DDBUS_API_SUBJECT_TO_CHANGE -I/usr/include/hal -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include" - fi - ]) - AC_MSG_RESULT([${CFLAGS}]) - - AC_MSG_CHECKING(for libhal ldflags) - AC_ARG_WITH(hal-libs, - AS_HELP_STRING([@<:@--with-hal-libs=LIBS@:>@], [linker flags for the HAL library]), - [ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-hal-libs - see docs/configure.txt) - ;; - *) - LIBS="${withval}" - ;; - esac - ], [ - dnl also get libs from glib-2.0 to workaround a bug in dbus-glib - LIBS="`pkg-config --silence-errors --libs hal dbus-glib-1 2>/dev/null`" - if test "$?" != "0"; then - LIBS="-lhal -ldbus-1 -lpthread" - fi - ]) - AC_MSG_RESULT([${LIBS}]) - - dnl check if HAL is usable - AC_CHECK_HEADERS(libhal.h, [nut_have_libhal=yes], [nut_have_libhal=no], [AC_INCLUDES_DEFAULT]) - AC_CHECK_HEADERS(glib.h dbus/dbus-glib.h, [], [nut_have_libhal=no], [AC_INCLUDES_DEFAULT]) - AC_CHECK_FUNCS(libhal_device_new_changeset, [], [nut_have_libhal=no]) - - if test "${nut_have_libhal}" = "yes"; then - AC_CHECK_FUNCS(g_timeout_add_seconds) - LIBHAL_CFLAGS="${CFLAGS}" - LIBHAL_LIBS="${LIBS}" - fi - - CFLAGS="${CFLAGS_ORIG}" - LIBS="${LIBS_ORIG}" -fi -]) diff -Nru nut-2.7.1/m4/nut_config_libhal.m4 nut-2.7.2/m4/nut_config_libhal.m4 --- nut-2.7.1/m4/nut_config_libhal.m4 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/m4/nut_config_libhal.m4 1970-01-01 01:00:00.000000000 +0100 @@ -1,102 +0,0 @@ -dnl Check for LIBHAL configuration if support for HAL was found. -dnl This keeps compile and link time options separate from runtime -dnl configuration items. This macro can be run multiple times, but -dnl will do the checking only once. - -AC_DEFUN([NUT_CONFIG_LIBHAL], -[ -if test -z "${nut_have_config_libhal_seen}" -a "${nut_have_libhal}" = "yes"; then - nut_have_config_libhal_seen=yes - - AC_REQUIRE([NUT_CHECK_LIBHAL]) - - AC_MSG_CHECKING(for libhal user) - AC_ARG_WITH(hal-user, - AS_HELP_STRING([@<:@--with-hal-user=USER@:>@], [addons run as user]), - [ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-hal-user - see docs/configure.txt) - ;; - *) - HAL_USER="${withval}" - ;; - esac - ], [ - dnl this will only work as of HAL 0.5.9 - HAL_USER="`pkg-config --silence-errors --variable=haluser hal 2>/dev/null`" - if test "$?" != "0" -o -z "${HAL_USER}"; then - HAL_USER="haldaemon" - fi - ]) - AC_MSG_RESULT(${HAL_USER}) - AC_DEFINE_UNQUOTED(HAL_USER, "${HAL_USER}", [addons run as user]) - - AC_MSG_CHECKING(for libhal device match key) - AC_ARG_WITH(hal-device-match-key, - AS_HELP_STRING([@<:@--with-hal-device-match-key=KEY@:>@], [device match key]), - [ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-hal-device-match-key - see docs/configure.txt) - ;; - *) - HAL_DEVICE_MATCH_KEY="${withval}" - ;; - esac - ], [ - dnl the device match key changed with HAL 0.5.11 - if pkg-config --silence-errors --atleast-version=0.5.11 hal 2>/dev/null; then - HAL_DEVICE_MATCH_KEY="info.bus" - else - HAL_DEVICE_MATCH_KEY="info.subsystem" - fi - ]) - AC_MSG_RESULT(${HAL_DEVICE_MATCH_KEY}) - - AC_MSG_CHECKING(for libhal Callouts path) - AC_ARG_WITH(hal-callouts-path, - AS_HELP_STRING([@<:@--with-hal-callouts-path=PATH@:>@], [installation path for callouts]), - [ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-hal-callouts-path - see docs/configure.txt) - ;; - *) - HAL_CALLOUTS_PATH="${withval}" - ;; - esac - ], [ - dnl Determine installation path for callouts - dnl As per HAL spec, §5 Callouts addon install path: $libdir/hal - HAL_CALLOUTS_PATH="`pkg-config --silence-errors --variable=libexecdir hal 2>/dev/null`" - if test "$?" != "0" -o -z "${HAL_CALLOUTS_PATH}"; then - HAL_CALLOUTS_PATH="${libdir}/hal" - fi - ]) - AC_MSG_RESULT(${HAL_CALLOUTS_PATH}) - - AC_MSG_CHECKING(for libhal Device Information path) - AC_ARG_WITH(hal-fdi-path, - AS_HELP_STRING([@<:@--with-hal-fdi-path=PATH@:>@], [installation path for device information files]), - [ - case "${withval}" in - yes|no) - AC_MSG_ERROR(invalid option --with(out)-hal-fdi-path - see docs/configure.txt) - ;; - *) - HAL_FDI_PATH="${withval}" - ;; - esac - ], [ - dnl Determine installation path for .fdi - dnl As per HAL spec, §2 Device Information Files - dnl fdi install path: $datarootdir/hal/fdi/information/20thirdparty - HAL_FDI_PATH="`pkg-config --silence-errors --variable=hal_fdidir hal 2>/dev/null`" - if test "$?" != "0" -o -z "${HAL_FDI_PATH}"; then - HAL_FDI_PATH="${datarootdir}/hal/fdi/information/20thirdparty" - fi - ]) - AC_MSG_RESULT(${HAL_FDI_PATH}) -fi -]) diff -Nru nut-2.7.1/Makefile.am nut-2.7.2/Makefile.am --- nut-2.7.1/Makefile.am 2013-11-20 20:53:31.000000000 +0100 +++ nut-2.7.2/Makefile.am 2014-02-25 16:39:33.000000000 +0100 @@ -9,7 +9,7 @@ lib scripts server tests # COPYING is included automatically. -EXTRA_DIST = LICENSE-GPL2 LICENSE-GPL3 MAINTAINERS UPGRADING +EXTRA_DIST = INSTALL.nut LICENSE-GPL2 LICENSE-GPL3 MAINTAINERS UPGRADING # ---------------------------------------------------------------------- # flags to pass to ./configure when calling "make distcheck" and "make @@ -22,7 +22,8 @@ DISTCHECK_CONFIGURE_FLAGS = ${DISTCHECK_FLAGS} \ --with-hotplug-dir='$${prefix}/etc/hotplug' \ - --with-udev-dir='$${prefix}/etc/udev' + --with-udev-dir='$${prefix}/etc/udev' \ + --with-devd-dir='$${prefix}/etc/devd' distcheck-light: $(MAKE) $(AM_MAKEFLAGS) DISTCHECK_FLAGS="$(DISTCHECK_LIGHT_FLAGS)" distcheck @@ -44,16 +45,13 @@ $(top_srcdir)/tools/gitlog2changelog.py v2.6.0 || \ echo "gitlog2changelog.py failed to generate the ChangeLog. See https://github.com/networkupstools/nut/commits/master" > $@ -if HAVE_ASCIIDOC -website: - cd docs; $(MAKE) $(AM_MAKEFLAGS) website - cd docs/man; $(MAKE) $(AM_MAKEFLAGS) html-man - cd tools; $(MAKE) $(AM_MAKEFLAGS) website - cd docs/website; $(MAKE) $(AM_MAKEFLAGS) website -else !HAVE_ASCIIDOC -website: - @echo "Not building website since 'asciidoc' was not found." -endif !HAVE_ASCIIDOC +# Maintainers targets: distribution signature and hashes +dist-sig: + gpg --detach-sign nut-@PACKAGE_VERSION@.tar.gz + +dist-hash: + md5sum nut-@PACKAGE_VERSION@.tar.gz > nut-@PACKAGE_VERSION@.tar.gz.md5 + sha256sum nut-@PACKAGE_VERSION@.tar.gz > nut-@PACKAGE_VERSION@.tar.gz.sha256 # ---------------------------------------------------------------------- # targets from old build system (pre-automake). diff -Nru nut-2.7.1/Makefile.in nut-2.7.2/Makefile.in --- nut-2.7.1/Makefile.in 2013-11-20 20:55:15.000000000 +0100 +++ nut-2.7.2/Makefile.in 2014-04-17 22:26:32.000000000 +0200 @@ -72,7 +72,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -82,10 +81,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ @@ -199,10 +197,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -214,8 +208,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -301,6 +293,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ @@ -353,7 +346,7 @@ # COPYING is included automatically. -EXTRA_DIST = LICENSE-GPL2 LICENSE-GPL3 MAINTAINERS UPGRADING +EXTRA_DIST = INSTALL.nut LICENSE-GPL2 LICENSE-GPL3 MAINTAINERS UPGRADING # ---------------------------------------------------------------------- # flags to pass to ./configure when calling "make distcheck" and "make @@ -364,7 +357,8 @@ DISTCHECK_LIGHT_FLAGS = --with-all=auto --with-ssl=auto --with-doc=auto DISTCHECK_CONFIGURE_FLAGS = ${DISTCHECK_FLAGS} \ --with-hotplug-dir='$${prefix}/etc/hotplug' \ - --with-udev-dir='$${prefix}/etc/udev' + --with-udev-dir='$${prefix}/etc/udev' \ + --with-devd-dir='$${prefix}/etc/devd' # Automatically generate the ChangeLog from Git logs: @@ -882,13 +876,13 @@ $(top_srcdir)/tools/gitlog2changelog.py v2.6.0 || \ echo "gitlog2changelog.py failed to generate the ChangeLog. See https://github.com/networkupstools/nut/commits/master" > $@ -@HAVE_ASCIIDOC_TRUE@website: -@HAVE_ASCIIDOC_TRUE@ cd docs; $(MAKE) $(AM_MAKEFLAGS) website -@HAVE_ASCIIDOC_TRUE@ cd docs/man; $(MAKE) $(AM_MAKEFLAGS) html-man -@HAVE_ASCIIDOC_TRUE@ cd tools; $(MAKE) $(AM_MAKEFLAGS) website -@HAVE_ASCIIDOC_TRUE@ cd docs/website; $(MAKE) $(AM_MAKEFLAGS) website -@HAVE_ASCIIDOC_FALSE@website: -@HAVE_ASCIIDOC_FALSE@ @echo "Not building website since 'asciidoc' was not found." +# Maintainers targets: distribution signature and hashes +dist-sig: + gpg --detach-sign nut-@PACKAGE_VERSION@.tar.gz + +dist-hash: + md5sum nut-@PACKAGE_VERSION@.tar.gz > nut-@PACKAGE_VERSION@.tar.gz.md5 + sha256sum nut-@PACKAGE_VERSION@.tar.gz > nut-@PACKAGE_VERSION@.tar.gz.sha256 build: @echo $(WARN) diff -Nru nut-2.7.1/NEWS nut-2.7.2/NEWS --- nut-2.7.1/NEWS 2013-11-18 21:54:18.000000000 +0100 +++ nut-2.7.2/NEWS 2014-04-17 22:03:57.000000000 +0200 @@ -4,6 +4,51 @@ ChangeLog file. --------------------------------------------------------------------------- +Release notes for NUT 2.7.2 - what's new since 2.7.1: + + - This release is the second interim release of the 2.7 testing series. + + - libupsclient had undefined references related to functions of libcommon. + This issue was reported on Debian (bug #731156) and is now fixed + + - support for new devices: + CABAC UPS-1700DV2 + Eaton Powerware 3105 + Emerson Network Power Liebert PSI 1440 + MicroDowell B.Box LP 500 + Numeric Digital 800 plus + OptiUPS VS 575C + Tripp Lite SU10KRT3/1X + + - FreeDesktop Hardware Abstraction Layer (HAL) support was removed. + + - nutdrv_atcl_usb: new driver for 'ATCL FOR UPS' + + - al175: re-introduced this driver (actually, it was in 2.7.1) + + - upsdrvctl now provides retry options for upsdrvctl and driver(s) + + - snmp-ups: add support for XPPC-MIB and Tripp Lite SU10KRT3/1X. + Also fix erroneous status in HP/Compaq SNMP MIB (with the most recent HP + firmware (1.76) ; improved various MIBs (APC, HP/Compaq, ...) + + - nutdrv_qx: add new 'fallback' Q1 subdriver, with minimal 'Q1' support. + General improvements on all subdrivers. + + - mge-shut: partially revert PnP/RTS change, for initializing the + communication with the UPS. Note that nut-scanner similar function was + not modified however. + + - FreeBSD DEVD support: generate devd.conf files for USB UPSes + This adds a --with-devd-dir=PATH option to ./configure + + - The NUT website was moved to a standalone website. A separate code + repository and source archive are now available. + + - As usual, more bugfixes, cleanup and improvements, on both source code + and documentation. + +--------------------------------------------------------------------------- Release notes for NUT 2.7.1 - what's new since 2.6.5: - This release is an interim release, part of the testing series, and the diff -Nru nut-2.7.1/README nut-2.7.2/README --- nut-2.7.1/README 2013-11-18 21:28:04.000000000 +0100 +++ nut-2.7.2/README 2014-02-25 23:40:18.000000000 +0100 @@ -123,13 +123,13 @@ To start and stop drivers, use upsdrvctl. By default, it will start or stop every UPS in the config file: - /usr/local/ups/bin/upsdrvctl start - /usr/local/ups/bin/upsdrvctl stop + /usr/local/ups/sbin/upsdrvctl start + /usr/local/ups/sbin/upsdrvctl stop However, you can also just start or stop one by adding its name: - /usr/local/ups/bin/upsdrvctl start sparky - /usr/local/ups/bin/upsdrvctl stop sparky + /usr/local/ups/sbin/upsdrvctl start sparky + /usr/local/ups/sbin/upsdrvctl stop sparky To find the driver name for your device, refer to the section below called "HARDWARE SUPPORT TABLE". @@ -223,8 +223,8 @@ WARNING: if you play around with this command, expect your filesystems to die. Don't power off your computers unless they're ready for it: - /usr/local/ups/bin/upsdrvctl shutdown - /usr/local/ups/bin/upsdrvctl shutdown sparky + /usr/local/ups/sbin/upsdrvctl shutdown + /usr/local/ups/sbin/upsdrvctl shutdown sparky You should read the <> chapter to learn more about when to use this feature. If called at the wrong diff -Nru nut-2.7.1/scripts/augeas/Makefile.in nut-2.7.2/scripts/augeas/Makefile.in --- nut-2.7.1/scripts/augeas/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/scripts/augeas/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -68,7 +68,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -78,10 +77,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -140,10 +138,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -155,8 +149,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -242,6 +234,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/scripts/devd/Makefile.am nut-2.7.2/scripts/devd/Makefile.am --- nut-2.7.1/scripts/devd/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/scripts/devd/Makefile.am 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,14 @@ + +if WITH_DEVD + devdconfdir = $(devddir) + devdconf_DATA = +if WITH_USB + devdconf_DATA += nut-usb.conf +endif +endif + +EXTRA_DIST = README + +DISTCLEANFILES = nut-usb.conf +# we should never remove this one, apart from a distclean-check +#MAINTAINERCLEANFILES = nut-usbups.rules.in diff -Nru nut-2.7.1/scripts/devd/Makefile.in nut-2.7.2/scripts/devd/Makefile.in --- nut-2.7.1/scripts/devd/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/scripts/devd/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -0,0 +1,530 @@ +# Makefile.in generated by automake 1.11.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@WITH_DEVD_TRUE@@WITH_USB_TRUE@am__append_1 = nut-usb.conf +subdir = scripts/devd +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/nut-usb.conf.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nut_arg_with.m4 \ + $(top_srcdir)/m4/nut_check_asciidoc.m4 \ + $(top_srcdir)/m4/nut_check_libavahi.m4 \ + $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ + $(top_srcdir)/m4/nut_check_libgd.m4 \ + $(top_srcdir)/m4/nut_check_libltdl.m4 \ + $(top_srcdir)/m4/nut_check_libneon.m4 \ + $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ + $(top_srcdir)/m4/nut_check_libnss.m4 \ + $(top_srcdir)/m4/nut_check_libopenssl.m4 \ + $(top_srcdir)/m4/nut_check_libpowerman.m4 \ + $(top_srcdir)/m4/nut_check_libusb.m4 \ + $(top_srcdir)/m4/nut_check_libwrap.m4 \ + $(top_srcdir)/m4/nut_check_os.m4 \ + $(top_srcdir)/m4/nut_report_feature.m4 \ + $(top_srcdir)/m4/nut_type_socklen_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = nut-usb.conf +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(devdconfdir)" +DATA = $(devdconf_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +A2X = @A2X@ +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +ASCIIDOC = @ASCIIDOC@ +ASPELL = @ASPELL@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BINDIR = @BINDIR@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFPATH = @CONFPATH@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@ +CPPUNIT_LIBS = @CPPUNIT_LIBS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DBLATEX = @DBLATEX@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC_BUILD_LIST = @DOC_BUILD_LIST@ +DRIVER_BUILD_LIST = @DRIVER_BUILD_LIST@ +DRIVER_INSTALL_TARGET = @DRIVER_INSTALL_TARGET@ +DRIVER_MAN_LIST = @DRIVER_MAN_LIST@ +DRVPATH = @DRVPATH@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBAVAHI_CFLAGS = @LIBAVAHI_CFLAGS@ +LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ +LIBGD_CFLAGS = @LIBGD_CFLAGS@ +LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ +LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ +LIBIPMI_LIBS = @LIBIPMI_LIBS@ +LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ +LIBLTDL_LIBS = @LIBLTDL_LIBS@ +LIBNEON_CFLAGS = @LIBNEON_CFLAGS@ +LIBNEON_LIBS = @LIBNEON_LIBS@ +LIBNETSNMP_CFLAGS = @LIBNETSNMP_CFLAGS@ +LIBNETSNMP_LIBS = @LIBNETSNMP_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBPOWERMAN_CFLAGS = @LIBPOWERMAN_CFLAGS@ +LIBPOWERMAN_LIBS = @LIBPOWERMAN_LIBS@ +LIBS = @LIBS@ +LIBSSL_CFLAGS = @LIBSSL_CFLAGS@ +LIBSSL_LIBS = @LIBSSL_LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ +LIBUSB_LIBS = @LIBUSB_LIBS@ +LIBWRAP_CFLAGS = @LIBWRAP_CFLAGS@ +LIBWRAP_LIBS = @LIBWRAP_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETLIBS = @NETLIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NUT_NETVERSION = @NUT_NETVERSION@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OS_NAME = @OS_NAME@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PIDPATH = @PIDPATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PORT = @PORT@ +RANLIB = @RANLIB@ +RUN_AS_GROUP = @RUN_AS_GROUP@ +RUN_AS_USER = @RUN_AS_USER@ +SBINDIR = @SBINDIR@ +SED = @SED@ +SERLIBS = @SERLIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STATEPATH = @STATEPATH@ +STRIP = @STRIP@ +SUN_LIBUSB = @SUN_LIBUSB@ +TREE_VERSION = @TREE_VERSION@ +VERSION = @VERSION@ +WORDS_BIGENDIAN = @WORDS_BIGENDIAN@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +cgiexecdir = @cgiexecdir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +devddir = @devddir@ +docdir = @docdir@ +driverexecdir = @driverexecdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +hotplugdir = @hotplugdir@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgconfigdir = @pkgconfigdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdsystemshutdowndir = @systemdsystemshutdowndir@ +systemdsystemunitdir = @systemdsystemunitdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +udevdir = @udevdir@ +@WITH_DEVD_TRUE@devdconfdir = $(devddir) +@WITH_DEVD_TRUE@devdconf_DATA = $(am__append_1) +EXTRA_DIST = README +DISTCLEANFILES = nut-usb.conf +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/devd/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu scripts/devd/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +nut-usb.conf: $(top_builddir)/config.status $(srcdir)/nut-usb.conf.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-devdconfDATA: $(devdconf_DATA) + @$(NORMAL_INSTALL) + @list='$(devdconf_DATA)'; test -n "$(devdconfdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(devdconfdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(devdconfdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devdconfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(devdconfdir)" || exit $$?; \ + done + +uninstall-devdconfDATA: + @$(NORMAL_UNINSTALL) + @list='$(devdconf_DATA)'; test -n "$(devdconfdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(devdconfdir)'; $(am__uninstall_files_from_dir) +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(devdconfdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-devdconfDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-devdconfDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-devdconfDATA install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-devdconfDATA + +# we should never remove this one, apart from a distclean-check +#MAINTAINERCLEANFILES = nut-usbups.rules.in + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -Nru nut-2.7.1/scripts/devd/nut-usb.conf.in nut-2.7.2/scripts/devd/nut-usb.conf.in --- nut-2.7.1/scripts/devd/nut-usb.conf.in 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/scripts/devd/nut-usb.conf.in 2014-04-17 22:27:08.000000000 +0200 @@ -0,0 +1,850 @@ +# This file is generated and installed by the Network UPS Tools package. +# Homepage: http://www.networkupstools.org/ + +# ATCL FOR UPS - nutdrv_atcl_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0001"; + match "product" "0x0000"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Hewlett Packard +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x0001"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# T500 - bcmxcp_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1f01"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# T750 - bcmxcp_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1f02"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# HP T750 INTL - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1f06"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# HP T1000 INTL - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1f08"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# HP T1500 INTL - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1f09"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# HP R/T 2200 INTL (like SMART2200RMXL2U) - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1f0a"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# HP R1500 G2 and G3 INTL - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1fe0"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# HP T750 G2 - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1fe1"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1fe2"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# HP T1500 G3 - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1fe3"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# R/T3000 - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1fe5"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# R/T3000 - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1fe6"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# various models - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1fe7"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# various models - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x03f0"; + match "product" "0x1fe8"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Eaton +# various models - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0463"; + match "product" "0x0001"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# various models - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0463"; + match "product" "0xffff"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Dell +# various models - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x047c"; + match "product" "0xffff"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Riello (Cypress Semiconductor Corp.) +# various models - riello_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x04b4"; + match "product" "0x5500"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Minibox +# openUPS Intelligent UPS (minimum required firmware 1.4) - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x04d8"; + match "product" "0xd004"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Belkin +# F6H375-USB - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x050d"; + match "product" "0x0375"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# F6C550-AVR - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x050d"; + match "product" "0x0551"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# F6C1250-TW-RK - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x050d"; + match "product" "0x0750"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# F6C1500-TW-RK - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x050d"; + match "product" "0x0751"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# F6C900-UNV - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x050d"; + match "product" "0x0900"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# F6C100-UNV - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x050d"; + match "product" "0x0910"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# F6C120-UNV - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x050d"; + match "product" "0x0912"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# F6C800-UNV - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x050d"; + match "product" "0x0980"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# F6C1100-UNV, F6C1200-UNV - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x050d"; + match "product" "0x1100"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# APC +# various models - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x051d"; + match "product" "0x0002"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# various 5G models - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x051d"; + match "product" "0x0003"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Powerware +# various models - bcmxcp_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0592"; + match "product" "0x0002"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# PW 9140 - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0592"; + match "product" "0x0004"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Agiler UPS - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x05b8"; + match "product" "0x0000"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Belkin F6C1200-UNV - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0665"; + match "product" "0x5161"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Phoenixtec Power Co., Ltd +# Online Yunto YQ450 - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x06da"; + match "product" "0x0002"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Mustek Powermust - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x06da"; + match "product" "0x0003"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Phoenixtec Innova 3/1 T - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x06da"; + match "product" "0x0004"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Phoenixtec Innova RT - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x06da"; + match "product" "0x0005"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Phoenixtec Innova T - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x06da"; + match "product" "0x0201"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Online Zinto A - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x06da"; + match "product" "0x0601"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# various models - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x06da"; + match "product" "0xffff"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# iDowell +# iDowell - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x075d"; + match "product" "0x0300"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Cyber Power Systems +# 900AVR/BC900D, CP1200AVR/BC1200D - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0764"; + match "product" "0x0005"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Dynex DX-800U? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0764"; + match "product" "0x0501"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# OR2200LCDRM2U, OR700LCDRM1U, PR6000LCDRTXL5U - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0764"; + match "product" "0x0601"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Sweex 1000VA - richcomm_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0925"; + match "product" "0x1234"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# TrippLite +# e.g. OMNIVS1000, SMART550USB, ... - tripplite_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x0001"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite AVR550U - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x1003"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite AVR750U - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x1007"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite ECO550UPS - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x1008"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite ECO550UPS - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x1009"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite ECO550UPS - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x1010"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite OMNI1000LCD - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x2005"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite OMNI900LCD - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x2007"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x2008"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite Smart1000LCD - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x2009"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x2010"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x2011"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x2012"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x2013"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x2014"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x3008"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x3009"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x3010"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x3011"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite smart2200RMXL2U - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x3012"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x3013"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x3014"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x3015"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite Smart1500LCD (newer unit) - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x3016"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite SmartOnline SU1500RTXL2UA (older unit?) - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x4001"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite SmartOnline SU6000RT4U? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x4002"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite SmartOnline SU1500RTXL2ua - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x4003"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. TrippLite SmartOnline SU1000XLA - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x4004"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x4005"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x4006"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x4007"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# e.g. ? - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x09ae"; + match "product" "0x4008"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# PowerCOM +# PowerCOM Vanguard and BNT-xxxAP - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0d9f"; + match "product" "0x0004"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# PowerCOM IMP - IMPERIAL Series - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0d9f"; + match "product" "0x00a2"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# PowerCOM SKP - Smart KING Pro (all Smart series) - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0d9f"; + match "product" "0x00a3"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# PowerCOM WOW - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0d9f"; + match "product" "0x00a4"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# PowerCOM VGD - Vanguard - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0d9f"; + match "product" "0x00a5"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# PowerCOM BNT - Black Knight Pro - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0d9f"; + match "product" "0x00a6"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Unitek Alpha 1200Sx - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x0f03"; + match "product" "0x0001"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; + +# Liebert +# Liebert PowerSure PSA UPS - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x10af"; + match "product" "0x0001"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Liebert PowerSure PSI 1440 - usbhid-ups +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x10af"; + match "product" "0x0004"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# GE EP series - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0x14f0"; + match "product" "0x00c9"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; +# Ablerex 625L USB - blazer_usb +notify 100 { + match "system" "USB"; + match "subsystem" "DEVICE"; + match "type" "ATTACH"; + match "vendor" "0xffff"; + match "product" "0x0000"; + action "chgrp @RUN_AS_GROUP@ /dev/$device-name*; chmod g+rw /dev/$device-name*"; +}; diff -Nru nut-2.7.1/scripts/devd/README nut-2.7.2/scripts/devd/README --- nut-2.7.1/scripts/devd/README 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/scripts/devd/README 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,11 @@ +On FreeBSD, devd has a similar role to udev on Linux. The devd.conf file +defines actions to perform when devices are plugged in. + +The tools/nut-usbinfo.pl script generates nut-usb.conf.in by processing USB +macros in all of the drivers. In this case, the defined action for each +matching UPS is to change the permissions such that the NUT drivers can access +the devices without requiring root privileges. You may need to restart devd and +re-plug in the UPS to trigger the actions. + +The format of this configuration file should work with devd on FreeBSD 9.0 and +9.1, at the very least. diff -Nru nut-2.7.1/scripts/hal/Makefile.am nut-2.7.2/scripts/hal/Makefile.am --- nut-2.7.1/scripts/hal/Makefile.am 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/scripts/hal/Makefile.am 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ - -if WITH_HAL - halfdidir = $(HAL_FDI_PATH) - halfdi_DATA = 20-ups-nut-device.fdi -endif - -# FIXME: should be able to use $< here. -20-ups-nut-device.fdi: ups-nut-device.fdi - cp ups-nut-device.fdi $@ - -EXTRA_DIST = ups-nut-device.fdi.in - -DISTCLEANFILES = ups-nut-device.fdi -# we should never remove this one, apart from a distclean-check -#MAINTAINERCLEANFILES = ups-nut-device.fdi.in -CLEANFILES = 20-ups-nut-device.fdi diff -Nru nut-2.7.1/scripts/hal/Makefile.in nut-2.7.2/scripts/hal/Makefile.in --- nut-2.7.1/scripts/hal/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/scripts/hal/Makefile.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,542 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = scripts/hal -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/ups-nut-device.fdi.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/nut_arg_with.m4 \ - $(top_srcdir)/m4/nut_check_asciidoc.m4 \ - $(top_srcdir)/m4/nut_check_libavahi.m4 \ - $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ - $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ - $(top_srcdir)/m4/nut_check_libltdl.m4 \ - $(top_srcdir)/m4/nut_check_libneon.m4 \ - $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ - $(top_srcdir)/m4/nut_check_libnss.m4 \ - $(top_srcdir)/m4/nut_check_libopenssl.m4 \ - $(top_srcdir)/m4/nut_check_libpowerman.m4 \ - $(top_srcdir)/m4/nut_check_libusb.m4 \ - $(top_srcdir)/m4/nut_check_libwrap.m4 \ - $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ - $(top_srcdir)/m4/nut_report_feature.m4 \ - $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/config.h -CONFIG_CLEAN_FILES = ups-nut-device.fdi -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(halfdidir)" -DATA = $(halfdi_DATA) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -A2X = @A2X@ -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -ASCIIDOC = @ASCIIDOC@ -ASPELL = @ASPELL@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BINDIR = @BINDIR@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CONFPATH = @CONFPATH@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@ -CPPUNIT_LIBS = @CPPUNIT_LIBS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DBLATEX = @DBLATEX@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DOC_BUILD_LIST = @DOC_BUILD_LIST@ -DRIVER_BUILD_LIST = @DRIVER_BUILD_LIST@ -DRIVER_INSTALL_TARGET = @DRIVER_INSTALL_TARGET@ -DRIVER_MAN_LIST = @DRIVER_MAN_LIST@ -DRVPATH = @DRVPATH@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBAVAHI_CFLAGS = @LIBAVAHI_CFLAGS@ -LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ -LIBGD_CFLAGS = @LIBGD_CFLAGS@ -LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ -LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ -LIBIPMI_LIBS = @LIBIPMI_LIBS@ -LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ -LIBLTDL_LIBS = @LIBLTDL_LIBS@ -LIBNEON_CFLAGS = @LIBNEON_CFLAGS@ -LIBNEON_LIBS = @LIBNEON_LIBS@ -LIBNETSNMP_CFLAGS = @LIBNETSNMP_CFLAGS@ -LIBNETSNMP_LIBS = @LIBNETSNMP_LIBS@ -LIBOBJS = @LIBOBJS@ -LIBPOWERMAN_CFLAGS = @LIBPOWERMAN_CFLAGS@ -LIBPOWERMAN_LIBS = @LIBPOWERMAN_LIBS@ -LIBS = @LIBS@ -LIBSSL_CFLAGS = @LIBSSL_CFLAGS@ -LIBSSL_LIBS = @LIBSSL_LIBS@ -LIBTOOL = @LIBTOOL@ -LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ -LIBUSB_LIBS = @LIBUSB_LIBS@ -LIBWRAP_CFLAGS = @LIBWRAP_CFLAGS@ -LIBWRAP_LIBS = @LIBWRAP_LIBS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NETLIBS = @NETLIBS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NUT_NETVERSION = @NUT_NETVERSION@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS_NAME = @OS_NAME@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PIDPATH = @PIDPATH@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PORT = @PORT@ -RANLIB = @RANLIB@ -RUN_AS_GROUP = @RUN_AS_GROUP@ -RUN_AS_USER = @RUN_AS_USER@ -SBINDIR = @SBINDIR@ -SED = @SED@ -SERLIBS = @SERLIBS@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STATEPATH = @STATEPATH@ -STRIP = @STRIP@ -SUN_LIBUSB = @SUN_LIBUSB@ -TREE_VERSION = @TREE_VERSION@ -VERSION = @VERSION@ -WORDS_BIGENDIAN = @WORDS_BIGENDIAN@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -cgiexecdir = @cgiexecdir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -driverexecdir = @driverexecdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -hotplugdir = @hotplugdir@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgconfigdir = @pkgconfigdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -systemdsystemshutdowndir = @systemdsystemshutdowndir@ -systemdsystemunitdir = @systemdsystemunitdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -udevdir = @udevdir@ -@WITH_HAL_TRUE@halfdidir = $(HAL_FDI_PATH) -@WITH_HAL_TRUE@halfdi_DATA = 20-ups-nut-device.fdi -EXTRA_DIST = ups-nut-device.fdi.in -DISTCLEANFILES = ups-nut-device.fdi -# we should never remove this one, apart from a distclean-check -#MAINTAINERCLEANFILES = ups-nut-device.fdi.in -CLEANFILES = 20-ups-nut-device.fdi -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/hal/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu scripts/hal/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -ups-nut-device.fdi: $(top_builddir)/config.status $(srcdir)/ups-nut-device.fdi.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-halfdiDATA: $(halfdi_DATA) - @$(NORMAL_INSTALL) - @list='$(halfdi_DATA)'; test -n "$(halfdidir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(halfdidir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(halfdidir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(halfdidir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(halfdidir)" || exit $$?; \ - done - -uninstall-halfdiDATA: - @$(NORMAL_UNINSTALL) - @list='$(halfdi_DATA)'; test -n "$(halfdidir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(halfdidir)'; $(am__uninstall_files_from_dir) -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(DATA) -installdirs: - for dir in "$(DESTDIR)$(halfdidir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-halfdiDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-halfdiDATA - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-halfdiDATA install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am uninstall-halfdiDATA - - -# FIXME: should be able to use $< here. -20-ups-nut-device.fdi: ups-nut-device.fdi - cp ups-nut-device.fdi $@ - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru nut-2.7.1/scripts/hal/ups-nut-device.fdi.in nut-2.7.2/scripts/hal/ups-nut-device.fdi.in --- nut-2.7.1/scripts/hal/ups-nut-device.fdi.in 2013-11-20 20:57:57.000000000 +0100 +++ nut-2.7.2/scripts/hal/ups-nut-device.fdi.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,707 +0,0 @@ - - - - - - - - battery - battery - hald-addon-blazer_usb - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-bcmxcp_usb - ups - - - - battery - battery - hald-addon-bcmxcp_usb - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - - - battery - battery - hald-addon-riello_usb - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - - - battery - battery - hald-addon-bcmxcp_usb - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - battery - battery - hald-addon-blazer_usb - ups - - - - - - battery - battery - hald-addon-blazer_usb - ups - - - - - - - - battery - battery - hald-addon-blazer_usb - ups - - - - battery - battery - hald-addon-blazer_usb - ups - - - - battery - battery - hald-addon-blazer_usb - ups - - - - battery - battery - hald-addon-blazer_usb - ups - - - - battery - battery - hald-addon-blazer_usb - ups - - - - battery - battery - hald-addon-blazer_usb - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - battery - battery - hald-addon-richcomm_usb - ups - - - - - - - - battery - battery - hald-addon-tripplite_usb - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - battery - battery - hald-addon-blazer_usb - ups - - - - - - - - battery - battery - hald-addon-usbhid-ups - ups - - - - - - battery - battery - hald-addon-blazer_usb - ups - - - - - - battery - battery - hald-addon-blazer_usb - ups - - - - - diff -Nru nut-2.7.1/scripts/hotplug/libhid.usermap nut-2.7.2/scripts/hotplug/libhid.usermap --- nut-2.7.1/scripts/hotplug/libhid.usermap 2013-11-20 20:57:57.000000000 +0100 +++ nut-2.7.2/scripts/hotplug/libhid.usermap 2014-04-17 22:27:08.000000000 +0200 @@ -4,7 +4,7 @@ # libhidups 0x0003 0xVVVV 0xPPPP 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 # # usb module match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info -# Krauler UP-M500VA +# ATCL FOR UPS libhidups 0x0003 0x0001 0x0000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 # Hewlett Packard @@ -208,6 +208,8 @@ # Liebert # Liebert PowerSure PSA UPS libhidups 0x0003 0x10af 0x0001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 +# Liebert PowerSure PSI 1440 +libhidups 0x0003 0x10af 0x0004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 # GE EP series libhidups 0x0003 0x14f0 0x00c9 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 # Ablerex 625L USB diff -Nru nut-2.7.1/scripts/hotplug/Makefile.in nut-2.7.2/scripts/hotplug/Makefile.in --- nut-2.7.1/scripts/hotplug/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/scripts/hotplug/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -67,7 +67,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -77,10 +76,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -169,10 +167,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -184,8 +178,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -271,6 +263,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/scripts/Makefile.am nut-2.7.2/scripts/Makefile.am --- nut-2.7.1/scripts/Makefile.am 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/scripts/Makefile.am 2014-02-27 22:17:32.000000000 +0100 @@ -1,27 +1,28 @@ EXTRA_DIST = README \ -avahi/nut.service.in \ -HP-UX/nut-drvctl \ -HP-UX/nut-drvctl.sh \ -HP-UX/nut-upsd \ -HP-UX/nut-upsd.sh \ -HP-UX/nut-upsmon \ -HP-UX/nut-upsmon.sh \ -logrotate/nutlogd \ -misc/nut.bash_completion \ -misc/osd-notify \ -perl/Nut.pm \ -RedHat/halt.patch \ -RedHat/README \ -RedHat/ups \ -RedHat/upsd \ -RedHat/upsd.in \ -RedHat/upsmon \ -RedHat/upsmon.in \ -Solaris8/S99upsmon \ -subdriver/gen-usbhid-subdriver.sh \ -ufw/README \ -upower/95-upower-hid.rules \ -Windows/halt.c \ -Windows/Makefile + avahi/nut.service.in \ + HP-UX/nut-drvctl \ + HP-UX/nut-drvctl.sh \ + HP-UX/nut-upsd \ + HP-UX/nut-upsd.sh \ + HP-UX/nut-upsmon \ + HP-UX/nut-upsmon.sh \ + logrotate/nutlogd \ + misc/nut.bash_completion \ + misc/osd-notify \ + perl/Nut.pm \ + RedHat/halt.patch \ + RedHat/README \ + RedHat/ups \ + RedHat/upsd \ + RedHat/upsd.in \ + RedHat/upsmon \ + RedHat/upsmon.in \ + Solaris8/S99upsmon \ + subdriver/gen-usbhid-subdriver.sh \ + subdriver/gen-snmp-subdriver.sh \ + ufw/README \ + upower/95-upower-hid.rules \ + Windows/halt.c \ + Windows/Makefile -SUBDIRS = augeas hal hotplug python systemd udev Solaris +SUBDIRS = augeas devd hotplug python systemd udev Solaris diff -Nru nut-2.7.1/scripts/Makefile.in nut-2.7.2/scripts/Makefile.in --- nut-2.7.1/scripts/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/scripts/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -63,7 +63,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -73,10 +72,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -173,10 +171,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -188,8 +182,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -275,6 +267,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ @@ -317,32 +310,33 @@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ EXTRA_DIST = README \ -avahi/nut.service.in \ -HP-UX/nut-drvctl \ -HP-UX/nut-drvctl.sh \ -HP-UX/nut-upsd \ -HP-UX/nut-upsd.sh \ -HP-UX/nut-upsmon \ -HP-UX/nut-upsmon.sh \ -logrotate/nutlogd \ -misc/nut.bash_completion \ -misc/osd-notify \ -perl/Nut.pm \ -RedHat/halt.patch \ -RedHat/README \ -RedHat/ups \ -RedHat/upsd \ -RedHat/upsd.in \ -RedHat/upsmon \ -RedHat/upsmon.in \ -Solaris8/S99upsmon \ -subdriver/gen-usbhid-subdriver.sh \ -ufw/README \ -upower/95-upower-hid.rules \ -Windows/halt.c \ -Windows/Makefile + avahi/nut.service.in \ + HP-UX/nut-drvctl \ + HP-UX/nut-drvctl.sh \ + HP-UX/nut-upsd \ + HP-UX/nut-upsd.sh \ + HP-UX/nut-upsmon \ + HP-UX/nut-upsmon.sh \ + logrotate/nutlogd \ + misc/nut.bash_completion \ + misc/osd-notify \ + perl/Nut.pm \ + RedHat/halt.patch \ + RedHat/README \ + RedHat/ups \ + RedHat/upsd \ + RedHat/upsd.in \ + RedHat/upsmon \ + RedHat/upsmon.in \ + Solaris8/S99upsmon \ + subdriver/gen-usbhid-subdriver.sh \ + subdriver/gen-snmp-subdriver.sh \ + ufw/README \ + upower/95-upower-hid.rules \ + Windows/halt.c \ + Windows/Makefile -SUBDIRS = augeas hal hotplug python systemd udev Solaris +SUBDIRS = augeas devd hotplug python systemd udev Solaris all: all-recursive .SUFFIXES: diff -Nru nut-2.7.1/scripts/python/Makefile.in nut-2.7.2/scripts/python/Makefile.in --- nut-2.7.1/scripts/python/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/scripts/python/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -65,7 +65,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -75,10 +74,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -135,10 +133,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -150,8 +144,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -237,6 +229,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/scripts/README nut-2.7.2/scripts/README --- nut-2.7.1/scripts/README 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/scripts/README 2014-02-27 22:17:32.000000000 +0100 @@ -2,8 +2,6 @@ - example startup and shutdown scripts for various operating systems and distributions, - hotplug and udev integration for on the fly privileges settings (Linux only), -- Hardware Abstraction Layer script, for declaring and binding NUT addons to -specific USB devices, - UPower (previously DeviceKit-power) rules file, - Python Client module and application, - Perl client module, diff -Nru nut-2.7.1/scripts/Solaris/Makefile.in nut-2.7.2/scripts/Solaris/Makefile.in --- nut-2.7.1/scripts/Solaris/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/scripts/Solaris/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -65,7 +65,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -75,10 +74,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -135,10 +133,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -150,8 +144,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -237,6 +229,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/scripts/Solaris/nut.in nut-2.7.2/scripts/Solaris/nut.in --- nut-2.7.1/scripts/Solaris/nut.in 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/scripts/Solaris/nut.in 2014-02-25 23:43:55.000000000 +0100 @@ -12,7 +12,7 @@ ups_stop () { pkill -n upsmon pkill -n upsd - ${NUT_DIR}/bin/upsdrvctl stop > /dev/null 2>&1 + ${NUT_DIR}/sbin/upsdrvctl stop > /dev/null 2>&1 } ups_start () { @@ -22,7 +22,7 @@ fi if [ ! "$MODE" = "netclient" ];then - $NUT_DIR/bin/upsdrvctl start #> /dev/null 2>&1 + $NUT_DIR/sbin/upsdrvctl start #> /dev/null 2>&1 $NUT_DIR/sbin/upsd #> /dev/null 2>&1 fi $NUT_DIR/sbin/upsmon #> /dev/null 2>&1 @@ -49,7 +49,7 @@ $NUT_DIR/sbin/upsmon -K >/dev/null 2>&1 if [ $? = 0 ]; then echo "Shutting down the UPS ..." - #$NUT_DIR/bin/upsdrvctl shutdown + #$NUT_DIR/sbin/upsdrvctl shutdown fi ;; *) diff -Nru nut-2.7.1/scripts/Solaris/postinstall.in nut-2.7.2/scripts/Solaris/postinstall.in --- nut-2.7.1/scripts/Solaris/postinstall.in 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/scripts/Solaris/postinstall.in 2014-02-25 23:43:36.000000000 +0100 @@ -59,7 +59,7 @@ # Start nut services #echo "Starting nut services" -#$NUT_DIR/bin/upsdrvctl start #> /dev/null 2>&1 +#$NUT_DIR/sbin/upsdrvctl start #> /dev/null 2>&1 #$NUT_DIR/sbin/upsd #> /dev/null 2>&1 #$NUT_DIR/sbin/upsmon #> /dev/null 2>&1 diff -Nru nut-2.7.1/scripts/Solaris/preremove.in nut-2.7.2/scripts/Solaris/preremove.in --- nut-2.7.1/scripts/Solaris/preremove.in 2013-07-26 21:41:10.000000000 +0200 +++ nut-2.7.2/scripts/Solaris/preremove.in 2014-02-25 23:44:25.000000000 +0100 @@ -4,5 +4,5 @@ NUT_DIR="@prefix@" -#$NUT_DIR/bin/upsdrvctl stop +#$NUT_DIR/sbin/upsdrvctl stop diff -Nru nut-2.7.1/scripts/subdriver/gen-snmp-subdriver.sh nut-2.7.2/scripts/subdriver/gen-snmp-subdriver.sh --- nut-2.7.1/scripts/subdriver/gen-snmp-subdriver.sh 1970-01-01 01:00:00.000000000 +0100 +++ nut-2.7.2/scripts/subdriver/gen-snmp-subdriver.sh 2014-02-25 16:39:34.000000000 +0100 @@ -0,0 +1,348 @@ +#!/bin/bash +# +# an auxiliary script to produce a "stub" snmp-ups subdriver from +# SNMP data from a real agent or from dump files +# +# Version: 0.4 +# +# See also: docs/snmp-subdrivers.txt +# +# Copyright (C) +# 2011 - 2012 Arnaud Quette +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# TODO: +# - extend to SNMP v3 (auth.) + +usage() { + echo "Usage: $0 [options] [file]" + echo "Options:" + echo " -h, --help -- show this message and quit" + echo " -n name -- subdriver name (use natural capitalization)" + echo " -M DIRLIST -- colon separated list of directories to also search for MIBs" + echo " -k -- keep temporary files (for debugging)" + echo "" + echo "mode 1: get SNMP data from a real agent" + echo " -H host_address -- SNMP host IP address or name" + echo " -c community -- SNMP v1 community name (default: public)" + echo "" + echo "mode 2: get data from files (snmpwalk dumps of 'sysOID' subtree)" + echo " -s XXXX -- SNMP OID entry point (sysOID). Ex: '.1.3.6.1.4.1.705.1'" + echo " file1 file2 -- read from files instead of an host (using Net SNMP)" + echo " file1: numeric SNMP walk (snmpwalk -On ... )" + echo " file2: string SNMP walk (snmpwalk -Os ... )" + # FIXME: EXAMPLES +} + +# variables +DRIVER="" +KEEP="" +HOSTNAME="" +MIBS_DIRLIST="+." +COMMUNITY="public" +SYSOID="" +MODE=0 + +# constants +NAME=gen-snmp-subdriver +TMPDIR="${TEMPDIR:-/tmp}" +DEBUG=`mktemp "$TMPDIR/$NAME-DEBUG.XXXXXX"` +DFL_NUMWALKFILE=`mktemp "$TMPDIR/$NAME-NUMWALK.XXXXXX"` +DFL_STRWALKFILE=`mktemp "$TMPDIR/$NAME-STRWALK.XXXXXX"` +TMP_NUMWALKFILE=`mktemp "$TMPDIR/$NAME-TMP-NUMWALK.XXXXXX"` +TMP_STRWALKFILE=`mktemp "$TMPDIR/$NAME-TMP-STRWALK.XXXXXX"` + +get_snmp_data() { + # 1) get the sysOID (points the mfr specif MIB) + SYSOID=`snmpget -v1 -c $COMMUNITY $HOSTNAME .1.3.6.1.2.1.1.2.0 41` + + # 2) get the content of the mfr specif MIB + snmpwalk -On -v1 -c $COMMUNITY $HOSTNAME $SYSOID 2>/dev/null 1> $DFL_NUMWALKFILE + snmpwalk -Os -v1 -M $MIBS_DIRLIST -c $COMMUNITY $HOSTNAME $SYSOID 2>/dev/null 1> $DFL_STRWALKFILE +} + +# process command line options +while [ $# -gt 0 ]; do + if [ $# -gt 1 -a "$1" = "-n" ]; then + DRIVER="$2" + shift 2 + elif [ $# -gt 1 -a "$1" = "-M" ]; then + MIBS_DIRLIST="$MIBS_DIRLIST:$2" + shift 2 + elif [ "$1" = "-k" ]; then + KEEP=yes + shift + elif [ $# -gt 1 -a "$1" = "-H" ]; then + HOSTNAME="$2" + shift 2 + elif [ $# -gt 1 -a "$1" = "-c" ]; then + COMMUNITY="$2" + shift 2 + elif [ $# -gt 1 -a "$1" = "-s" ]; then + SYSOID="$2" + shift 2 + elif echo "$1" | grep -qv '^-'; then + if [ $# -gt 1 ]; then + NUMWALKFILE="$1" + shift + STRWALKFILE="$1" + shift + else + usage + exit 1 + fi + elif [ "$1" = "--help" -o "$1" = "-h" ]; then + usage + exit 0 + else + echo "Illegal option $1. Try --help for more info." >&2 + exit 1 + fi +done + +# check that the needed parameters are provided, depending on the mode +if [ -z "$NUMWALKFILE" ]; then + # mode 1: directly get SNMP data from a real agent + MODE=1 + NUMWALKFILE=$DFL_NUMWALKFILE + STRWALKFILE=$DFL_STRWALKFILE + + # check if Net SNMP is available + if [ -z "`which snmpget`" -o -z "`which snmpwalk`" ]; then + echo "Net SNMP not found! snmpget and snmpwalk commands are required." >&2 + exit 1 + fi + # hostname is also mandatory + while [ -z "$HOSTNAME" ]; do + echo " + Please enter the SNMP host IP address or name." + read -p "SNMP host IP name or address: " HOSTNAME < /dev/tty + if echo $HOSTNAME | egrep -q '[^a-zA-Z0-9]'; then + echo "Please use only letters and digits" + HOSTNAME="" + fi + done + # get data from the agent + get_snmp_data +else + # mode 2: get data from files + MODE=2 + + # get sysOID value from command line, if needed + while [ -z "$SYSOID" ]; do + echo " +Please enter the value of sysOID, as displayed by snmp-ups. For example '.1.3.6.1.4.1.2254.2.4'. +You can get it using: snmpget -v1 -c XXX .1.3.6.1.2.1.1.2.0" + read -p "Value of sysOID: " SYSOID < /dev/tty + if echo $SYSOID | egrep -q '[^0-9.]'; then + echo "Please use only the numeric form, with dots and digits" + SYSOID="" + fi + done + # check for actual files existence + if [ ! -f "$NUMWALKFILE" -o ! -f "$STRWALKFILE" ]; then + echo "SNMP walk dump files are missing on disk. Try --help for more info." >&2 + exit 1 + fi +fi + +# delete temporary files: this is called just before exiting. +cleanup () { + rm -f "$DEBUG $DFL_NUMWALKFILE $TMP_NUMWALKFILE $DFL_STRWALKFILE $TMP_STRWALKFILE" +} +if [ -z "$KEEP" ]; then + trap cleanup EXIT +fi + +# prompt use for name of driver +while [ -z "$DRIVER" ]; do + echo " +Please enter a name for this driver. Use only letters and numbers. Use +natural (upper- and lowercase) capitalization, e.g., 'Belkin', 'APC'." + read -p "Name of subdriver: " DRIVER < /dev/tty + if echo $DRIVER | egrep -q '[^a-zA-Z0-9]'; then + echo "Please use only letters and digits" + DRIVER="" + fi +done + +# remove blank and "End of MIB" lines +egrep -e "^[[:space:]]?$" -e "End of MIB" -v ${NUMWALKFILE} > ${TMP_NUMWALKFILE} +egrep -e "^[[:space:]]?$" -e "End of MIB" -v ${STRWALKFILE} > ${TMP_STRWALKFILE} +NUMWALKFILE=${TMP_NUMWALKFILE} +STRWALKFILE=${TMP_STRWALKFILE} + +# FIXME: sanity checks (! -z contents -a same `wc -l`) +NUM_OID_COUNT="`cat $NUMWALKFILE | wc -l`" +STR_OID_COUNT="`cat $STRWALKFILE | wc -l`" + +echo "COUNT = $NUM_OID_COUNT / $NUM_OID_COUNT" + +# create file names +LDRIVER=`echo $DRIVER | tr A-Z a-z` +UDRIVER=`echo $DRIVER | tr a-z A-Z` +CFILE="$LDRIVER-mib.c" +HFILE="$LDRIVER-mib.h" + +# generate header file +echo "Creating $HFILE" +cat > "$HFILE" < + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef ${UDRIVER}_MIB_H +#define ${UDRIVER}_MIB_H + +#include "main.h" +#include "snmp-ups.h" + +extern mib2nut_info_t ${LDRIVER}; + +#endif /* ${UDRIVER}_MIB_H */ +EOF + +# generate source file +# create header +echo "Creating $CFILE" +cat > "$CFILE" < + * + * Note: this subdriver was initially generated as a "stub" by the + * gen-snmp-subdriver script. It must be customized! + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "${HFILE}" + +#define ${UDRIVER}_MIB_VERSION "0.1" + +#define ${UDRIVER}_SYSOID "${SYSOID}" + +/* To create a value lookup structure (as needed on the 2nd line of the example + * below), use the following kind of declaration, outside of the present snmp_info_t[]: + * static info_lkp_t onbatt_info[] = { + * { 1, "OB" }, + * { 2, "OL" }, + * { 0, "NULL" } + * }; + */ + +/* ${UDRIVER} Snmp2NUT lookup table */ +static snmp_info_t ${LDRIVER}_mib[] = { + + /* Data format: + * { info_type, info_flags, info_len, OID, dfl, flags, oid2info, setvar }, + * + * info_type: NUT INFO_ or CMD_ element name + * info_flags: flags to set in addinfo + * info_len: length of strings if STR + * cmd value if CMD, multiplier otherwise + * OID: SNMP OID or NULL + * dfl: default value + * flags: snmp-ups internal flags (FIXME: ...) + * oid2info: lookup table between OID and NUT values + * setvar: variable to set for SU_FLAG_SETINT + * + * Example: + * { "input.voltage", 0, 0.1, ".1.3.6.1.4.1.705.1.6.2.1.2.1", "", SU_INPUT_1, NULL }, + * { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.705.1.7.3.0", "", SU_FLAG_OK | SU_STATUS_BATT, onbatt_info }, + * + * To create a value lookup structure (as needed on the 2nd line), use the + * following kind of declaration, outside of the present snmp_info_t[]: + * static info_lkp_t onbatt_info[] = { + * { 1, "OB" }, + * { 2, "OL" }, + * { 0, "NULL" } + * }; + */ +EOF + + +# extract OID string paths, one by one +LINENB="0" +while IFS= read -r line; do + LINENB="`expr $LINENB + 1`" + FULL_STR_OID="$line" + STR_OID="`echo $line | cut -d'.' -f1`" + echo $line | grep STRING > /dev/null + if [ $? -eq 0 ]; then + ST_FLAG_TYPE="ST_FLAG_STRING" + SU_INFOSIZE="SU_INFOSIZE" + else + ST_FLAG_TYPE="0" + SU_INFOSIZE="1" + fi + # get the matching numeric OID + NUM_OID="`sed -n ${LINENB}p ${NUMWALKFILE} | cut -d' ' -f1`" + printf "\t/* ${FULL_STR_OID} */\n\t{ \"unmapped.${STR_OID}\", ${ST_FLAG_TYPE}, ${SU_INFOSIZE}, \"${NUM_OID}\", NULL, SU_FLAG_OK, NULL },\n" +done < ${STRWALKFILE} >> ${CFILE} + +# append footer +cat >> "$CFILE" < * 2005 - 2006 Peter Selinger * 2008 - 2009 Arjen de Korte + * 2013 Charles Lepple * * Note: this subdriver was initially generated as a "stub" by the * gen-usbhid-subdriver script. It must be customized. @@ -263,7 +264,7 @@ * the device is supported by this subdriver, else 0. */ static int ${LDRIVER}_claim(HIDDevice_t *hd) { - int status = is_usb_device_supported(${LDRIVER}_usb_device_table, hd->VendorID, hd->ProductID); + int status = is_usb_device_supported(${LDRIVER}_usb_device_table, hd); switch (status) { @@ -299,8 +300,8 @@ Done. Do not forget to: -* add #include "${HFILE}" to usbhid-ups.c, -* add &${LDRIVER}_subdriver to usbhid-ups.c:subdriver_list, +* add #include "${HFILE}" to drivers/usbhid-ups.c, +* add &${LDRIVER}_subdriver to drivers/usbhid-ups.c:subdriver_list, * add ${LDRIVER}-hid.c to USBHID_UPS_SUBDRIVERS in drivers/Makefile.am * add ${LDRIVER}-hid.h to dist_noinst_HEADERS in drivers/Makefile.am * "autoreconf" from the top level directory diff -Nru nut-2.7.1/scripts/systemd/Makefile.in nut-2.7.2/scripts/systemd/Makefile.in --- nut-2.7.1/scripts/systemd/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/scripts/systemd/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -71,7 +71,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -81,10 +80,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -173,10 +171,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -188,8 +182,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -275,6 +267,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/scripts/systemd/nut-driver.service.in nut-2.7.2/scripts/systemd/nut-driver.service.in --- nut-2.7.1/scripts/systemd/nut-driver.service.in 2013-07-26 21:41:11.000000000 +0200 +++ nut-2.7.2/scripts/systemd/nut-driver.service.in 2014-02-25 23:45:32.000000000 +0100 @@ -4,7 +4,7 @@ StopWhenUnneeded=yes [Service] -ExecStart=@DRVPATH@/upsdrvctl start -ExecStop=@DRVPATH@/upsdrvctl stop +ExecStart=@SBINDIR@/upsdrvctl start +ExecStop=@SBINDIR@/upsdrvctl stop Type=forking diff -Nru nut-2.7.1/scripts/systemd/nutshutdown.in nut-2.7.2/scripts/systemd/nutshutdown.in --- nut-2.7.1/scripts/systemd/nutshutdown.in 2013-07-26 21:41:11.000000000 +0200 +++ nut-2.7.2/scripts/systemd/nutshutdown.in 2014-02-25 23:45:00.000000000 +0100 @@ -1,2 +1,2 @@ #!/bin/sh -@SBINDIR@/upsmon -K >/dev/null 2>&1 && @driverexecdir@/upsdrvctl shutdown +@SBINDIR@/upsmon -K >/dev/null 2>&1 && @SBINDIR@/upsdrvctl shutdown diff -Nru nut-2.7.1/scripts/udev/Makefile.in nut-2.7.2/scripts/udev/Makefile.in --- nut-2.7.1/scripts/udev/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/scripts/udev/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -67,7 +67,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -77,10 +76,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -166,10 +164,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -181,8 +175,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -268,6 +260,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/scripts/udev/nut-usbups.rules.in nut-2.7.2/scripts/udev/nut-usbups.rules.in --- nut-2.7.1/scripts/udev/nut-usbups.rules.in 2013-11-20 20:57:57.000000000 +0100 +++ nut-2.7.2/scripts/udev/nut-usbups.rules.in 2014-04-17 22:27:08.000000000 +0200 @@ -6,7 +6,7 @@ SUBSYSTEM!="usb", GOTO="nut-usbups_rules_end" LABEL="nut-usbups_rules_real" -# Krauler UP-M500VA - blazer_usb +# ATCL FOR UPS - nutdrv_atcl_usb ATTR{idVendor}=="0001", ATTR{idProduct}=="0000", MODE="664", GROUP="@RUN_AS_GROUP@" # Hewlett Packard @@ -210,6 +210,8 @@ # Liebert # Liebert PowerSure PSA UPS - usbhid-ups ATTR{idVendor}=="10af", ATTR{idProduct}=="0001", MODE="664", GROUP="@RUN_AS_GROUP@" +# Liebert PowerSure PSI 1440 - usbhid-ups +ATTR{idVendor}=="10af", ATTR{idProduct}=="0004", MODE="664", GROUP="@RUN_AS_GROUP@" # GE EP series - blazer_usb ATTR{idVendor}=="14f0", ATTR{idProduct}=="00c9", MODE="664", GROUP="@RUN_AS_GROUP@" # Ablerex 625L USB - blazer_usb diff -Nru nut-2.7.1/scripts/upower/95-upower-hid.rules nut-2.7.2/scripts/upower/95-upower-hid.rules --- nut-2.7.1/scripts/upower/95-upower-hid.rules 2013-11-20 20:57:57.000000000 +0100 +++ nut-2.7.2/scripts/upower/95-upower-hid.rules 2014-04-17 22:27:08.000000000 +0200 @@ -123,5 +123,6 @@ # Liebert ATTRS{idVendor}=="10af", ATTRS{idProduct}=="0001", ENV{UPOWER_BATTERY_TYPE}="ups" +ATTRS{idVendor}=="10af", ATTRS{idProduct}=="0004", ENV{UPOWER_BATTERY_TYPE}="ups" LABEL="up_hid_end" diff -Nru nut-2.7.1/server/Makefile.in nut-2.7.2/server/Makefile.in --- nut-2.7.1/server/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/server/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -72,7 +72,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -82,10 +81,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -177,10 +175,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -192,8 +186,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -279,6 +271,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/server/netlist.c nut-2.7.2/server/netlist.c --- nut-2.7.1/server/netlist.c 2013-07-26 21:41:11.000000000 +0200 +++ nut-2.7.2/server/netlist.c 2014-02-25 16:39:34.000000000 +0100 @@ -220,7 +220,7 @@ return; } - sendback(client, "END LIST ENUM %s %s\n", upsname, var); + sendback(client, "END LIST RANGE %s %s\n", upsname, var); } static void list_ups(nut_ctype_t *client) diff -Nru nut-2.7.1/tests/Makefile.in nut-2.7.2/tests/Makefile.in --- nut-2.7.1/tests/Makefile.in 2013-11-20 20:55:14.000000000 +0100 +++ nut-2.7.2/tests/Makefile.in 2014-04-17 22:26:31.000000000 +0200 @@ -67,7 +67,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -77,10 +76,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -164,10 +162,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -179,8 +173,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -266,6 +258,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/tools/Makefile.am nut-2.7.2/tools/Makefile.am --- nut-2.7.1/tools/Makefile.am 2013-07-26 21:41:11.000000000 +0200 +++ nut-2.7.2/tools/Makefile.am 2014-02-25 16:39:34.000000000 +0100 @@ -16,7 +16,7 @@ # sub-directory SUBDIRS = . nut-scanner -EXTRA_DIST = nut-usbinfo.pl nut-hclinfo.py nut-recorder.sh gitlog2changelog.py nut-snmpinfo.py +EXTRA_DIST = nut-usbinfo.pl nut-recorder.sh gitlog2changelog.py nut-snmpinfo.py all: nut-scanner-deps @@ -45,22 +45,9 @@ echo "----------------------------------------------------------------------"; \ fi -website: - @if python -c "import json,simplejson,lxml"; then \ - echo "Regenerating the HTML and JSON formated HCL tables."; \ - $(top_srcdir)/tools/nut-hclinfo.py; \ - else \ - echo "----------------------------------------------------------------------"; \ - echo "Warning: either Python, or a required module (json, simplejson, lxml) "; \ - echo "is not available."; \ - echo "Skipping the HTML and JSON formated HCL tables regeneration."; \ - echo "----------------------------------------------------------------------"; \ - fi - # call the USB info script upon "make dist", and if Perl is present # call the SNMP info script upon "make dist", and if Python is present # and call both for building nut-scanner -# also generate HCL data files dist-hook: @if python -c 1; then \ echo "Regenerating the SNMP helper files."; \ @@ -82,15 +69,4 @@ echo "----------------------------------------------------------------------"; \ fi - @if python -c "import json,simplejson,lxml"; then \ - echo "Regenerating the HTML and JSON formated HCL tables."; \ - $(distdir)/nut-hclinfo.py; \ - else \ - echo "----------------------------------------------------------------------"; \ - echo "Warning: either Python, or a required module (json, simplejson, lxml) "; \ - echo "is not available."; \ - echo "Skipping the HTML and JSON formated HCL tables regeneration."; \ - echo "----------------------------------------------------------------------"; \ - fi - .PHONY: nut-scanner-deps nut-scanner-snmp-deps nut-scanner-usb-deps diff -Nru nut-2.7.1/tools/Makefile.in nut-2.7.2/tools/Makefile.in --- nut-2.7.1/tools/Makefile.in 2013-11-20 20:55:15.000000000 +0100 +++ nut-2.7.2/tools/Makefile.in 2014-04-17 22:26:32.000000000 +0200 @@ -65,7 +65,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -75,10 +74,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -175,10 +173,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -190,8 +184,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -277,6 +269,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ @@ -334,7 +327,7 @@ # to have nutscan-{usb,snmp}.h built before going into the nut-scanner # sub-directory SUBDIRS = . nut-scanner -EXTRA_DIST = nut-usbinfo.pl nut-hclinfo.py nut-recorder.sh gitlog2changelog.py nut-snmpinfo.py +EXTRA_DIST = nut-usbinfo.pl nut-recorder.sh gitlog2changelog.py nut-snmpinfo.py all: all-recursive .SUFFIXES: @@ -714,22 +707,9 @@ echo "----------------------------------------------------------------------"; \ fi -website: - @if python -c "import json,simplejson,lxml"; then \ - echo "Regenerating the HTML and JSON formated HCL tables."; \ - $(top_srcdir)/tools/nut-hclinfo.py; \ - else \ - echo "----------------------------------------------------------------------"; \ - echo "Warning: either Python, or a required module (json, simplejson, lxml) "; \ - echo "is not available."; \ - echo "Skipping the HTML and JSON formated HCL tables regeneration."; \ - echo "----------------------------------------------------------------------"; \ - fi - # call the USB info script upon "make dist", and if Perl is present # call the SNMP info script upon "make dist", and if Python is present # and call both for building nut-scanner -# also generate HCL data files dist-hook: @if python -c 1; then \ echo "Regenerating the SNMP helper files."; \ @@ -751,17 +731,6 @@ echo "----------------------------------------------------------------------"; \ fi - @if python -c "import json,simplejson,lxml"; then \ - echo "Regenerating the HTML and JSON formated HCL tables."; \ - $(distdir)/nut-hclinfo.py; \ - else \ - echo "----------------------------------------------------------------------"; \ - echo "Warning: either Python, or a required module (json, simplejson, lxml) "; \ - echo "is not available."; \ - echo "Skipping the HTML and JSON formated HCL tables regeneration."; \ - echo "----------------------------------------------------------------------"; \ - fi - .PHONY: nut-scanner-deps nut-scanner-snmp-deps nut-scanner-usb-deps # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru nut-2.7.1/tools/nut-hclinfo.py nut-2.7.2/tools/nut-hclinfo.py --- nut-2.7.1/tools/nut-hclinfo.py 2013-11-07 21:43:51.000000000 +0100 +++ nut-2.7.2/tools/nut-hclinfo.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,277 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -# Copyright (c) 2009 - Arnaud Quette -# Copyright (c) 2010 - Sébastien Volle -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -# This script convert the driver.list into HTML and JSON formated tables -# These tables are then used by the AsciiDoc generated website and -# documentation - -try: - import json -except ImportError: - import simplejson as json # Required for Python < 2.6 - -import re -import sys -import os, errno - -# HCL file location and name -rawHCL="../data/driver.list"; - -# Website output -webJsonHCL = "../docs/website/scripts/ups_data.js"; -webStaticHCL = "../docs/ups-html.txt"; - -# from http://wiki.python.org/moin/EscapingHtml - -html_escape_table = { - "&": "&", - '"': """, - "'": "'", - ">": ">", - "<": "<", - } - -def html_escape(text): - """Produce entities within text.""" - return "".join(html_escape_table.get(c,c) for c in text) - -# # # - -class WrongFieldNumberException(Exception): - pass - -def buildData(deviceDataFile): - """ - Read and parse data file under provided path. - Return a bi-dimensional list representing parsed data. - """ - - deviceData = [] - numFields = 6 # Manufacturer, type, support level, model comment, driver - - try: - file = open(deviceDataFile, "r") - except IOError: - print "Cannot open", deviceDataFile - exit(1) - - for line in file: - # Ignore empty lines or comments - if re.match(r"^$|^\s*#", line): - continue - - # Strip all trailing whitespace chars - line = re.sub(r"\s+$", "", line) - - # Replace all tabs by commas - line = re.sub(r"\t", ",", line) - - # Remove trailing comma - line = re.sub(r",$", "", line) - - # Split fields and append result to device data list - # We suppose there are no double-quotes in fields - row = re.findall(r'"([^"]*)",?', line) - - if len(row) != numFields: - print "Warning: Unexpected number of fields in line: %s" % row - print "\tLine will be skipped." - else: - deviceData.append(re.findall(r'"([^"]*)",?', line)) - - return deviceData - -def buildHTMLTable(deviceData): - """ - Convert provided device data into an HTML table. - Return string representation of the HTML table. - - Identical cells are merged vertically with rowspan attribute. - The driver column is color-coded on support level. - - A support level column is also provided. It should be hidden in a graphic - browser but should be visible from a console based browser (w3m). - """ - - from lxml import etree, html - from lxml.builder import E - - if not type(deviceData).__name__ == "list" or len(deviceData) == 0: - raise Exception("Incorrect data was provided") - - # HTML table columns definition - columns = [ - { - "name": "manufacturer", "id": "manufacturer-col", - "text": "Manufacturer", "fields": ["manufacturer"] - }, - { - "name": "model", "id": "model-col", - "text": "Model", "fields": ["model", "comment"] - }, - { - "name": "driver", "id": "driver-col", - "text": "Driver", "fields": ["driver"] - }, - { - "name": "support-level", "id": "support-level-col", - "text": "Support Level", "fields": ["support-level"] - }, - ] - # Device data fields definition - dataFields = [ - "manufacturer", "device-type", "support-level", - "model", "comment", "driver" - ] - - # FIXME: CSS classes should be defined in script global settings - supportLevelClasses = { - "0": "", "1": "red", "2": "orange", - "3": "yellow", "4": "blue", "5": "green" - } - hiddenClass = "hidden" - - # Build table header - table = E.table(id="ups_list", border="1") - header = E.tr() - - for column in columns: - td = E.td(column.get("text"), id=column.get("id")) - if column["id"] == "support-level-col": - td.set("class", hiddenClass) - header.append(td) - - table.append(E.thead(header)) - - # Build table body - tbody = E.tbody(id="ups_list_body") - - cellHistory = [] - rowHistory = deviceData[0][0] - rows = [] - classes = ("even", "odd") - currentClass = 0 - manufIndex = dataFields.index("manufacturer") - - # Build table rows - for device in deviceData: - - # Devices are expected to have a specified number of fields - if len(device) < len(dataFields): - print "Unexpected number of fields in device: %s" % device - print "Device will not be included in result set." - continue - - # Alternate CSS class if current manufacturer is different from the last - if device[manufIndex] != rowHistory : - currentClass = (currentClass + 1) % 2 - rowHistory = device[manufIndex] - - cells = [] - - colIndex = 0 - for column in columns: - cellContent = [] - for field in column["fields"]: - fieldIndex = dataFields.index(field) - fieldContent = device[fieldIndex] - cellContent.append(html_escape(fieldContent)) - cellContent = "
".join(cellContent) - - try: - cH = cellHistory[colIndex] - except: - cH = False - - if not column["name"] == "driver" and cH and cH.get("text") == cellContent: - cH["rowspan"] = cH.get("rowspan", 1) + 1 - else: - cell = { "text": cellContent, "rowspan": 1 } - if column["name"] == "driver": - cell["class"] = supportLevelClasses[device[dataFields.index("support-level")]] - else: - cell["class"] = classes[currentClass] - if column["name"] == "support-level": - cell["class"] = hiddenClass - - cells.append(cell) - try: - cellHistory[colIndex] = cell - except: - cellHistory.append(cell) - - colIndex += 1 - - rows.append(cells) - - for row in rows: - r = E.tr() - for cell in row: - attr = "" - innerHTML = "" - for key, value in cell.iteritems(): - val = unicode(str(value), "utf-8") - if key != "text": - attr += " %s='%s'" % (key, val) - else: - innerHTML = val - - r.append(html.fromstring("%s" % (attr, innerHTML))) - - tbody.append(r) - - table.append(tbody) - - return etree.tostring(table, pretty_print=True) - -# main program -deviceData = buildData(rawHCL) - -# Dump device data as JSON -jsonData = "var UPSData = %s" % json.dumps(deviceData, encoding="utf-8") - -# First, check if target directory exists (which is not the case for 'dist') -dir = os.path.dirname(webJsonHCL) -try: - os.makedirs(dir) -except OSError: - pass - -try: - file = open(webJsonHCL, "w") - file.write(jsonData) - file.close() - print "JSON HCL written" -except IOError: - print "Unable to write JSON device data to %s" % webJsonHCL - exit(1) - -# Create HTML table from device data -table = buildHTMLTable(deviceData) -try: - file = open(webStaticHCL, "w") - file.write("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n") - file.write(table) - file.write("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n") - print "HTML HCL written" -except IOError: - print "Unable to write HTML device table to %s" % webStaticHCL - exit(1) - diff -Nru nut-2.7.1/tools/nut-scanner/Makefile.in nut-2.7.2/tools/nut-scanner/Makefile.in --- nut-2.7.1/tools/nut-scanner/Makefile.in 2013-11-20 20:55:15.000000000 +0100 +++ nut-2.7.2/tools/nut-scanner/Makefile.in 2014-04-17 22:26:32.000000000 +0200 @@ -77,7 +77,6 @@ $(top_srcdir)/m4/nut_check_libavahi.m4 \ $(top_srcdir)/m4/nut_check_libfreeipmi.m4 \ $(top_srcdir)/m4/nut_check_libgd.m4 \ - $(top_srcdir)/m4/nut_check_libhal.m4 \ $(top_srcdir)/m4/nut_check_libltdl.m4 \ $(top_srcdir)/m4/nut_check_libneon.m4 \ $(top_srcdir)/m4/nut_check_libnetsnmp.m4 \ @@ -87,10 +86,9 @@ $(top_srcdir)/m4/nut_check_libusb.m4 \ $(top_srcdir)/m4/nut_check_libwrap.m4 \ $(top_srcdir)/m4/nut_check_os.m4 \ - $(top_srcdir)/m4/nut_config_libhal.m4 \ $(top_srcdir)/m4/nut_report_feature.m4 \ $(top_srcdir)/m4/nut_type_socklen_t.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -221,10 +219,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ -HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@ -HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@ -HAL_FDI_PATH = @HAL_FDI_PATH@ -HAL_USER = @HAL_USER@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -236,8 +230,6 @@ LIBAVAHI_LIBS = @LIBAVAHI_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_LDFLAGS = @LIBGD_LDFLAGS@ -LIBHAL_CFLAGS = @LIBHAL_CFLAGS@ -LIBHAL_LIBS = @LIBHAL_LIBS@ LIBIPMI_CFLAGS = @LIBIPMI_CFLAGS@ LIBIPMI_LIBS = @LIBIPMI_LIBS@ LIBLTDL_CFLAGS = @LIBLTDL_CFLAGS@ @@ -323,6 +315,7 @@ cgiexecdir = @cgiexecdir@ datadir = @datadir@ datarootdir = @datarootdir@ +devddir = @devddir@ docdir = @docdir@ driverexecdir = @driverexecdir@ dvidir = @dvidir@ diff -Nru nut-2.7.1/tools/nut-scanner/nutscan-snmp.h nut-2.7.2/tools/nut-scanner/nutscan-snmp.h --- nut-2.7.1/tools/nut-scanner/nutscan-snmp.h 2013-11-20 20:55:32.000000000 +0100 +++ nut-2.7.2/tools/nut-scanner/nutscan-snmp.h 2014-04-17 22:18:19.000000000 +0200 @@ -39,6 +39,7 @@ { ".1.3.6.1.4.1.20677.1" , "pulizzi_switched2", ".1.3.6.1.4.1.20677.2"}, { ".1.3.6.1.4.1.2947.1.1.2.0" , "bestpower", NULL}, { ".1.3.6.1.4.1.3808.1.1.1.1.1.1.0" , "cyberpower", ".1.3.6.1.4.1.3808"}, + { "" , "xppc", ".1.3.6.1.4.1.935"}, { "" , "delta_ups", ".1.3.6.1.4.1.2254.2.4"}, { ".1.3.6.1.4.1.705.1.1.1.0" , "mge", ".1.3.6.1.4.1.705.1"}, { ".1.3.6.1.4.1.232.165.3.1.1.0" , "cpqpower", ".1.3.6.1.4.1.232.165.3"}, diff -Nru nut-2.7.1/tools/nut-scanner/nutscan-usb.h nut-2.7.2/tools/nut-scanner/nutscan-usb.h --- nut-2.7.1/tools/nut-scanner/nutscan-usb.h 2013-11-20 20:55:32.000000000 +0100 +++ nut-2.7.2/tools/nut-scanner/nutscan-usb.h 2014-04-17 22:18:21.000000000 +0200 @@ -31,7 +31,7 @@ /* USB IDs device table */ static usb_device_id_t usb_device_table[] = { - { 0x0001, 0x0000, "blazer_usb" }, + { 0x0001, 0x0000, "nutdrv_atcl_usb" }, { 0x03f0, 0x0001, "usbhid-ups" }, { 0x03f0, 0x1f01, "bcmxcp_usb" }, { 0x03f0, 0x1f02, "bcmxcp_usb" }, @@ -119,6 +119,7 @@ { 0x0d9f, 0x00a6, "usbhid-ups" }, { 0x0f03, 0x0001, "blazer_usb" }, { 0x10af, 0x0001, "usbhid-ups" }, + { 0x10af, 0x0004, "usbhid-ups" }, { 0x14f0, 0x00c9, "blazer_usb" }, { 0xffff, 0x0000, "blazer_usb" }, /* Terminating entry */ diff -Nru nut-2.7.1/tools/nut-usbinfo.pl nut-2.7.2/tools/nut-usbinfo.pl --- nut-2.7.1/tools/nut-usbinfo.pl 2013-11-17 20:27:38.000000000 +0100 +++ nut-2.7.2/tools/nut-usbinfo.pl 2014-02-27 22:17:32.000000000 +0100 @@ -1,8 +1,8 @@ #!/usr/bin/env perl -# Current Version : 1.2 -# Copyright (C) 2008 - 2012 -# Arnaud Quette -# dloic (loic.dardant AT gmail DOT com) +# Current Version : 1.3 +# Copyright (C) 2008 - 2012 dloic (loic.dardant AT gmail DOT com) +# Copyright (C) 2008 - 2014 Arnaud Quette +# Copyright (C) 2013 - 2014 Charles Lepple # # Based on the usbdevice.pl script, made for the Ubuntu Media Center # for the final use of the LIRC project. @@ -31,17 +31,18 @@ # path to scan for USB_DEVICE pattern my $scanPath="../drivers"; -# HAL output file -my $outputHAL="../scripts/hal/ups-nut-device.fdi.in"; - # Hotplug output file my $outputHotplug="../scripts/hotplug/libhid.usermap"; # udev output file my $outputUdev="../scripts/udev/nut-usbups.rules.in"; +# BSD devd output file +my $output_devd="../scripts/devd/nut-usb.conf.in"; + # UPower output file my $outputUPower="../scripts/upower/95-upower-hid.rules"; + # tmp output, to allow generating the ENV{UPOWER_VENDOR} header list my $tmpOutputUPower; # mfr header flag @@ -81,13 +82,6 @@ ################# SUB METHOD ################# sub gen_usb_files { - # HAL file header - open my $outHAL, ">$outputHAL" || die "error $outputHAL : $!"; - print $outHAL ' '."\n"; - print $outHAL ''."\n"; - print $outHAL ' '."\n"; - print $outHAL ' '."\n"; - # Hotplug file header open my $outHotplug, ">$outputHotplug" || die "error $outputHotplug : $!"; print $outHotplug '# This file is generated and installed by the Network UPS Tools package.'."\n"; @@ -109,6 +103,10 @@ print $outUdev 'SUBSYSTEM!="usb", GOTO="nut-usbups_rules_end"'."\n\n"; print $outUdev 'LABEL="nut-usbups_rules_real"'."\n"; + open my $out_devd, ">$output_devd" || die "error $output_devd : $!"; + print $out_devd '# This file is generated and installed by the Network UPS Tools package.'."\n"; + print $out_devd "# Homepage: http://www.networkupstools.org/\n\n"; + # UPower file header open my $outputUPower, ">$outputUPower" || die "error $outputUPower : $!"; print $outputUPower '##############################################################################################################'."\n"; @@ -131,12 +129,6 @@ # generate the file in alphabetical order (first for VendorID, then for ProductID) foreach my $vendorId (sort { lc $a cmp lc $b } keys %vendorName) { - # HAL vendor header - if ($vendorName{$vendorId}) { - print $outHAL "\n \n"; - } - print $outHAL " \n"; - # Hotplug vendor header if ($vendorName{$vendorId}) { print $outHotplug "\n# ".$vendorName{$vendorId}."\n"; @@ -147,20 +139,17 @@ print $outUdev "\n# ".$vendorName{$vendorId}."\n"; } + # devd vendor header + if ($vendorName{$vendorId}) { + print $out_devd "\n# ".$vendorName{$vendorId}."\n"; + } + + # UPower vendor header flag $upowerMfrHeaderDone = 0; foreach my $productId (sort { lc $a cmp lc $b } keys %{$vendor{$vendorId}}) { - # HAL device entry - print $outHAL " \n"; - print $outHAL " \n"; - print $outHAL ' battery'."\n"; - print $outHAL ' battery'."\n"; - print $outHAL " hald-addon-".$vendor{$vendorId}{$productId}{"driver"}."\n"; - print $outHAL ' ups'."\n"; - print $outHAL ' '."\n"; - # Hotplug device entry print $outHotplug "# ".$vendor{$vendorId}{$productId}{"comment"}."\n"; print $outHotplug "libhidups 0x0003 ".$vendorId." ".$productId." 0x0000 0x0000 0x00"; @@ -172,6 +161,17 @@ print $outUdev "\", ATTR{idProduct}==\"".removeHexPrefix($productId)."\","; print $outUdev ' MODE="664", GROUP="@RUN_AS_GROUP@"'."\n"; + # devd device entry + print $out_devd "# ".$vendor{$vendorId}{$productId}{"comment"}.' - '.$vendor{$vendorId}{$productId}{"driver"}."\n"; + print $out_devd "notify 100 {\n\tmatch \"system\"\t\t\"USB\";\n"; + print $out_devd "\tmatch \"subsystem\"\t\"DEVICE\";\n"; + print $out_devd "\tmatch \"type\"\t\t\"ATTACH\";\n"; + print $out_devd "\tmatch \"vendor\"\t\t\"$vendorId\";\n"; + # + print $out_devd "\tmatch \"product\"\t\t\"$productId\";\n"; + print $out_devd "\taction \"chgrp \@RUN_AS_GROUP\@ /dev/\$device-name*; chmod g+rw /dev/\$device-name*\";\n"; + print $out_devd "};\n"; + # UPower device entry (only for USB/HID devices!) if ($vendor{$vendorId}{$productId}{"driver"} eq "usbhid-ups") { @@ -192,14 +192,7 @@ # Device scanner entry print $outputDevScanner "\t{ ".$vendorId.', '.$productId.", \"".$vendor{$vendorId}{$productId}{"driver"}."\" },\n"; } - # HAL vendor footer - print $outHAL " \n"; } - # HAL footer - print $outHAL " \n"; - print $outHAL " \n"; - print $outHAL "\n"; - # Udev footer print $outUdev "\n".'LABEL="nut-usbups_rules_end"'."\n"; @@ -297,6 +290,9 @@ elsif ($nameFile eq "richcomm_usb.c") { $driver="richcomm_usb"; } + elsif ($nameFile eq "nutdrv_atcl_usb.c") { + $driver="nutdrv_atcl_usb"; + } elsif ($nameFile eq "riello_usb.c") { $driver="riello_usb"; } diff -Nru nut-2.7.1/UPGRADING nut-2.7.2/UPGRADING --- nut-2.7.1/UPGRADING 2013-11-18 21:28:04.000000000 +0100 +++ nut-2.7.2/UPGRADING 2014-04-08 21:28:15.000000000 +0200 @@ -7,6 +7,21 @@ of this software. When upgrading from an older version, be sure to check this file to see if you need to make changes to your system. +Changes from 2.7.1 to 2.7.2 +--------------------------- + +- upsdrvctl is now installed to $prefix/sbin rather than $driverexec. + This usually means moving from /bin to /sbin, apart from few exceptions. + In all cases, please adapt your scripts. + +- FreeDesktop Hardware Abstraction Layer (HAL) support was removed. + Please adapt your packaging files, if you used to distribute the + nut-hal-drivers package. + +- This is a good time to point out that for stricter packaging systems, it may + be beneficial to add "--enable-option-checking=fatal" to the ./configure + command line, in order to quickly pick up any other removed option flags. + Changes from 2.6.5 to 2.7.1 ---------------------------