From a1fa151fc70a843f2a17a2412633c8a979162724 Mon Sep 17 00:00:00 2001 From: Laurent Bigonville Date: Sun, 12 Aug 2012 23:39:31 +0200 Subject: [PATCH] Imported Upstream version 2.6.5 --- ChangeLog | 315 ++ Makefile.am | 2 +- Makefile.in | 9 +- NEWS | 53 +- UPGRADING | 10 +- clients/Makefile.in | 7 + clients/upssched.c | 2 +- common/Makefile.in | 7 + conf/Makefile.in | 7 + configure | 4629 ++++++++++++++++++++++- configure.in | 46 +- data/Makefile.in | 7 + data/driver.list.in | 154 +- data/html/Makefile.in | 7 + docs/Makefile.am | 2 +- docs/Makefile.in | 9 +- docs/configure.txt | 10 +- docs/documentation.txt | 1 + docs/download.txt | 13 +- docs/images/eaton-logo.png | Bin 7998 -> 0 bytes docs/images/hostedby.png | Bin 0 -> 4006 bytes docs/images/simple.png | Bin 16662 -> 15992 bytes docs/man/Makefile.am | 16 +- docs/man/Makefile.in | 20 +- docs/man/apcsmart-old.8 | 4 +- docs/man/apcsmart.8 | 4 +- docs/man/bcmxcp.8 | 4 +- docs/man/bcmxcp_usb.8 | 4 +- docs/man/belkin.8 | 4 +- docs/man/belkinunv.8 | 6 +- docs/man/belkinunv.txt | 2 - docs/man/bestfcom.8 | 4 +- docs/man/bestfortress.8 | 4 +- docs/man/bestuferrups.8 | 4 +- docs/man/bestups.8 | 4 +- docs/man/blazer.8 | 4 +- docs/man/clone.8 | 4 +- docs/man/dummy-ups.8 | 4 +- docs/man/etapro.8 | 4 +- docs/man/everups.8 | 4 +- docs/man/gamatronic.8 | 4 +- docs/man/genericups.8 | 4 +- docs/man/hosts.conf.5 | 4 +- docs/man/isbmex.8 | 4 +- docs/man/ivtscd.8 | 4 +- docs/man/libupsclient-config.1 | 4 +- docs/man/liebert-esp2.8 | 4 +- docs/man/liebert.8 | 4 +- docs/man/macosx-ups.8 | 81 + docs/man/macosx-ups.txt | 104 + docs/man/masterguard.8 | 4 +- docs/man/metasys.8 | 4 +- docs/man/mge-shut.8 | 21 +- docs/man/mge-shut.txt | 7 +- docs/man/mge-utalk.8 | 4 +- docs/man/microdowell.8 | 4 +- docs/man/netxml-ups.8 | 4 +- docs/man/nut-ipmipsu.8 | 8 +- docs/man/nut-ipmipsu.txt | 4 +- docs/man/nut-recorder.8 | 4 +- docs/man/nut-scanner.8 | 6 +- docs/man/nut-scanner.txt | 10 +- docs/man/nut.conf.5 | 4 +- docs/man/nutscan.3 | 16 +- docs/man/nutscan.txt | 29 +- docs/man/nutscan_add_device_to_device.3 | 4 +- docs/man/nutscan_add_option_to_device.3 | 4 +- docs/man/nutscan_cidr_to_ip.3 | 4 +- docs/man/nutscan_display_parsable.3 | 4 +- docs/man/nutscan_display_ups_conf.3 | 4 +- docs/man/nutscan_free_device.3 | 4 +- docs/man/nutscan_init.3 | 4 +- docs/man/nutscan_new_device.3 | 4 +- docs/man/nutscan_scan_avahi.3 | 14 +- docs/man/nutscan_scan_avahi.txt | 15 +- docs/man/nutscan_scan_ipmi.3 | 4 +- docs/man/nutscan_scan_nut.3 | 4 +- docs/man/nutscan_scan_snmp.3 | 4 +- docs/man/nutscan_scan_usb.3 | 4 +- docs/man/nutscan_scan_xml_http.3 | 4 +- docs/man/nutupsdrv.8 | 4 +- docs/man/oneac.8 | 4 +- docs/man/optiups.8 | 4 +- docs/man/powercom.8 | 10 +- docs/man/powercom.txt | 12 +- docs/man/powerman-pdu.8 | 4 +- docs/man/powerpanel.8 | 4 +- docs/man/rhino.8 | 4 +- docs/man/richcomm_usb.8 | 4 +- docs/man/safenet.8 | 4 +- docs/man/skel.txt | 10 + docs/man/snmp-ups.8 | 4 +- docs/man/solis.8 | 4 +- docs/man/tripplite.8 | 4 +- docs/man/tripplite_usb.8 | 4 +- docs/man/tripplitesu.8 | 4 +- docs/man/ups.conf.5 | 4 +- docs/man/upsc.8 | 4 +- docs/man/upscli_connect.3 | 4 +- docs/man/upscli_disconnect.3 | 4 +- docs/man/upscli_fd.3 | 4 +- docs/man/upscli_get.3 | 4 +- docs/man/upscli_list_next.3 | 4 +- docs/man/upscli_list_start.3 | 4 +- docs/man/upscli_readline.3 | 4 +- docs/man/upscli_sendline.3 | 4 +- docs/man/upscli_splitaddr.3 | 4 +- docs/man/upscli_splitname.3 | 4 +- docs/man/upscli_ssl.3 | 4 +- docs/man/upscli_strerror.3 | 4 +- docs/man/upscli_upserror.3 | 4 +- docs/man/upsclient.3 | 4 +- docs/man/upscmd.8 | 4 +- docs/man/upscode2.8 | 4 +- docs/man/upsd.8 | 4 +- docs/man/upsd.conf.5 | 4 +- docs/man/upsd.users.5 | 4 +- docs/man/upsdrvctl.8 | 4 +- docs/man/upsimage.cgi.8 | 4 +- docs/man/upslog.8 | 4 +- docs/man/upsmon.8 | 4 +- docs/man/upsmon.conf.5 | 4 +- docs/man/upsrw.8 | 4 +- docs/man/upssched.8 | 4 +- docs/man/upssched.conf.5 | 4 +- docs/man/upsset.cgi.8 | 4 +- docs/man/upsset.conf.5 | 4 +- docs/man/upsstats.cgi.8 | 4 +- docs/man/upsstats.html.5 | 4 +- docs/man/usbhid-ups.8 | 4 +- docs/man/victronups.8 | 4 +- docs/new-clients.txt | 6 +- docs/new-drivers.txt | 2 +- docs/nut-names.txt | 45 +- docs/website/Makefile.am | 2 +- docs/website/Makefile.in | 9 +- docs/website/css/web-layout.css | 5 + docs/website/news.txt | 4 + docs/website/projects.txt | 16 +- docs/website/web-layout.conf | 20 +- drivers/Makefile.am | 21 +- drivers/Makefile.in | 258 +- drivers/apc-mib.c | 56 +- drivers/apcsmart.c | 193 +- drivers/belkinunv.c | 1 - drivers/blazer_usb.c | 3 +- drivers/eaton-mib.c | 114 +- drivers/eaton-mib.h | 2 + drivers/macosx-ups.c | 440 +++ drivers/main.c | 2 +- drivers/masterguard.c | 2 - drivers/metasys.c | 2 - drivers/mge-utalk.c | 1 - drivers/microdowell.c | 2 - drivers/netxml-ups.c | 4 +- drivers/nut-ipmipsu.c | 8 +- drivers/nut-libfreeipmi.c | 215 +- drivers/oneac.h | 4 + drivers/powercom-hid.c | 2 +- drivers/safenet.c | 2 - drivers/skel.c | 5 +- drivers/snmp-ups.c | 67 +- drivers/snmp-ups.h | 7 +- drivers/tripplitesu.c | 1 - drivers/usbhid-ups.c | 15 +- drivers/usbhid-ups.h | 2 + include/Makefile.in | 7 + include/config.h.in | 6 + lib/Makefile.in | 7 + m4/nut_check_libfreeipmi.m4 | 8 + m4/nut_check_libltdl.m4 | 30 + scripts/Makefile.in | 7 + scripts/augeas/Makefile.in | 7 + scripts/hal/Makefile.in | 7 + scripts/hal/ups-nut-device.fdi.in | 9 +- scripts/hotplug/Makefile.in | 7 + scripts/hotplug/libhid.usermap | 4 +- scripts/java/Makefile.in | 7 + scripts/python/Makefile.in | 7 + scripts/systemd/Makefile.in | 7 + scripts/systemd/nut-driver.service.in | 4 +- scripts/systemd/nutshutdown.in | 2 +- scripts/udev/Makefile.in | 7 + scripts/udev/nut-usbups.rules.in | 4 +- server/Makefile.am | 4 +- server/Makefile.in | 19 +- server/conf.c | 2 +- server/netcmds.h | 2 +- server/{ssl.c => netssl.c} | 4 +- server/{ssl.h => netssl.h} | 2 +- server/upsd.c | 2 +- tests/Makefile.am | 21 + tests/Makefile.in | 698 ++++ tests/cpputest.cpp | 44 + tests/example.cpp | 62 + tools/Makefile.in | 7 + tools/nut-scanner/Makefile.in | 7 + tools/nut-scanner/nut-scanner.c | 31 +- tools/nut-scanner/nutscan-snmp.h | 3 + tools/nut-scanner/nutscan-usb.h | 1 + tools/nut-scanner/scan_ipmi.c | 58 +- 201 files changed, 7974 insertions(+), 709 deletions(-) delete mode 100644 docs/images/eaton-logo.png create mode 100644 docs/images/hostedby.png create mode 100644 docs/man/macosx-ups.8 create mode 100644 docs/man/macosx-ups.txt create mode 100644 drivers/macosx-ups.c rename server/{ssl.c => netssl.c} (98%) rename server/{ssl.h => netssl.h} (96%) create mode 100644 tests/Makefile.am create mode 100644 tests/Makefile.in create mode 100644 tests/cpputest.cpp create mode 100644 tests/example.cpp diff --git a/ChangeLog b/ChangeLog index 398ebcc..79f040f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,318 @@ +2012-08-08 Arnaud Quette + + * [r3712] NEWS, UPGRADING, configure.in, docs/website/news.txt: + Final update for 2.6.5 release + * [r3711] drivers: Subversion ignored files completion + + Mark oldmge-shut binary as Subversion ignored (no functional + changes) + * [r3710] docs/configure.txt, m4/nut_check_libltdl.m4: Complete + libltdl configuration options + + Add configure options to add specific cflags + (--with-libltdl-includes) and libs (--with-libltdl-libs) for + libltdl. This serves at least to point at non standard location, + as on FreeBSD (reported by David Durieux) + +2012-08-06 Arnaud Quette + + * [r3708] docs/documentation.txt: Add a Wikipedia reference on + Solar controller + * [r3707] docs/Makefile.am, docs/images/eaton-logo.png, + docs/images/hostedby.png, docs/website/Makefile.am, + docs/website/css/web-layout.css, docs/website/web-layout.conf: + Free NUT from Eaton website hosting + + NUT is no more hosted by Eaton. Arnaud Quette (NUT project + leader) has taken over NUT hosting on his own, to give NUT back + some independance. This effort is also part of a logic to stop + crediting Eaton for contributions from others (especially Arnaud + Quette, as an individual). The new hosting service is located, as + for Arnaud's blog (http://arnaud.quette.fr) on Gandi servers, + using PaaS. This will allow more flexibility and automation of + the release process + +2012-08-06 Charles Lepple + + * [r3704] configure.in, docs/man/Makefile.am, + docs/man/macosx-ups.txt, drivers/Makefile.am, + drivers/macosx-ups.c: macosx-ups: new OS X Power Sources + meta-driver + + Mac OS X provides UPS status information in a format similar to + what is shown for laptop batteries. This driver will convert that + information into a format compatible with NUT. + +2012-08-05 Charles Lepple + + * [r3703] drivers/skel.c: Update comments in skel.c + + Fixed a typo, and added fatalx() as an alternative to + fatal_with_errno() + * [r3702] docs/man/skel.txt: Update skeleton driver man page. + +2012-08-03 Charles Lepple + + * [r3701] docs/man/nutscan.txt, docs/man/nutscan_scan_avahi.txt: + nutscan documentation: editing + +2012-07-31 Arnaud Quette + + * [r3699] docs/images/simple.png: Remove extraneous text + * [r3698] data/driver.list.in: Add support for UNITEK Alpha650ipF + and Alpha650ipE + + Add UNITEK Alpha650ipF and Alpha650ipE (USB ID 0x0f03:0x0001) to + the list of blazer_usb supported models (reported by Pascal + MIRALLES) + * [r3697] docs/website/projects.txt: Reference Buffalo NAS in + Related projects + + Add a reference in the Related projects, on Buffalo TerraStation + (Business-class) NAS range, which uses NUT for power protection + +2012-07-30 Arnaud Quette + + * [r3696] docs/download.txt, docs/website/news.txt: First NUT + virtualization package (VMware ESXI 5.0) + + Add the reference to the first NUT virtualization package. This + one is currently an external effort to add VMware NUT client for + ESXI 5.0. But this support will be part of NUT in the long run + +2012-07-24 Charles Lepple + + * [r3692] data/driver.list.in, docs/man/powercom.txt, + drivers/powercom-hid.c: Synchronize Powercom USB documentation + and code comments. + + Apparently, there are at least two different models with the USB + VID:PID of 0d9f:0004. This update is based on the following + report by Gordon Longland: + + http://lists.alioth.debian.org/pipermail/nut-upsuser/2012-July/007748.html + +2012-07-23 Charles Lepple + + * [r3689] docs/man/powercom.txt: powercom: Mention this driver is + serial only + +2012-07-20 Frederic Bohe + + * [r3688] data/driver.list.in, drivers/Makefile.am: Switch mge-shut + to oldmge-shut and newmge-shut to mge-shut + * [r3687] docs/man/mge-shut.txt: Update mge-shut man page for + notification argument. + * [r3686] drivers/usbhid-ups.c: Add a "notification" parameter to + newmge-shut driver. + + It is only here for compatibility with mge-shut driver. It is + ignored since we are always using SHUT_SYNC_OFF in libshut.c. + +2012-07-19 Frederic Bohe + + * [r3683] docs/man/mge-shut.txt: Add a note in man page about + ondelay parameter unit discrepency between newmge-shut and + mge-shut driver. + + mge-shut use a ten seconds unit for ondelay whereas newmge-shut + uses seconds. + * [r3682] drivers/usbhid-ups.c, drivers/usbhid-ups.h: Add a lowbatt + setting to newmge-shut in order to mimic mge-shut setting + +2012-07-19 Emilien Kia + + * [r3681] server/Makefile.am, server/conf.c, server/netcmds.h, + server/netssl.c, server/netssl.h, server/ssl.c, server/ssl.h, + server/upsd.c: Replace server/ssl.[h|c] by server/netssl.[h|c] in + order to prepare nss branch merging. + +2012-07-17 Arnaud Quette + + * [r3678] drivers/apc-mib.c: APC SNMP MIB update and completion + + Add available high precision values, new variables + (input.transfer.reason, battery.current.total and ups.test.date), + and move ambient.{temperature,humidity}.{high,low} to + ambient.1.*, since they relate to alarm threshold of external + probe 1 (patch from Hong-Gunn Chew) + * [r3677] docs/nut-names.txt: Clarify the use of multiple ambient + sensors + + Multiple sensors can be exposed using the indexed notation. + 'ambient.*', without index or using '0', relates to the embedded + sensor. For example: 'ambient.temperature' represent the embedded + sensor temperature. Other sensors (external, communication card, + ...) can use indexes from '1' to 'n'. For example: + 'ambient.1.temperature' for the first external sensor + temperature. + * [r3676] docs/nut-names.txt: NUT namespace completion + + Add two new variables 'ups.test.date' and + 'battery.current.total'. Also add a note on the 'ambient' + collection for supporting multiple sensors + +2012-07-16 Arnaud Quette + + * [r3675] drivers/nut-ipmipsu.c, drivers/nut-libfreeipmi.c, + m4/nut_check_libfreeipmi.m4, tools/nut-scanner/nut-scanner.c, + tools/nut-scanner/scan_ipmi.c: Support for FreeIPMI 1.1.x and + 1.2.x + + Prepare for supporting API changes in FreeIPMI 1.1.x and 1.2.x. + This is mostly related to SDR API simplifications. A 2nd + iteration will probably address code redundancy, whenever + possible + +2012-07-10 Arnaud Quette + + * [r3674] data/driver.list.in, drivers/eaton-mib.c, + drivers/eaton-mib.h, drivers/snmp-ups.c, drivers/snmp-ups.h: Add + support for Eaton ePDU Switched (Pulizzi) + + Implement support for older Eaton / Powerware ePDU Switched. + These were once sold as Pulizzi, and have now been replaced by + newer model (Eaton Marlin implementation and others) + +2012-07-09 Emilien Kia + + * [r3672] configure.in: Fix CppUnit detection. + + Fix inconsistent test for CppUnit install (using pkg-config) to + really enable unit tests. + +2012-07-05 Arnaud Quette + + * [r3671] docs/man/nut-ipmipsu.txt: Fix an error on possible power + supplies status + +2012-07-04 Arnaud Quette + + * [r3670] clients/upssched.c: Fix upssched regression + + Coverity branch merge r3555 introduced a regression: any + upssched.conf command that takes a second argument resulted in a + defective frame sent to the parent process. Thus, the command was + not executed (patch from Oliver Schonefeld) + * [r3669] Makefile.am, configure.in, tests, tests/Makefile.am: Add + basic infrastructure for unit tests + + Merge eki-unittests branch, with some adjustments, to add a basic + initial infrastructure for unit tests, using CppUnit (v1.9.6+) + (from Emilien Kia, from Eaton) + +2012-07-03 Arnaud Quette + + * [r3668] scripts/systemd/nut-driver.service.in, + scripts/systemd/nutshutdown.in: Fix upsdrvctl call path + + upsdrvctl is located in @driverexecdir@, not @SBINDIR@ (reported + by Michal Hlavinka, from Redhat) + +2012-06-15 Arnaud Quette + + * [r3666] configure.in: Adapt systemd installation directory #2 + + Complete commit r3665, by also adapting paths for service files + +2012-06-14 Arnaud Quette + + * [r3665] configure.in: Adapt systemd installation directory + + Adapt systemd installation directory for the shutdown script, so + that it does not try to install it in the actual system + directory, but to the pointed build directory, including a sub + directory prefix + * [r3664] docs/new-clients.txt: Fix broken link to upscli_*(3) HTML + manual pages + +2012-06-12 Arnaud Quette + + * [r3662] docs/new-drivers.txt: Forgotten mention + + upsdrv_info_t->name is also published as "driver.name" variable + * [r3661] docs/man/belkinunv.txt, drivers/belkinunv.c, + drivers/main.c, drivers/masterguard.c, drivers/metasys.c, + drivers/mge-utalk.c, drivers/microdowell.c, + drivers/nut-ipmipsu.c, drivers/safenet.c, drivers/tripplitesu.c, + drivers/usbhid-ups.c: Remove redundant driver.version.internal + publication + * [r3660] configure.in, docs/configure.txt, + docs/man/nut-scanner.txt: Add missing references to libltdl for + nut-scanner + + nut-scanner requires libltdl (Libtool dlopen abstraction) since + NUT 2.6.3. Documentations have been completed, and nut-scanner + build status is now exposed in the build configuration summary + * [r3659] drivers/snmp-ups.c: Fix publication of + driver.version.data + + Publish the MIB name and version in driver.version.data, rather + than merged into driver.version.internal + * [r3658] drivers/netxml-ups.c: Fix publication of + driver.version.data + + netxml-ups subdriver version is to be tracked in + driver.version.data, not in driver.version.internal + * [r3657] docs/nut-names.txt: Add missing variable + driver.version.data + + Add variable driver.version.data, to track version of the + internal data mapping, for generic drivers (reported by Luiz + Angelo Daros de Luca) + * [r3656] docs/nut-names.txt: Fix comment for + driver.version.internal + + Drivers internal version are always tracked separately, and + stored in driver.version.internal + +2012-06-11 Michal Soltys + + * [r3655] drivers/apcsmart.c: apcsmart: tcsetattr/tcgetattr + addendum + + This small patch moves the comparison sequence into separate + function. No functional changes. + + Also minor retab! run on defines. + +2012-06-11 Arnaud Quette + + * [r3654] data/driver.list.in: Add support for REDi Blazer + + Add REDi Blazer 400VA / 600VA / 800VA to the list of blazer_ser + supported models (reported by Marius Gavrilescu) + * [r3653] docs/nut-names.txt: Fix a typo error on power.minimum + description + + power.minimum is really the minimum seen apparent power in VA + (reported by Luiz Angelo Daros de Luca) + +2012-06-07 Arnaud Quette + + * [r3652] data/driver.list.in, drivers/blazer_usb.c: Add support + for Online Zinto A + + Add Online Zinto A (USB ID 0x06da:0x0601) to the list of + blazer_usb supported models (reported by Carsten Burkhardt) + +2012-06-07 Charles Lepple + + * [r3651] drivers/oneac.h: Remove unused constants to fix LLVM + compilation error. + +2012-06-05 Arnaud Quette + + * [r3650] docs/website/news.txt, docs/website/projects.txt: WMNut + updates + + Update WMNut release (0.64) and hosting URL + +2012-06-04 Arnaud Quette + + * [r3647] docs/download.txt, docs/website/news.txt: Update Windows + package publications for 2.6.4-1 + 2012-05-31 Arnaud Quette * [r3643] NEWS, UPGRADING, configure.in, docs/website/news.txt: diff --git a/Makefile.am b/Makefile.am index f9e3cd9..4e95530 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,7 +6,7 @@ ACLOCAL_AMFLAGS = -I m4 # subdirectories to build and distribute. The order matters, as # several subdirectories depend on stuff in "common" or tools being built first SUBDIRS = include common clients conf data tools docs drivers \ - lib scripts server + lib scripts server tests # COPYING is included automatically. EXTRA_DIST = LICENSE-GPL2 LICENSE-GPL3 MAINTAINERS UPGRADING diff --git a/Makefile.in b/Makefile.in index ac24401..ded4605 100644 --- a/Makefile.in +++ b/Makefile.in @@ -145,6 +145,12 @@ 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@ @@ -248,6 +254,7 @@ 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@ @@ -312,7 +319,7 @@ ACLOCAL_AMFLAGS = -I m4 # subdirectories to build and distribute. The order matters, as # several subdirectories depend on stuff in "common" or tools being built first SUBDIRS = include common clients conf data tools docs drivers \ - lib scripts server + lib scripts server tests # COPYING is included automatically. diff --git a/NEWS b/NEWS index 0fd98a7..606d0c2 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,55 @@ If you're upgrading from an earlier version, see the UPGRADING file. For a complete list of changes, please refer to the ChangeLog file. +--------------------------------------------------------------------------- +Release notes for NUT 2.6.5 - what's new since 2.6.4: + + - This release Fix an important regression in upssched: + any upssched.conf command that takes a second argument resulted in + a defective frame sent to the parent process. Thus, the command was + not executed (report and patch from Oliver Schonefeld) + + - Website hosting: free NUT from Eaton website hosting + NUT website (http://www.networkupstools.org) is no more hosted by Eaton. + Arnaud Quette (NUT project leader) has taken over NUT hosting on his own, + to give NUT back some independance. + This effort is also part of a logic to stop crediting Eaton for + contributions from others (especially Arnaud Quette, as an individual). + The new hosting service is located, as for Arnaud's blog + (http://arnaud.quette.fr) on Gandi servers, using PaaS. This will allow + more flexibility and automation of the release process + + - macosx-ups: new OS X Power Sources meta-driver + Mac OS X provides UPS status information in a format similar to + what is shown for laptop batteries. This driver will convert that + information into a format compatible with NUT (Charles Lepple). + + - support for new devices: + Eaton ePDU Switched + Online Zinto A (USB ID 0x06da:0x0601) + REDi Blazer 400VA / 600VA / 800VA + UNITEK Alpha650ipF and Alpha650ipE (USB ID 0x0f03:0x0001) + + - mge-shut driver has been replaced by a new implementation (newmge-shut). + In case of issue with this new version, users can revert to oldmge-shut. + + - First NUT virtualization package: NUT now supports integration with + VMware ESXI 5.0, through a native VIB package. This is, for the time + being, an external effort from René Garcia (refer to the Download section + on NUT website). But work is underway to improve this integration, and + include it in the NUT source tree + + - IPMI support (nut-ipmipsu driver and nut-scanner): prepare for supporting + API changes in upcoming FreeIPMI versions 1.1.x and 1.2.x. + + - snmp-ups now supports high precision values for APC, and more variables + + - the NUT variables and commands namespace has been fixed and + completed, with the known and used variables that were missing. + + - more bugfixes, cleanup and improvements, on both source code and + documentation. + --------------------------------------------------------------------------- Release notes for NUT 2.6.4 - what's new since 2.6.3: @@ -168,10 +217,10 @@ Release notes for NUT 2.6.3 - what's new since 2.6.2: progress. - Compilation on IBM Aix has been fixed (namespace conflict with ctypes). - + - more bugfixes, cleanup and improvements, on both source code and documentation. - + --------------------------------------------------------------------------- Release notes for NUT 2.6.2 - what's new since 2.6.1: diff --git a/UPGRADING b/UPGRADING index d00143d..d748583 100644 --- a/UPGRADING +++ b/UPGRADING @@ -7,11 +7,19 @@ This file lists changes that affect users who installed older versions 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.6.4 to 2.6.5 +--------------------------- + +- users are encouraged to update to NUT 2.6.5, to fix a regression in +upssched. +- mge-shut driver has been replaced by a new implementation (newmge-shut). +In case of issue with this new version, users can revert to oldmge-shut. + Changes from 2.6.3 to 2.6.4 --------------------------- - users are encouraged to update to NUT 2.6.4, to fix upsd vulnerability -(CVE-2012-2944: upsd can be remotely crashed) +(CVE-2012-2944: upsd can be remotely crashed). - users of the bestups driver are encouraged to switch to blazer_ser, since bestups will soon be deprecated. diff --git a/clients/Makefile.in b/clients/Makefile.in index 48e0dae..65fd3f2 100644 --- a/clients/Makefile.in +++ b/clients/Makefile.in @@ -204,6 +204,12 @@ 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@ @@ -307,6 +313,7 @@ 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@ diff --git a/clients/upssched.c b/clients/upssched.c index 675a3d0..97b3ed4 100644 --- a/clients/upssched.c +++ b/clients/upssched.c @@ -694,7 +694,7 @@ static void sendcmd(const char *cmd, const char *arg1, const char *arg2) snprintfcat(buf, sizeof(buf), " \"%s\"", pconf_encode(arg2, enc, sizeof(enc))); - snprintfcat(enc, sizeof(enc), "%s\n", buf); + snprintf(enc, sizeof(enc), "%s\n", buf); /* see if the parent needs to be started (and maybe start it) */ diff --git a/common/Makefile.in b/common/Makefile.in index 9ccd162..541366c 100644 --- a/common/Makefile.in +++ b/common/Makefile.in @@ -110,6 +110,12 @@ 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@ @@ -213,6 +219,7 @@ 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@ diff --git a/conf/Makefile.in b/conf/Makefile.in index be4cd06..41bd2ed 100644 --- a/conf/Makefile.in +++ b/conf/Makefile.in @@ -115,6 +115,12 @@ 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@ @@ -218,6 +224,7 @@ 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@ diff --git a/configure b/configure index 68b465c..cb2801d 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for nut 2.6.4. +# Generated by GNU Autoconf 2.68 for nut 2.6.5. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -567,8 +567,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='nut' PACKAGE_TARNAME='nut' -PACKAGE_VERSION='2.6.4' -PACKAGE_STRING='nut 2.6.4' +PACKAGE_VERSION='2.6.5' +PACKAGE_STRING='nut 2.6.5' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -674,15 +674,13 @@ WITH_HOTPLUG_FALSE WITH_HOTPLUG_TRUE HAVE_SYSTEMD_FALSE HAVE_SYSTEMD_TRUE -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG WITH_PKG_CONFIG_FALSE WITH_PKG_CONFIG_TRUE SOME_DRIVERS_FALSE SOME_DRIVERS_TRUE WITH_DEV_FALSE WITH_DEV_TRUE +CXXCPP OTOOL64 OTOOL LIPO @@ -717,6 +715,8 @@ WITH_WRAP_FALSE WITH_WRAP_TRUE WITH_SSL_FALSE WITH_SSL_TRUE +WITH_MACOSX_FALSE +WITH_MACOSX_TRUE WITH_FREEIPMI_FALSE WITH_FREEIPMI_TRUE WITH_IPMI_FALSE @@ -733,9 +733,22 @@ WITH_USB_FALSE WITH_USB_TRUE WITH_SERIAL_FALSE WITH_SERIAL_TRUE +HAVE_CPPUNIT_FALSE +HAVE_CPPUNIT_TRUE +CPPUNIT_LIBS +CPPUNIT_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG LIBOBJS RANLIB AR +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE @@ -866,11 +879,14 @@ with_ipmi with_freeipmi with_freeipmi_includes with_freeipmi_libs +with_macosx_ups with_ssl with_ssl_includes with_ssl_libs with_wrap with_libltdl +with_libltdl_includes +with_libltdl_libs with_cgi with_gd_includes with_gd_libs @@ -907,9 +923,15 @@ LDFLAGS LIBS CPPFLAGS CPP +CXX +CXXFLAGS +CCC PKG_CONFIG PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR' +PKG_CONFIG_LIBDIR +CPPUNIT_CFLAGS +CPPUNIT_LIBS +CXXCPP' # Initialize some variables set by options. @@ -1452,7 +1474,7 @@ if test "$ac_init_help" = "long"; then # 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.6.4 to adapt to many kinds of systems. +\`configure' configures nut 2.6.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1523,7 +1545,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of nut 2.6.4:";; + short | recursive ) echo "Configuration of nut 2.6.5:";; esac cat <<\_ACEOF @@ -1589,6 +1611,8 @@ Optional Packages: include flags for the FreeIPMI library [--with-freeipmi-libs=LIBS] linker flags for the FreeIPMI library + --with-macosx_ups build and install Mac OS X Power Sources meta-driver + (auto) --with-ssl enable SSL development code (auto) [--with-ssl-includes=CFLAGS] include flags for the OpenSSL library @@ -1596,6 +1620,10 @@ Optional Packages: --with-wrap enable libwrap (tcp-wrappers) support (auto) --with-libltdl enable libltdl (Libtool dlopen abstraction) support (auto) + [--with-libltdl-includes=CFLAGS] + include flags for the libltdl library + [--with-libltdl-libs=LIBS] + linker flags for the libltdl library --with-cgi build and install the CGI programs (no) [--with-gd-includes=CFLAGS] include flags for the gd library @@ -1637,11 +1665,18 @@ Some influential environment variables: CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path + CPPUNIT_CFLAGS + C compiler flags for CPPUNIT, overriding pkg-config + CPPUNIT_LIBS + linker flags for CPPUNIT, overriding pkg-config + CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1709,7 +1744,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -nut configure 2.6.4 +nut configure 2.6.5 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1958,6 +1993,44 @@ $as_echo "$ac_res" >&6; } } # ac_fn_c_check_header_compile +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. @@ -2170,11 +2243,94 @@ $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link cat >config.log <<_ACEOF 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.6.4, which was +It was created by nut $as_me 2.6.5, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3244,7 +3400,7 @@ fi # Define the identity of the package. PACKAGE='nut' - VERSION='2.6.4' + VERSION='2.6.5' cat >>confdefs.h <<_ACEOF @@ -5734,6 +5890,390 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } @@ -6530,6 +7070,212 @@ fi + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CPPUNIT" >&5 +$as_echo_n "checking for CPPUNIT... " >&6; } + +if test -n "$CPPUNIT_CFLAGS"; then + pkg_cv_CPPUNIT_CFLAGS="$CPPUNIT_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cppunit\""; } >&5 + ($PKG_CONFIG --exists --print-errors "cppunit") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CPPUNIT_CFLAGS=`$PKG_CONFIG --cflags "cppunit" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CPPUNIT_LIBS"; then + pkg_cv_CPPUNIT_LIBS="$CPPUNIT_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cppunit\""; } >&5 + ($PKG_CONFIG --exists --print-errors "cppunit") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CPPUNIT_LIBS=`$PKG_CONFIG --libs "cppunit" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CPPUNIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cppunit" 2>&1` + else + CPPUNIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cppunit" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$CPPUNIT_PKG_ERRORS" >&5 + + have_cppunit=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_cppunit=no +else + CPPUNIT_CFLAGS=$pkg_cv_CPPUNIT_CFLAGS + CPPUNIT_LIBS=$pkg_cv_CPPUNIT_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_cppunit=yes +fi +if test "${have_cppunit}" != "yes" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libcppunit not found." >&5 +$as_echo "$as_me: WARNING: libcppunit not found." >&2;} +fi + if test "${have_cppunit}" = "yes"; then + HAVE_CPPUNIT_TRUE= + HAVE_CPPUNIT_FALSE='#' +else + HAVE_CPPUNIT_TRUE='#' + HAVE_CPPUNIT_FALSE= +fi + + if ( test "${GCC}" = "yes" ) then CFLAGS="${CFLAGS} -Wall -Wsign-compare" @@ -8740,6 +9486,121 @@ else fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ipmi_sdr_cache_ctx_destroy" >&5 +$as_echo_n "checking for library containing ipmi_sdr_cache_ctx_destroy... " >&6; } +if ${ac_cv_search_ipmi_sdr_cache_ctx_destroy+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ipmi_sdr_cache_ctx_destroy (); +int +main () +{ +return ipmi_sdr_cache_ctx_destroy (); + ; + return 0; +} +_ACEOF +for ac_lib in '' freeipmi; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_ipmi_sdr_cache_ctx_destroy=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_ipmi_sdr_cache_ctx_destroy+:} false; then : + break +fi +done +if ${ac_cv_search_ipmi_sdr_cache_ctx_destroy+:} false; then : + +else + ac_cv_search_ipmi_sdr_cache_ctx_destroy=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ipmi_sdr_cache_ctx_destroy" >&5 +$as_echo "$ac_cv_search_ipmi_sdr_cache_ctx_destroy" >&6; } +ac_res=$ac_cv_search_ipmi_sdr_cache_ctx_destroy +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + nut_have_freeipmi_11x_12x=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ipmi_sdr_ctx_destroy" >&5 +$as_echo_n "checking for library containing ipmi_sdr_ctx_destroy... " >&6; } +if ${ac_cv_search_ipmi_sdr_ctx_destroy+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ipmi_sdr_ctx_destroy (); +int +main () +{ +return ipmi_sdr_ctx_destroy (); + ; + return 0; +} +_ACEOF +for ac_lib in '' freeipmi; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_ipmi_sdr_ctx_destroy=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_ipmi_sdr_ctx_destroy+:} false; then : + break +fi +done +if ${ac_cv_search_ipmi_sdr_ctx_destroy+:} false; then : + +else + ac_cv_search_ipmi_sdr_ctx_destroy=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ipmi_sdr_ctx_destroy" >&5 +$as_echo "$ac_cv_search_ipmi_sdr_ctx_destroy" >&6; } +ac_res=$ac_cv_search_ipmi_sdr_ctx_destroy +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + nut_have_freeipmi_11x_12x=yes +else + nut_have_freeipmi_11x_12x=no +fi + + if test "${nut_have_freeipmi}" = "yes"; then nut_with_ipmi="yes" nut_ipmi_lib="(FreeIPMI)" @@ -8751,6 +9612,12 @@ $as_echo "#define HAVE_FREEIPMI 1" >>confdefs.h LIBIPMI_LIBS="${LIBS}" fi + if test "${nut_have_freeipmi_11x_12x}" = "yes"; then + +$as_echo "#define HAVE_FREEIPMI_11X_12X 1" >>confdefs.h + + fi + if test "${nut_have_freeipmi_monitoring}" = "yes"; then $as_echo "#define HAVE_FREEIPMI_MONITORING 1" >>confdefs.h @@ -9149,6 +10016,121 @@ else fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ipmi_sdr_cache_ctx_destroy" >&5 +$as_echo_n "checking for library containing ipmi_sdr_cache_ctx_destroy... " >&6; } +if ${ac_cv_search_ipmi_sdr_cache_ctx_destroy+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ipmi_sdr_cache_ctx_destroy (); +int +main () +{ +return ipmi_sdr_cache_ctx_destroy (); + ; + return 0; +} +_ACEOF +for ac_lib in '' freeipmi; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_ipmi_sdr_cache_ctx_destroy=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_ipmi_sdr_cache_ctx_destroy+:} false; then : + break +fi +done +if ${ac_cv_search_ipmi_sdr_cache_ctx_destroy+:} false; then : + +else + ac_cv_search_ipmi_sdr_cache_ctx_destroy=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ipmi_sdr_cache_ctx_destroy" >&5 +$as_echo "$ac_cv_search_ipmi_sdr_cache_ctx_destroy" >&6; } +ac_res=$ac_cv_search_ipmi_sdr_cache_ctx_destroy +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + nut_have_freeipmi_11x_12x=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ipmi_sdr_ctx_destroy" >&5 +$as_echo_n "checking for library containing ipmi_sdr_ctx_destroy... " >&6; } +if ${ac_cv_search_ipmi_sdr_ctx_destroy+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ipmi_sdr_ctx_destroy (); +int +main () +{ +return ipmi_sdr_ctx_destroy (); + ; + return 0; +} +_ACEOF +for ac_lib in '' freeipmi; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_ipmi_sdr_ctx_destroy=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_ipmi_sdr_ctx_destroy+:} false; then : + break +fi +done +if ${ac_cv_search_ipmi_sdr_ctx_destroy+:} false; then : + +else + ac_cv_search_ipmi_sdr_ctx_destroy=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ipmi_sdr_ctx_destroy" >&5 +$as_echo "$ac_cv_search_ipmi_sdr_ctx_destroy" >&6; } +ac_res=$ac_cv_search_ipmi_sdr_ctx_destroy +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + nut_have_freeipmi_11x_12x=yes +else + nut_have_freeipmi_11x_12x=no +fi + + if test "${nut_have_freeipmi}" = "yes"; then nut_with_ipmi="yes" nut_ipmi_lib="(FreeIPMI)" @@ -9160,6 +10142,12 @@ $as_echo "#define HAVE_FREEIPMI 1" >>confdefs.h LIBIPMI_LIBS="${LIBS}" fi + if test "${nut_have_freeipmi_11x_12x}" = "yes"; then + +$as_echo "#define HAVE_FREEIPMI_11X_12X 1" >>confdefs.h + + fi + if test "${nut_have_freeipmi_monitoring}" = "yes"; then $as_echo "#define HAVE_FREEIPMI_MONITORING 1" >>confdefs.h @@ -9230,6 +10218,57 @@ fi +# Check whether --with-macosx_ups was given. +if test "${with_macosx_ups+set}" = set; then : + withval=$with_macosx_ups; nut_with_macosx_ups="${withval}" +else + nut_with_macosx_ups="auto" + +fi + + +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 + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build Mac OS X meta-driver" >&5 +$as_echo_n "checking whether to build Mac OS X meta-driver... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${nut_with_macosx_ups} ${nut_macosx_ups_lib}" >&5 +$as_echo "${nut_with_macosx_ups} ${nut_macosx_ups_lib}" >&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 "build Mac OS X meta-driver: ${nut_with_macosx_ups} ${nut_macosx_ups_lib}" >> conf_nut_report_feature + + + if test "${nut_with_macosx_ups}" = "yes"; then + WITH_MACOSX_TRUE= + WITH_MACOSX_FALSE='#' +else + WITH_MACOSX_TRUE='#' + WITH_MACOSX_FALSE= +fi + + if test "${nut_with_macosx_ups}" = "yes"; then + +cat >>confdefs.h <<_ACEOF +#define WITH_MACOSX 1 +_ACEOF + + fi + + + + # Check whether --with-ssl was given. if test "${with_ssl+set}" = set; then : withval=$with_ssl; nut_with_ssl="${withval}" @@ -9610,6 +10649,46 @@ if test -z "${nut_have_libltdl_seen}"; then LIBS_ORIG="${LIBS}" LIBS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libltdl cflags" >&5 +$as_echo_n "checking for libltdl cflags... " >&6; } + +# Check whether --with-libltdl-includes was given. +if test "${with_libltdl_includes+set}" = set; then : + withval=$with_libltdl_includes; + case "${withval}" in + yes|no) + as_fn_error $? "invalid option --with(out)-libltdl-includes - see docs/configure.txt" "$LINENO" 5 + ;; + *) + CFLAGS="${withval}" + ;; + esac + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CFLAGS}" >&5 +$as_echo "${CFLAGS}" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libltdl ldflags" >&5 +$as_echo_n "checking for libltdl ldflags... " >&6; } + +# Check whether --with-libltdl-libs was given. +if test "${with_libltdl_libs+set}" = set; then : + withval=$with_libltdl_libs; + case "${withval}" in + yes|no) + as_fn_error $? "invalid option --with(out)-libltdl-libs - see docs/configure.txt" "$LINENO" 5 + ;; + *) + LIBS="${withval}" + ;; + esac + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${LIBS}" >&5 +$as_echo "${LIBS}" >&6; } + for ac_header in ltdl.h do : ac_fn_c_check_header_compile "$LINENO" "ltdl.h" "ac_cv_header_ltdl_h" "$ac_includes_default @@ -9737,6 +10816,16 @@ _ACEOF fi + 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 "build nut-scanner: ${nut_with_libltdl}" >> conf_nut_report_feature + + # Check whether --with-cgi was given. @@ -13594,6 +14683,17 @@ done +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf + + + + # Set options @@ -17571,6 +18671,3212 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_CXX='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + gnu*) + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" + LD_CXX="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + @@ -18218,9 +22524,10 @@ if test "${with_systemdsystemunitdir+set}" = set; then : fi if test -n "${systemdsystemunitdir}"; then - systemdsystemshutdowndir="/lib/systemd/system-shutdown" + systemdsystemshutdowndir="${libdir}/systemd/system-shutdown" { $as_echo "$as_me:${as_lineno-$LINENO}: result: using ${systemdsystemunitdir}" >&5 $as_echo "using ${systemdsystemunitdir}" >&6; } + systemdsystemunitdir="`echo ${systemdsystemunitdir} | sed 's/\/lib/\${libdir}/'`" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -18513,7 +22820,7 @@ _ACEOF -ac_config_files="$ac_config_files clients/Makefile common/Makefile conf/Makefile 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/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/java/Makefile 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/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 Makefile" +ac_config_files="$ac_config_files clients/Makefile common/Makefile conf/Makefile 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/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/java/Makefile 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/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 @@ -18648,7 +22955,15 @@ if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CPPUNIT_TRUE}" && test -z "${HAVE_CPPUNIT_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CPPUNIT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${WITH_SERIAL_TRUE}" && test -z "${WITH_SERIAL_FALSE}"; then as_fn_error $? "conditional \"WITH_SERIAL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -18681,6 +22996,10 @@ if test -z "${WITH_FREEIPMI_TRUE}" && test -z "${WITH_FREEIPMI_FALSE}"; then as_fn_error $? "conditional \"WITH_FREEIPMI\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${WITH_MACOSX_TRUE}" && test -z "${WITH_MACOSX_FALSE}"; then + as_fn_error $? "conditional \"WITH_MACOSX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${WITH_SSL_TRUE}" && test -z "${WITH_SSL_FALSE}"; then as_fn_error $? "conditional \"WITH_SSL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -19154,7 +23473,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # 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.6.4, which was +This file was extended by nut $as_me 2.6.5, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19220,7 +23539,7 @@ _ACEOF 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.6.4 +nut config.status 2.6.5 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -19479,6 +23798,61 @@ enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_sub enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' @@ -19557,7 +23931,39 @@ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ -striplib; do +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_flag_spec_ld_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" @@ -19587,7 +23993,18 @@ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do +sys_lib_dlsearch_path_spec \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" @@ -19618,6 +24035,8 @@ fi + + _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 @@ -19676,6 +24095,7 @@ do "server/Makefile") CONFIG_FILES="$CONFIG_FILES server/Makefile" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; "tools/nut-scanner/Makefile") CONFIG_FILES="$CONFIG_FILES tools/nut-scanner/Makefile" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; @@ -20417,7 +24837,7 @@ $as_echo X"$file" | # The names of the tagged configurations supported by this script. -available_tags="" +available_tags="CXX " # ### BEGIN LIBTOOL CONFIG @@ -20805,6 +25225,20 @@ file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + # ### END LIBTOOL CONFIG _LT_EOF @@ -20997,6 +25431,163 @@ fi (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + ;; esac diff --git a/configure.in b/configure.in index 2bcf7df..ed2d3e8 100644 --- a/configure.in +++ b/configure.in @@ -3,7 +3,7 @@ dnl | Network UPS Tools: configure.in | dnl +------------------------------------------------------------------+ dnl NUT version number is defined here and *only* here (no more include/version) -AC_INIT(nut, 2.6.4) +AC_INIT(nut, 2.6.5) AC_CONFIG_SRCDIR(server/upsd.c) AC_CONFIG_MACRO_DIR([m4]) echo "Network UPS Tools version ${PACKAGE_VERSION}" @@ -89,6 +89,7 @@ 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) @@ -113,6 +114,19 @@ AC_CHECK_FUNCS(vsnprintf snprintf, [], [ 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 @@ -415,6 +429,25 @@ 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 @@ -482,6 +515,10 @@ 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 @@ -945,9 +982,13 @@ AC_ARG_WITH([systemdsystemunitdir], ;; 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="/lib/systemd/system-shutdown" + systemdsystemshutdowndir="${libdir}/systemd/system-shutdown" AC_MSG_RESULT(using ${systemdsystemunitdir}) + systemdsystemunitdir="`echo ${systemdsystemunitdir} | sed 's/\/lib/\${libdir}/'`" else AC_MSG_RESULT(no) fi @@ -1143,6 +1184,7 @@ AC_OUTPUT([ server/Makefile tools/Makefile tools/nut-scanner/Makefile + tests/Makefile Makefile ]) diff --git a/data/Makefile.in b/data/Makefile.in index 0bd3feb..345e102 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -151,6 +151,12 @@ 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@ @@ -254,6 +260,7 @@ 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@ diff --git a/data/driver.list.in b/data/driver.list.in index b305b92..64d1815 100644 --- a/data/driver.list.in +++ b/data/driver.list.in @@ -199,16 +199,16 @@ "Cyclades" "pdu" "1" "PM8" "8 outlets" "powerman-pdu (experimental)" "Cyclades" "pdu" "1" "PM10" "10 outlets" "powerman-pdu (experimental)" -"Dell" "ups" "5" "Tower 500W LV / HV" "Serial port" "newmge-shut" -"Dell" "ups" "5" "Rack/Tower 1000W LV / HV" "Serial port" "newmge-shut" -"Dell" "ups" "5" "Rack/Tower 1500W LV" "Serial port" "newmge-shut" -"Dell" "ups" "5" "Rack/Tower 1920W LV / HV" "Serial port" "newmge-shut" -"Dell" "ups" "5" "Rack/Tower 2300W LV" "Serial port" "newmge-shut" -"Dell" "ups" "5" "Rack/Tower 2700W LV / HV" "Serial port" "newmge-shut" -"Dell" "ups" "5" "Short Depth Rack 2700W Online LV / HV" "High Efficiency, Serial port" "newmge-shut" -"Dell" "ups" "5" "Rack 3750W High Efficiency Online HV" "Serial port" "newmge-shut" -"Dell" "ups" "5" "Rack 4200W High Efficiency Online HV" "Serial port" "newmge-shut" -"Dell" "ups" "5" "Rack 5600W HV" "Serial port" "newmge-shut" +"Dell" "ups" "5" "Tower 500W LV / HV" "Serial port" "mge-shut" +"Dell" "ups" "5" "Rack/Tower 1000W LV / HV" "Serial port" "mge-shut" +"Dell" "ups" "5" "Rack/Tower 1500W LV" "Serial port" "mge-shut" +"Dell" "ups" "5" "Rack/Tower 1920W LV / HV" "Serial port" "mge-shut" +"Dell" "ups" "5" "Rack/Tower 2300W LV" "Serial port" "mge-shut" +"Dell" "ups" "5" "Rack/Tower 2700W LV / HV" "Serial port" "mge-shut" +"Dell" "ups" "5" "Short Depth Rack 2700W Online LV / HV" "High Efficiency, Serial port" "mge-shut" +"Dell" "ups" "5" "Rack 3750W High Efficiency Online HV" "Serial port" "mge-shut" +"Dell" "ups" "5" "Rack 4200W High Efficiency Online HV" "Serial port" "mge-shut" +"Dell" "ups" "5" "Rack 5600W HV" "Serial port" "mge-shut" "Dell" "ups" "5" "Tower 500W LV / HV" "USB port" "usbhid-ups" "Dell" "ups" "5" "Rack/Tower 1000W LV / HV" "USB port" "usbhid-ups" "Dell" "ups" "5" "Rack/Tower 1500W LV" "USB port" "usbhid-ups" @@ -251,17 +251,17 @@ "Eaton" "ups" "5" "MX 5/8/10/15/20 kVA" "USB port" "usbhid-ups" "Eaton" "ups" "5" "5 PX" "USB port" "usbhid-ups" "Eaton" "ups" "5" "Nova AVR 625/1250" "USB" "usbhid-ups" -"Eaton" "ups" "5" "Ellipse ASR USBS 600/750/1000/1500 VA" "Serial cable" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "Ellipse MAX USBS 600/850/1100/1500 VA" "Serial cable" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "Evolution 650/850/1150/1550/2000 VA" "Serial port" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "Evolution S 1250/1750/2500/3000 VA" "Serial port" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "EX 700/1000/1500 VA" "Serial port" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "EX 2200/3000/3000 XL VA" "Serial port" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "EX 1000 RT2U / 1500 RT2U" "Serial port" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "MX 5/8/10/15/20 kVA" "Serial port" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "5 PX" "Serial port" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "EX RT 1:1 7/11 kVA" "" "mge-shut or newmge-shut" -"Eaton" "ups" "5" "EX RT 3:1 5/7/11 kVA" "" "mge-shut or newmge-shut" +"Eaton" "ups" "5" "Ellipse ASR USBS 600/750/1000/1500 VA" "Serial cable" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "Ellipse MAX USBS 600/850/1100/1500 VA" "Serial cable" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "Evolution 650/850/1150/1550/2000 VA" "Serial port" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "Evolution S 1250/1750/2500/3000 VA" "Serial port" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "EX 700/1000/1500 VA" "Serial port" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "EX 2200/3000/3000 XL VA" "Serial port" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "EX 1000 RT2U / 1500 RT2U" "Serial port" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "MX 5/8/10/15/20 kVA" "Serial port" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "5 PX" "Serial port" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "EX RT 1:1 7/11 kVA" "" "mge-shut or oldmge-shut" +"Eaton" "ups" "5" "EX RT 3:1 5/7/11 kVA" "" "mge-shut or oldmge-shut" "Eaton" "ups" "5" "EX RT (XML/HTTP)" "NMC Transverse card (ref 66074)" "netxml-ups (experimental)" "Eaton" "ups" "5" "EX RT (SNMP)" "NMC Transverse card (ref 66074)" "snmp-ups (experimental)" "Eaton" "ups" "5" "E Series NV UPS 400-2000 VA" "" "blazer_usb" @@ -273,7 +273,8 @@ "Eaton" "ups" "5" "various models (XML/HTTP mode)" "SNMP/Web Minislot card (ref 66244)" "netxml-ups (experimental)" "Eaton" "ups" "5" "various models (SNMP mode)" "SNMP/Web Minislot card (ref 66244)" "snmp-ups (experimental)" "Eaton" "ups" "5" "various models (serial mode)" "Management Card Contact (ref 66104)" "mge-shut or mge-utalk" -"Eaton" "pdu" "5" "ePDU Managed" "" "snmp-ups (experimental)" +"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 9130" "" "bcmxcp or usbhid-ups" "Eaton" "ups" "5" "Powerware 9140" "" "bcmxcp or usbhid-ups" @@ -353,8 +354,8 @@ "HP" "ups" "4" "R3000 XR" "" "bcmxcp" "HP" "ups" "4" "R5500 XR" "" "bcmxcp" "HP" "ups" "3" "T500 / T750" "older models, USB port" "bcmxcp_usb" -"HP" "ups" "3" "R/T3000" "Serial port" "mge-shut or newmge-shut" -"HP" "ups" "3" "R5000 / R7000" "Serial port" "mge-shut or newmge-shut" +"HP" "ups" "3" "R/T3000" "Serial port" "mge-shut or oldmge-shut" +"HP" "ups" "3" "R5000 / R7000" "Serial port" "mge-shut or oldmge-shut" "HP" "ups" "3" "T750 INTL" "" "usbhid-ups" "HP" "ups" "3" "T1000 INTL" "" "usbhid-ups" "HP" "ups" "3" "T1500 INTL" "" "usbhid-ups" @@ -492,15 +493,15 @@ "MGE Office Protection Systems" "ups" "5" "Pulsar 700/1000/1500 VA" "USB port" "usbhid-ups" "MGE Office Protection Systems" "ups" "5" "Pulsar M 2200/3000 VA" "USB port" "usbhid-ups" "MGE Office Protection Systems" "ups" "5" "Pulsar MX 5/8/10/15/20 kVA" "USB port" "usbhid-ups" -"MGE Office Protection Systems" "ups" "5" "Ellipse ASR USBS 600/750/1000/1500 VA" "Serial cable" "mge-shut or newmge-shut" -"MGE Office Protection Systems" "ups" "5" "Ellipse MAX USBS 600/850/1100/1500 VA" "Serial cable" "mge-shut or newmge-shut" -"MGE Office Protection Systems" "ups" "5" "Evolution 650/850/1150/1550/2000 VA" "Serial port" "mge-shut or newmge-shut" -"MGE Office Protection Systems" "ups" "5" "Evolution S 1250/1750/2500/3000 VA" "Serial port" "mge-shut or newmge-shut" -"MGE Office Protection Systems" "ups" "5" "Pulsar 700/1000/1500 VA" "Serial port" "mge-shut or newmge-shut" -"MGE Office Protection Systems" "ups" "5" "Pulsar M 2200/3000 VA" "Serial port" "mge-shut or newmge-shut" -"MGE Office Protection Systems" "ups" "5" "Pulsar MX 5/8/10/15/20 kVA" "Serial port" "mge-shut or newmge-shut" -"MGE Office Protection Systems" "ups" "5" "Comet EX RT 1:1 7/11 kVA" "" "mge-shut or newmge-shut" -"MGE Office Protection Systems" "ups" "5" "Comet EX RT 3:1 5/7/11 kVA" "" "mge-shut or newmge-shut" +"MGE Office Protection Systems" "ups" "5" "Ellipse ASR USBS 600/750/1000/1500 VA" "Serial cable" "mge-shut or oldmge-shut" +"MGE Office Protection Systems" "ups" "5" "Ellipse MAX USBS 600/850/1100/1500 VA" "Serial cable" "mge-shut or oldmge-shut" +"MGE Office Protection Systems" "ups" "5" "Evolution 650/850/1150/1550/2000 VA" "Serial port" "mge-shut or oldmge-shut" +"MGE Office Protection Systems" "ups" "5" "Evolution S 1250/1750/2500/3000 VA" "Serial port" "mge-shut or oldmge-shut" +"MGE Office Protection Systems" "ups" "5" "Pulsar 700/1000/1500 VA" "Serial port" "mge-shut or oldmge-shut" +"MGE Office Protection Systems" "ups" "5" "Pulsar M 2200/3000 VA" "Serial port" "mge-shut or oldmge-shut" +"MGE Office Protection Systems" "ups" "5" "Pulsar MX 5/8/10/15/20 kVA" "Serial port" "mge-shut or oldmge-shut" +"MGE Office Protection Systems" "ups" "5" "Comet EX RT 1:1 7/11 kVA" "" "mge-shut or oldmge-shut" +"MGE Office Protection Systems" "ups" "5" "Comet EX RT 3:1 5/7/11 kVA" "" "mge-shut or oldmge-shut" "MGE Office Protection Systems" "ups" "5" "Comet EX RT (XML/HTTP)" "NMC Transverse card (ref 66074)" "netxml-ups (experimental)" "MGE Office Protection Systems" "ups" "5" "Comet EX RT (SNMP)" "NMC Transverse card (ref 66074)" "snmp-ups (experimental)" "MGE Office Protection Systems" "ups" "5" "various models (XML/HTTP mode)" "NMC Minislot (Ref 66102)" "netxml-ups (experimental)" @@ -548,45 +549,45 @@ "MGE UPS SYSTEMS" "ups" "5" "Pulsar MX 4000 RT" "USB" "usbhid-ups" "MGE UPS SYSTEMS" "ups" "5" "Pulsar MX 5000 RT" "USB" "usbhid-ups" "MGE UPS SYSTEMS" "ups" "5" "Comet / Galaxy (USB)" "USB Card (ref 66067)" "usbhid-ups" -"MGE UPS SYSTEMS" "ups" "5" "NOVA AVR 600 Serial" "" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "NOVA AVR 1100 Serial" "" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar Ellipse USBS" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar Ellipse S" "" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar Ellipse Premium USBS" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar Ellipse Premium S" "" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Ellipse Office 600" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Ellipse Office 750" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Ellipse Office 1000" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Ellipse Office 1500" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Ellipse MAX 600" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Ellipse MAX 850" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Ellipse MAX 1100" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Ellipse MAX 1500" "Serial cable" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar EXtreme C / EX RT" "" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Comet EX RT" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Comet EX RT 3:1" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar Esprit" "" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Evolution 650" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Evolution 850" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Evolution 1150" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Evolution S 1250" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Evolution 1550" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Evolution S 1750" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Evolution 2000" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Evolution S 2500" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Evolution S 3000" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar M 2200" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar M 3000" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar M 3000 XL" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar 700" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar 1000" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar 1500" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar 1000 RT2U" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar 1500 RT2U" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar MX 4000 RT" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar MX 5000 RT" "Serial port" "mge-shut or newmge-shut" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar Evolution" "Serial port" "mge-shut or newmge-shut or mge-utalk" -"MGE UPS SYSTEMS" "ups" "5" "Pulsar EXtreme C" "" "mge-shut or newmge-shut or mge-utalk" +"MGE UPS SYSTEMS" "ups" "5" "NOVA AVR 600 Serial" "" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "NOVA AVR 1100 Serial" "" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar Ellipse USBS" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar Ellipse S" "" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar Ellipse Premium USBS" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar Ellipse Premium S" "" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Ellipse Office 600" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Ellipse Office 750" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Ellipse Office 1000" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Ellipse Office 1500" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Ellipse MAX 600" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Ellipse MAX 850" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Ellipse MAX 1100" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Ellipse MAX 1500" "Serial cable" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar EXtreme C / EX RT" "" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Comet EX RT" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Comet EX RT 3:1" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar Esprit" "" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Evolution 650" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Evolution 850" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Evolution 1150" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Evolution S 1250" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Evolution 1550" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Evolution S 1750" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Evolution 2000" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Evolution S 2500" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Evolution S 3000" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar M 2200" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar M 3000" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar M 3000 XL" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar 700" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar 1000" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar 1500" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar 1000 RT2U" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar 1500 RT2U" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar MX 4000 RT" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar MX 5000 RT" "Serial port" "mge-shut or oldmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar Evolution" "Serial port" "mge-shut or oldmge-shut or mge-utalk" +"MGE UPS SYSTEMS" "ups" "5" "Pulsar EXtreme C" "" "mge-shut or oldmge-shut or mge-utalk" "MGE UPS SYSTEMS" "ups" "5" "Pulsar ES+" "" "mge-utalk" "MGE UPS SYSTEMS" "ups" "5" "Pulsar ESV+" "" "mge-utalk" "MGE UPS SYSTEMS" "ups" "5" "Pulsar SV" "" "mge-utalk" @@ -598,7 +599,7 @@ "MGE UPS SYSTEMS" "ups" "5" "Pulsar EXtreme" "" "mge-utalk" "MGE UPS SYSTEMS" "ups" "5" "Comet EXtreme" "" "mge-utalk" "MGE UPS SYSTEMS" "ups" "5" "Comet / Galaxy (Serial)" "Utalk Serial Card (ref 66060)" "mge-utalk" -"MGE UPS SYSTEMS" "ups" "5" "Comet / Galaxy (Serial)" "HID COM Serial Card (ref 66066)" "mge-shut or newmge-shut" +"MGE UPS SYSTEMS" "ups" "5" "Comet / Galaxy (Serial)" "HID COM Serial Card (ref 66066)" "mge-shut or oldmge-shut" "MGE UPS SYSTEMS" "ups" "5" "Pulsar / Comet / Galaxy (SNMP)" "SNMP/Web Transverse card (ref 66074)" "snmp-ups (experimental)" "MGE UPS SYSTEMS" "ups" "5" "various models (XML/HTTP mode)" "NMC Minislot (Ref 66102)" "netxml-ups (experimental)" "MGE UPS SYSTEMS" "ups" "5" "various models (SNMP mode)" "NMC Minislot (Ref 66102)" "snmp-ups (experimental)" @@ -677,6 +678,7 @@ "Oneac" "ups" "1" "ON2000XIU" "advanced interface" "oneac" "Online" "ups" "1" "P-Series" "" "genericups upstype=14" +"Online" "ups" "2" "Zinto A" "" "blazer_usb" "Online" "ups" "1" "Zinto D" "" "optiups" "Online" "ups" "2" "Yunto YQ450" "" "blazer_usb" @@ -704,7 +706,7 @@ "Powercom" "ups" "4" "Imperial" "" "powercom" "Powercom" "ups" "5" "Imperial" "USB (2009 models, product id: 00a2)" "usbhid-ups (experimental)" "Powercom" "ups" "4" "Vanguard" "" "blazer_ser" -"Powercom" "ups" "5" "Vanguard" "USB (2009 models, product id: 00a5)" "usbhid-ups (experimental)" +"Powercom" "ups" "5" "Vanguard" "USB (2009 models, product id: 0004 or 00a5)" "usbhid-ups (experimental)" "Powercom" "ups" "4" "WOW" "USB (<= 2009 models, product id: 0002)" "powercom (requires 'usbserial' kernel module)" "Powercom" "ups" "5" "WOW" "USB (2009 models, product id: 00a4)" "usbhid-ups (experimental)" "Powercom" "ups" "4" "(various)" "USB (<= 2009 models, product id: 0002)" "powercom (requires 'usbserial' kernel module)" @@ -767,6 +769,8 @@ "Raritan" "pdu" "3" "Metered PDU - Raritan PM" "no report, but should be supported" "snmp-ups (experimental)" "Raritan" "pdu" "3" "Switched PDU - Raritan RPC" "no report, but should be supported" "snmp-ups (experimental)" +"REDi" "ups" "2" "Blazer 400VA / 600VA / 800VA" "" "blazer_ser" + "Repotec" "ups" "1" "RPF525/625/800/1000" "" "safenet" "Repotec" "ups" "1" "RPT-800A" "" "genericups upstype=13" "Repotec" "ups" "1" "RPT-162A" "" "genericups upstype=13" @@ -852,6 +856,8 @@ "UNITEK" "ups" "2" "Alpha 1000is" "" "blazer_ser" "UNITEK" "ups" "2" "Alpha 500" "" "blazer_ser" "UNITEK" "ups" "2" "Alpha 500 ipE" "" "blazer_ser" +"UNITEK" "ups" "2" "Alpha650ipF" "USB" "blazer_usb" +"UNITEK" "ups" "2" "Alpha650ipE" "USB" "blazer_usb" "UNITEK" "ups" "2" "Alpha 2600" "" "blazer_ser" "UNITEK" "ups" "2" "Alpha 1200Sx" "USB" "blazer_usb" "UNITEK" "ups" "2" "Alpha 1250xD" "USB" "blazer_usb" diff --git a/data/html/Makefile.in b/data/html/Makefile.in index 49fc9f7..a0d4b60 100644 --- a/data/html/Makefile.in +++ b/data/html/Makefile.in @@ -110,6 +110,12 @@ 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@ @@ -213,6 +219,7 @@ 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@ diff --git a/docs/Makefile.am b/docs/Makefile.am index 6521b3b..e4948fd 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -1,5 +1,5 @@ IMAGE_FILES = images/asciidoc.png \ - images/eaton-logo.png \ + images/hostedby.png \ images/nut_layering.png \ images/nut-logo.png \ images/note.png \ diff --git a/docs/Makefile.in b/docs/Makefile.in index 5f04658..aa3b75c 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -124,6 +124,12 @@ 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@ @@ -227,6 +233,7 @@ 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@ @@ -285,7 +292,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ IMAGE_FILES = images/asciidoc.png \ - images/eaton-logo.png \ + images/hostedby.png \ images/nut_layering.png \ images/nut-logo.png \ images/note.png \ diff --git a/docs/configure.txt b/docs/configure.txt index 1450ce5..bb3b02d 100644 --- a/docs/configure.txt +++ b/docs/configure.txt @@ -122,6 +122,10 @@ and use HAL support. Build and install Avahi support, to publish NUT server availability using mDNS protocol. + --with-libltdl (default: auto-detect) + +Enable libltdl (Libtool dlopen abstraction) support. +This is required to build nut-scanner. Other configuration options --------------------------- @@ -331,14 +335,16 @@ or higher installed properly. The gdlib-config script will be detected and used by default in that situation. --with-ssl-includes, --with-usb-includes, --with-snmp-includes, - --with-neon-includes, --with-powerman-includes="-I/foo/bar" + --with-neon-includes, --with-libltdl-includes, + --with-powerman-includes="-I/foo/bar" 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 compiler flags that are needed. --with-ssl-libs, --with-usb-libs, --with-snmp-libs, - --with-neon-libs, --with-powerman-libs="-L/foo/bar -labcd -lxyz" + --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 diff --git a/docs/documentation.txt b/docs/documentation.txt index 8e84b4d..280f945 100644 --- a/docs/documentation.txt +++ b/docs/documentation.txt @@ -46,6 +46,7 @@ These are general information about UPS and PDU. - link:http://tldp.org/HOWTO/UPS-HOWTO/[UPS HOWTO] (The Linux Documentation Project) - link:http://en.wikipedia.org/wiki/Uninterruptible_power_supply[UPS on Wikipedia] - link:http://en.wikipedia.org/wiki/Power_distribution_unit[PDU on Wikipedia] +- link:http://en.wikipedia.org/wiki/Solar_controller[Solar controller on Wikipedia] - link:http://www.pcguide.com/ref/power/ext/ups/over.htm[UPS on The PC Guide] These are writeups by users of the software. diff --git a/docs/download.txt b/docs/download.txt index 33c6edf..306bf2a 100644 --- a/docs/download.txt +++ b/docs/download.txt @@ -115,7 +115,7 @@ link:http://pdb.finkproject.org/pdb/package.php/nut[Fink], link:http://trac.macports.org/browser/trunk/dports/sysutils/nut/Portfile[MacPorts] - Windows (complete port, Beta): -link:http://www.networkupstools.org/source/2.6/NUT-Installer-2.6.3-3.msi[Windows MSI installer 2.6.3-3] +link:http://www.networkupstools.org/source/2.6/NUT-Installer-2.6.4-1.msi[Windows MSI installer 2.6.4-1] Java packages @@ -126,3 +126,14 @@ link:http://www.networkupstools.org/package/java/jNut-0.2-SNAPSHOT.tar.gz[jNUT 0 - NUT Java Web support (client side using REST, Beta) link:http://www.networkupstools.org/package/java/jNutWebAPI-0.2-SNAPSHOT-src.tar.gz[jNutWebAPI 0.2-SNAPSHOT (sources)] + +Virtualization packages +----------------------- + +VMware +~~~~~~ + +- NUT client for ESXI 5.0 (offsite, René Garcia) + + * link:http://rene.margar.fr/2012/05/client-nut-pour-esxi-5-0/[blog entry (French)] + * link:http://rene.margar.fr/downloads/NutClient-ESXi500-1.0.2.tar.gz[VIB package] diff --git a/docs/images/eaton-logo.png b/docs/images/eaton-logo.png deleted file mode 100644 index f297295a89ac54e7c6368c0198b175cc83e67bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7998 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 M07*qoM6N<$g3xc{zyJUM literal 0 HcmV?d00001 diff --git a/docs/images/simple.png b/docs/images/simple.png index ab1acad8079e54a9b2d9a254a2c6e97f4855807f..62ad84016e6bf3571d51f490685fb112a0c07571 100644 GIT binary patch literal 15992 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≩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 Gy#GI>YP`n) literal 16662 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 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "APCSMART\-OLD" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "APCSMART\-OLD" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/apcsmart.8 b/docs/man/apcsmart.8 index 692e2ba..1319553 100644 --- a/docs/man/apcsmart.8 +++ b/docs/man/apcsmart.8 @@ -2,12 +2,12 @@ .\" Title: apcsmart .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "APCSMART" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "APCSMART" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/bcmxcp.8 b/docs/man/bcmxcp.8 index bee2f2c..924f293 100644 --- a/docs/man/bcmxcp.8 +++ b/docs/man/bcmxcp.8 @@ -2,12 +2,12 @@ .\" Title: bcmxcp .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "BCMXCP" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "BCMXCP" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/bcmxcp_usb.8 b/docs/man/bcmxcp_usb.8 index 0f31d4f..372672c 100644 --- a/docs/man/bcmxcp_usb.8 +++ b/docs/man/bcmxcp_usb.8 @@ -2,12 +2,12 @@ .\" Title: bcmxcp_usb .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "BCMXCP_USB" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "BCMXCP_USB" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/belkin.8 b/docs/man/belkin.8 index 2b9862f..d8d2e38 100644 --- a/docs/man/belkin.8 +++ b/docs/man/belkin.8 @@ -2,12 +2,12 @@ .\" Title: belkin .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "BELKIN" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "BELKIN" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/belkinunv.8 b/docs/man/belkinunv.8 index 626e5ca..a01de36 100644 --- a/docs/man/belkinunv.8 +++ b/docs/man/belkinunv.8 @@ -2,12 +2,12 @@ .\" Title: belkinunv .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "BELKINUNV" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "BELKINUNV" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -111,7 +111,7 @@ option is given, each status update is written on a new line\&. not supported by all hardware\&. .RE .PP -\fBbattery\&.voltage\fR, \fBbattery\&.voltage\&.nominal\fR, \fBdriver\&.version\&.internal\fR, \fBinput\&.frequency\fR, \fBinput\&.frequency\&.nominal\fR +\fBbattery\&.voltage\fR, \fBbattery\&.voltage\&.nominal\fR, \fBinput\&.frequency\fR, \fBinput\&.frequency\&.nominal\fR .RS 4 e\&.g\&. 60 for 60Hz .RE diff --git a/docs/man/belkinunv.txt b/docs/man/belkinunv.txt index 9f7b6af..cc8bb99 100644 --- a/docs/man/belkinunv.txt +++ b/docs/man/belkinunv.txt @@ -131,8 +131,6 @@ not supported by all hardware. *battery.voltage.nominal*:: -*driver.version.internal*:: - *input.frequency*:: *input.frequency.nominal*:: diff --git a/docs/man/bestfcom.8 b/docs/man/bestfcom.8 index dd57320..646a250 100644 --- a/docs/man/bestfcom.8 +++ b/docs/man/bestfcom.8 @@ -2,12 +2,12 @@ .\" Title: bestfcom .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "BESTFCOM" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "BESTFCOM" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/bestfortress.8 b/docs/man/bestfortress.8 index e26767f..ad999d2 100644 --- a/docs/man/bestfortress.8 +++ b/docs/man/bestfortress.8 @@ -2,12 +2,12 @@ .\" Title: bestfortress .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "BESTFORTRESS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "BESTFORTRESS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/bestuferrups.8 b/docs/man/bestuferrups.8 index 03319a1..0c62876 100644 --- a/docs/man/bestuferrups.8 +++ b/docs/man/bestuferrups.8 @@ -2,12 +2,12 @@ .\" Title: bestuferrups .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "BESTUFERRUPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "BESTUFERRUPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/bestups.8 b/docs/man/bestups.8 index 0f2f6af..0f7f491 100644 --- a/docs/man/bestups.8 +++ b/docs/man/bestups.8 @@ -2,12 +2,12 @@ .\" Title: bestups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "BESTUPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "BESTUPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/blazer.8 b/docs/man/blazer.8 index 67d718a..1c53569 100644 --- a/docs/man/blazer.8 +++ b/docs/man/blazer.8 @@ -2,12 +2,12 @@ .\" Title: blazer .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "BLAZER" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "BLAZER" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/clone.8 b/docs/man/clone.8 index a19e23c..a2454bf 100644 --- a/docs/man/clone.8 +++ b/docs/man/clone.8 @@ -2,12 +2,12 @@ .\" Title: clone .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "CLONE" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "CLONE" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/dummy-ups.8 b/docs/man/dummy-ups.8 index fd0bc6f..732da10 100644 --- a/docs/man/dummy-ups.8 +++ b/docs/man/dummy-ups.8 @@ -2,12 +2,12 @@ .\" Title: dummy-ups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "DUMMY\-UPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "DUMMY\-UPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/etapro.8 b/docs/man/etapro.8 index 121131b..ea19eb9 100644 --- a/docs/man/etapro.8 +++ b/docs/man/etapro.8 @@ -2,12 +2,12 @@ .\" Title: etapro .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "ETAPRO" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "ETAPRO" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/everups.8 b/docs/man/everups.8 index de926f2..aa25297 100644 --- a/docs/man/everups.8 +++ b/docs/man/everups.8 @@ -2,12 +2,12 @@ .\" Title: everups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "EVERUPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "EVERUPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/gamatronic.8 b/docs/man/gamatronic.8 index ed1a1b0..4dde67d 100644 --- a/docs/man/gamatronic.8 +++ b/docs/man/gamatronic.8 @@ -2,12 +2,12 @@ .\" Title: gamatronic .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "GAMATRONIC" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "GAMATRONIC" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/genericups.8 b/docs/man/genericups.8 index 4d77ca4..17e70ea 100644 --- a/docs/man/genericups.8 +++ b/docs/man/genericups.8 @@ -2,12 +2,12 @@ .\" Title: genericups .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "GENERICUPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "GENERICUPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/hosts.conf.5 b/docs/man/hosts.conf.5 index dafb543..2fc59b0 100644 --- a/docs/man/hosts.conf.5 +++ b/docs/man/hosts.conf.5 @@ -2,12 +2,12 @@ .\" Title: hosts.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "HOSTS\&.CONF" "5" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "HOSTS\&.CONF" "5" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/isbmex.8 b/docs/man/isbmex.8 index 04a46d4..766f102 100644 --- a/docs/man/isbmex.8 +++ b/docs/man/isbmex.8 @@ -2,12 +2,12 @@ .\" Title: isbmex .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "ISBMEX" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "ISBMEX" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/ivtscd.8 b/docs/man/ivtscd.8 index 66b5ae9..d28fd9f 100644 --- a/docs/man/ivtscd.8 +++ b/docs/man/ivtscd.8 @@ -2,12 +2,12 @@ .\" Title: ivtscd .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "IVTSCD" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "IVTSCD" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/libupsclient-config.1 b/docs/man/libupsclient-config.1 index e6d281e..6c8d717 100644 --- a/docs/man/libupsclient-config.1 +++ b/docs/man/libupsclient-config.1 @@ -2,12 +2,12 @@ .\" Title: libupsclient-config .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "LIBUPSCLIENT\-CONFIG" "1" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "LIBUPSCLIENT\-CONFIG" "1" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/liebert-esp2.8 b/docs/man/liebert-esp2.8 index db12ebc..79a7b1c 100644 --- a/docs/man/liebert-esp2.8 +++ b/docs/man/liebert-esp2.8 @@ -2,12 +2,12 @@ .\" Title: liebert-esp2 .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "LIEBERT\-ESP2" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "LIEBERT\-ESP2" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/liebert.8 b/docs/man/liebert.8 index cc4ab97..26edf5c 100644 --- a/docs/man/liebert.8 +++ b/docs/man/liebert.8 @@ -2,12 +2,12 @@ .\" Title: liebert .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "LIEBERT" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "LIEBERT" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/macosx-ups.8 b/docs/man/macosx-ups.8 new file mode 100644 index 0000000..dd01029 --- /dev/null +++ b/docs/man/macosx-ups.8 @@ -0,0 +1,81 @@ +'\" t +.\" Title: macosx-ups +.\" Author: [see the "AUTHORS" section] +.\" Generator: DocBook XSL Stylesheets v1.75.2 +.\" Date: 08/08/2012 +.\" Manual: NUT Manual +.\" Source: Network UPS Tools +.\" Language: English +.\" +.TH "MACOSX\-UPS" "8" "08/08/2012" "Network UPS Tools" "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" +macosx-ups \- monitor for Mac OS X built\-in UPS and battery driver +.SH "NOTE" +.sp +This man page only documents the hardware\-specific features of the \fBmacosx\-ups\fR driver\&. For information about the core driver, see \fBnutupsdrv\fR(8)\&. +.SH "SUPPORTED HARDWARE" +.sp +\fBmacosx\-ups\fR supports any USB HID Power Device Class (PDC) UPS which is matched by the Mac OS X built\-in drivers\&. It also can monitor a laptop internal battery as though it were an UPS\&. +.sp +If the UPS is visible in the Energy Saver preferences pane of System Preferences, this driver should be able to monitor it\&. +.SH "EXTRA ARGUMENTS" +.PP +\fBport\fR=\fIregex\fR +.RS 4 +The +\fBport\fR +parameter in the configuration file can be a case\-insensitive extended regular expression (see +\fBregex\fR(3) for details) to match against specific UPS and battery names\&. +.sp +The traditional NUT auto\-detection value of "auto" will be changed to "/UPS"\&. To test this driver against the internal battery of a laptop, a value such as "battery" can be used\&. +.RE +.PP +\fBmodel\fR=\fIregex\fR +.RS 4 +Likewise, if you have more than one UPS, it may be necessary to specify a +\fBmodel\fR +name to match against\&. This parameter is also a case\-insensitive extended regular expression\&. +.RE +.SH "DIAGNOSTICS" +.sp +If the driver cannot find an UPS, first open System Preferences and see if there is an "UPS" tab on the Energy Saver panel\&. If so, re\-run the driver with the \fB\-D\fR flag to list the names of the power sources found\&. +.SH "KNOWN ISSUES AND BUGS" +.sp +This driver is a monitoring\-only driver, and cannot shut down an UPS on its own\&. However, this should not be a problem in practice: it is monitoring the built\-in Mac OS X UPS driver, which has configuration options for several shutdown scenarios\&. Consult the Energy Saver control panel or \fBpmset\fR(8) for more information\&. +.sp +The default distribution of \fBapcupsd\fR installs a kernel extension which prevents Mac OS X from attaching to the UPS\&. In order to use this driver after installing apcupsd, you must first run the apcupsd\-uninstall script and reboot\&. +.sp +Note that other UPS monitoring solutions may show more detail than what is provided by the built\-in Mac OS X driver\&. In particular, voltages other than the battery voltage, as well as current and frequency, are typically not shown\&. It may be possible to monitor these values with \fBapcupsd\fR (for APC hardware only) or \fBusbhid-ups\fR(8)\&. +.SH "AUTHORS" +.sp +Charles Lepple +.SH "SEE ALSO" +.sp +\fBusbhid-ups\fR(8), \fBpmset\fR(8), \fBregex\fR(3) +.SS "The core driver:" +.sp +\fBnutupsdrv\fR(8) +.SS "Internet resources:" +.sp +The NUT (Network UPS Tools) home page: http://www\&.networkupstools\&.org/ +.sp +The apcupsd home page: http://www\&.apcupsd\&.org/ diff --git a/docs/man/macosx-ups.txt b/docs/man/macosx-ups.txt new file mode 100644 index 0000000..9202f5b --- /dev/null +++ b/docs/man/macosx-ups.txt @@ -0,0 +1,104 @@ +MACOSX-UPS(8) +============= + +NAME +---- +macosx-ups - monitor for Mac OS X built-in UPS and battery driver + +NOTE +---- +This man page only documents the hardware-specific features of the +*macosx-ups* driver. For information about the core driver, see +linkman:nutupsdrv[8]. + +SUPPORTED HARDWARE +------------------ +*macosx-ups* supports any USB HID Power Device Class (PDC) UPS which is +matched by the Mac OS X built-in drivers. It also can monitor a laptop +internal battery as though it were an UPS. + +If the UPS is visible in the Energy Saver preferences pane of System +Preferences, this driver should be able to monitor it. + + +EXTRA ARGUMENTS +---------------- +*port*='regex':: +The *port* parameter in the configuration file can be a case-insensitive +extended regular expression (see *regex*(3) for details) to match against +specific UPS and battery names. ++ +The traditional NUT auto-detection value of "auto" will be changed to "/UPS". +To test this driver against the internal battery of a laptop, a value such as +"battery" can be used. + +*model*='regex':: +Likewise, if you have more than one UPS, it may be necessary to specify a +*model* name to match against. This parameter is also a case-insensitive +extended regular expression. + +////////////////////////////////////////// +This driver also supports the following optional settings: + +*option1*='num':: +Set the value of ... to 'num'. Contrast with *option2*. + +*option2*='string':: +Some other option. +////////////////////////////////////////// + +////////////////////////////////////////// +Optional: list supported instant commands here: + +INSTANT COMMANDS +---------------- + +*instcmd1*:: +Command 1. +////////////////////////////////////////// + +DIAGNOSTICS +----------- + +If the driver cannot find an UPS, first open System Preferences and see if +there is an "UPS" tab on the Energy Saver panel. If so, re-run the driver with +the *-D* flag to list the names of the power sources found. + +KNOWN ISSUES AND BUGS +--------------------- + +This driver is a monitoring-only driver, and cannot shut down an UPS on its +own. However, this should not be a problem in practice: it is monitoring the +built-in Mac OS X UPS driver, which has configuration options for several +shutdown scenarios. Consult the Energy Saver control panel or *pmset*(8) for +more information. + +The default distribution of *apcupsd* installs a kernel extension which +prevents Mac OS X from attaching to the UPS. In order to use this driver after +installing apcupsd, you must first run the `apcupsd-uninstall` script and +reboot. + +Note that other UPS monitoring solutions may show more detail than what is +provided by the built-in Mac OS X driver. In particular, voltages other than +the battery voltage, as well as current and frequency, are typically not +shown. It may be possible to monitor these values with *apcupsd* (for APC +hardware only) or linkman:usbhid-ups[8]. + +AUTHORS +------- +Charles Lepple + +SEE ALSO +-------- + +linkman:usbhid-ups[8], *pmset*(8), *regex*(3) + +The core driver: +~~~~~~~~~~~~~~~~ +linkman:nutupsdrv[8] + +Internet resources: +~~~~~~~~~~~~~~~~~~~ +The NUT (Network UPS Tools) home page: http://www.networkupstools.org/ + +The apcupsd home page: http://www.apcupsd.org/ diff --git a/docs/man/masterguard.8 b/docs/man/masterguard.8 index 4dd5aca..e04c066 100644 --- a/docs/man/masterguard.8 +++ b/docs/man/masterguard.8 @@ -2,12 +2,12 @@ .\" Title: masterguard .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "MASTERGUARD" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "MASTERGUARD" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/metasys.8 b/docs/man/metasys.8 index 4bcbaf0..4d306cf 100644 --- a/docs/man/metasys.8 +++ b/docs/man/metasys.8 @@ -2,12 +2,12 @@ .\" Title: metasys .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "METASYS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "METASYS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/mge-shut.8 b/docs/man/mge-shut.8 index a2188cd..7f4c40d 100644 --- a/docs/man/mge-shut.8 +++ b/docs/man/mge-shut.8 @@ -2,12 +2,12 @@ .\" Title: mge-shut .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "MGE\-SHUT" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "MGE\-SHUT" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -94,13 +94,28 @@ warn you upon startup if it isn\(cqt\&. Some UPS\(cqes will restart no matter wh in \fBups\&.conf\fR helps\&. +.if n \{\ +.sp +.\} +.RS 4 +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +.br +.ps +1 +\fBWarning\fR +.ps -1 +.br +ondelay parameter was set in ten seconds unit in the legacy mge\-shut driver ( 3 for 30 seconds) \&. It is now set in seconds ( 30 for 30 seconds)\&. Make sure you use the correct unit in your configuration\&. +.sp .5v +.RE .RE .PP \fBnotification\fR=\fInum\fR .RS 4 Set notification type to 1 (no), 2 (light) or 3 (yes)\&. .sp -The default value is 3 (yes) because of some early Ellipse models which need it\&. +This argument is ignored\&. It is only here for backward compatibility\&. .RE .SH "KNOWN ISSUES" .SS "Repetitive timeout and staleness" diff --git a/docs/man/mge-shut.txt b/docs/man/mge-shut.txt index 76a9241..d8e19c3 100644 --- a/docs/man/mge-shut.txt +++ b/docs/man/mge-shut.txt @@ -56,12 +56,15 @@ than offdelay, but the driver will *not* warn you upon startup if it isn't. Some UPS'es will restart no matter what, even if the power is (still) out at the moment this timer elapses. In that case, you could try if setting 'ondelay = -1' in *ups.conf* helps. ++ +WARNING: ondelay parameter was set in ten seconds unit in the legacy mge-shut +driver ( 3 for 30 seconds) . It is now set in seconds ( 30 for 30 seconds). +Make sure you use the correct unit in your configuration. *notification*='num':: Set notification type to 1 (no), 2 (light) or 3 (yes). + -The default value is 3 (yes) because of some early Ellipse models which -need it. +This argument is ignored. It is only here for backward compatibility. KNOWN ISSUES ------------ diff --git a/docs/man/mge-utalk.8 b/docs/man/mge-utalk.8 index 670c4be..d94ab38 100644 --- a/docs/man/mge-utalk.8 +++ b/docs/man/mge-utalk.8 @@ -2,12 +2,12 @@ .\" Title: mge-utalk .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "MGE\-UTALK" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "MGE\-UTALK" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/microdowell.8 b/docs/man/microdowell.8 index f888340..587e4b7 100644 --- a/docs/man/microdowell.8 +++ b/docs/man/microdowell.8 @@ -2,12 +2,12 @@ .\" Title: microdowell .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "MICRODOWELL" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "MICRODOWELL" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/netxml-ups.8 b/docs/man/netxml-ups.8 index 69df2fe..abee892 100644 --- a/docs/man/netxml-ups.8 +++ b/docs/man/netxml-ups.8 @@ -2,12 +2,12 @@ .\" Title: netxml-ups .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NETXML\-UPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "NETXML\-UPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nut-ipmipsu.8 b/docs/man/nut-ipmipsu.8 index 9ff396a..9a2beed 100644 --- a/docs/man/nut-ipmipsu.8 +++ b/docs/man/nut-ipmipsu.8 @@ -2,12 +2,12 @@ .\" Title: nut-ipmipsu .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUT\-IPMIPSU" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "NUT\-IPMIPSU" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -167,7 +167,7 @@ means that the PSU is present and providing power, .IP \(bu 2.3 .\} -\fIOB\fR +\fIOFF\fR means that the PSU is present but not providing power (power cable removed), .RE .sp @@ -181,7 +181,7 @@ means that the PSU is present but not providing power (power cable removed), .\} \fIstale\fR -means that the PSU is not present (ie physically removed)\&. +(no data) means that the PSU is not present (ie physically removed)\&. .RE .RE .sp diff --git a/docs/man/nut-ipmipsu.txt b/docs/man/nut-ipmipsu.txt index cef3a14..11c4f5c 100644 --- a/docs/man/nut-ipmipsu.txt +++ b/docs/man/nut-ipmipsu.txt @@ -70,8 +70,8 @@ This driver will report various information related to a PSU, including: - status of the PSU: * 'OL' means that the PSU is present and providing power, - * 'OB' means that the PSU is present but not providing power (power cable removed), - * 'stale' means that the PSU is not present (ie physically removed). + * 'OFF' means that the PSU is present but not providing power (power cable removed), + * 'stale' (no data) means that the PSU is not present (ie physically removed). Here is an example output for a Dell r610 server: diff --git a/docs/man/nut-recorder.8 b/docs/man/nut-recorder.8 index de8969d..6e93400 100644 --- a/docs/man/nut-recorder.8 +++ b/docs/man/nut-recorder.8 @@ -2,12 +2,12 @@ .\" Title: nut-recorder .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUT\-RECORDER" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "NUT\-RECORDER" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nut-scanner.8 b/docs/man/nut-scanner.8 index 04e926c..d3caaa7 100644 --- a/docs/man/nut-scanner.8 +++ b/docs/man/nut-scanner.8 @@ -2,12 +2,12 @@ .\" Title: nut-scanner .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUT\-SCANNER" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "NUT\-SCANNER" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -39,7 +39,7 @@ nut-scanner \- scan communication buses for NUT devices \fBnut\-scanner\fR scans available communication buses and displays any NUT\-compatible devices it has found\&. .SH "INSTALLATION" .sp -\fBnut\-scanner\fR is always built by default\&. However, available options (USB, SNMP, IPMI, \&...) will vary according to the available compile time and runtime dependencies\&. For example, if Net\-SNMP is installed, thus providing libsnmp (\&.so or \&.dll) and headers, both during compilation and runtime, then SNMP discovery will be available\&. +\fBnut\-scanner\fR is only built if libltdl (part of libtool development suite) is available\&. Available options (USB, SNMP, IPMI, \&...) will vary according to the available compile time and runtime dependencies\&. For example, if Net\-SNMP is installed, thus providing libsnmp (\&.so or \&.dll) and headers, both during compilation and runtime, then SNMP discovery will be available\&. .SH "OPTIONS" .PP \fB\-h\fR diff --git a/docs/man/nut-scanner.txt b/docs/man/nut-scanner.txt index 2f517ee..6948449 100644 --- a/docs/man/nut-scanner.txt +++ b/docs/man/nut-scanner.txt @@ -21,11 +21,11 @@ NUT-compatible devices it has found. INSTALLATION ------------ -*nut-scanner* is always built by default. However, available options -(USB, SNMP, IPMI, ...) will vary according to the available compile time -and runtime dependencies. For example, if Net-SNMP is installed, thus -providing libsnmp (.so or .dll) and headers, both during compilation -and runtime, then SNMP discovery will be available. +*nut-scanner* is only built if libltdl (part of libtool development suite) +is available. Available options (USB, SNMP, IPMI, ...) will vary according +to the available compile time and runtime dependencies. For example, if +Net-SNMP is installed, thus providing libsnmp (.so or .dll) and headers, +both during compilation and runtime, then SNMP discovery will be available. OPTIONS ------- diff --git a/docs/man/nut.conf.5 b/docs/man/nut.conf.5 index 4231178..fac56d5 100644 --- a/docs/man/nut.conf.5 +++ b/docs/man/nut.conf.5 @@ -2,12 +2,12 @@ .\" Title: nut.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUT\&.CONF" "5" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "NUT\&.CONF" "5" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan.3 b/docs/man/nutscan.3 index 022ede7..3edfcf2 100644 --- a/docs/man/nutscan.3 +++ b/docs/man/nutscan.3 @@ -2,12 +2,12 @@ .\" Title: nutscan .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -33,10 +33,10 @@ nutscan \- Network UPS Tools (NUT) device discovery library .sp The Network UPS Tools (NUT) \fBnutscan\fR library provides the same discovery related features that are also offered by \fBnut-scanner\fR(8)\&. .sp -It allows to discover supported NUT devices (USB, SNMP, Eaton XML/HTTP and IPMI) and NUT servers (using Avahi or the classic connection method)\&. +It enables the discovery of supported NUT devices (USB, SNMP, Eaton XML/HTTP and IPMI) and NUT servers (using Avahi, or the classic connection method)\&. .SH "DISCOVERY FUNCTIONS" .sp -First, include the needed header file: +First, include the required header file: .sp .if n \{\ .RS 4 @@ -128,9 +128,9 @@ for NUT servers (upsd), using the mDNS (Avahi) method, for supported IPMI PSU\&. .RE .sp -All these functions return a list of devices found, using the nutscan_device_t structure\&. This one is described in \fBnutscan_add_device_to_device\fR(3)\&. +All of these functions return a list of devices found, using the nutscan_device_t structure\&. This structure is described in \fBnutscan_add_device_to_device\fR(3)\&. .sp -Helper functions are also provided to output data using standard format: +Helper functions are also provided to output data using standard formats: .sp .RS 4 .ie n \{\ @@ -159,7 +159,7 @@ for ups\&.conf style\&. .RE .SH "ERROR HANDLING" .sp -There is currently no specific mechanism around error handling\&. +There is currently no specific mechanism for error handling\&. .SH "SEE ALSO" .sp -\fBnut-scanner\fR(8), \fBnutscan_scan_usb\fR(3), \fBnutscan_scan_snmp\fR(3) \fBnutscan_scan_xml_http\fR(3), \fBnutscan_scan_nut\fR(3) \fBnutscan_scan_avahi\fR(3), \fBnutscan_scan_ipmi\fR(3) \fBnutscan_display_parsable\fR(3), \fBnutscan_display_ups_conf\fR(3) \fBnutscan_new_device\fR(3), \fBnutscan_free_device\fR(3) \fBnutscan_add_device_to_device\fR(3), \fBnutscan_add_option_to_device\fR(3) \fBnutscan_cidr_to_ip\fR(3) +\fBnut-scanner\fR(8), \fBnutscan_scan_usb\fR(3), \fBnutscan_scan_snmp\fR(3), \fBnutscan_scan_xml_http\fR(3), \fBnutscan_scan_nut\fR(3), \fBnutscan_scan_avahi\fR(3), \fBnutscan_scan_ipmi\fR(3), \fBnutscan_display_parsable\fR(3), \fBnutscan_display_ups_conf\fR(3), \fBnutscan_new_device\fR(3), \fBnutscan_free_device\fR(3), \fBnutscan_add_device_to_device\fR(3), \fBnutscan_add_option_to_device\fR(3), \fBnutscan_cidr_to_ip\fR(3), http://avahi\&.org/ diff --git a/docs/man/nutscan.txt b/docs/man/nutscan.txt index 030a910..90ac366 100644 --- a/docs/man/nutscan.txt +++ b/docs/man/nutscan.txt @@ -12,14 +12,14 @@ DESCRIPTION The Network UPS Tools (NUT) *nutscan* library provides the same discovery related features that are also offered by linkman:nut-scanner[8]. -It allows to discover supported NUT devices (USB, SNMP, Eaton XML/HTTP and IPMI) -and NUT servers (using Avahi or the classic connection method). +It enables the discovery of supported NUT devices (USB, SNMP, Eaton XML/HTTP +and IPMI) and NUT servers (using Avahi, or the classic connection method). DISCOVERY FUNCTIONS ------------------- -First, include the needed header file: +First, include the required header file: #include @@ -33,10 +33,10 @@ Then, to discover new devices, use the appropriate function: - linkman:nutscan_scan_ipmi[3] for supported IPMI PSU. -All these functions return a list of devices found, using the nutscan_device_t -structure. This one is described in linkman:nutscan_add_device_to_device[3]. +All of these functions return a list of devices found, using the nutscan_device_t +structure. This structure is described in linkman:nutscan_add_device_to_device[3]. -Helper functions are also provided to output data using standard format: +Helper functions are also provided to output data using standard formats: - linkman:nutscan_display_parsable[3] for parsable output, - linkman:nutscan_display_ups_conf[3] for ups.conf style. @@ -44,16 +44,17 @@ Helper functions are also provided to output data using standard format: ERROR HANDLING -------------- -There is currently no specific mechanism around error handling. +There is currently no specific mechanism for error handling. SEE ALSO -------- linkman:nut-scanner[8], -linkman:nutscan_scan_usb[3], linkman:nutscan_scan_snmp[3] -linkman:nutscan_scan_xml_http[3], linkman:nutscan_scan_nut[3] -linkman:nutscan_scan_avahi[3], linkman:nutscan_scan_ipmi[3] -linkman:nutscan_display_parsable[3], linkman:nutscan_display_ups_conf[3] -linkman:nutscan_new_device[3], linkman:nutscan_free_device[3] -linkman:nutscan_add_device_to_device[3], linkman:nutscan_add_option_to_device[3] -linkman:nutscan_cidr_to_ip[3] +linkman:nutscan_scan_usb[3], linkman:nutscan_scan_snmp[3], +linkman:nutscan_scan_xml_http[3], linkman:nutscan_scan_nut[3], +linkman:nutscan_scan_avahi[3], linkman:nutscan_scan_ipmi[3], +linkman:nutscan_display_parsable[3], linkman:nutscan_display_ups_conf[3], +linkman:nutscan_new_device[3], linkman:nutscan_free_device[3], +linkman:nutscan_add_device_to_device[3], linkman:nutscan_add_option_to_device[3], +linkman:nutscan_cidr_to_ip[3], +http://avahi.org/ diff --git a/docs/man/nutscan_add_device_to_device.3 b/docs/man/nutscan_add_device_to_device.3 index 91c0153..703f525 100644 --- a/docs/man/nutscan_add_device_to_device.3 +++ b/docs/man/nutscan_add_device_to_device.3 @@ -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.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_ADD_DEVICE_T" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_ADD_DEVICE_T" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_add_option_to_device.3 b/docs/man/nutscan_add_option_to_device.3 index 4075e39..3080806 100644 --- a/docs/man/nutscan_add_option_to_device.3 +++ b/docs/man/nutscan_add_option_to_device.3 @@ -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.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_ADD_OPTION_T" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_ADD_OPTION_T" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_cidr_to_ip.3 b/docs/man/nutscan_cidr_to_ip.3 index 56a6454..776047a 100644 --- a/docs/man/nutscan_cidr_to_ip.3 +++ b/docs/man/nutscan_cidr_to_ip.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_cidr_to_ip .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_CIDR_TO_IP" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_CIDR_TO_IP" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_display_parsable.3 b/docs/man/nutscan_display_parsable.3 index aee3034..8562486 100644 --- a/docs/man/nutscan_display_parsable.3 +++ b/docs/man/nutscan_display_parsable.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_display_parsable .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_DISPLAY_PARS" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_DISPLAY_PARS" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_display_ups_conf.3 b/docs/man/nutscan_display_ups_conf.3 index cc8d242..1b9017d 100644 --- a/docs/man/nutscan_display_ups_conf.3 +++ b/docs/man/nutscan_display_ups_conf.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_display_ups_conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_DISPLAY_UPS_" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_DISPLAY_UPS_" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_free_device.3 b/docs/man/nutscan_free_device.3 index d3d462c..616cef6 100644 --- a/docs/man/nutscan_free_device.3 +++ b/docs/man/nutscan_free_device.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_free_device .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_FREE_DEVICE" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_FREE_DEVICE" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_init.3 b/docs/man/nutscan_init.3 index 24c62ba..644033e 100644 --- a/docs/man/nutscan_init.3 +++ b/docs/man/nutscan_init.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_init .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_INIT" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_INIT" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_new_device.3 b/docs/man/nutscan_new_device.3 index 028b201..fda0bf4 100644 --- a/docs/man/nutscan_new_device.3 +++ b/docs/man/nutscan_new_device.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_new_device .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_NEW_DEVICE" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_NEW_DEVICE" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_scan_avahi.3 b/docs/man/nutscan_scan_avahi.3 index 2bf5d71..6ebc0a9 100644 --- a/docs/man/nutscan_scan_avahi.3 +++ b/docs/man/nutscan_scan_avahi.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_avahi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_SCAN_AVAHI" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_SCAN_AVAHI" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -nutscan_scan_avahi \- Scan network for NUT services via AVAHI\&. +nutscan_scan_avahi \- Scan network for NUT services via mDNS .SH "SYNOPSIS" .sp .nf @@ -40,14 +40,14 @@ nutscan_device_t * nutscan_scan_avahi(long usec_timeout); .fi .SH "DESCRIPTION" .sp -The \fBnutscan_scan_avahi()\fR function try to detect NUT service and its associated devcies\&. It uses the AVAHI library to do so\&. +The \fBnutscan_scan_avahi()\fR function tries to detect the NUT service via mDNS, and its associated devices\&. It uses the Avahi library to do so\&. .sp You MUST call \fBnutscan_init\fR(3) before using this function\&. .sp -This function waits up to \fIusec_timeout\fR microseconds before considering an IP address does not respond\&. +This function waits up to \fIusec_timeout\fR microseconds before considering an IP address to be unresponsive\&. .SH "RETURN VALUE" .sp -The \fBnutscan_scan_avahi()\fR function returns a pointer to a nutscan_device_t structure containing all found devices or NULL if an error occurs or no device is found\&. +The \fBnutscan_scan_avahi()\fR function returns a pointer to a nutscan_device_t structure containing all found devices\&. It returns NULL if an error occurs, or if no device is found\&. .SH "SEE ALSO" .sp -\fBnutscan_init\fR(3), \fBnutscan_scan_usb\fR(3), \fBnutscan_scan_xml_http\fR(3), \fBnutscan_scan_nut\fR(3), \fBnutscan_scan_snmp\fR(3), \fBnutscan_scan_ipmi\fR(3), \fBnutscan_display_ups_conf\fR(3), \fBnutscan_display_parsable\fR(3), \fBnutscan_new_device\fR(3), \fBnutscan_free_device\fR(3), \fBnutscan_add_option_to_device\fR(3), \fBnutscan_add_device_to_device\fR(3), \fBnutscan_cidr_to_ip\fR(3) +\fBnutscan_init\fR(3), \fBnutscan_scan_usb\fR(3), \fBnutscan_scan_xml_http\fR(3), \fBnutscan_scan_nut\fR(3), \fBnutscan_scan_snmp\fR(3), \fBnutscan_scan_ipmi\fR(3), \fBnutscan_display_ups_conf\fR(3), \fBnutscan_display_parsable\fR(3), \fBnutscan_new_device\fR(3), \fBnutscan_free_device\fR(3), \fBnutscan_add_option_to_device\fR(3), \fBnutscan_add_device_to_device\fR(3), \fBnutscan_cidr_to_ip\fR(3), http://avahi\&.org/ diff --git a/docs/man/nutscan_scan_avahi.txt b/docs/man/nutscan_scan_avahi.txt index 15ccbb2..32c39e7 100644 --- a/docs/man/nutscan_scan_avahi.txt +++ b/docs/man/nutscan_scan_avahi.txt @@ -4,7 +4,7 @@ NUTSCAN_SCAN_AVAHI(3) NAME ---- -nutscan_scan_avahi - Scan network for NUT services via AVAHI. +nutscan_scan_avahi - Scan network for NUT services via mDNS SYNOPSIS -------- @@ -16,16 +16,20 @@ SYNOPSIS DESCRIPTION ----------- -The *nutscan_scan_avahi()* function try to detect NUT service and its associated devcies. It uses the AVAHI library to do so. +The *nutscan_scan_avahi()* function tries to detect the NUT service via mDNS, +and its associated devices. It uses the Avahi library to do so. You MUST call linkman:nutscan_init[3] before using this function. -This function waits up to 'usec_timeout' microseconds before considering an IP address does not respond. +This function waits up to 'usec_timeout' microseconds before considering an IP +address to be unresponsive. RETURN VALUE ------------ -The *nutscan_scan_avahi()* function returns a pointer to a `nutscan_device_t` structure containing all found devices or NULL if an error occurs or no device is found. +The *nutscan_scan_avahi()* function returns a pointer to a `nutscan_device_t` +structure containing all found devices. It returns NULL if an error occurs, or +if no device is found. SEE ALSO -------- @@ -35,4 +39,5 @@ linkman:nutscan_scan_nut[3], linkman:nutscan_scan_snmp[3], linkman:nutscan_scan_ipmi[3], linkman:nutscan_display_ups_conf[3], linkman:nutscan_display_parsable[3], linkman:nutscan_new_device[3], linkman:nutscan_free_device[3], linkman:nutscan_add_option_to_device[3], -linkman:nutscan_add_device_to_device[3], linkman:nutscan_cidr_to_ip[3] +linkman:nutscan_add_device_to_device[3], linkman:nutscan_cidr_to_ip[3], +http://avahi.org/ diff --git a/docs/man/nutscan_scan_ipmi.3 b/docs/man/nutscan_scan_ipmi.3 index 890c96c..ec9e33c 100644 --- a/docs/man/nutscan_scan_ipmi.3 +++ b/docs/man/nutscan_scan_ipmi.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_ipmi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_SCAN_IPMI" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_SCAN_IPMI" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_scan_nut.3 b/docs/man/nutscan_scan_nut.3 index d40b690..c846181 100644 --- a/docs/man/nutscan_scan_nut.3 +++ b/docs/man/nutscan_scan_nut.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_nut .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_SCAN_NUT" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_SCAN_NUT" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_scan_snmp.3 b/docs/man/nutscan_scan_snmp.3 index dcdaa04..3838bd6 100644 --- a/docs/man/nutscan_scan_snmp.3 +++ b/docs/man/nutscan_scan_snmp.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_snmp .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_SCAN_SNMP" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_SCAN_SNMP" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_scan_usb.3 b/docs/man/nutscan_scan_usb.3 index 40968c0..ac976e6 100644 --- a/docs/man/nutscan_scan_usb.3 +++ b/docs/man/nutscan_scan_usb.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_usb .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_SCAN_USB" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_SCAN_USB" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutscan_scan_xml_http.3 b/docs/man/nutscan_scan_xml_http.3 index d3c42cd..bc0bae8 100644 --- a/docs/man/nutscan_scan_xml_http.3 +++ b/docs/man/nutscan_scan_xml_http.3 @@ -2,12 +2,12 @@ .\" Title: nutscan_scan_xml_http .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTSCAN_SCAN_XML_HTT" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTSCAN_SCAN_XML_HTT" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/nutupsdrv.8 b/docs/man/nutupsdrv.8 index 262ddbc..d4eb941 100644 --- a/docs/man/nutupsdrv.8 +++ b/docs/man/nutupsdrv.8 @@ -2,12 +2,12 @@ .\" Title: nutupsdrv .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "NUTUPSDRV" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "NUTUPSDRV" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/oneac.8 b/docs/man/oneac.8 index b468b38..7625522 100644 --- a/docs/man/oneac.8 +++ b/docs/man/oneac.8 @@ -2,12 +2,12 @@ .\" Title: oneac .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "ONEAC" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "ONEAC" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/optiups.8 b/docs/man/optiups.8 index 7e48a29..df63076 100644 --- a/docs/man/optiups.8 +++ b/docs/man/optiups.8 @@ -2,12 +2,12 @@ .\" Title: optiups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "OPTIUPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "OPTIUPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/powercom.8 b/docs/man/powercom.8 index 24f1c05..f93c6b2 100644 --- a/docs/man/powercom.8 +++ b/docs/man/powercom.8 @@ -2,12 +2,12 @@ .\" Title: powercom .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "POWERCOM" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "POWERCOM" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,13 +28,15 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -powercom \- UPS driver for Powercom/Trust/Advice UPS equipment +powercom \- UPS driver for serial Powercom/Trust/Advice UPS equipment .SH "NOTE" .sp This man page only documents the hardware\-specific features of the powercom driver\&. For information about the core driver, see \fBnutupsdrv\fR(8)\&. .SH "SUPPORTED HARDWARE" .sp -This driver supports many similar kinds of UPS hardware\&. The most common ones are the Trust 425/625, Powercom, and Advice Partner/King PR750\&. Others using the same protocol may also work\&. +This driver supports many similar kinds of serial UPS hardware (as well as a few USB UPS models with USB\-to\-serial adapters)\&. The most common ones are the Trust 425/625, Powercom, and Advice Partner/King PR750\&. Others using the same protocol may also work\&. For USB connections, you might need \fBusbhid-ups\fR(8)\&. +.sp +For more specific guidance on which driver is applicable for a USB connection, see the NUT Hardware Compatibility List (HCL)\&. .SH "EXTRA ARGUMENTS" .sp This driver supports the following optional settings in the \fBups.conf\fR(5) file: diff --git a/docs/man/powercom.txt b/docs/man/powercom.txt index f01bd9a..b7516ff 100644 --- a/docs/man/powercom.txt +++ b/docs/man/powercom.txt @@ -4,7 +4,7 @@ POWERCOM(8) NAME ---- -powercom - UPS driver for Powercom/Trust/Advice UPS equipment +powercom - UPS driver for serial Powercom/Trust/Advice UPS equipment NOTE ---- @@ -14,9 +14,13 @@ linkman:nutupsdrv[8]. SUPPORTED HARDWARE ------------------ -This driver supports many similar kinds of UPS hardware. The most common -ones are the Trust 425/625, Powercom, and Advice Partner/King PR750. -Others using the same protocol may also work. +This driver supports many similar kinds of serial UPS hardware (as well as a +few USB UPS models with USB-to-serial adapters). The most common ones are the +Trust 425/625, Powercom, and Advice Partner/King PR750. Others using the same +protocol may also work. For USB connections, you might need linkman:usbhid-ups[8]. + +For more specific guidance on which driver is applicable for a USB connection, +see the NUT Hardware Compatibility List (HCL). EXTRA ARGUMENTS --------------- diff --git a/docs/man/powerman-pdu.8 b/docs/man/powerman-pdu.8 index d8f4bc3..a58f181 100644 --- a/docs/man/powerman-pdu.8 +++ b/docs/man/powerman-pdu.8 @@ -2,12 +2,12 @@ .\" Title: powerman-pdu .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "POWERMAN\-PDU" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "POWERMAN\-PDU" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/powerpanel.8 b/docs/man/powerpanel.8 index 53f5d5e..d96339f 100644 --- a/docs/man/powerpanel.8 +++ b/docs/man/powerpanel.8 @@ -2,12 +2,12 @@ .\" Title: powerpanel .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "POWERPANEL" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "POWERPANEL" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/rhino.8 b/docs/man/rhino.8 index c92c25c..cd2fdc9 100644 --- a/docs/man/rhino.8 +++ b/docs/man/rhino.8 @@ -2,12 +2,12 @@ .\" Title: rhino .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "RHINO" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "RHINO" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/richcomm_usb.8 b/docs/man/richcomm_usb.8 index ab5f191..c92e918 100644 --- a/docs/man/richcomm_usb.8 +++ b/docs/man/richcomm_usb.8 @@ -2,12 +2,12 @@ .\" Title: richcomm_usb .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "RICHCOMM_USB" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "RICHCOMM_USB" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/safenet.8 b/docs/man/safenet.8 index c21a244..9d8b67b 100644 --- a/docs/man/safenet.8 +++ b/docs/man/safenet.8 @@ -2,12 +2,12 @@ .\" Title: safenet .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "SAFENET" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "SAFENET" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/skel.txt b/docs/man/skel.txt index f98cd2c..8bf885f 100644 --- a/docs/man/skel.txt +++ b/docs/man/skel.txt @@ -43,6 +43,7 @@ CABLING ////////////////////////////////////////// EXTRA ARGUMENTS +--------------- This driver also supports the following optional settings: *option1*='num':: @@ -70,6 +71,15 @@ INSTALLATION ////////////////////////////////////////// +////////////////////////////////////////// +Optional: use DIAGNOSTICS to describe troubleshooting techniques that are +longer than what can be conveniently described in the driver error messages. + +DIAGNOSTICS +----------- + +////////////////////////////////////////// + ////////////////////////////////////////// You may leave this as "none known at this time", or describe any trouble encountered when implementing the protocol for your UPS. diff --git a/docs/man/snmp-ups.8 b/docs/man/snmp-ups.8 index d431961..9db1748 100644 --- a/docs/man/snmp-ups.8 +++ b/docs/man/snmp-ups.8 @@ -2,12 +2,12 @@ .\" Title: snmp-ups .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "SNMP\-UPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "SNMP\-UPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/solis.8 b/docs/man/solis.8 index da4d0e9..6c213d0 100644 --- a/docs/man/solis.8 +++ b/docs/man/solis.8 @@ -2,12 +2,12 @@ .\" Title: solis .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "SOLIS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "SOLIS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/tripplite.8 b/docs/man/tripplite.8 index a74c0cf..d9a9c04 100644 --- a/docs/man/tripplite.8 +++ b/docs/man/tripplite.8 @@ -2,12 +2,12 @@ .\" Title: tripplite .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "TRIPPLITE" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "TRIPPLITE" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/tripplite_usb.8 b/docs/man/tripplite_usb.8 index 5a71c35..424f93f 100644 --- a/docs/man/tripplite_usb.8 +++ b/docs/man/tripplite_usb.8 @@ -2,12 +2,12 @@ .\" Title: tripplite_usb .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "TRIPPLITE_USB" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "TRIPPLITE_USB" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/tripplitesu.8 b/docs/man/tripplitesu.8 index 366af7c..cd212ad 100644 --- a/docs/man/tripplitesu.8 +++ b/docs/man/tripplitesu.8 @@ -2,12 +2,12 @@ .\" Title: tripplitesu .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "TRIPPLITESU" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "TRIPPLITESU" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/ups.conf.5 b/docs/man/ups.conf.5 index 0abc9a1..5db9e12 100644 --- a/docs/man/ups.conf.5 +++ b/docs/man/ups.conf.5 @@ -2,12 +2,12 @@ .\" Title: ups.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPS\&.CONF" "5" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPS\&.CONF" "5" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsc.8 b/docs/man/upsc.8 index 115da0e..8b90ae1 100644 --- a/docs/man/upsc.8 +++ b/docs/man/upsc.8 @@ -2,12 +2,12 @@ .\" Title: upsc .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSC" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSC" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_connect.3 b/docs/man/upscli_connect.3 index f696834..44d7b8f 100644 --- a/docs/man/upscli_connect.3 +++ b/docs/man/upscli_connect.3 @@ -2,12 +2,12 @@ .\" Title: upscli_connect .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_CONNECT" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_CONNECT" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_disconnect.3 b/docs/man/upscli_disconnect.3 index b51af56..daa9ab8 100644 --- a/docs/man/upscli_disconnect.3 +++ b/docs/man/upscli_disconnect.3 @@ -2,12 +2,12 @@ .\" Title: upscli_disconnect .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_DISCONNECT" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_DISCONNECT" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_fd.3 b/docs/man/upscli_fd.3 index 4c22874..3876e72 100644 --- a/docs/man/upscli_fd.3 +++ b/docs/man/upscli_fd.3 @@ -2,12 +2,12 @@ .\" Title: upscli_fd .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_FD" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_FD" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_get.3 b/docs/man/upscli_get.3 index 5fa3550..4c6c501 100644 --- a/docs/man/upscli_get.3 +++ b/docs/man/upscli_get.3 @@ -2,12 +2,12 @@ .\" Title: upscli_get .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_GET" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_GET" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_list_next.3 b/docs/man/upscli_list_next.3 index 028df71..2a1687f 100644 --- a/docs/man/upscli_list_next.3 +++ b/docs/man/upscli_list_next.3 @@ -2,12 +2,12 @@ .\" Title: upscli_list_next .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_LIST_NEXT" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_LIST_NEXT" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_list_start.3 b/docs/man/upscli_list_start.3 index 9f7134b..ba5c0a8 100644 --- a/docs/man/upscli_list_start.3 +++ b/docs/man/upscli_list_start.3 @@ -2,12 +2,12 @@ .\" Title: upscli_list_start .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/31/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_LIST_START" "3" "05/31/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_LIST_START" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_readline.3 b/docs/man/upscli_readline.3 index 6f5be4a..fd7d5fa 100644 --- a/docs/man/upscli_readline.3 +++ b/docs/man/upscli_readline.3 @@ -2,12 +2,12 @@ .\" Title: upscli_readline .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_READLINE" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_READLINE" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_sendline.3 b/docs/man/upscli_sendline.3 index 29d31db..448da95 100644 --- a/docs/man/upscli_sendline.3 +++ b/docs/man/upscli_sendline.3 @@ -2,12 +2,12 @@ .\" Title: upscli_sendline .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_SENDLINE" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_SENDLINE" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_splitaddr.3 b/docs/man/upscli_splitaddr.3 index 17ed111..99a71b4 100644 --- a/docs/man/upscli_splitaddr.3 +++ b/docs/man/upscli_splitaddr.3 @@ -2,12 +2,12 @@ .\" Title: upscli_splitaddr .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_SPLITADDR" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_SPLITADDR" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_splitname.3 b/docs/man/upscli_splitname.3 index 166dd0f..39440f4 100644 --- a/docs/man/upscli_splitname.3 +++ b/docs/man/upscli_splitname.3 @@ -2,12 +2,12 @@ .\" Title: upscli_splitname .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_SPLITNAME" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_SPLITNAME" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_ssl.3 b/docs/man/upscli_ssl.3 index 87da86c..2e81a8c 100644 --- a/docs/man/upscli_ssl.3 +++ b/docs/man/upscli_ssl.3 @@ -2,12 +2,12 @@ .\" Title: upscli_ssl .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_SSL" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_SSL" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_strerror.3 b/docs/man/upscli_strerror.3 index a5549ff..85b41a5 100644 --- a/docs/man/upscli_strerror.3 +++ b/docs/man/upscli_strerror.3 @@ -2,12 +2,12 @@ .\" Title: upscli_strerror .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_STRERROR" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_STRERROR" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscli_upserror.3 b/docs/man/upscli_upserror.3 index 4aebd4f..ec7f7b6 100644 --- a/docs/man/upscli_upserror.3 +++ b/docs/man/upscli_upserror.3 @@ -2,12 +2,12 @@ .\" Title: upscli_upserror .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLI_UPSERROR" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLI_UPSERROR" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsclient.3 b/docs/man/upsclient.3 index 00f57f3..fa877c4 100644 --- a/docs/man/upsclient.3 +++ b/docs/man/upsclient.3 @@ -2,12 +2,12 @@ .\" Title: upsclient .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCLIENT" "3" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCLIENT" "3" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscmd.8 b/docs/man/upscmd.8 index 1bcdded..56c714e 100644 --- a/docs/man/upscmd.8 +++ b/docs/man/upscmd.8 @@ -2,12 +2,12 @@ .\" Title: upscmd .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCMD" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCMD" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upscode2.8 b/docs/man/upscode2.8 index 3cf38d9..27237d2 100644 --- a/docs/man/upscode2.8 +++ b/docs/man/upscode2.8 @@ -2,12 +2,12 @@ .\" Title: upscode2 .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSCODE2" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSCODE2" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsd.8 b/docs/man/upsd.8 index 746253e..fc8d312 100644 --- a/docs/man/upsd.8 +++ b/docs/man/upsd.8 @@ -2,12 +2,12 @@ .\" Title: upsd .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSD" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSD" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsd.conf.5 b/docs/man/upsd.conf.5 index c3f95cb..5e19b76 100644 --- a/docs/man/upsd.conf.5 +++ b/docs/man/upsd.conf.5 @@ -2,12 +2,12 @@ .\" Title: upsd.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSD\&.CONF" "5" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSD\&.CONF" "5" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsd.users.5 b/docs/man/upsd.users.5 index 73fe1b5..04d756e 100644 --- a/docs/man/upsd.users.5 +++ b/docs/man/upsd.users.5 @@ -2,12 +2,12 @@ .\" Title: upsd.users .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/25/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSD\&.USERS" "5" "05/25/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSD\&.USERS" "5" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsdrvctl.8 b/docs/man/upsdrvctl.8 index 909d855..dba092d 100644 --- a/docs/man/upsdrvctl.8 +++ b/docs/man/upsdrvctl.8 @@ -2,12 +2,12 @@ .\" Title: upsdrvctl .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSDRVCTL" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSDRVCTL" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsimage.cgi.8 b/docs/man/upsimage.cgi.8 index ab3f1ee..45f6dd3 100644 --- a/docs/man/upsimage.cgi.8 +++ b/docs/man/upsimage.cgi.8 @@ -2,12 +2,12 @@ .\" Title: upsimage.cgi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSIMAGE\&.CGI" "8" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSIMAGE\&.CGI" "8" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upslog.8 b/docs/man/upslog.8 index 2eb6121..539cdd0 100644 --- a/docs/man/upslog.8 +++ b/docs/man/upslog.8 @@ -2,12 +2,12 @@ .\" Title: upslog .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSLOG" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSLOG" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsmon.8 b/docs/man/upsmon.8 index 08bf7aa..e8b5883 100644 --- a/docs/man/upsmon.8 +++ b/docs/man/upsmon.8 @@ -2,12 +2,12 @@ .\" Title: upsmon .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSMON" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSMON" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsmon.conf.5 b/docs/man/upsmon.conf.5 index f2079f3..e348a6e 100644 --- a/docs/man/upsmon.conf.5 +++ b/docs/man/upsmon.conf.5 @@ -2,12 +2,12 @@ .\" Title: upsmon.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSMON\&.CONF" "5" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSMON\&.CONF" "5" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsrw.8 b/docs/man/upsrw.8 index 6a885bc..878e0e1 100644 --- a/docs/man/upsrw.8 +++ b/docs/man/upsrw.8 @@ -2,12 +2,12 @@ .\" Title: upsrw .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/24/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSRW" "8" "05/24/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSRW" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upssched.8 b/docs/man/upssched.8 index 0695d66..511b9e4 100644 --- a/docs/man/upssched.8 +++ b/docs/man/upssched.8 @@ -2,12 +2,12 @@ .\" Title: upssched .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSSCHED" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSSCHED" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upssched.conf.5 b/docs/man/upssched.conf.5 index 7ed2fb5..a2e0e43 100644 --- a/docs/man/upssched.conf.5 +++ b/docs/man/upssched.conf.5 @@ -2,12 +2,12 @@ .\" Title: upssched.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSSCHED\&.CONF" "5" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSSCHED\&.CONF" "5" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsset.cgi.8 b/docs/man/upsset.cgi.8 index d89ece6..30f5b21 100644 --- a/docs/man/upsset.cgi.8 +++ b/docs/man/upsset.cgi.8 @@ -2,12 +2,12 @@ .\" Title: upsset.cgi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSSET\&.CGI" "8" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSSET\&.CGI" "8" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsset.conf.5 b/docs/man/upsset.conf.5 index 931c821..e89a858 100644 --- a/docs/man/upsset.conf.5 +++ b/docs/man/upsset.conf.5 @@ -2,12 +2,12 @@ .\" Title: upsset.conf .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSSET\&.CONF" "5" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSSET\&.CONF" "5" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsstats.cgi.8 b/docs/man/upsstats.cgi.8 index 7ffbc0e..ed9bc01 100644 --- a/docs/man/upsstats.cgi.8 +++ b/docs/man/upsstats.cgi.8 @@ -2,12 +2,12 @@ .\" Title: upsstats.cgi .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSSTATS\&.CGI" "8" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSSTATS\&.CGI" "8" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/upsstats.html.5 b/docs/man/upsstats.html.5 index b305592..1952eea 100644 --- a/docs/man/upsstats.html.5 +++ b/docs/man/upsstats.html.5 @@ -2,12 +2,12 @@ .\" Title: upsstats.html .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/22/2012 +.\" Date: 08/08/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "UPSSTATS\&.HTML" "5" "05/22/2012" "Network UPS Tools" "NUT Manual" +.TH "UPSSTATS\&.HTML" "5" "08/08/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/usbhid-ups.8 b/docs/man/usbhid-ups.8 index 207bfb1..a4b9e6f 100644 --- a/docs/man/usbhid-ups.8 +++ b/docs/man/usbhid-ups.8 @@ -2,12 +2,12 @@ .\" Title: usbhid-ups .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "USBHID\-UPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "USBHID\-UPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/victronups.8 b/docs/man/victronups.8 index 412f19a..6ed84e9 100644 --- a/docs/man/victronups.8 +++ b/docs/man/victronups.8 @@ -2,12 +2,12 @@ .\" Title: victronups .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 05/21/2012 +.\" Date: 08/07/2012 .\" Manual: NUT Manual .\" Source: Network UPS Tools .\" Language: English .\" -.TH "VICTRONUPS" "8" "05/21/2012" "Network UPS Tools" "NUT Manual" +.TH "VICTRONUPS" "8" "08/07/2012" "Network UPS Tools" "NUT Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/new-clients.txt b/docs/new-clients.txt index 41c9804..fa02074 100644 --- a/docs/new-clients.txt +++ b/docs/new-clients.txt @@ -33,9 +33,9 @@ with `make` and `make install` as usual. This must be done before building other (non-NUT) programs which depend on them. For more information, refer to the linkman:upsclient[3], -manual page and the various -link:man/index.html#Developer_man[upscli_*(3)] functions documentation -referenced in the same file. +manual page and the various link:../man/index.html#devclient[upscli_*(3)] +functions documentation referenced in the same file. + Configuration helpers ~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/new-drivers.txt b/docs/new-drivers.txt index 40a887f..21d4a09 100644 --- a/docs/new-drivers.txt +++ b/docs/new-drivers.txt @@ -54,7 +54,7 @@ upsdrv_info_t This structure tracks several description information about the driver: - * *name*: the driver full name, for banner printing. + * *name*: the driver full name, for banner printing and "driver.name" variable. * *version*: the driver's own version. For sub driver information, refer below to sub_upsdrv_info. This value has the form "X.YZ", and is published by main as "driver.version.internal". diff --git a/docs/nut-names.txt b/docs/nut-names.txt index e2563ab..10a431a 100644 --- a/docs/nut-names.txt +++ b/docs/nut-names.txt @@ -87,6 +87,8 @@ ups: General unit information (seconds) | 1209600 (two weeks) | ups.test.result | Results of last self test (opaque string) | Bad battery pack +| ups.test.date | Date of last self test + (opaque string) | 07/17/12 | ups.display.language | Language to use on front panel (*** opaque) | E | ups.contacts | UPS external contact sensors @@ -256,10 +258,10 @@ Valid with/without context (ie. per phase or aggregated/averaged) | voltage.minimum | Minimum seen voltage (V) | power | Apparent power (VA) | power.maximum | Maximum seen apparent power (VA) -| power.minimum | Maximum seen apparent power (VA) +| power.minimum | Minimum seen apparent power (VA) | power.percent | Percentage of apparent power related to maximum load -| power.maximum.percent | Max seen percentage of apparent power -| power.minimum.percent | Min seen percentage of apparent power +| power.maximum.percent | Maximum seen percentage of apparent power +| power.minimum.percent | Minimum seen percentage of apparent power | realpower | Real power (W) | powerfactor | Power Factor (dimensionless value between 0.00 and 1.00) | crestfactor | Crest Factor (dimensionless value greater or equal to 1) @@ -320,6 +322,7 @@ battery: Any battery details (Ie battery.charge = 100) | 26,9 | battery.capacity | Battery capacity (Ah) | 7.2 | battery.current | Battery current (A) | 1.19 +| battery.current.total | Total battery current (A) | 1.19 | battery.temperature | Battery temperature (degrees C) | 050.7 | battery.runtime | Battery runtime (seconds) | 1080 | battery.runtime.low | Remaining battery runtime when @@ -344,32 +347,39 @@ battery: Any battery details ambient: Conditions from external probe equipment ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +NOTE: multiple sensors can be exposed using the indexed notation. +'ambient.*', without index or using '0', relates to the embedded sensor. +For example: 'ambient.temperature' represent the embedded sensor temperature. +Other sensors (external, communication card, ...) can use indexes +from '1' to 'n'. For example: 'ambient.1.temperature' for the first external +sensor temperature. + [options="header"] |=============================================================================== | Name | Description | Example value -| ambient.temperature | Ambient temperature +| ambient.n.temperature | Ambient temperature (degrees C) | 25.40 -| ambient.temperature.alarm | Temperature alarm +| ambient.n.temperature.alarm | Temperature alarm (enabled/disabled) | enabled -| ambient.temperature.high | Temperature threshold high +| ambient.n.temperature.high | Temperature threshold high (degrees C) | 40 -| ambient.temperature.low | Temperature threshold low +| ambient.n.temperature.low | Temperature threshold low (degrees C) | 5 -| ambient.temperature.maximum | Maximum temperature seen +| ambient.n.temperature.maximum | Maximum temperature seen (degrees C) | 37.6 -| ambient.temperature.minimum | Minimum temperature seen +| ambient.n.temperature.minimum | Minimum temperature seen (degrees C) | 18.1 -| ambient.humidity | Ambient relative humidity +| ambient.n.humidity | Ambient relative humidity (percent) | 038.8 -| ambient.humidity.alarm | Relative humidity alarm +| ambient.n.humidity.alarm | Relative humidity alarm (enabled/disabled) | enabled -| ambient.humidity.high | Relative humidity +| ambient.n.humidity.high | Relative humidity threshold high (percent) | 80 -| ambient.humidity.low | Relative humidity +| ambient.n.humidity.low | Relative humidity threshold high (percent) | 10 -| ambient.humidity.maximum | Maximum relative humidity +| ambient.n.humidity.maximum | Maximum relative humidity seen (percent) | 60 -| ambient.humidity.minimum | Minimum relative humidity +| ambient.n.humidity.minimum | Minimum relative humidity seen (percent) | 13 |=============================================================================== @@ -433,8 +443,9 @@ driver: Internal driver information | Name | Description | Example value | driver.name | Driver name | usbhid-ups | driver.version | Driver version (NUT release) | X.Y.Z -| driver.version.internal | Internal driver version - (if tracked separately) | 1.23.45 +| driver.version.internal | Internal driver version | 1.23.45 +| driver.version.data | Version of the internal data + mapping, for generic drivers | Eaton HID 1.31 | driver.parameter.xxx | Parameter xxx (ups.conf or cmdline -x) setting | (varies) | driver.flag.xxx | Flag xxx (ups.conf or diff --git a/docs/website/Makefile.am b/docs/website/Makefile.am index 0308139..bcf59b5 100644 --- a/docs/website/Makefile.am +++ b/docs/website/Makefile.am @@ -6,7 +6,7 @@ EXTRA_DIST = news.txt projects.txt website.txt \ $(FAVICON_FILES) IMAGE_FILES = images/asciidoc.png \ - images/eaton-logo.png \ + images/hostedby.png \ images/blue-arrow.png \ images/simple.png \ images/advanced.png \ diff --git a/docs/website/Makefile.in b/docs/website/Makefile.in index fc22885..3929fc3 100644 --- a/docs/website/Makefile.in +++ b/docs/website/Makefile.in @@ -84,6 +84,12 @@ 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@ @@ -187,6 +193,7 @@ 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@ @@ -253,7 +260,7 @@ EXTRA_DIST = news.txt projects.txt website.txt \ $(FAVICON_FILES) IMAGE_FILES = images/asciidoc.png \ - images/eaton-logo.png \ + images/hostedby.png \ images/blue-arrow.png \ images/simple.png \ images/advanced.png \ diff --git a/docs/website/css/web-layout.css b/docs/website/css/web-layout.css index 1edc014..c8580bc 100644 --- a/docs/website/css/web-layout.css +++ b/docs/website/css/web-layout.css @@ -139,3 +139,8 @@ td#driver-col { width: 30%; } #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 --git a/docs/website/news.txt b/docs/website/news.txt index e8f4f9e..5e2acb9 100644 --- a/docs/website/news.txt +++ b/docs/website/news.txt @@ -1,3 +1,7 @@ +- 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 diff --git a/docs/website/projects.txt b/docs/website/projects.txt index 5968036..59eeb88 100644 --- a/docs/website/projects.txt +++ b/docs/website/projects.txt @@ -55,11 +55,11 @@ 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.mgeops.org/[WMNUT] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +link:http://wmnut.networkupstools.org[WMNUT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -WMNut is a program to monitor multiple UPSs statistics through the NUT (Network -UPS Tools) framework on Linux and other systems. +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 -------------------------------------------- @@ -157,6 +157,8 @@ 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] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -198,6 +200,12 @@ 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] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/website/web-layout.conf b/docs/website/web-layout.conf index 18af913..9072e1b 100644 --- a/docs/website/web-layout.conf +++ b/docs/website/web-layout.conf @@ -83,9 +83,9 @@ endif::hcl[]

  • Support
  • Alioth Forge
  • - +
    @@ -142,22 +142,22 @@ ifndef::textonly[] Powered by AsciiDoc + alt="Powered by AsciiDoc"/> Valid XHTML 1.1 + alt="Valid XHTML 1.1"/> Valid CSS! + alt="Valid CSS!"/> - - Firefox Download Button + + Hoster endif::textonly[]
    diff --git a/drivers/Makefile.am b/drivers/Makefile.am index 72630d9..45eff04 100644 --- a/drivers/Makefile.am +++ b/drivers/Makefile.am @@ -36,7 +36,7 @@ endif SERIAL_DRIVERLIST = bcmxcp belkin belkinunv bestfcom \ bestfortress bestuferrups bestups dummy-ups etapro everups \ gamatronic genericups isbmex liebert liebert-esp2 masterguard metasys \ - mge-shut mge-utalk microdowell newmge-shut oneac optiups powercom rhino \ + oldmge-shut mge-utalk microdowell mge-shut oneac optiups powercom rhino \ safenet skel solis tripplite tripplitesu upscode2 victronups powerpanel \ blazer_ser clone clone-outlet ivtscd apcsmart apcsmart-old SNMP_DRIVERLIST = snmp-ups @@ -46,9 +46,10 @@ USB_DRIVERLIST = $(USB_LIBUSB_DRIVERLIST) HAL_DRIVERLIST = hald-addon-usbhid-ups hald-addon-bcmxcp_usb \ hald-addon-tripplite_usb hald-addon-blazer_usb NEONXML_DRIVERLIST = netxml-ups +MACOSX_DRIVERLIST = macosx-ups # distribute all drivers, even ones that are not built by default -EXTRA_PROGRAMS = $(SERIAL_DRIVERLIST) $(SNMP_DRIVERLIST) $(USB_DRIVERLIST) $(NEONXML_DRIVERLIST) +EXTRA_PROGRAMS = $(SERIAL_DRIVERLIST) $(SNMP_DRIVERLIST) $(USB_DRIVERLIST) $(NEONXML_DRIVERLIST) $(MACOSX_DRIVERLIST) # construct the list of drivers to build if SOME_DRIVERS @@ -77,6 +78,9 @@ endif if WITH_IPMI driverexec_PROGRAMS += nut-ipmipsu endif +if WITH_MACOSX + driverexec_PROGRAMS += $(MACOSX_DRIVERLIST) +endif else driverexec_PROGRAMS += skel endif @@ -114,7 +118,7 @@ liebert_SOURCES = liebert.c liebert_esp2_SOURCES = liebert-esp2.c masterguard_SOURCES = masterguard.c metasys_SOURCES = metasys.c -mge_shut_SOURCES = mge-shut.c hidparser.c +oldmge_shut_SOURCES = mge-shut.c hidparser.c mge_utalk_SOURCES = mge-utalk.c microdowell_SOURCES = microdowell.c oneac_SOURCES = oneac.c @@ -174,10 +178,10 @@ richcomm_usb_SOURCES = richcomm_usb.c usb-common.c richcomm_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) # HID-over-serial -newmge_shut_SOURCES = usbhid-ups.c libshut.c libhid.c hidparser.c mge-hid.c +mge_shut_SOURCES = usbhid-ups.c libshut.c libhid.c hidparser.c mge-hid.c # per-target CFLAGS are necessary here -newmge_shut_CFLAGS = $(AM_CFLAGS) -DSHUT_MODE -newmge_shut_LDADD = $(LDADD) +mge_shut_CFLAGS = $(AM_CFLAGS) -DSHUT_MODE +mge_shut_LDADD = $(LDADD) # SNMP snmp_ups_SOURCES = snmp-ups.c apc-mib.c baytech-mib.c compaq-mib.c eaton-mib.c \ @@ -214,6 +218,11 @@ if WITH_FREEIPMI endif nut_ipmipsu_LDADD = $(LDADD) $(LIBIPMI_LIBS) +# Mac OS X metadriver +macosx_ups_LDADD = $(LDADD_DRIVERS) +macosx_ups_LDFLAGS = $(LDFLAGS) -framework IOKit -framework CoreFoundation +macosx_ups_SOURCES = macosx-ups.c + # ---------------------------------------------------------------------- # List of header files. The purpose of this list is not dependency # tracking (which is automatic), but to ensure these files are diff --git a/drivers/Makefile.in b/drivers/Makefile.in index 8b2c02e..eda7250 100644 --- a/drivers/Makefile.in +++ b/drivers/Makefile.in @@ -45,27 +45,30 @@ target_triplet = @target@ @WITH_LIBPOWERMAN_TRUE@am__append_5 = $(LIBPOWERMAN_CFLAGS) @WITH_IPMI_TRUE@am__append_6 = $(LIBIPMI_CFLAGS) EXTRA_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_4) \ - $(am__EXEEXT_5) -@SOME_DRIVERS_FALSE@driverexec_PROGRAMS = $(am__EXEEXT_6) \ -@SOME_DRIVERS_FALSE@ $(am__EXEEXT_7) $(am__EXEEXT_8) \ -@SOME_DRIVERS_FALSE@ $(am__EXEEXT_9) $(am__EXEEXT_10) \ -@SOME_DRIVERS_FALSE@ $(am__EXEEXT_11) upsdrvctl$(EXEEXT) + $(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_TRUE@driverexec_PROGRAMS = $(DRIVER_BUILD_LIST) \ -@SOME_DRIVERS_TRUE@ $(am__EXEEXT_6) $(am__EXEEXT_7) \ -@SOME_DRIVERS_TRUE@ $(am__EXEEXT_8) $(am__EXEEXT_9) \ -@SOME_DRIVERS_TRUE@ $(am__EXEEXT_10) $(am__EXEEXT_11) \ -@SOME_DRIVERS_TRUE@ skel$(EXEEXT) upsdrvctl$(EXEEXT) +@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_12) +@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 -@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 +@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 subdir = drivers DIST_COMMON = $(dist_noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in @@ -114,8 +117,8 @@ am__EXEEXT_1 = bcmxcp$(EXEEXT) belkin$(EXEEXT) belkinunv$(EXEEXT) \ bestups$(EXEEXT) dummy-ups$(EXEEXT) etapro$(EXEEXT) \ everups$(EXEEXT) gamatronic$(EXEEXT) genericups$(EXEEXT) \ isbmex$(EXEEXT) liebert$(EXEEXT) liebert-esp2$(EXEEXT) \ - masterguard$(EXEEXT) metasys$(EXEEXT) mge-shut$(EXEEXT) \ - mge-utalk$(EXEEXT) microdowell$(EXEEXT) newmge-shut$(EXEEXT) \ + masterguard$(EXEEXT) metasys$(EXEEXT) oldmge-shut$(EXEEXT) \ + mge-utalk$(EXEEXT) microdowell$(EXEEXT) mge-shut$(EXEEXT) \ oneac$(EXEEXT) optiups$(EXEEXT) powercom$(EXEEXT) \ rhino$(EXEEXT) safenet$(EXEEXT) skel$(EXEEXT) solis$(EXEEXT) \ tripplite$(EXEEXT) tripplitesu$(EXEEXT) upscode2$(EXEEXT) \ @@ -128,16 +131,18 @@ am__EXEEXT_3 = usbhid-ups$(EXEEXT) bcmxcp_usb$(EXEEXT) \ richcomm_usb$(EXEEXT) am__EXEEXT_4 = $(am__EXEEXT_3) am__EXEEXT_5 = netxml-ups$(EXEEXT) -@SOME_DRIVERS_FALSE@@WITH_SERIAL_TRUE@am__EXEEXT_6 = $(am__EXEEXT_1) -@SOME_DRIVERS_FALSE@@WITH_SNMP_TRUE@am__EXEEXT_7 = $(am__EXEEXT_2) -@SOME_DRIVERS_FALSE@@WITH_USB_TRUE@am__EXEEXT_8 = $(am__EXEEXT_3) -@SOME_DRIVERS_FALSE@@WITH_NEON_TRUE@am__EXEEXT_9 = $(am__EXEEXT_5) -@SOME_DRIVERS_FALSE@@WITH_LIBPOWERMAN_TRUE@am__EXEEXT_10 = powerman-pdu$(EXEEXT) -@SOME_DRIVERS_FALSE@@WITH_IPMI_TRUE@am__EXEEXT_11 = \ +am__EXEEXT_6 = macosx-ups$(EXEEXT) +@SOME_DRIVERS_FALSE@@WITH_SERIAL_TRUE@am__EXEEXT_7 = $(am__EXEEXT_1) +@SOME_DRIVERS_FALSE@@WITH_SNMP_TRUE@am__EXEEXT_8 = $(am__EXEEXT_2) +@SOME_DRIVERS_FALSE@@WITH_USB_TRUE@am__EXEEXT_9 = $(am__EXEEXT_3) +@SOME_DRIVERS_FALSE@@WITH_NEON_TRUE@am__EXEEXT_10 = $(am__EXEEXT_5) +@SOME_DRIVERS_FALSE@@WITH_LIBPOWERMAN_TRUE@am__EXEEXT_11 = powerman-pdu$(EXEEXT) +@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_12 = hald-addon-usbhid-ups$(EXEEXT) \ +am__EXEEXT_14 = hald-addon-usbhid-ups$(EXEEXT) \ hald-addon-bcmxcp_usb$(EXEEXT) \ hald-addon-tripplite_usb$(EXEEXT) \ hald-addon-blazer_usb$(EXEEXT) @@ -264,6 +269,12 @@ am_liebert_esp2_OBJECTS = liebert-esp2.$(OBJEXT) liebert_esp2_OBJECTS = $(am_liebert_esp2_OBJECTS) liebert_esp2_LDADD = $(LDADD) liebert_esp2_DEPENDENCIES = $(am__DEPENDENCIES_2) +am_macosx_ups_OBJECTS = macosx-ups.$(OBJEXT) +macosx_ups_OBJECTS = $(am_macosx_ups_OBJECTS) +macosx_ups_DEPENDENCIES = $(LDADD_DRIVERS) +macosx_ups_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(macosx_ups_LDFLAGS) $(LDFLAGS) -o $@ am_masterguard_OBJECTS = masterguard.$(OBJEXT) masterguard_OBJECTS = $(am_masterguard_OBJECTS) masterguard_LDADD = $(LDADD) @@ -272,10 +283,14 @@ am_metasys_OBJECTS = metasys.$(OBJEXT) metasys_OBJECTS = $(am_metasys_OBJECTS) metasys_LDADD = $(LDADD) metasys_DEPENDENCIES = $(am__DEPENDENCIES_2) -am_mge_shut_OBJECTS = mge-shut.$(OBJEXT) hidparser.$(OBJEXT) +am_mge_shut_OBJECTS = mge_shut-usbhid-ups.$(OBJEXT) \ + mge_shut-libshut.$(OBJEXT) mge_shut-libhid.$(OBJEXT) \ + mge_shut-hidparser.$(OBJEXT) mge_shut-mge-hid.$(OBJEXT) mge_shut_OBJECTS = $(am_mge_shut_OBJECTS) -mge_shut_LDADD = $(LDADD) -mge_shut_DEPENDENCIES = $(am__DEPENDENCIES_2) +mge_shut_DEPENDENCIES = $(am__DEPENDENCIES_3) +mge_shut_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(mge_shut_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ am_mge_utalk_OBJECTS = mge-utalk.$(OBJEXT) mge_utalk_OBJECTS = $(am_mge_utalk_OBJECTS) mge_utalk_LDADD = $(LDADD) @@ -287,19 +302,15 @@ microdowell_DEPENDENCIES = $(am__DEPENDENCIES_2) am_netxml_ups_OBJECTS = netxml-ups.$(OBJEXT) mge-xml.$(OBJEXT) netxml_ups_OBJECTS = $(am_netxml_ups_OBJECTS) netxml_ups_DEPENDENCIES = $(LDADD_DRIVERS) $(am__DEPENDENCIES_1) -am_newmge_shut_OBJECTS = newmge_shut-usbhid-ups.$(OBJEXT) \ - newmge_shut-libshut.$(OBJEXT) newmge_shut-libhid.$(OBJEXT) \ - newmge_shut-hidparser.$(OBJEXT) newmge_shut-mge-hid.$(OBJEXT) -newmge_shut_OBJECTS = $(am_newmge_shut_OBJECTS) -newmge_shut_DEPENDENCIES = $(am__DEPENDENCIES_3) -newmge_shut_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(newmge_shut_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__nut_ipmipsu_SOURCES_DIST = nut-ipmipsu.c nut-libfreeipmi.c @WITH_FREEIPMI_TRUE@am__objects_2 = nut-libfreeipmi.$(OBJEXT) am_nut_ipmipsu_OBJECTS = nut-ipmipsu.$(OBJEXT) $(am__objects_2) nut_ipmipsu_OBJECTS = $(am_nut_ipmipsu_OBJECTS) nut_ipmipsu_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) +am_oldmge_shut_OBJECTS = mge-shut.$(OBJEXT) hidparser.$(OBJEXT) +oldmge_shut_OBJECTS = $(am_oldmge_shut_OBJECTS) +oldmge_shut_LDADD = $(LDADD) +oldmge_shut_DEPENDENCIES = $(am__DEPENDENCIES_2) am_oneac_OBJECTS = oneac.$(OBJEXT) oneac_OBJECTS = $(am_oneac_OBJECTS) oneac_LDADD = $(LDADD) @@ -394,11 +405,11 @@ SOURCES = $(libdummy_a_SOURCES) $(libnuthalmain_a_SOURCES) \ $(hald_addon_tripplite_usb_SOURCES) \ $(hald_addon_usbhid_ups_SOURCES) $(isbmex_SOURCES) \ $(ivtscd_SOURCES) $(liebert_SOURCES) $(liebert_esp2_SOURCES) \ - $(masterguard_SOURCES) $(metasys_SOURCES) $(mge_shut_SOURCES) \ - $(mge_utalk_SOURCES) $(microdowell_SOURCES) \ - $(netxml_ups_SOURCES) $(newmge_shut_SOURCES) \ - $(nut_ipmipsu_SOURCES) $(oneac_SOURCES) $(optiups_SOURCES) \ - $(powercom_SOURCES) $(powerman_pdu_SOURCES) \ + $(macosx_ups_SOURCES) $(masterguard_SOURCES) \ + $(metasys_SOURCES) $(mge_shut_SOURCES) $(mge_utalk_SOURCES) \ + $(microdowell_SOURCES) $(netxml_ups_SOURCES) \ + $(nut_ipmipsu_SOURCES) $(oldmge_shut_SOURCES) $(oneac_SOURCES) \ + $(optiups_SOURCES) $(powercom_SOURCES) $(powerman_pdu_SOURCES) \ $(powerpanel_SOURCES) $(rhino_SOURCES) $(richcomm_usb_SOURCES) \ $(safenet_SOURCES) $(skel_SOURCES) $(snmp_ups_SOURCES) \ $(solis_SOURCES) $(tripplite_SOURCES) $(tripplite_usb_SOURCES) \ @@ -417,16 +428,16 @@ DIST_SOURCES = $(libdummy_a_SOURCES) $(libnuthalmain_a_SOURCES) \ $(hald_addon_tripplite_usb_SOURCES) \ $(hald_addon_usbhid_ups_SOURCES) $(isbmex_SOURCES) \ $(ivtscd_SOURCES) $(liebert_SOURCES) $(liebert_esp2_SOURCES) \ - $(masterguard_SOURCES) $(metasys_SOURCES) $(mge_shut_SOURCES) \ - $(mge_utalk_SOURCES) $(microdowell_SOURCES) \ - $(netxml_ups_SOURCES) $(newmge_shut_SOURCES) \ - $(am__nut_ipmipsu_SOURCES_DIST) $(oneac_SOURCES) \ - $(optiups_SOURCES) $(powercom_SOURCES) $(powerman_pdu_SOURCES) \ - $(powerpanel_SOURCES) $(rhino_SOURCES) $(richcomm_usb_SOURCES) \ - $(safenet_SOURCES) $(skel_SOURCES) $(snmp_ups_SOURCES) \ - $(solis_SOURCES) $(tripplite_SOURCES) $(tripplite_usb_SOURCES) \ - $(tripplitesu_SOURCES) $(upscode2_SOURCES) \ - $(upsdrvctl_SOURCES) $(usbhid_ups_SOURCES) \ + $(macosx_ups_SOURCES) $(masterguard_SOURCES) \ + $(metasys_SOURCES) $(mge_shut_SOURCES) $(mge_utalk_SOURCES) \ + $(microdowell_SOURCES) $(netxml_ups_SOURCES) \ + $(am__nut_ipmipsu_SOURCES_DIST) $(oldmge_shut_SOURCES) \ + $(oneac_SOURCES) $(optiups_SOURCES) $(powercom_SOURCES) \ + $(powerman_pdu_SOURCES) $(powerpanel_SOURCES) $(rhino_SOURCES) \ + $(richcomm_usb_SOURCES) $(safenet_SOURCES) $(skel_SOURCES) \ + $(snmp_ups_SOURCES) $(solis_SOURCES) $(tripplite_SOURCES) \ + $(tripplite_usb_SOURCES) $(tripplitesu_SOURCES) \ + $(upscode2_SOURCES) $(upsdrvctl_SOURCES) $(usbhid_ups_SOURCES) \ $(victronups_SOURCES) HEADERS = $(dist_noinst_HEADERS) ETAGS = etags @@ -448,6 +459,12 @@ 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@ @@ -551,6 +568,7 @@ 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@ @@ -628,7 +646,7 @@ AM_CFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \ SERIAL_DRIVERLIST = bcmxcp belkin belkinunv bestfcom \ bestfortress bestuferrups bestups dummy-ups etapro everups \ gamatronic genericups isbmex liebert liebert-esp2 masterguard metasys \ - mge-shut mge-utalk microdowell newmge-shut oneac optiups powercom rhino \ + oldmge-shut mge-utalk microdowell mge-shut oneac optiups powercom rhino \ safenet skel solis tripplite tripplitesu upscode2 victronups powerpanel \ blazer_ser clone clone-outlet ivtscd apcsmart apcsmart-old @@ -641,6 +659,7 @@ HAL_DRIVERLIST = hald-addon-usbhid-ups hald-addon-bcmxcp_usb \ hald-addon-tripplite_usb hald-addon-blazer_usb NEONXML_DRIVERLIST = netxml-ups +MACOSX_DRIVERLIST = macosx-ups @SOME_DRIVERS_FALSE@@WITH_HAL_TRUE@halexecdir = $(HAL_CALLOUTS_PATH) # ========================================================================== @@ -673,7 +692,7 @@ liebert_SOURCES = liebert.c liebert_esp2_SOURCES = liebert-esp2.c masterguard_SOURCES = masterguard.c metasys_SOURCES = metasys.c -mge_shut_SOURCES = mge-shut.c hidparser.c +oldmge_shut_SOURCES = mge-shut.c hidparser.c mge_utalk_SOURCES = mge-utalk.c microdowell_SOURCES = microdowell.c oneac_SOURCES = oneac.c @@ -698,9 +717,9 @@ victronups_SOURCES = victronups.c # dummy dummy_ups_SOURCES = dummy-ups.c dummy_ups_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/clients \ - $(am__append_13) -dummy_ups_LDADD = $(LDADD_DRIVERS) ../clients/libupsclient.la \ $(am__append_14) +dummy_ups_LDADD = $(LDADD_DRIVERS) ../clients/libupsclient.la \ + $(am__append_15) # Clone drivers clone_SOURCES = clone.c @@ -728,10 +747,10 @@ richcomm_usb_SOURCES = richcomm_usb.c usb-common.c richcomm_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LIBS) # HID-over-serial -newmge_shut_SOURCES = usbhid-ups.c libshut.c libhid.c hidparser.c mge-hid.c +mge_shut_SOURCES = usbhid-ups.c libshut.c libhid.c hidparser.c mge-hid.c # per-target CFLAGS are necessary here -newmge_shut_CFLAGS = $(AM_CFLAGS) -DSHUT_MODE -newmge_shut_LDADD = $(LDADD) +mge_shut_CFLAGS = $(AM_CFLAGS) -DSHUT_MODE +mge_shut_LDADD = $(LDADD) # SNMP snmp_ups_SOURCES = snmp-ups.c apc-mib.c baytech-mib.c compaq-mib.c eaton-mib.c \ @@ -761,9 +780,14 @@ powerman_pdu_SOURCES = powerman-pdu.c powerman_pdu_LDADD = $(LDADD) $(LIBPOWERMAN_LIBS) # IPMI PSU -nut_ipmipsu_SOURCES = nut-ipmipsu.c $(am__append_15) +nut_ipmipsu_SOURCES = nut-ipmipsu.c $(am__append_16) nut_ipmipsu_LDADD = $(LDADD) $(LIBIPMI_LIBS) +# Mac OS X metadriver +macosx_ups_LDADD = $(LDADD_DRIVERS) +macosx_ups_LDFLAGS = $(LDFLAGS) -framework IOKit -framework CoreFoundation +macosx_ups_SOURCES = macosx-ups.c + # ---------------------------------------------------------------------- # List of header files. The purpose of this list is not dependency # tracking (which is automatic), but to ensure these files are @@ -1001,6 +1025,9 @@ liebert$(EXEEXT): $(liebert_OBJECTS) $(liebert_DEPENDENCIES) liebert-esp2$(EXEEXT): $(liebert_esp2_OBJECTS) $(liebert_esp2_DEPENDENCIES) @rm -f liebert-esp2$(EXEEXT) $(LINK) $(liebert_esp2_OBJECTS) $(liebert_esp2_LDADD) $(LIBS) +macosx-ups$(EXEEXT): $(macosx_ups_OBJECTS) $(macosx_ups_DEPENDENCIES) + @rm -f macosx-ups$(EXEEXT) + $(macosx_ups_LINK) $(macosx_ups_OBJECTS) $(macosx_ups_LDADD) $(LIBS) masterguard$(EXEEXT): $(masterguard_OBJECTS) $(masterguard_DEPENDENCIES) @rm -f masterguard$(EXEEXT) $(LINK) $(masterguard_OBJECTS) $(masterguard_LDADD) $(LIBS) @@ -1009,7 +1036,7 @@ metasys$(EXEEXT): $(metasys_OBJECTS) $(metasys_DEPENDENCIES) $(LINK) $(metasys_OBJECTS) $(metasys_LDADD) $(LIBS) mge-shut$(EXEEXT): $(mge_shut_OBJECTS) $(mge_shut_DEPENDENCIES) @rm -f mge-shut$(EXEEXT) - $(LINK) $(mge_shut_OBJECTS) $(mge_shut_LDADD) $(LIBS) + $(mge_shut_LINK) $(mge_shut_OBJECTS) $(mge_shut_LDADD) $(LIBS) mge-utalk$(EXEEXT): $(mge_utalk_OBJECTS) $(mge_utalk_DEPENDENCIES) @rm -f mge-utalk$(EXEEXT) $(LINK) $(mge_utalk_OBJECTS) $(mge_utalk_LDADD) $(LIBS) @@ -1019,12 +1046,12 @@ microdowell$(EXEEXT): $(microdowell_OBJECTS) $(microdowell_DEPENDENCIES) netxml-ups$(EXEEXT): $(netxml_ups_OBJECTS) $(netxml_ups_DEPENDENCIES) @rm -f netxml-ups$(EXEEXT) $(LINK) $(netxml_ups_OBJECTS) $(netxml_ups_LDADD) $(LIBS) -newmge-shut$(EXEEXT): $(newmge_shut_OBJECTS) $(newmge_shut_DEPENDENCIES) - @rm -f newmge-shut$(EXEEXT) - $(newmge_shut_LINK) $(newmge_shut_OBJECTS) $(newmge_shut_LDADD) $(LIBS) nut-ipmipsu$(EXEEXT): $(nut_ipmipsu_OBJECTS) $(nut_ipmipsu_DEPENDENCIES) @rm -f nut-ipmipsu$(EXEEXT) $(LINK) $(nut_ipmipsu_OBJECTS) $(nut_ipmipsu_LDADD) $(LIBS) +oldmge-shut$(EXEEXT): $(oldmge_shut_OBJECTS) $(oldmge_shut_DEPENDENCIES) + @rm -f oldmge-shut$(EXEEXT) + $(LINK) $(oldmge_shut_OBJECTS) $(oldmge_shut_LDADD) $(LIBS) oneac$(EXEEXT): $(oneac_OBJECTS) $(oneac_DEPENDENCIES) @rm -f oneac$(EXEEXT) $(LINK) $(oneac_OBJECTS) $(oneac_LDADD) $(LIBS) @@ -1130,6 +1157,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liebert-esp2.Po@am__quote@ @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@ @@ -1139,14 +1167,14 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mge-shut.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mge-utalk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mge-xml.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mge_shut-hidparser.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mge_shut-libhid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mge_shut-libshut.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mge_shut-mge-hid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mge_shut-usbhid-ups.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/microdowell.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netvision-mib.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netxml-ups.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newmge_shut-hidparser.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newmge_shut-libhid.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newmge_shut-libshut.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newmge_shut-mge-hid.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newmge_shut-usbhid-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)/oneac.Po@am__quote@ @@ -1211,75 +1239,75 @@ dummy_ups-dummy-ups.obj: dummy-ups.c @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` -newmge_shut-usbhid-ups.o: usbhid-ups.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-usbhid-ups.o -MD -MP -MF $(DEPDIR)/newmge_shut-usbhid-ups.Tpo -c -o newmge_shut-usbhid-ups.o `test -f 'usbhid-ups.c' || echo '$(srcdir)/'`usbhid-ups.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-usbhid-ups.Tpo $(DEPDIR)/newmge_shut-usbhid-ups.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usbhid-ups.c' object='newmge_shut-usbhid-ups.o' libtool=no @AMDEPBACKSLASH@ +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 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usbhid-ups.c' object='mge_shut-usbhid-ups.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-usbhid-ups.o `test -f 'usbhid-ups.c' || echo '$(srcdir)/'`usbhid-ups.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-usbhid-ups.o `test -f 'usbhid-ups.c' || echo '$(srcdir)/'`usbhid-ups.c -newmge_shut-usbhid-ups.obj: usbhid-ups.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-usbhid-ups.obj -MD -MP -MF $(DEPDIR)/newmge_shut-usbhid-ups.Tpo -c -o newmge_shut-usbhid-ups.obj `if test -f 'usbhid-ups.c'; then $(CYGPATH_W) 'usbhid-ups.c'; else $(CYGPATH_W) '$(srcdir)/usbhid-ups.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-usbhid-ups.Tpo $(DEPDIR)/newmge_shut-usbhid-ups.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usbhid-ups.c' object='newmge_shut-usbhid-ups.obj' libtool=no @AMDEPBACKSLASH@ +mge_shut-usbhid-ups.obj: usbhid-ups.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-usbhid-ups.obj -MD -MP -MF $(DEPDIR)/mge_shut-usbhid-ups.Tpo -c -o mge_shut-usbhid-ups.obj `if test -f 'usbhid-ups.c'; then $(CYGPATH_W) 'usbhid-ups.c'; else $(CYGPATH_W) '$(srcdir)/usbhid-ups.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-usbhid-ups.Tpo $(DEPDIR)/mge_shut-usbhid-ups.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usbhid-ups.c' object='mge_shut-usbhid-ups.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-usbhid-ups.obj `if test -f 'usbhid-ups.c'; then $(CYGPATH_W) 'usbhid-ups.c'; else $(CYGPATH_W) '$(srcdir)/usbhid-ups.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-usbhid-ups.obj `if test -f 'usbhid-ups.c'; then $(CYGPATH_W) 'usbhid-ups.c'; else $(CYGPATH_W) '$(srcdir)/usbhid-ups.c'; fi` -newmge_shut-libshut.o: libshut.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-libshut.o -MD -MP -MF $(DEPDIR)/newmge_shut-libshut.Tpo -c -o newmge_shut-libshut.o `test -f 'libshut.c' || echo '$(srcdir)/'`libshut.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-libshut.Tpo $(DEPDIR)/newmge_shut-libshut.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libshut.c' object='newmge_shut-libshut.o' libtool=no @AMDEPBACKSLASH@ +mge_shut-libshut.o: libshut.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-libshut.o -MD -MP -MF $(DEPDIR)/mge_shut-libshut.Tpo -c -o mge_shut-libshut.o `test -f 'libshut.c' || echo '$(srcdir)/'`libshut.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-libshut.Tpo $(DEPDIR)/mge_shut-libshut.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libshut.c' object='mge_shut-libshut.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-libshut.o `test -f 'libshut.c' || echo '$(srcdir)/'`libshut.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-libshut.o `test -f 'libshut.c' || echo '$(srcdir)/'`libshut.c -newmge_shut-libshut.obj: libshut.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-libshut.obj -MD -MP -MF $(DEPDIR)/newmge_shut-libshut.Tpo -c -o newmge_shut-libshut.obj `if test -f 'libshut.c'; then $(CYGPATH_W) 'libshut.c'; else $(CYGPATH_W) '$(srcdir)/libshut.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-libshut.Tpo $(DEPDIR)/newmge_shut-libshut.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libshut.c' object='newmge_shut-libshut.obj' libtool=no @AMDEPBACKSLASH@ +mge_shut-libshut.obj: libshut.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-libshut.obj -MD -MP -MF $(DEPDIR)/mge_shut-libshut.Tpo -c -o mge_shut-libshut.obj `if test -f 'libshut.c'; then $(CYGPATH_W) 'libshut.c'; else $(CYGPATH_W) '$(srcdir)/libshut.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-libshut.Tpo $(DEPDIR)/mge_shut-libshut.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libshut.c' object='mge_shut-libshut.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-libshut.obj `if test -f 'libshut.c'; then $(CYGPATH_W) 'libshut.c'; else $(CYGPATH_W) '$(srcdir)/libshut.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-libshut.obj `if test -f 'libshut.c'; then $(CYGPATH_W) 'libshut.c'; else $(CYGPATH_W) '$(srcdir)/libshut.c'; fi` -newmge_shut-libhid.o: libhid.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-libhid.o -MD -MP -MF $(DEPDIR)/newmge_shut-libhid.Tpo -c -o newmge_shut-libhid.o `test -f 'libhid.c' || echo '$(srcdir)/'`libhid.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-libhid.Tpo $(DEPDIR)/newmge_shut-libhid.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libhid.c' object='newmge_shut-libhid.o' libtool=no @AMDEPBACKSLASH@ +mge_shut-libhid.o: libhid.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-libhid.o -MD -MP -MF $(DEPDIR)/mge_shut-libhid.Tpo -c -o mge_shut-libhid.o `test -f 'libhid.c' || echo '$(srcdir)/'`libhid.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-libhid.Tpo $(DEPDIR)/mge_shut-libhid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libhid.c' object='mge_shut-libhid.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-libhid.o `test -f 'libhid.c' || echo '$(srcdir)/'`libhid.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-libhid.o `test -f 'libhid.c' || echo '$(srcdir)/'`libhid.c -newmge_shut-libhid.obj: libhid.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-libhid.obj -MD -MP -MF $(DEPDIR)/newmge_shut-libhid.Tpo -c -o newmge_shut-libhid.obj `if test -f 'libhid.c'; then $(CYGPATH_W) 'libhid.c'; else $(CYGPATH_W) '$(srcdir)/libhid.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-libhid.Tpo $(DEPDIR)/newmge_shut-libhid.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libhid.c' object='newmge_shut-libhid.obj' libtool=no @AMDEPBACKSLASH@ +mge_shut-libhid.obj: libhid.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-libhid.obj -MD -MP -MF $(DEPDIR)/mge_shut-libhid.Tpo -c -o mge_shut-libhid.obj `if test -f 'libhid.c'; then $(CYGPATH_W) 'libhid.c'; else $(CYGPATH_W) '$(srcdir)/libhid.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-libhid.Tpo $(DEPDIR)/mge_shut-libhid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libhid.c' object='mge_shut-libhid.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-libhid.obj `if test -f 'libhid.c'; then $(CYGPATH_W) 'libhid.c'; else $(CYGPATH_W) '$(srcdir)/libhid.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-libhid.obj `if test -f 'libhid.c'; then $(CYGPATH_W) 'libhid.c'; else $(CYGPATH_W) '$(srcdir)/libhid.c'; fi` -newmge_shut-hidparser.o: hidparser.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-hidparser.o -MD -MP -MF $(DEPDIR)/newmge_shut-hidparser.Tpo -c -o newmge_shut-hidparser.o `test -f 'hidparser.c' || echo '$(srcdir)/'`hidparser.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-hidparser.Tpo $(DEPDIR)/newmge_shut-hidparser.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hidparser.c' object='newmge_shut-hidparser.o' libtool=no @AMDEPBACKSLASH@ +mge_shut-hidparser.o: hidparser.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-hidparser.o -MD -MP -MF $(DEPDIR)/mge_shut-hidparser.Tpo -c -o mge_shut-hidparser.o `test -f 'hidparser.c' || echo '$(srcdir)/'`hidparser.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-hidparser.Tpo $(DEPDIR)/mge_shut-hidparser.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hidparser.c' object='mge_shut-hidparser.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-hidparser.o `test -f 'hidparser.c' || echo '$(srcdir)/'`hidparser.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-hidparser.o `test -f 'hidparser.c' || echo '$(srcdir)/'`hidparser.c -newmge_shut-hidparser.obj: hidparser.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-hidparser.obj -MD -MP -MF $(DEPDIR)/newmge_shut-hidparser.Tpo -c -o newmge_shut-hidparser.obj `if test -f 'hidparser.c'; then $(CYGPATH_W) 'hidparser.c'; else $(CYGPATH_W) '$(srcdir)/hidparser.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-hidparser.Tpo $(DEPDIR)/newmge_shut-hidparser.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hidparser.c' object='newmge_shut-hidparser.obj' libtool=no @AMDEPBACKSLASH@ +mge_shut-hidparser.obj: hidparser.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-hidparser.obj -MD -MP -MF $(DEPDIR)/mge_shut-hidparser.Tpo -c -o mge_shut-hidparser.obj `if test -f 'hidparser.c'; then $(CYGPATH_W) 'hidparser.c'; else $(CYGPATH_W) '$(srcdir)/hidparser.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-hidparser.Tpo $(DEPDIR)/mge_shut-hidparser.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hidparser.c' object='mge_shut-hidparser.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-hidparser.obj `if test -f 'hidparser.c'; then $(CYGPATH_W) 'hidparser.c'; else $(CYGPATH_W) '$(srcdir)/hidparser.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-hidparser.obj `if test -f 'hidparser.c'; then $(CYGPATH_W) 'hidparser.c'; else $(CYGPATH_W) '$(srcdir)/hidparser.c'; fi` -newmge_shut-mge-hid.o: mge-hid.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-mge-hid.o -MD -MP -MF $(DEPDIR)/newmge_shut-mge-hid.Tpo -c -o newmge_shut-mge-hid.o `test -f 'mge-hid.c' || echo '$(srcdir)/'`mge-hid.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-mge-hid.Tpo $(DEPDIR)/newmge_shut-mge-hid.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mge-hid.c' object='newmge_shut-mge-hid.o' libtool=no @AMDEPBACKSLASH@ +mge_shut-mge-hid.o: mge-hid.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-mge-hid.o -MD -MP -MF $(DEPDIR)/mge_shut-mge-hid.Tpo -c -o mge_shut-mge-hid.o `test -f 'mge-hid.c' || echo '$(srcdir)/'`mge-hid.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-mge-hid.Tpo $(DEPDIR)/mge_shut-mge-hid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mge-hid.c' object='mge_shut-mge-hid.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-mge-hid.o `test -f 'mge-hid.c' || echo '$(srcdir)/'`mge-hid.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-mge-hid.o `test -f 'mge-hid.c' || echo '$(srcdir)/'`mge-hid.c -newmge_shut-mge-hid.obj: mge-hid.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(newmge_shut_CFLAGS) $(CFLAGS) -MT newmge_shut-mge-hid.obj -MD -MP -MF $(DEPDIR)/newmge_shut-mge-hid.Tpo -c -o newmge_shut-mge-hid.obj `if test -f 'mge-hid.c'; then $(CYGPATH_W) 'mge-hid.c'; else $(CYGPATH_W) '$(srcdir)/mge-hid.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/newmge_shut-mge-hid.Tpo $(DEPDIR)/newmge_shut-mge-hid.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mge-hid.c' object='newmge_shut-mge-hid.obj' libtool=no @AMDEPBACKSLASH@ +mge_shut-mge-hid.obj: mge-hid.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -MT mge_shut-mge-hid.obj -MD -MP -MF $(DEPDIR)/mge_shut-mge-hid.Tpo -c -o mge_shut-mge-hid.obj `if test -f 'mge-hid.c'; then $(CYGPATH_W) 'mge-hid.c'; else $(CYGPATH_W) '$(srcdir)/mge-hid.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mge_shut-mge-hid.Tpo $(DEPDIR)/mge_shut-mge-hid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mge-hid.c' object='mge_shut-mge-hid.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) $(newmge_shut_CFLAGS) $(CFLAGS) -c -o newmge_shut-mge-hid.obj `if test -f 'mge-hid.c'; then $(CYGPATH_W) 'mge-hid.c'; else $(CYGPATH_W) '$(srcdir)/mge-hid.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mge_shut_CFLAGS) $(CFLAGS) -c -o mge_shut-mge-hid.obj `if test -f 'mge-hid.c'; then $(CYGPATH_W) 'mge-hid.c'; else $(CYGPATH_W) '$(srcdir)/mge-hid.c'; fi` mostlyclean-libtool: -rm -f *.lo diff --git a/drivers/apc-mib.c b/drivers/apc-mib.c index 368504c..8851a6f 100644 --- a/drivers/apc-mib.c +++ b/drivers/apc-mib.c @@ -1,8 +1,9 @@ /* apc-mib.c - data to monitor APC SNMP devices (Powernet MIB) with NUT * - * Copyright (C) 2002-2003 - * Dmitry Frolov - * Arnaud Quette + * Copyright (C) + * 2002-2003 - Dmitry Frolov + * 2002-2012 - Arnaud Quette + * 2012 - Chew Hong Gunn (high precision values) * * Sponsored by MGE UPS SYSTEMS * @@ -25,7 +26,7 @@ #include "apc-mib.h" -#define APCC_MIB_VERSION "1.1" +#define APCC_MIB_VERSION "1.2" /* Other APC sysOID: * @@ -45,6 +46,15 @@ /* TODO: find the right sysOID for this MIB * Ie ".1.3.6.1.4.1.318.1.1.1" or ".1.3.6.1.4.1.318" or? */ +/* .1.3.6.1.4.1.318.1.1.1 + * enterprise^ + * apc ---------^ + * products ------^ + * hardware --------^ + * ups ---------------^ + * ref: ftp://ftp.apc.com/apc/public/software/pnetmib/mib/404/powernet404.mib + */ + /* info elements */ #define APCC_OID_BATT_STATUS ".1.3.6.1.4.1.318.1.1.1.2.1.1.0" @@ -107,6 +117,19 @@ static info_lkp_t apcc_sensitivity_modes[] = { { 0, "NULL" } }; +#define APCC_OID_TRANSFERREASON "1.3.6.1.4.1.318.1.1.1.3.2.5.0" +static info_lkp_t apcc_transfer_reasons[] = { + { 1, "noTransfer" }, + { 2, "highLineVoltage" }, + { 3, "brownout" }, + { 4, "blackout" }, + { 5, "smallMomentarySag" }, + { 6, "deepMomentarySag" }, + { 7, "smallMomentarySpike" }, + { 8, "largeMomentarySpike" }, + { 9, "selfTest" }, + { 10, "rateOfVoltageChange" } +}; /* --- */ @@ -130,7 +153,12 @@ static snmp_info_t apcc_mib[] = { { "ups.model", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.318.1.1.1.1.1.1.0", "Generic Powernet SNMP device", SU_FLAG_STATIC | SU_FLAG_OK, NULL }, { "ups.serial", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.318.1.1.1.1.2.3.0", "", SU_FLAG_STATIC | SU_FLAG_OK, NULL }, { "ups.mfr.date", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.318.1.1.1.1.2.2.0", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL }, + { "input.voltage", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.3.3.1.0", "", SU_FLAG_OK | SU_FLAG_NEGINVALID | SU_FLAG_UNIQUE, NULL }, + { "input.voltage.maximum", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.3.3.2.0", "", SU_FLAG_OK | SU_FLAG_NEGINVALID | SU_FLAG_UNIQUE, NULL }, + { "input.voltage.minimum", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.3.3.3.0", "", SU_FLAG_OK | SU_FLAG_NEGINVALID | SU_FLAG_UNIQUE, NULL }, { "input.voltage", 0, 1, ".1.3.6.1.4.1.318.1.1.1.3.2.1.0", "", SU_FLAG_OK, NULL }, + { "input.voltage.maximum", 0, 1, ".1.3.6.1.4.1.318.1.1.1.3.2.2.0", "", SU_FLAG_OK, NULL }, + { "input.voltage.minimum", 0, 1, ".1.3.6.1.4.1.318.1.1.1.3.2.3.0", "", SU_FLAG_OK, NULL }, { "input.phases", ST_FLAG_STRING, 2, ".1.3.6.1.4.1.318.1.1.1.9.2.2.1.2.1", "", SU_FLAG_STATIC | SU_FLAG_OK, NULL }, { "input.L1-L2.voltage", 0, 1, ".1.3.6.1.4.1.318.1.1.1.9.2.3.1.3.1.1.1", "", SU_FLAG_OK|SU_FLAG_NEGINVALID, NULL }, { "input.L2-L3.voltage", 0, 1, ".1.3.6.1.4.1.318.1.1.1.9.2.3.1.3.1.1.2", "", SU_FLAG_OK|SU_FLAG_NEGINVALID, NULL }, @@ -151,9 +179,11 @@ static snmp_info_t apcc_mib[] = { { "input.L2.current.minimum", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.9.2.3.1.8.1.1.2", "", SU_FLAG_OK|SU_FLAG_NEGINVALID, NULL }, { "input.L3.current.minimum", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.9.2.3.1.8.1.1.3", "", SU_FLAG_OK|SU_FLAG_NEGINVALID, NULL }, { "input.frequency", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.9.2.2.1.4.1", "", SU_FLAG_OK|SU_FLAG_NEGINVALID|SU_FLAG_UNIQUE, NULL }, + { "input.frequency", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.3.3.4.0", "", SU_FLAG_OK|SU_FLAG_NEGINVALID|SU_FLAG_UNIQUE, NULL }, { "input.frequency", 0, 1, ".1.3.6.1.4.1.318.1.1.1.3.2.4.0", "", SU_FLAG_OK, NULL }, { "input.transfer.low", ST_FLAG_STRING | ST_FLAG_RW, 3, ".1.3.6.1.4.1.318.1.1.1.5.2.3.0", "", SU_TYPE_INT | SU_FLAG_OK, NULL }, { "input.transfer.high", ST_FLAG_STRING | ST_FLAG_RW, 3, ".1.3.6.1.4.1.318.1.1.1.5.2.2.0", "", SU_TYPE_INT | SU_FLAG_OK, NULL }, + { "input.transfer.reason", ST_FLAG_STRING, 1, APCC_OID_TRANSFERREASON, "", SU_TYPE_INT | SU_FLAG_OK, apcc_transfer_reasons }, { "input.sensitivity", ST_FLAG_STRING | ST_FLAG_RW, 1, APCC_OID_SENSITIVITY, "", SU_TYPE_INT | SU_FLAG_OK, apcc_sensitivity_modes }, { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, APCC_OID_POWER_STATUS, "OFF", SU_FLAG_OK | SU_STATUS_PWR, apcc_pwr_info }, @@ -163,27 +193,37 @@ static snmp_info_t apcc_mib[] = { SU_FLAG_OK | SU_STATUS_CAL, apcc_cal_info }, { "ups.status", ST_FLAG_STRING, SU_INFOSIZE, APCC_OID_NEEDREPLBATT, "", SU_FLAG_OK | SU_STATUS_RB, apcc_battrepl_info }, + { "ups.temperature", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.2.3.2.0", "", SU_FLAG_OK|SU_FLAG_UNIQUE, NULL }, { "ups.temperature", 0, 1, ".1.3.6.1.4.1.318.1.1.1.2.2.2.0", "", SU_FLAG_OK, NULL }, + { "ups.load", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.4.3.3.0", "", SU_FLAG_OK|SU_FLAG_NEGINVALID|SU_FLAG_UNIQUE, NULL }, { "ups.load", 0, 1, ".1.3.6.1.4.1.318.1.1.1.4.2.3.0", "", SU_FLAG_OK, NULL }, { "ups.firmware", ST_FLAG_STRING, 16, ".1.3.6.1.4.1.318.1.1.1.1.2.1.0", "", SU_FLAG_STATIC | SU_FLAG_OK, NULL }, { "ups.delay.shutdown", ST_FLAG_STRING | ST_FLAG_RW, 3, ".1.3.6.1.4.1.318.1.1.1.5.2.10.0", "", SU_FLAG_OK, NULL }, { "ups.delay.start", ST_FLAG_STRING | ST_FLAG_RW, 3, ".1.3.6.1.4.1.318.1.1.1.5.2.9.0", "", SU_FLAG_OK, NULL }, + { "battery.charge", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.2.3.1.0", "", SU_FLAG_OK|SU_FLAG_NEGINVALID|SU_FLAG_UNIQUE, NULL }, { "battery.charge", 0, 1, ".1.3.6.1.4.1.318.1.1.1.2.2.1.0", "", SU_FLAG_OK, NULL }, { "battery.charge.restart", ST_FLAG_STRING | ST_FLAG_RW, 3, ".1.3.6.1.4.1.318.1.1.1.5.2.6.0", "", SU_TYPE_INT | SU_FLAG_OK, NULL }, { "battery.runtime", 0, 1, ".1.3.6.1.4.1.318.1.1.1.2.2.3.0", "", SU_FLAG_OK, NULL }, { "battery.runtime.low", ST_FLAG_STRING | ST_FLAG_RW, 3, ".1.3.6.1.4.1.318.1.1.1.5.2.8.0", "", SU_FLAG_OK, NULL }, + { "battery.voltage", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.2.3.4.0", "", SU_FLAG_OK|SU_FLAG_NEGINVALID|SU_FLAG_UNIQUE, NULL }, { "battery.voltage", 0, 1, ".1.3.6.1.4.1.318.1.1.1.2.2.8.0", "", SU_FLAG_OK, NULL }, { "battery.voltage.nominal", 0, 1, ".1.3.6.1.4.1.318.1.1.1.2.2.7.0", "", SU_FLAG_OK, NULL }, + { "battery.current", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.2.3.5.0", "", SU_FLAG_OK|SU_FLAG_UNIQUE, NULL }, { "battery.current", 0, 1, ".1.3.6.1.4.1.318.1.1.1.2.2.9.0", "", SU_FLAG_OK, NULL }, + { "battery.current.total", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.2.3.6.0", "", SU_FLAG_OK, NULL }, { "battery.packs", 0, 1, ".1.3.6.1.4.1.318.1.1.1.2.2.5.0", "", SU_FLAG_OK, NULL }, { "battery.packs.bad", 0, 1, ".1.3.6.1.4.1.318.1.1.1.2.2.6.0", "", SU_FLAG_OK, NULL }, { "battery.date", ST_FLAG_STRING | ST_FLAG_RW, 8, ".1.3.6.1.4.1.318.1.1.1.2.1.3.0", "", SU_FLAG_OK | SU_FLAG_STATIC | SU_TYPE_STRING, NULL }, { "ups.id", ST_FLAG_STRING | ST_FLAG_RW, 8, ".1.3.6.1.4.1.318.1.1.1.1.1.2.0", "", SU_FLAG_OK | SU_FLAG_STATIC | SU_TYPE_STRING, NULL }, { "ups.test.result", ST_FLAG_STRING, SU_INFOSIZE, APCC_OID_TESTDIAGRESULTS, "", SU_FLAG_OK, apcc_testdiag_results }, + { "ups.test.date", ST_FLAG_STRING | ST_FLAG_RW, 8, ".1.3.6.1.4.1.318.1.1.1.7.2.4.0", "", SU_FLAG_OK | SU_FLAG_STATIC | SU_TYPE_STRING, NULL }, + { "output.voltage", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.4.3.1.0", "", SU_FLAG_OK | SU_FLAG_UNIQUE, NULL }, { "output.voltage", 0, 1, ".1.3.6.1.4.1.318.1.1.1.4.2.1.0", "", SU_FLAG_OK, NULL }, { "output.phases", ST_FLAG_STRING, 2, ".1.3.6.1.4.1.318.1.1.1.9.3.2.1.2.1", "", SU_FLAG_STATIC | SU_FLAG_OK, NULL }, { "output.frequency", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.9.3.2.1.4.1", "", SU_FLAG_OK|SU_FLAG_NEGINVALID|SU_FLAG_UNIQUE, NULL }, + { "output.frequency", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.4.3.2.0", "", SU_FLAG_OK|SU_FLAG_NEGINVALID|SU_FLAG_UNIQUE, NULL }, { "output.frequency", 0, 1, ".1.3.6.1.4.1.318.1.1.1.4.2.2.0", "", SU_FLAG_OK, NULL }, + { "output.current", 0, 0.1, ".1.3.6.1.4.1.318.1.1.1.4.3.4.0", "", SU_FLAG_OK|SU_FLAG_NEGINVALID|SU_FLAG_UNIQUE, NULL }, { "output.current", 0, 1, ".1.3.6.1.4.1.318.1.1.1.4.2.4.0", "", SU_FLAG_OK, NULL }, { "output.L1-L2.voltage", 0, 1, ".1.3.6.1.4.1.318.1.1.1.9.3.3.1.3.1.1.1", "", SU_FLAG_OK|SU_FLAG_NEGINVALID, NULL }, { "output.L2-L3.voltage", 0, 1, ".1.3.6.1.4.1.318.1.1.1.9.3.3.1.3.1.1.2", "", SU_FLAG_OK|SU_FLAG_NEGINVALID, NULL }, @@ -220,11 +260,11 @@ static snmp_info_t apcc_mib[] = { /* Measure-UPS ambient variables */ /* Environmental sensors (AP9612TH and others) */ { "ambient.temperature", 0, 1, ".1.3.6.1.4.1.318.1.1.2.1.1.0", "", SU_FLAG_OK, NULL }, - { "ambient.temperature.high", 0, 1, ".1.3.6.1.4.1.318.1.1.10.1.2.2.1.3.1", "", SU_FLAG_OK, NULL }, - { "ambient.temperature.low", 0, 1, ".1.3.6.1.4.1.318.1.1.10.1.2.2.1.4.1", "", SU_FLAG_OK, NULL }, + { "ambient.1.temperature.alarm.high", 0, 1, ".1.3.6.1.4.1.318.1.1.10.1.2.2.1.3.1", "", SU_FLAG_OK, NULL }, + { "ambient.1.temperature.alarm.low", 0, 1, ".1.3.6.1.4.1.318.1.1.10.1.2.2.1.4.1", "", SU_FLAG_OK, NULL }, { "ambient.humidity", 0, 1, ".1.3.6.1.4.1.318.1.1.2.1.2.0", "", SU_FLAG_OK, NULL }, - { "ambient.humidity.high", 0, 1, ".1.3.6.1.4.1.318.1.1.10.1.2.2.1.6.1", "", SU_FLAG_OK, NULL }, - { "ambient.humidity.low", 0, 1, ".1.3.6.1.4.1.318.1.1.10.1.2.2.1.7.1", "", SU_FLAG_OK, NULL }, + { "ambient.1.humidity.alarm.high", 0, 1, ".1.3.6.1.4.1.318.1.1.10.1.2.2.1.6.1", "", SU_FLAG_OK, NULL }, + { "ambient.1.humidity.alarm.low", 0, 1, ".1.3.6.1.4.1.318.1.1.10.1.2.2.1.7.1", "", SU_FLAG_OK, NULL }, /* IEM ambient variables */ /* IEM: integrated environment monitor probe */ diff --git a/drivers/apcsmart.c b/drivers/apcsmart.c index 1f5ab12..cb1d4f5 100644 --- a/drivers/apcsmart.c +++ b/drivers/apcsmart.c @@ -56,11 +56,10 @@ static int ups_status = 0; #define VDISCARD VDISCRD #endif /* VDISCRD && !VDISCARD */ - #ifndef CTRL -#define CONTROL(x) (x&037) +#define CONTROL(x) (x&037) #else -#define CONTROL CTRL +#define CONTROL CTRL #endif /* @@ -71,55 +70,54 @@ static int ups_status = 0; #define CDISCARD CONTROL('O') #endif #ifndef CDSUSP -#define CDSUSP CONTROL('Y') +#define CDSUSP CONTROL('Y') #endif #ifndef CEOF -#define CEOF CONTROL('D') +#define CEOF CONTROL('D') #endif #ifndef CEOL #define CEOL 0xff /* was 0 */ #endif #ifndef CERASE -#define CERASE 0177 +#define CERASE 0177 #endif #ifndef CINTR -#define CINTR CONTROL('C') +#define CINTR CONTROL('C') #endif #ifndef CKILL #define CKILL CONTROL('U') /* was '@' */ #endif #ifndef CLNEXT -#define CLNEXT CONTROL('V') +#define CLNEXT CONTROL('V') #endif #ifndef CMIN -#define CMIN CEOF +#define CMIN CEOF #endif #ifndef CQUIT -#define CQUIT CONTROL('\\') +#define CQUIT CONTROL('\\') #endif #ifndef CRPRNT -#define CRPRNT CONTROL('R') +#define CRPRNT CONTROL('R') #endif #ifndef CREPRINT #define CREPRINT CRPRNT #endif #ifndef CSTART -#define CSTART CONTROL('Q') +#define CSTART CONTROL('Q') #endif #ifndef CSTOP -#define CSTOP CONTROL('S') +#define CSTOP CONTROL('S') #endif #ifndef CSUSP -#define CSUSP CONTROL('Z') +#define CSUSP CONTROL('Z') #endif #ifndef CTIME -#define CTIME CEOL +#define CTIME CEOL #endif #ifndef CWERASE #define CWERASE CONTROL('W') #endif - /* some forwards */ static int sdcmd_S(const void *); @@ -141,7 +139,7 @@ static int (*sdlist[])(const void *) = { #define SDIDX_K 2 #define SDIDX_Z 3 #define SDIDX_CS 4 -#define SDCNT ((int)(sizeof(sdlist)/sizeof(sdlist[0]))) +#define SDCNT ((int)(sizeof(sdlist)/sizeof(sdlist[0]))) static apc_vartab_t *vartab_lookup_char(char cmdchar) { @@ -241,6 +239,84 @@ static const char *convert_data(apc_vartab_t *cmd_entry, const char *upsval) return temp; } +/* report differences if tcsetattr != tcgetattr, return otherwise */ +static void apc_ser_diff(struct termios *tioset, struct termios *tioget) +{ + size_t i; + const char dir[] = { 's', 'g' }; + struct termios *tio[] = { tioset, tioget }; + struct cchar { + const char *name; + int sub; + u_char def; + }; + const struct cchar cchars1[] = { +#ifdef VDISCARD + { "discard", VDISCARD, CDISCARD }, +#endif +#ifdef VDSUSP + { "dsusp", VDSUSP, CDSUSP }, +#endif + { "eof", VEOF, CEOF }, + { "eol", VEOL, CEOL }, + { "eol2", VEOL2, CEOL }, + { "erase", VERASE, CERASE }, +#ifdef VINTR + { "intr", VINTR, CINTR }, +#endif + { "kill", VKILL, CKILL }, + { "lnext", VLNEXT, CLNEXT }, + { "min", VMIN, CMIN }, + { "quit", VQUIT, CQUIT }, +#ifdef VREPRINT + { "reprint", VREPRINT, CREPRINT }, +#endif + { "start", VSTART, CSTART }, +#ifdef VSTATUS + { "status", VSTATUS, CSTATUS }, +#endif + { "stop", VSTOP, CSTOP }, + { "susp", VSUSP, CSUSP }, + { "time", VTIME, CTIME }, + { "werase", VWERASE, CWERASE }, + { NULL }, + }, *cp; + + /* clear status flags so that they don't affect our binary compare */ +#if defined(PENDIN) || defined(FLUSHO) + for (i = 0; i < sizeof(tio)/sizeof(tio[0]); i++) { +#ifdef PENDIN + tio[i]->c_lflag &= ~PENDIN; +#endif +#ifdef FLUSHO + tio[i]->c_lflag &= ~FLUSHO; +#endif + } +#endif /* defined(PENDIN) || defined(FLUSHO) */ + + if (!memcmp(tio[0], tio[1], sizeof(*tio[0]))) + return; + + upslogx(LOG_NOTICE, "%s: device reports different attributes than what were set", device_path); + + /* + * According to the manual the most common problem is mis-matched + * combinations of input and output baud rates. If the combination is + * not supported then neither are changed. This should not be a + * problem here since we set them both to the same extremely common + * rate of 2400. + */ + + for (i = 0; i < sizeof(tio)/sizeof(tio[0]); i++) { + upsdebugx(1, "tc%cetattr(): gfmt1:cflag=%x:iflag=%x:lflag=%x:oflag=%x:", dir[i], + (unsigned int) tio[i]->c_cflag, (unsigned int) tio[i]->c_iflag, + (unsigned int) tio[i]->c_lflag, (unsigned int) tio[i]->c_oflag); + for (cp = cchars1; cp->name; ++cp) + upsdebugx(1, "\t%s=%x:", cp->name, tio[i]->c_cc[cp->sub]); + upsdebugx(1, "\tispeed=%d:ospeed=%d", (int) cfgetispeed(tio[i]), (int) cfgetospeed(tio[i])); + } +} + static void apc_ser_set(void) { struct termios tio, tio_chk; @@ -298,92 +374,11 @@ static void apc_ser_set(void) if (tcsetattr(upsfd, TCSANOW, &tio)) fatal_with_errno(EXIT_FAILURE, "tcsetattr(%s)", device_path); - /* clear status flags so that they don't affect our binary compare */ -#ifdef PENDIN - tio.c_lflag &= ~PENDIN; -#endif -#ifdef FLUSHO - tio.c_lflag &= ~FLUSHO; -#endif - memset(&tio_chk, 0, sizeof(tio_chk)); if (tcgetattr(upsfd, &tio_chk)) fatal_with_errno(EXIT_FAILURE, "tcgetattr(%s)", device_path); - /* clear status flags so that they don't affect our binary compare */ -#ifdef PENDIN - tio_chk.c_lflag &= ~PENDIN; -#endif -#ifdef FLUSHO - tio_chk.c_lflag &= ~FLUSHO; -#endif - - if (memcmp(&tio_chk, &tio, sizeof(tio))) { - struct cchar { - const char *name; - int sub; - u_char def; - }; - const struct cchar cchars1[] = { -#ifdef VDISCARD - { "discard", VDISCARD, CDISCARD }, -#endif -#ifdef VDSUSP - { "dsusp", VDSUSP, CDSUSP }, -#endif - { "eof", VEOF, CEOF }, - { "eol", VEOL, CEOL }, - { "eol2", VEOL2, CEOL }, - { "erase", VERASE, CERASE }, -#ifdef VINTR - { "intr", VINTR, CINTR }, -#endif - { "kill", VKILL, CKILL }, - { "lnext", VLNEXT, CLNEXT }, - { "min", VMIN, CMIN }, - { "quit", VQUIT, CQUIT }, -#ifdef VREPRINT - { "reprint", VREPRINT, CREPRINT }, -#endif - { "start", VSTART, CSTART }, -#ifdef VSTATUS - { "status", VSTATUS, CSTATUS }, -#endif - { "stop", VSTOP, CSTOP }, - { "susp", VSUSP, CSUSP }, - { "time", VTIME, CTIME }, - { "werase", VWERASE, CWERASE }, - { .name = NULL }, - }; - const struct cchar *cp; - struct termios *tp; - - upslogx(LOG_NOTICE, "%s: device reports different attributes than what were set", device_path); - - /* - * According to the manual the most common problem is - * mis-matched combinations of input and output baud rates. If - * the combination is not supported then neither are changed. - * This should not be a problem here since we set them both to - * the same extremely common rate of 2400. - */ - - tp = &tio; - upsdebugx(1, "tcsetattr(): gfmt1:cflag=%x:iflag=%x:lflag=%x:oflag=%x:", - (unsigned int) tp->c_cflag, (unsigned int) tp->c_iflag, - (unsigned int) tp->c_lflag, (unsigned int) tp->c_oflag); - for (cp = cchars1; cp->name; ++cp) - upsdebugx(1, "\t%s=%x:", cp->name, tp->c_cc[cp->sub]); - upsdebugx(1, "\tispeed=%d:ospeed=%d", (int) cfgetispeed(tp), (int) cfgetospeed(tp)); - - tp = &tio_chk; - upsdebugx(1, "tcgetattr(): gfmt1:cflag=%x:iflag=%x:lflag=%x:oflag=%x:", - (unsigned int) tp->c_cflag, (unsigned int) tp->c_iflag, - (unsigned int) tp->c_lflag, (unsigned int) tp->c_oflag); - for (cp = cchars1; cp->name; ++cp) - upsdebugx(1, "\t%s=%x:", cp->name, tp->c_cc[cp->sub]); - upsdebugx(1, "\tispeed=%d:ospeed=%d", (int) cfgetispeed(tp), (int) cfgetospeed(tp)); - } + apc_ser_diff(&tio, &tio_chk); cable = getval("cable"); if (cable && !strcasecmp(cable, ALT_CABLE_1)) { diff --git a/drivers/belkinunv.c b/drivers/belkinunv.c index 5698313..c5abda2 100644 --- a/drivers/belkinunv.c +++ b/drivers/belkinunv.c @@ -36,7 +36,6 @@ battery.runtime battery.voltage battery.voltage.nominal - driver.version.internal input.frequency input.frequency.nominal e.g. 60 for 60Hz input.sensitivity (RW) normal/medium/low diff --git a/drivers/blazer_usb.c b/drivers/blazer_usb.c index 1104071..0651eea 100644 --- a/drivers/blazer_usb.c +++ b/drivers/blazer_usb.c @@ -28,7 +28,7 @@ #include "blazer.h" #define DRIVER_NAME "Megatec/Q1 protocol USB driver" -#define DRIVER_VERSION "0.08" +#define DRIVER_VERSION "0.09" /* driver description structure */ upsdrv_info_t upsdrv_info = { @@ -351,6 +351,7 @@ static usb_device_id_t blazer_usb_id[] = { { USB_DEVICE(0x06da, 0x0004), &cypress_subdriver }, /* Phoenixtec Innova 3/1 T */ { USB_DEVICE(0x06da, 0x0005), &cypress_subdriver }, /* Phoenixtec Innova RT */ { USB_DEVICE(0x06da, 0x0201), &cypress_subdriver }, /* Phoenixtec Innova T */ + { USB_DEVICE(0x06da, 0x0601), &phoenix_subdriver }, /* Online Zinto A */ { USB_DEVICE(0x0f03, 0x0001), &cypress_subdriver }, /* Unitek Alpha 1200Sx */ { USB_DEVICE(0x14f0, 0x00c9), &phoenix_subdriver }, /* GE EP series */ /* end of list */ diff --git a/drivers/eaton-mib.c b/drivers/eaton-mib.c index 6da265b..b06006e 100644 --- a/drivers/eaton-mib.c +++ b/drivers/eaton-mib.c @@ -1,10 +1,11 @@ /* eaton-mib.c - data to monitor Eaton Aphel PDUs (Basic and Complex) * - * Copyright (C) 2008 - 2010 - * Arnaud Quette + * Copyright (C) 2008 - 2012 + * Arnaud Quette + * Arnaud Quette * - * Sponsored by Eaton - * and MGE Office Protection Systems + * Supported by Eaton + * and previously MGE Office Protection Systems * * 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 @@ -348,7 +349,112 @@ static snmp_info_t eaton_marlin_mib[] = { { NULL, 0, 0, NULL, NULL, 0, NULL, NULL } }; +/* Pulizzi Monitored ePDU (Basic model, SNMP only) + * FIXME: to be completed + * + * Warning: there are 2 versions: + * - SA built MI.mib (old MIB) + * #define PULIZZI1_OID_MIB ".1.3.6.1.4.1.20677.3.1.1" + * #define PULIZZI1_OID_MODEL_NAME ".1.3.6.1.4.1.20677.3.1.1.1.2.0" + * - Eaton-Powerware-Monitored-ePDU_1.0.E.mib (new MIB) Vertical SW + */ + + +/* Pulizzi Switched ePDU */ + +#define EATON_PULIZZI_SW_MIB_VERSION "0.1" + +#define PULIZZI_SW_OID_MIB ".1.3.6.1.4.1.20677.3.1.1" +#define PULIZZI_SW_OID_MODEL_NAME ".1.3.6.1.4.1.20677.2.1.1.0" + +/* Some buggy FW also report sysOID = ".1.3.6.1.4.1.20677.1" */ +#define EATON_PULIZZI_SWITCHED1_SYSOID ".1.3.6.1.4.1.20677.1" +#define EATON_PULIZZI_SWITCHED2_SYSOID ".1.3.6.1.4.1.20677.2" + + +static info_lkp_t pulizzi_sw_outlet_status_info[] = { + { 1, "on" }, + { 2, "off" }, + { 0, NULL } +}; + +/* simply remap the above status to "yes" */ +static info_lkp_t pulizzi_sw_outlet_switchability_info[] = { + { 1, "yes" }, + { 2, "yes" }, + { 0, NULL } +}; + +/* Snmp2NUT lookup table for Eaton Pulizzi Switched ePDU MIB */ +static snmp_info_t eaton_pulizzi_switched_mib[] = { + /* Device page */ + { "device.mfr", ST_FLAG_STRING, SU_INFOSIZE, NULL, "EATON | Powerware", + SU_FLAG_STATIC | SU_FLAG_ABSENT | SU_FLAG_OK, NULL, NULL }, + { "device.model", ST_FLAG_STRING, SU_INFOSIZE, PULIZZI_SW_OID_MODEL_NAME, + "Switched ePDU", SU_FLAG_STATIC | SU_FLAG_OK, NULL, NULL }, + { "device.type", ST_FLAG_STRING, SU_INFOSIZE, NULL, "pdu", + SU_FLAG_STATIC | SU_FLAG_ABSENT | SU_FLAG_OK, NULL, NULL }, + + /* UPS page */ + { "ups.mfr", ST_FLAG_STRING, SU_INFOSIZE, NULL, "EATON", + SU_FLAG_STATIC | SU_FLAG_ABSENT | SU_FLAG_OK, NULL, NULL }, + { "ups.model", ST_FLAG_STRING, SU_INFOSIZE, PULIZZI_SW_OID_MODEL_NAME, + "Switched ePDU", SU_FLAG_STATIC | SU_FLAG_OK, NULL, NULL }, + /* FIXME: to be moved to the device collection! */ + { "ups.date", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.20677.2.1.4.0", + "", SU_FLAG_STATIC | SU_FLAG_OK, NULL, NULL }, + { "ups.time", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.20677.2.1.3.0", + "", SU_FLAG_STATIC | SU_FLAG_OK, NULL, NULL }, + { "ups.macaddr", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.20677.2.2.6.0", + "unknown", 0, NULL, NULL }, + + /* Outlet page */ + /* Note: outlet.count is deduced, with guestimate_outlet_count() */ + { "outlet.id", 0, 1, NULL, "0", SU_FLAG_STATIC | SU_FLAG_ABSENT | SU_FLAG_OK, NULL }, + { "outlet.desc", ST_FLAG_RW | ST_FLAG_STRING, 20, NULL, "All outlets", + SU_FLAG_STATIC | SU_FLAG_ABSENT | SU_FLAG_OK, NULL }, + + { "outlet.current", 0, 1.0, ".1.3.6.1.4.1.20677.2.8.6.4.2.0", NULL, 0, NULL, NULL }, + { "outlet.voltage", 0, 1.0, ".1.3.6.1.4.1.20677.2.8.6.4.1.0", NULL, 0, NULL, NULL }, + { "outlet.power", 0, 1.0, ".1.3.6.1.4.1.20677.2.8.6.4.3.0", NULL, 0, NULL, NULL }, + + /* outlet template definition + * Notes: + * - indexes start from 1, ie outlet.1 => .1 + * - the first definition is used to determine the base index (ie 0 or 1) + * - outlet.count is estimated, based on the below OID iteration capabilities */ + { "outlet.%i.desc", ST_FLAG_RW | ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.20677.2.6.1.%i.1.0", NULL, SU_FLAG_STATIC | SU_FLAG_OK | SU_OUTLET, NULL, NULL }, + { "outlet.%i.status", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.20677.2.6.3.%i.0", + NULL, SU_FLAG_OK | SU_OUTLET, &pulizzi_sw_outlet_status_info[0], NULL }, + { "outlet.%i.id", 0, 1, NULL, "%i", SU_FLAG_STATIC | SU_FLAG_ABSENT | SU_FLAG_OK | SU_OUTLET, NULL, NULL }, + /* we use the same OID as outlet.n.status..., to expose switchability */ + { "outlet.%i.switchable", ST_FLAG_STRING, SU_INFOSIZE, ".1.3.6.1.4.1.20677.2.6.3.%i.0", "yes", SU_FLAG_STATIC | SU_FLAG_OK | SU_OUTLET, &pulizzi_sw_outlet_switchability_info[0], NULL }, + /* FIXME: need to be added to the namespace! */ + { "outlet.%i.delay.reboot", ST_FLAG_RW, SU_INFOSIZE, ".1.3.6.1.4.1.20677.2.6.1.%i.5.0", NULL, SU_OUTLET, NULL, NULL }, + /* "outlet1SequenceTime" is used for global sequence */ + { "outlet.%i.delay.start", ST_FLAG_RW, SU_INFOSIZE, ".1.3.6.1.4.1.20677.2.6.1.%i.4.0", NULL, SU_OUTLET, NULL, NULL }, + + /* instant commands. */ + /* FIXME: not exposed as "outlet.load...", or otherwise specific processing applies (template instanciation) */ + { "load.on", 0, 1, ".1.3.6.1.4.1.20677.2.6.2.1.0", NULL, SU_TYPE_CMD, NULL, NULL }, + { "load.off", 0, 2, ".1.3.6.1.4.1.20677.2.6.2.1.0", NULL, SU_TYPE_CMD, NULL, NULL }, + { "load.on.delay", 0, 3, ".1.3.6.1.4.1.20677.2.6.2.1.0", NULL, SU_TYPE_CMD, NULL, NULL }, + { "load.off.delay", 0, 4, ".1.3.6.1.4.1.20677.2.6.2.1.0", NULL, SU_TYPE_CMD, NULL, NULL }, + + /* WARNING: outlet 1 => index 2! */ + { "outlet.%i.load.on", 0, 1, ".1.3.6.1.4.1.20677.2.6.2.%i.0", NULL, SU_TYPE_CMD | SU_OUTLET | SU_CMD_OFFSET, NULL, NULL }, + { "outlet.%i.load.off", 0, 2, ".1.3.6.1.4.1.20677.2.6.2.%i.0", NULL, SU_TYPE_CMD | SU_OUTLET | SU_CMD_OFFSET, NULL, NULL }, + { "outlet.%i.load.cycle", 0, 3, ".1.3.6.1.4.1.20677.2.6.2.%i.0", NULL, SU_TYPE_CMD | SU_OUTLET | SU_CMD_OFFSET, NULL, NULL }, + + /* end of structure. */ + { NULL, 0, 0, NULL, NULL, 0, NULL, NULL } +}; + + mib2nut_info_t aphel_genesisII = { "aphel_genesisII", EATON_APHEL_MIB_VERSION, "", APHEL1_OID_MODEL_NAME, eaton_aphel_genesisII_mib, APHEL1_SYSOID }; mib2nut_info_t aphel_revelation = { "aphel_revelation", EATON_APHEL_MIB_VERSION, "", APHEL2_OID_MODEL_NAME, eaton_aphel_revelation_mib, APHEL2_SYSOID }; mib2nut_info_t eaton_marlin = { "eaton_epdu", EATON_MARLIN_MIB_VERSION, "", EATON_MARLIN_OID_MODEL_NAME, eaton_marlin_mib, EATON_MARLIN_SYSOID }; +/*mib2nut_info_t pulizzi_monitored = { "pulizzi_monitored", EATON_PULIZZI_MIB_VERSION, "", PULIZZI1_OID_MODEL_NAME, eaton_pulizzi_monitored_mib, PULIZZI1_OID_MIB };*/ +mib2nut_info_t pulizzi_switched1 = { "pulizzi_switched1", EATON_PULIZZI_SW_MIB_VERSION, "", EATON_PULIZZI_SWITCHED1_SYSOID, eaton_pulizzi_switched_mib, EATON_PULIZZI_SWITCHED1_SYSOID }; +mib2nut_info_t pulizzi_switched2 = { "pulizzi_switched2", EATON_PULIZZI_SW_MIB_VERSION, "", EATON_PULIZZI_SWITCHED1_SYSOID, eaton_pulizzi_switched_mib, EATON_PULIZZI_SWITCHED2_SYSOID }; diff --git a/drivers/eaton-mib.h b/drivers/eaton-mib.h index 4997066..d5223e6 100644 --- a/drivers/eaton-mib.h +++ b/drivers/eaton-mib.h @@ -7,5 +7,7 @@ extern mib2nut_info_t aphel_genesisII; extern mib2nut_info_t aphel_revelation; extern mib2nut_info_t eaton_marlin; +extern mib2nut_info_t pulizzi_switched1; +extern mib2nut_info_t pulizzi_switched2; #endif /* EATON_MIB_H */ diff --git a/drivers/macosx-ups.c b/drivers/macosx-ups.c new file mode 100644 index 0000000..11ed475 --- /dev/null +++ b/drivers/macosx-ups.c @@ -0,0 +1,440 @@ +/* Bridge driver to read Mac OS X UPS status (as displayed in Energy Saver control panel) + * + * Copyright (C) 2011-2012 Charles Lepple + * + * 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 + +#include "CoreFoundation/CoreFoundation.h" +#include "IOKit/ps/IOPowerSources.h" +#include "IOKit/ps/IOPSKeys.h" + +#define DRIVER_NAME "Mac OS X UPS meta-driver" +#define DRIVER_VERSION "1.0" + +/* driver description structure */ +upsdrv_info_t upsdrv_info = { + DRIVER_NAME, + DRIVER_VERSION, + "Charles Lepple ", + DRV_EXPERIMENTAL, + { NULL } +}; + +#if 0 +#define CFRelease(ref) do { upsdebugx(3, "%s:%d: CFRelease(%p)", __FILE__, __LINE__, ref); CFRelease(ref); } while(0) +#endif + +static CFStringRef g_power_key = NULL; +static double max_capacity_value = 100.0; + +/*! Copy the current power dictionary. + * + * Caller must release power dictionary when finished with it. + */ +static CFDictionaryRef copy_power_dictionary(CFTypeRef power_key) +{ + CFTypeRef power_blob; + CFDictionaryRef power_dictionary; + + power_blob = IOPSCopyPowerSourcesInfo(); + + assert(power_blob); + upsdebugx(6, "%s: Got power_blob:", __func__); + if(nut_debug_level >= 6) CFShow(power_blob); + + upsdebugx(5, "power_key = "); + if(nut_debug_level >= 5) CFShow(power_key); + upsdebugx(6, "end power_key"); + + power_dictionary = IOPSGetPowerSourceDescription(power_blob, power_key); + + upsdebugx(5, "Asserting 'power_dictionary': %p", power_dictionary); + assert(power_dictionary); + upsdebugx(5, "CFShowing 'power_dictionary'"); + if(nut_debug_level >= 5) CFShow(power_dictionary); + + CFRetain(power_dictionary); + + /* Get a new power_blob next time: */ + CFRelease(power_blob); + + return power_dictionary; +} + +void upsdrv_initinfo(void) +{ + /* try to detect the UPS here - call fatal_with_errno(EXIT_FAILURE, ) if it fails */ + + char device_name[80] = ""; + CFStringRef device_type_cfstr, device_name_cfstr; + CFPropertyListRef power_dictionary; + CFNumberRef max_capacity; + + upsdebugx(1, "upsdrv_initinfo()"); + + dstate_setinfo("device.mfr", "(unknown)"); + + power_dictionary = copy_power_dictionary(g_power_key); + + device_type_cfstr = CFDictionaryGetValue(power_dictionary, CFSTR(kIOPSTypeKey)); + if(device_type_cfstr && !CFStringCompare(device_type_cfstr, CFSTR(kIOPSInternalBatteryType), 0)) { + dstate_setinfo("device.type", "battery"); + } + + upsdebugx(2, "Getting 'Name' key"); + + device_name_cfstr = CFDictionaryGetValue(power_dictionary, CFSTR(kIOPSNameKey)); + + if (!device_name_cfstr) { + fatalx(EXIT_FAILURE, "Couldn't retrieve 'Name' key from power dictionary."); + } + + CFRetain(device_name_cfstr); + + CFStringGetCString(device_name_cfstr, device_name, sizeof(device_name), kCFStringEncodingUTF8); + upsdebugx(2, "Got name: %s", device_name); + + CFRelease(device_name_cfstr); + + dstate_setinfo("device.model", "%s", device_name); + + max_capacity = CFDictionaryGetValue(power_dictionary, CFSTR(kIOPSMaxCapacityKey)); + if(max_capacity) { + CFRetain(max_capacity); + + CFNumberGetValue(max_capacity, kCFNumberDoubleType, &max_capacity_value); + CFRelease(max_capacity); + + upsdebugx(3, "Max Capacity = %.f units (usually 100)", max_capacity_value); + if(max_capacity_value != 100) { + upsdebugx(1, "Max Capacity: %f != 100", max_capacity_value); + } + } + + /* upsh.instcmd = instcmd; */ + CFRelease(power_dictionary); +} + +void upsdrv_updateinfo(void) +{ + CFPropertyListRef power_dictionary; + CFStringRef power_source_state; + CFNumberRef battery_voltage, battery_runtime; + CFNumberRef current_capacity; + CFBooleanRef is_charging; + double max_capacity_value = 100.0, current_capacity_value; + + upsdebugx(1, "upsdrv_updateinfo()"); + + power_dictionary = copy_power_dictionary( g_power_key ); + assert(power_dictionary); /* TODO: call dstate_datastale()? */ + + status_init(); + + /* Retrieve OL/OB state */ + power_source_state = CFDictionaryGetValue(power_dictionary, CFSTR(kIOPSPowerSourceStateKey)); + assert(power_source_state); + CFRetain(power_source_state); + + upsdebugx(3, "Power Source State:"); + if(nut_debug_level >= 3) CFShow(power_source_state); + + if(!CFStringCompare(power_source_state, CFSTR(kIOPSACPowerValue), 0)) { + status_set("OL"); + } else { + status_set("OB"); + } + + CFRelease(power_source_state); + + /* Retrieve CHRG state */ + is_charging = CFDictionaryGetValue(power_dictionary, CFSTR(kIOPSIsChargingKey)); + if(is_charging) { + Boolean is_charging_value; + + is_charging_value = CFBooleanGetValue(is_charging); + if(is_charging_value) { + status_set("CHRG"); + } + } + + status_commit(); + + /* Retrieve battery voltage */ + + battery_voltage = CFDictionaryGetValue(power_dictionary, CFSTR(kIOPSVoltageKey)); + if(battery_voltage) { + int battery_voltage_value; + + CFNumberGetValue(battery_voltage, kCFNumberIntType, &battery_voltage_value); + upsdebugx(2, "battery_voltage = %d mV", battery_voltage_value); + dstate_setinfo("battery.voltage", "%.3f", battery_voltage_value/1000.0); + } + + /* Retrieve battery runtime */ + battery_runtime = CFDictionaryGetValue(power_dictionary, CFSTR(kIOPSTimeToEmptyKey)); + if(battery_runtime) { + double battery_runtime_value; + + CFNumberGetValue(battery_runtime, kCFNumberDoubleType, &battery_runtime_value); + + upsdebugx(2, "battery_runtime = %.f minutes", battery_runtime_value); + if(battery_runtime_value > 0) { + dstate_setinfo("battery.runtime", "%d", (int)(battery_runtime_value*60)); + } else { + dstate_delinfo("battery.runtime"); + } + } else { + dstate_delinfo("battery.runtime"); + } + + /* Retrieve current capacity */ + current_capacity = CFDictionaryGetValue(power_dictionary, CFSTR(kIOPSCurrentCapacityKey)); + if(current_capacity) { + CFNumberGetValue(current_capacity, kCFNumberDoubleType, ¤t_capacity_value); + + upsdebugx(2, "Current Capacity = %.f/%.f units", current_capacity_value, max_capacity_value); + if(max_capacity_value > 0) { + dstate_setinfo("battery.charge", "%.f", 100.0 * current_capacity_value / max_capacity_value); + } + } + + /* TODO: it should be possible to set poll_interval (and maxage in the + * server) to an absurdly large value, and use notify(3) to get + * updates. + */ + + /* + * poll_interval = 2; + */ + + dstate_dataok(); + CFRelease(power_dictionary); +} + +void upsdrv_shutdown(void) +{ + /* tell the UPS to shut down, then return - DO NOT SLEEP HERE */ + + /* maybe try to detect the UPS here, but try a shutdown even if + it doesn't respond at first if possible */ + + /* NOTE: Mac OS X already has shutdown routines - this driver is more + for monitoring and notification purposes. Still, there is a key that + might be useful to set in SystemConfiguration land. */ + fatalx(EXIT_FAILURE, "shutdown not supported"); + + /* you may have to check the line status since the commands + for toggling power are frequently different for OL vs. OB */ + + /* OL: this must power cycle the load if possible */ + + /* OB: the load must remain off until the power returns */ +} + +/* +static int instcmd(const char *cmdname, const char *extra) +{ + if (!strcasecmp(cmdname, "test.battery.stop")) { + ser_send_buf(upsfd, ...); + return STAT_INSTCMD_HANDLED; + } + + upslogx(LOG_NOTICE, "instcmd: unknown command [%s]", cmdname); + return STAT_INSTCMD_UNKNOWN; +} +*/ + +/* TODO: + There is a configuration file here: + /Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist + with several keys under UPSDefaultThresholds: + + * UPSShutdownAfterMinutes + * UPSShutdownAtLevel + * UPSShutdownAtMinutesLeft + + It is not likely that these keys can be written, but they might be good values for NUT variables. + + In conjunction with 'ignorelb' and a delta, this could be used to synthesize a + LB status right before the computer shuts down. +*/ + +/* +static int setvar(const char *varname, const char *val) +{ + if (!strcasecmp(varname, "ups.test.interval")) { + ser_send_buf(upsfd, ...); + return STAT_SET_HANDLED; + } + + upslogx(LOG_NOTICE, "setvar: unknown variable [%s]", varname); + return STAT_SET_UNKNOWN; +} +*/ + +void upsdrv_help(void) +{ +} + +/* list flags and values that you want to receive via -x */ +void upsdrv_makevartable(void) +{ + /* allow '-x xyzzy' */ + /* addvar(VAR_FLAG, "xyzzy", "Enable xyzzy mode"); */ + + /* allow '-x foo=' */ + /* addvar(VAR_VALUE, "foo", "Override foo setting"); */ + + addvar(VAR_VALUE, "model", "Regular Expression to match power source model name"); +} + +void upsdrv_initups(void) +{ + CFArrayRef power_source_key_list; + CFIndex num_keys, index; + CFDictionaryRef power_dictionary; + CFTypeRef power_blob; + CFStringRef potential_key, potential_model; + char *device_name = device_path, *model_name; /* regex(3) */ + char potential_device_name[80], potential_model_name[80]; + regex_t name_regex, model_regex; + int ret; + + upsdebugx(3, "upsdrv_initups(): Power Sources blob:"); + /* upsfd = ser_open(device_path); */ + /* ser_set_speed(upsfd, device_path, B1200); */ + power_blob = IOPSCopyPowerSourcesInfo(); + if(!power_blob) { + fatalx(EXIT_FAILURE, "Couldn't retrieve Power Sources blob"); + } + + if(nut_debug_level >= 3) CFShow(power_blob); + + if(!strcmp(device_name, "auto")) { + device_name = "/UPS"; + } + + upsdebugx(2, "Matching power supply key names against regex '%s'", device_name); + + ret = regcomp(&name_regex, device_name, REG_EXTENDED|REG_NOSUB|REG_ICASE); + + if(ret) { + fatalx(EXIT_FAILURE, + "Failed to compile regex from 'port' parameter: '%s'.", + device_name); + } + + if((model_name = getval("model"))) { + upsdebugx(2, "Matching power supply model names against regex '%s'", model_name); + ret = regcomp(&model_regex, model_name, REG_EXTENDED|REG_NOSUB|REG_ICASE); + + if(ret) { + fatalx(EXIT_FAILURE, + "Failed to compile regex from 'model' parameter: '%s'.", + model_name); + } + } + + power_source_key_list = IOPSCopyPowerSourcesList(power_blob); + + num_keys = CFArrayGetCount(power_source_key_list); + upsdebugx(1, "Number of power supplies found: %d", (int)num_keys); + + if(nut_debug_level >= 3) CFShow(power_source_key_list); + + if(num_keys < 1) { + /* bail */ + fatalx(EXIT_FAILURE, "Couldn't find any UPS or battery"); + } + + for(index=0; index < num_keys; index++) { + potential_key = CFArrayGetValueAtIndex(power_source_key_list, index); + CFStringGetCString(potential_key, potential_device_name, + sizeof(potential_device_name), kCFStringEncodingUTF8); + upsdebugx(1, " Power supply: %s", potential_device_name); + + ret = regexec(&name_regex, potential_device_name, 0,0,0); + + power_dictionary = copy_power_dictionary(potential_key); + + upsdebugx(2, "Getting 'Name' key (UPS model)"); + + potential_model = CFDictionaryGetValue(power_dictionary, CFSTR(kIOPSNameKey)); + CFStringGetCString(potential_model, potential_model_name, sizeof(potential_model_name), kCFStringEncodingUTF8); + upsdebugx(1, " model name: %s", potential_model_name); + + CFRelease(power_dictionary); + + /* Does key match? Check model: */ + if (!ret) { + if(model_name) { + ret = regexec(&model_regex, potential_model_name, 0,0,0); + if(!ret) { + upsdebugx(2, "Matched model name"); + break; + } + } else { + upsdebugx(2, "Matched key name"); + break; + } + } + } + + regfree(&name_regex); + if(model_name) { + regfree(&model_regex); + } + + if(ret) { + fatalx(EXIT_FAILURE, "Couldn't find UPS or battery matching both 'port' (%s) and 'model' (%s)", + device_name, model_name); + } + + g_power_key = potential_key; + CFRetain(g_power_key); + upsdebugx(2, "g_power_key = "); + if(nut_debug_level >= 2) CFShow(g_power_key); + upsdebugx(2, "end g_power_key."); + + power_dictionary = copy_power_dictionary(g_power_key); + assert(power_dictionary); + if(nut_debug_level >= 3) CFShow(power_dictionary); + + /* the upsh handlers can't be done here, as they get initialized + * shortly after upsdrv_initups returns to main. + */ + + /* don't try to detect the UPS here */ + + /* do stuff */ + + CFRelease(power_dictionary); +} + +void upsdrv_cleanup(void) +{ + upsdebugx(1, "Cleanup: release references"); + CFRelease(g_power_key); + + /* free(dynamic_mem); */ + /* ser_close(upsfd, device_path); */ +} diff --git a/drivers/main.c b/drivers/main.c index 66caa36..7c2fc55 100644 --- a/drivers/main.c +++ b/drivers/main.c @@ -623,7 +623,7 @@ int main(int argc, char **argv) * when its a pdu! */ dstate_setinfo("device.type", "ups"); - /* publish the top-level data: version number, driver name */ + /* publish the top-level data: version numbers, driver name */ dstate_setinfo("driver.version", "%s", UPS_VERSION); dstate_setinfo("driver.version.internal", "%s", upsdrv_info.version); dstate_setinfo("driver.name", "%s", progname); diff --git a/drivers/masterguard.c b/drivers/masterguard.c index f480ad3..7edc899 100644 --- a/drivers/masterguard.c +++ b/drivers/masterguard.c @@ -469,8 +469,6 @@ void upsdrv_initinfo(void) dstate_setinfo("ups.model", "%s", name); if( strlen( firmware ) > 0 ) dstate_setinfo("ups.firmware", "%s", firmware); - - dstate_setinfo("driver.version.internal", "%s", DRIVER_VERSION); } /******************************************************************** diff --git a/drivers/metasys.c b/drivers/metasys.c index d05e5ef..647de3c 100644 --- a/drivers/metasys.c +++ b/drivers/metasys.c @@ -316,8 +316,6 @@ void upsdrv_initinfo(void) dstate_setflags("ups.test.result", ST_FLAG_STRING | ST_FLAG_RW); dstate_setaux("ups.test.result", 20); - /* Fixed variables */ - dstate_setinfo("driver.version.internal", "%s", DRIVER_VERSION); /* UPS INFO READ */ res = command_read_sequence(UPS_INFO, my_answer); if (res < 0) fatal_with_errno(EXIT_FAILURE, "Could not communicate with the ups"); diff --git a/drivers/mge-utalk.c b/drivers/mge-utalk.c index 3139065..d4c9729 100644 --- a/drivers/mge-utalk.c +++ b/drivers/mge-utalk.c @@ -235,7 +235,6 @@ void upsdrv_initinfo(void) /* manufacturer -------------------------------------------- */ dstate_setinfo("ups.mfr", "MGE UPS SYSTEMS"); - dstate_setinfo("driver.version.internal", "%s", DRIVER_VERSION); /* loop until we have at status */ tries = 0; diff --git a/drivers/microdowell.c b/drivers/microdowell.c index 82bcd43..a1d6605 100644 --- a/drivers/microdowell.c +++ b/drivers/microdowell.c @@ -848,8 +848,6 @@ void upsdrv_initinfo(void) dstate_setinfo("ups.mfr.date", "%04d/%02d/%02d", ups.YearOfProd, ups.MonthOfProd, ups.DayOfProd) ; dstate_setinfo("battery.packs", "%d", ups.BatteryNumber) ; - dstate_setinfo("driver.version.internal", "%s", DRIVER_VERSION) ; - /* Register the available variables. */ dstate_setinfo("ups.delay.start", "%d", ups.WakeUpDelay); dstate_setflags("ups.delay.start", ST_FLAG_RW | ST_FLAG_STRING); diff --git a/drivers/netxml-ups.c b/drivers/netxml-ups.c index 130d50f..ee55503 100644 --- a/drivers/netxml-ups.c +++ b/drivers/netxml-ups.c @@ -38,7 +38,7 @@ #include #define DRIVER_NAME "network XML UPS" -#define DRIVER_VERSION "0.30" +#define DRIVER_VERSION "0.31" /* driver description structure */ upsdrv_info_t upsdrv_info = { @@ -92,7 +92,7 @@ void upsdrv_initinfo(void) continue; } - dstate_setinfo("driver.version.internal", "%s", subdriver->version); + dstate_setinfo("driver.version.data", "%s", subdriver->version); if (testvar("subscribe") && (netxml_alarm_subscribe(subdriver->subscribe) == NE_OK)) { extrafd = ne_sock_fd(sock); diff --git a/drivers/nut-ipmipsu.c b/drivers/nut-ipmipsu.c index 18cb355..b7382a8 100644 --- a/drivers/nut-ipmipsu.c +++ b/drivers/nut-ipmipsu.c @@ -1,6 +1,7 @@ /* nut-ipmipsu.c - Driver for IPMI Power Supply Units (PSU) * - * Copyright (C) 2011 - Arnaud Quette + * 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 @@ -26,7 +27,7 @@ #include "nut-ipmi.h" #define DRIVER_NAME "IPMI PSU driver" -#define DRIVER_VERSION "0.06" +#define DRIVER_VERSION "0.07" /* driver description structure */ upsdrv_info_t upsdrv_info = { @@ -62,9 +63,6 @@ void upsdrv_initinfo(void) ipmi_dev.manufacturer ? ipmi_dev.manufacturer : "unknown", ipmi_dev.product ? ipmi_dev.product : "unknown"); - dstate_setinfo("driver.version.data", "%s", DRIVER_NAME); - dstate_setinfo("driver.version.internal", DRIVER_VERSION); - dstate_setinfo ("device.type", "psu"); /* Publish information from the IPMI structure */ diff --git a/drivers/nut-libfreeipmi.c b/drivers/nut-libfreeipmi.c index 0e3415d..1539e75 100644 --- a/drivers/nut-libfreeipmi.c +++ b/drivers/nut-libfreeipmi.c @@ -1,7 +1,7 @@ /* nut-libfreeipmi.c - NUT IPMI backend, using FreeIPMI * * Copyright (C) - * 2011 - Arnaud Quette + * 2011 - 2012 Arnaud Quette * 2011 - Albert Chu * * Based on the sample codes 'ipmi-fru-example.c', 'frulib.c' and @@ -58,10 +58,18 @@ /* FreeIPMI contexts and configuration*/ ipmi_ctx_t ipmi_ctx = NULL; ipmi_fru_parse_ctx_t fru_parse_ctx = NULL; -ipmi_sdr_cache_ctx_t sdr_cache_ctx = NULL; -ipmi_sdr_parse_ctx_t sdr_parse_ctx = NULL; ipmi_monitoring_ctx_t mon_ctx = NULL; struct ipmi_monitoring_ipmi_config ipmi_config; +/* SDR management API has changed with 1.1.X and later */ +#ifdef HAVE_FREEIPMI_11X_12X + ipmi_sdr_ctx_t sdr_ctx = NULL; +#else + ipmi_sdr_cache_ctx_t sdr_cache_ctx = NULL; + ipmi_sdr_parse_ctx_t sdr_parse_ctx = NULL; +#ifndef IPMI_SDR_MAX_RECORD_LENGTH + #define IPMI_SDR_MAX_RECORD_LENGTH IPMI_SDR_CACHE_MAX_SDR_RECORD_LENGTH +#endif +#endif /* HAVE_FREEIPMI_11X_12X */ /* FIXME: freeipmi auto selects a cache based on the hostname you are * connecting too, but this is probably fine for you @@ -276,6 +284,11 @@ static void libfreeipmi_cleanup() ipmi_fru_parse_ctx_destroy (fru_parse_ctx); } +#ifdef HAVE_FREEIPMI_11X_12X + if (sdr_ctx) { + ipmi_sdr_ctx_destroy (sdr_ctx); + } +#else /* HAVE_FREEIPMI_11X_12X */ if (sdr_cache_ctx) { ipmi_sdr_cache_ctx_destroy (sdr_cache_ctx); } @@ -283,6 +296,7 @@ static void libfreeipmi_cleanup() if (sdr_parse_ctx) { ipmi_sdr_parse_ctx_destroy (sdr_parse_ctx); } +#endif /* HAVE_FREEIPMI_11X_12X */ if (ipmi_ctx) { ipmi_ctx_close (ipmi_ctx); @@ -467,7 +481,7 @@ static int libfreeipmi_get_board_info (const void *areabuf, * Return -1 on error, or the number of sensors found otherwise */ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) { - uint8_t sdr_record[IPMI_SDR_CACHE_MAX_SDR_RECORD_LENGTH]; + uint8_t sdr_record[IPMI_SDR_MAX_RECORD_LENGTH]; uint8_t record_type, logical_physical_fru_device, logical_fru_device_device_slave_address; uint8_t tmp_entity_id, tmp_entity_instance; int sdr_record_len; @@ -484,6 +498,23 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) ipmi_dev->sensors_count = 0; memset(ipmi_dev->sensors_id_list, 0, sizeof(ipmi_dev->sensors_id_list)); +#ifdef HAVE_FREEIPMI_11X_12X + if (!(sdr_ctx = ipmi_sdr_ctx_create ())) + { + libfreeipmi_cleanup(); + fatal_with_errno(EXIT_FAILURE, "ipmi_sdr_ctx_create()"); + } + + if (ipmi_sdr_cache_open (sdr_ctx, ipmi_ctx, CACHE_LOCATION) < 0) + { + if (ipmi_sdr_ctx_errnum (sdr_ctx) != IPMI_SDR_ERR_CACHE_READ_CACHE_DOES_NOT_EXIST) + { + libfreeipmi_cleanup(); + fatal_with_errno(EXIT_FAILURE, "ipmi_sdr_cache_open: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + } + } +#else /* HAVE_FREEIPMI_11X_12X */ if (!(sdr_cache_ctx = ipmi_sdr_cache_ctx_create ())) { libfreeipmi_cleanup(); @@ -505,7 +536,32 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) ipmi_sdr_cache_ctx_errormsg (sdr_cache_ctx)); } } +#endif /* HAVE_FREEIPMI_11X_12X */ +#ifdef HAVE_FREEIPMI_11X_12X + if (ipmi_sdr_ctx_errnum (sdr_ctx) == IPMI_SDR_ERR_CACHE_READ_CACHE_DOES_NOT_EXIST) + { + if (ipmi_sdr_cache_create (sdr_ctx, + ipmi_ctx, CACHE_LOCATION, + IPMI_SDR_CACHE_CREATE_FLAGS_DEFAULT, + NULL, NULL) < 0) + { + libfreeipmi_cleanup(); + fatal_with_errno(EXIT_FAILURE, "ipmi_sdr_cache_create: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + } + if (ipmi_sdr_cache_open (sdr_ctx, + ipmi_ctx, CACHE_LOCATION) < 0) + { + if (ipmi_sdr_ctx_errnum (sdr_ctx) != IPMI_SDR_ERR_CACHE_READ_CACHE_DOES_NOT_EXIST) + { + libfreeipmi_cleanup(); + fatal_with_errno(EXIT_FAILURE, "ipmi_sdr_cache_open: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + } + } + } +#else /* HAVE_FREEIPMI_11X_12X */ if (ipmi_sdr_cache_ctx_errnum (sdr_cache_ctx) == IPMI_SDR_CACHE_ERR_CACHE_READ_CACHE_DOES_NOT_EXIST) { if (ipmi_sdr_cache_create (sdr_cache_ctx, @@ -518,7 +574,6 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) fatal_with_errno(EXIT_FAILURE, "ipmi_sdr_cache_create: %s", ipmi_sdr_cache_ctx_errormsg (sdr_cache_ctx)); } - if (ipmi_sdr_cache_open (sdr_cache_ctx, ipmi_ctx, CACHE_LOCATION) < 0) { @@ -530,7 +585,16 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) } } } +#endif /* HAVE_FREEIPMI_11X_12X */ +#ifdef HAVE_FREEIPMI_11X_12X + if (ipmi_sdr_cache_record_count (sdr_ctx, &record_count) < 0) { + fprintf (stderr, + "ipmi_sdr_cache_record_count: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + goto cleanup; + } +#else if (ipmi_sdr_cache_record_count (sdr_cache_ctx, &record_count) < 0) { fprintf (stderr, @@ -538,19 +602,44 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) ipmi_sdr_cache_ctx_errormsg (sdr_cache_ctx)); goto cleanup; } +#endif /* HAVE_FREEIPMI_11X_12X */ +#ifdef HAVE_FREEIPMI_11X_12X + for (i = 0; i < record_count; i++, ipmi_sdr_cache_next (sdr_ctx)) + { + memset (sdr_record, '\0', IPMI_SDR_MAX_RECORD_LENGTH); + + if ((sdr_record_len = ipmi_sdr_cache_record_read (sdr_ctx, + sdr_record, + IPMI_SDR_MAX_RECORD_LENGTH)) < 0) + { + fprintf (stderr, "ipmi_sdr_cache_record_read: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + goto cleanup; + } + if (ipmi_sdr_parse_record_id_and_type (sdr_ctx, + sdr_record, + sdr_record_len, + NULL, + &record_type) < 0) + { + fprintf (stderr, "ipmi_sdr_parse_record_id_and_type: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + goto cleanup; + } +#else for (i = 0; i < record_count; i++, ipmi_sdr_cache_next (sdr_cache_ctx)) { - memset (sdr_record, '\0', IPMI_SDR_CACHE_MAX_SDR_RECORD_LENGTH); + memset (sdr_record, '\0', IPMI_SDR_MAX_RECORD_LENGTH); + if ((sdr_record_len = ipmi_sdr_cache_record_read (sdr_cache_ctx, sdr_record, - IPMI_SDR_CACHE_MAX_SDR_RECORD_LENGTH)) < 0) + IPMI_SDR_MAX_RECORD_LENGTH)) < 0) { fprintf (stderr, "ipmi_sdr_cache_record_read: %s", ipmi_sdr_cache_ctx_errormsg (sdr_cache_ctx)); goto cleanup; } - if (ipmi_sdr_parse_record_id_and_type (sdr_parse_ctx, sdr_record, sdr_record_len, @@ -561,10 +650,27 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) ipmi_sdr_parse_ctx_errormsg (sdr_parse_ctx)); goto cleanup; } +#endif /* HAVE_FREEIPMI_11X_12X */ if (record_type != IPMI_SDR_FORMAT_FRU_DEVICE_LOCATOR_RECORD) continue; +#ifdef HAVE_FREEIPMI_11X_12X + if (ipmi_sdr_parse_fru_device_locator_parameters (sdr_ctx, + sdr_record, + sdr_record_len, + NULL, + &logical_fru_device_device_slave_address, + NULL, + NULL, + &logical_physical_fru_device, + NULL) < 0) + { + fprintf (stderr, "ipmi_sdr_parse_fru_device_locator_parameters: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + goto cleanup; + } +#else /* HAVE_FREEIPMI_11X_12X */ if (ipmi_sdr_parse_fru_device_locator_parameters (sdr_parse_ctx, sdr_record, sdr_record_len, @@ -579,12 +685,26 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) ipmi_sdr_parse_ctx_errormsg (sdr_parse_ctx)); goto cleanup; } +#endif /* HAVE_FREEIPMI_11X_12X */ if (logical_physical_fru_device && logical_fru_device_device_slave_address == ipmi_dev->ipmi_id) { found_device_id++; +#ifdef HAVE_FREEIPMI_11X_12X + if (ipmi_sdr_parse_fru_entity_id_and_instance (sdr_ctx, + sdr_record, + sdr_record_len, + &entity_id, + &entity_instance) < 0) + { + fprintf (stderr, + "ipmi_sdr_parse_fru_entity_id_and_instance: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + goto cleanup; + } +#else /* HAVE_FREEIPMI_11X_12X */ if (ipmi_sdr_parse_fru_entity_id_and_instance (sdr_parse_ctx, sdr_record, sdr_record_len, @@ -596,6 +716,7 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) ipmi_sdr_parse_ctx_errormsg (sdr_parse_ctx)); goto cleanup; } +#endif /* HAVE_FREEIPMI_11X_12X */ break; } } @@ -608,23 +729,60 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) else upsdebugx(1, "Found device id %d", ipmi_dev->ipmi_id); +#ifdef HAVE_FREEIPMI_11X_12X + if (ipmi_sdr_cache_first (sdr_ctx) < 0) + { + fprintf (stderr, "ipmi_sdr_cache_first: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + goto cleanup; + } +#else /* HAVE_FREEIPMI_11X_12X */ if (ipmi_sdr_cache_first (sdr_cache_ctx) < 0) { fprintf (stderr, "ipmi_sdr_cache_first: %s", ipmi_sdr_cache_ctx_errormsg (sdr_cache_ctx)); goto cleanup; } +#endif /* HAVE_FREEIPMI_11X_12X */ +#ifdef HAVE_FREEIPMI_11X_12X + for (i = 0; i < record_count; i++, ipmi_sdr_cache_next (sdr_ctx)) + { + /* uint8_t sdr_record[IPMI_SDR_CACHE_MAX_SDR_RECORD_LENGTH]; + uint8_t record_type, tmp_entity_id, tmp_entity_instance; + int sdr_record_len; */ + + memset (sdr_record, '\0', IPMI_SDR_MAX_RECORD_LENGTH); + if ((sdr_record_len = ipmi_sdr_cache_record_read (sdr_ctx, + sdr_record, + IPMI_SDR_MAX_RECORD_LENGTH)) < 0) + { + fprintf (stderr, "ipmi_sdr_cache_record_read: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + goto cleanup; + } + + if (ipmi_sdr_parse_record_id_and_type (sdr_ctx, + sdr_record, + sdr_record_len, + &record_id, + &record_type) < 0) + { + fprintf (stderr, "ipmi_sdr_parse_record_id_and_type: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + goto cleanup; + } +#else /* HAVE_FREEIPMI_11X_12X */ for (i = 0; i < record_count; i++, ipmi_sdr_cache_next (sdr_cache_ctx)) { /* uint8_t sdr_record[IPMI_SDR_CACHE_MAX_SDR_RECORD_LENGTH]; uint8_t record_type, tmp_entity_id, tmp_entity_instance; int sdr_record_len; */ - memset (sdr_record, '\0', IPMI_SDR_CACHE_MAX_SDR_RECORD_LENGTH); + memset (sdr_record, '\0', IPMI_SDR_MAX_RECORD_LENGTH); if ((sdr_record_len = ipmi_sdr_cache_record_read (sdr_cache_ctx, sdr_record, - IPMI_SDR_CACHE_MAX_SDR_RECORD_LENGTH)) < 0) + IPMI_SDR_MAX_RECORD_LENGTH)) < 0) { fprintf (stderr, "ipmi_sdr_cache_record_read: %s", ipmi_sdr_cache_ctx_errormsg (sdr_cache_ctx)); @@ -641,6 +799,7 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) ipmi_sdr_parse_ctx_errormsg (sdr_parse_ctx)); goto cleanup; } +#endif /* HAVE_FREEIPMI_11X_12X */ upsdebugx (5, "Checking record %i (/%i)", record_id, record_count); @@ -650,6 +809,19 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) continue; } +#ifdef HAVE_FREEIPMI_11X_12X + if (ipmi_sdr_parse_entity_id_instance_type (sdr_ctx, + sdr_record, + sdr_record_len, + &tmp_entity_id, + &tmp_entity_instance, + NULL) < 0) + { + fprintf (stderr, "ipmi_sdr_parse_entity_instance_type: %s", + ipmi_sdr_ctx_errormsg (sdr_ctx)); + goto cleanup; + } +#else /* HAVE_FREEIPMI_11X_12X */ if (ipmi_sdr_parse_entity_id_instance_type (sdr_parse_ctx, sdr_record, sdr_record_len, @@ -661,6 +833,7 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) ipmi_sdr_parse_ctx_errormsg (sdr_parse_ctx)); goto cleanup; } +#endif /* HAVE_FREEIPMI_11X_12X */ if (tmp_entity_id == entity_id && tmp_entity_instance == entity_instance) @@ -677,6 +850,11 @@ static int libfreeipmi_get_sensors_info (IPMIDevice_t *ipmi_dev) cleanup: /* Cleanup */ +#ifdef HAVE_FREEIPMI_11X_12X + if (sdr_ctx) { + ipmi_sdr_ctx_destroy (sdr_ctx); + } +#else /* HAVE_FREEIPMI_11X_12X */ if (sdr_cache_ctx) { ipmi_sdr_cache_ctx_destroy (sdr_cache_ctx); } @@ -684,6 +862,7 @@ cleanup: if (sdr_parse_ctx) { ipmi_sdr_parse_ctx_destroy (sdr_parse_ctx); } +#endif /* HAVE_FREEIPMI_11X_12X */ return ipmi_dev->sensors_count; } @@ -775,6 +954,8 @@ int nut_ipmi_get_sensors_status(IPMIDevice_t *ipmi_dev) return -1; } + upsdebugx (1, "nut_ipmi_get_sensors_status: %i sensors to check", sensor_count); + for (i = 0; i < sensor_count; i++, ipmi_monitoring_sensor_iterator_next (mon_ctx)) { int record_id, sensor_type; @@ -797,6 +978,8 @@ int nut_ipmi_get_sensors_status(IPMIDevice_t *ipmi_dev) continue; } + upsdebugx (1, "checking sensor #%i, type %i", record_id, sensor_type); + /* should we consider this for ALARM? * IPMI_MONITORING_STATE_NOMINAL * IPMI_MONITORING_STATE_WARNING @@ -838,16 +1021,19 @@ int nut_ipmi_get_sensors_status(IPMIDevice_t *ipmi_dev) ipmi_dev->temperature = *((double *)sensor_reading); upsdebugx (3, "Temperature: %.2f", *((double *)sensor_reading)); dstate_setinfo("ambient.temperature", "%.2f", *((double *)sensor_reading)); + retval = 0; break; case IPMI_MONITORING_SENSOR_TYPE_VOLTAGE: ipmi_dev->voltage = *((double *)sensor_reading); upsdebugx (3, "Voltage: %.2f", *((double *)sensor_reading)); dstate_setinfo("input.voltage", "%.2f", *((double *)sensor_reading)); + retval = 0; break; case IPMI_MONITORING_SENSOR_TYPE_CURRENT: ipmi_dev->input_current = *((double *)sensor_reading); upsdebugx (3, "Current: %.2f", *((double *)sensor_reading)); dstate_setinfo("input.current", "%.2f", *((double *)sensor_reading)); + retval = 0; break; case IPMI_MONITORING_SENSOR_TYPE_POWER_SUPPLY: @@ -898,6 +1084,7 @@ int nut_ipmi_get_sensors_status(IPMIDevice_t *ipmi_dev) str_count++; } break; + /* Not sure of the values of these, so get as much as possible... */ case IPMI_MONITORING_SENSOR_TYPE_POWER_UNIT: upsdebugx (3, "Power Unit: status string"); @@ -938,6 +1125,7 @@ int nut_ipmi_get_sensors_status(IPMIDevice_t *ipmi_dev) { case PSU_PRESENT: status_set("OL"); + retval = 0; break; case PSU_ABSENT: status_set("OFF"); @@ -946,6 +1134,7 @@ int nut_ipmi_get_sensors_status(IPMIDevice_t *ipmi_dev) break; case PSU_POWER_FAILURE: status_set("OFF"); + retval = 0; break; } @@ -955,3 +1144,9 @@ int nut_ipmi_get_sensors_status(IPMIDevice_t *ipmi_dev) return retval; } + +/* +--chassis-control=CONTROL + Control the chassis. This command provides power-up, power-down, and reset control. Supported values: POWER-DOWN, POWER-UP, POWER-CYCLE, HARD-RESET, DIAGNOS‐ + TIC-INTERRUPT, SOFT-SHUTDOWN. +*/ diff --git a/drivers/oneac.h b/drivers/oneac.h index 9f1bae8..a85a505 100644 --- a/drivers/oneac.h +++ b/drivers/oneac.h @@ -95,8 +95,12 @@ #define GETX_BATT_REPLACED '+' /* yymmdd */ #define GETX_DATE_RESP_SIZE 6 +/* FIXME: Both of the following constants are unused, and the first is not + * valid C syntax (breaks LLVM). */ +#if 0 #define GETX_UNIT_KVA '''' /* Read as xxx.xx */ #define GETX_UNIT_WATTS "''" /* 2-character string request */ +#endif #define GETX_LOW_OUT_ALLOW '[' /* Tap up or inverter at this point */ #define GETX_HI_OUT_ALLOW ']' /* Tap down or inverter at this point */ #define GETX_NOTIFY_DELAY ',' /* Secs of delay for power fail alert */ diff --git a/drivers/powercom-hid.c b/drivers/powercom-hid.c index 7e1b7fd..d6a2a50 100644 --- a/drivers/powercom-hid.c +++ b/drivers/powercom-hid.c @@ -43,7 +43,7 @@ static usb_device_id_t powercom_usb_device_table[] = { { USB_DEVICE(POWERCOM_VENDORID, 0x00a5), NULL }, /* PowerCOM BNT - Black Knight Pro */ { USB_DEVICE(POWERCOM_VENDORID, 0x00a6), NULL }, - /* PowerCOM BNT-xxxAP */ + /* PowerCOM Vanguard and BNT-xxxAP */ { USB_DEVICE(POWERCOM_VENDORID, 0x0004), NULL }, /* Terminating entry */ diff --git a/drivers/safenet.c b/drivers/safenet.c index 392fa45..77170fb 100644 --- a/drivers/safenet.c +++ b/drivers/safenet.c @@ -297,8 +297,6 @@ void upsdrv_initinfo(void) int retry = 3; char *v; - dstate_setinfo("driver.version.internal", "%s", DRIVER_VERSION); - usleep(100000); /* diff --git a/drivers/skel.c b/drivers/skel.c index 4957bcd..5d4b930 100644 --- a/drivers/skel.c +++ b/drivers/skel.c @@ -33,7 +33,8 @@ upsdrv_info_t upsdrv_info = { void upsdrv_initinfo(void) { - /* try to detect the UPS here - call fatal_with_errno(EXIT_FAILURE, ) if it fails */ + /* try to detect the UPS here - call fatal_with_errno(EXIT_FAILURE, ...) + * or fatalx(EXIT_FAILURE, ...) if it fails */ /* dstate_setinfo("ups.mfr", "skel manufacturer"); */ /* dstate_setinfo("ups.model", "longrun 15000"); */ @@ -158,7 +159,7 @@ void upsdrv_initups(void) /* to get variables and flags from the command line, use this: * - * first populate with upsdrv_buildvartable above, then... + * first populate with upsdrv_makevartable() above, then... * * set flag foo : /bin/driver -x foo * set variable 'cable' to '1234' : /bin/driver -x cable=1234 diff --git a/drivers/snmp-ups.c b/drivers/snmp-ups.c index 36fdfb8..598b816 100644 --- a/drivers/snmp-ups.c +++ b/drivers/snmp-ups.c @@ -60,6 +60,8 @@ static mib2nut_info_t *mib2nut[] = { &aphel_genesisII, &aphel_revelation, &eaton_marlin, + &pulizzi_switched1, + &pulizzi_switched2, &raritan, &baytech, &compaq, @@ -91,7 +93,7 @@ const char *mibvers; static void disable_transfer_oids(void); #define DRIVER_NAME "Generic SNMP UPS driver" -#define DRIVER_VERSION "0.66" +#define DRIVER_VERSION "0.68" /* driver description structure */ upsdrv_info_t upsdrv_info = { @@ -122,13 +124,10 @@ int outlet_index_base = -1; void upsdrv_initinfo(void) { snmp_info_t *su_info_p; - char version[128]; upsdebugx(1, "SNMP UPS driver : entering upsdrv_initinfo()"); - snprintf(version, sizeof version, "%s (mib: %s %s)", - DRIVER_VERSION, mibname, mibvers); - dstate_setinfo("driver.version.internal", "%s", version); + dstate_setinfo("driver.version.data", "%s MIB %s", mibname, mibvers); /* add instant commands to the info database. * outlet commands are processed later, during initial walk */ @@ -955,7 +954,7 @@ const char *su_find_infoval(info_lkp_t *oid2info, long value) info_lkp_t *info_lkp; for (info_lkp = oid2info; (info_lkp != NULL) && - (strcmp(info_lkp->info_value, "NULL")); info_lkp++) { + (strcmp(info_lkp->info_value, "NULL")) && (info_lkp->info_value != NULL); info_lkp++) { if (info_lkp->oid_value == value) { upsdebugx(1, "su_find_infoval: found %s (value: %ld)", @@ -1055,6 +1054,32 @@ int base_nut_outlet_offset(void) return (outlet_index_base==0)?1:0; } +/* try to determine the number of outlets, using a template definition, + * that we walk, until we can't get anymore values */ +static int guestimate_outlet_count(const char *OID_template) +{ + int base_index = 0; + char test_OID[SU_INFOSIZE]; + int base_count; + + upsdebugx(1, "guestimate_outlet_count(%s)", OID_template); + + /* Determine if OID index starts from 0 or 1? */ + sprintf(test_OID, OID_template, base_index); + if (nut_snmp_get(test_OID) == NULL) + base_index++; + + /* Now, actually iterate */ + for (base_count = 0 ; ; base_count++) { + sprintf(test_OID, OID_template, base_index + base_count); + if (nut_snmp_get(test_OID) == NULL) + break; + } + + upsdebugx(3, "guestimate_outlet_count: %i", base_count); + return base_count; +} + /* process a single data from a walk */ bool_t get_and_process_data(int mode, snmp_info_t *su_info_p) { @@ -1236,10 +1261,20 @@ bool_t snmp_ups_walk(int mode) if(dstate_getinfo("outlet.count") == NULL) { /* FIXME: should we disable it? - * su_info_p->flags &= ~SU_FLAG_OK; */ - continue; + * su_info_p->flags &= ~SU_FLAG_OK; + * or rely on guestimation? */ + if ((outlet_count = guestimate_outlet_count(su_info_p->OID)) == -1) { + /* Failed */ + continue; + } + else { + /* Publish the count estimation */ + dstate_setinfo("outlet.count", "%i", outlet_count); + } + } + else { + outlet_count = atoi(dstate_getinfo("outlet.count")); } - outlet_count = atoi(dstate_getinfo("outlet.count")); /* general init of data using the template */ instantiate_info(su_info_p, &cur_info_p); @@ -1495,11 +1530,14 @@ int su_instcmd(const char *cmdname, const char *extradata) snmp_info_t *su_info_p = NULL; int status; int retval = STAT_INSTCMD_FAILED; + int cmd_offset = 0; upsdebugx(2, "entering su_instcmd(%s, %s)", cmdname, extradata); - if (strncmp(cmdname, "outlet", 6)) + /* FIXME: this should only apply if strchr(%)! */ + if (strncmp(cmdname, "outlet", 6)) { su_info_p = su_find_info(cmdname); + } else { snmp_info_t *tmp_info_p; char *outlet_number_ptr = strchr(cmdname, '.'); @@ -1539,8 +1577,15 @@ int su_instcmd(const char *cmdname, const char *extradata) } /* adapt the OID */ if (su_info_p->OID != NULL) { + /* Workaround buggy Eaton Pulizzi implementation + * which have different offsets index for data & commands! */ + if (su_info_p->flags & SU_CMD_OFFSET) { + upsdebugx(3, "Adding command offset"); + cmd_offset++; + } + sprintf((char *)su_info_p->OID, tmp_info_p->OID, - outlet_number - base_nut_outlet_offset()); + outlet_number - base_nut_outlet_offset() + cmd_offset); } else { free_info(su_info_p); return STAT_INSTCMD_UNKNOWN; diff --git a/drivers/snmp-ups.h b/drivers/snmp-ups.h index 72f93ce..328963c 100644 --- a/drivers/snmp-ups.h +++ b/drivers/snmp-ups.h @@ -132,13 +132,18 @@ typedef struct { * disable the other providers */ #define SU_FLAG_SETINT (1 << 6) /* save value */ #define SU_OUTLET (1 << 7) /* outlet template definition */ +#define SU_CMD_OFFSET (1 << 8) /* Add +1 to the OID index */ /* Notes on outlet templates usage: * - outlet.count MUST exist and MUST be declared before any outlet template + * Otherwise, the driver will try to determine it by itself... * - the first outlet template MUST NOT be a server side variable (ie MUST have * a valid OID) in order to detect the base SNMP index (0 or 1) */ -/* status string components */ +/* status string components + * FIXME: these should be removed, since there is no added value. + * Ie, this can be guessed from info->type! */ + #define SU_STATUS_PWR (0 << 8) /* indicates power status element */ #define SU_STATUS_BATT (1 << 8) /* indicates battery status element */ #define SU_STATUS_CAL (2 << 8) /* indicates calibration status element */ diff --git a/drivers/tripplitesu.c b/drivers/tripplitesu.c index 9c9049b..d0d0563 100644 --- a/drivers/tripplitesu.c +++ b/drivers/tripplitesu.c @@ -75,7 +75,6 @@ battery.temperature battery.voltage battery.voltage.nominal - driver.version.internal input.frequency input.sensitivity (RW) (1) input.transfer.high (RW) diff --git a/drivers/usbhid-ups.c b/drivers/usbhid-ups.c index 6899d2f..d2c276c 100644 --- a/drivers/usbhid-ups.c +++ b/drivers/usbhid-ups.c @@ -717,6 +717,10 @@ void upsdrv_makevartable(void) upsdebugx(1, "upsdrv_makevartable..."); + snprintf(temp, sizeof(temp), "Set low battery level, in %% (default=%s).", DEFAULT_LOWBATT); + addvar (VAR_VALUE, HU_VAR_LOWBATT, temp); + + snprintf(temp, sizeof(temp), "Set shutdown delay, in seconds (default=%s)", DEFAULT_OFFDELAY); addvar(VAR_VALUE, HU_VAR_OFFDELAY, temp); @@ -738,6 +742,8 @@ void upsdrv_makevartable(void) addvar(VAR_VALUE, "productid", "Regular expression to match UPS Product numerical ID (4 digits hexadecimal)"); addvar(VAR_VALUE, "bus", "Regular expression to match USB bus name"); addvar(VAR_FLAG, "explore", "Diagnostic matching of unsupported UPS"); +#else + addvar(VAR_VALUE, "notification", "Set notification type, (ignored, only for backward compatibility)"); #endif } @@ -855,7 +861,6 @@ void upsdrv_initinfo(void) upsdebugx(1, "upsdrv_initinfo..."); dstate_setinfo("driver.version.data", "%s", subdriver->name); - dstate_setinfo("driver.version.internal", DRIVER_VERSION); /* init polling frequency */ val = getval(HU_VAR_POLLFREQ); @@ -939,6 +944,14 @@ void upsdrv_initups(void) fatalx(EXIT_FAILURE, "Can't initialize data from HID UPS"); } + if (dstate_getinfo("battery.charge.low")) { + /* Retrieve user defined battery settings */ + val = getval(HU_VAR_LOWBATT); + if (val) { + dstate_setinfo("battery.charge.low", "%ld", strtol(val, NULL, 10)); + } + } + if (dstate_getinfo("ups.delay.start")) { /* Retrieve user defined delay settings */ val = getval(HU_VAR_ONDELAY); diff --git a/drivers/usbhid-ups.h b/drivers/usbhid-ups.h index 96bce48..4f4b3c3 100644 --- a/drivers/usbhid-ups.h +++ b/drivers/usbhid-ups.h @@ -37,11 +37,13 @@ extern hid_dev_handle_t udev; extern bool_t use_interrupt_pipe; /* Set to FALSE if interrupt reports should not be used */ /* Driver's parameters */ +#define HU_VAR_LOWBATT "lowbatt" #define HU_VAR_ONDELAY "ondelay" #define HU_VAR_OFFDELAY "offdelay" #define HU_VAR_POLLFREQ "pollfreq" /* Parameters default values */ +#define DEFAULT_LOWBATT "30" /* percentage of battery charge to consider the UPS in low battery state */ #define DEFAULT_ONDELAY "30" /* Delay between return of utility power */ /* and powering up of load, in seconds */ /* CAUTION: ondelay > offdelay */ diff --git a/include/Makefile.in b/include/Makefile.in index 324c600..e21f5a6 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -85,6 +85,12 @@ 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@ @@ -188,6 +194,7 @@ 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@ diff --git a/include/config.h.in b/include/config.h.in index 2d9c06d..7fa10b0 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -92,6 +92,9 @@ /* Define if FreeIPMI support is available */ #undef HAVE_FREEIPMI +/* Define if FreeIPMI 1.1.X / 1.2.X support is available */ +#undef HAVE_FREEIPMI_11X_12X + /* Define to 1 if you have the header file. */ #undef HAVE_FREEIPMI_FREEIPMI_H @@ -397,6 +400,9 @@ /* Define to enable Powerman PDU support */ #undef WITH_LIBPOWERMAN +/* Define to enable Mac OS X meta-driver */ +#undef WITH_MACOSX + /* Define to enable Neon HTTP support */ #undef WITH_NEON diff --git a/lib/Makefile.in b/lib/Makefile.in index 36945ba..d974132 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -114,6 +114,12 @@ 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@ @@ -217,6 +223,7 @@ 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@ diff --git a/m4/nut_check_libfreeipmi.m4 b/m4/nut_check_libfreeipmi.m4 index c6d4163..72e7819 100644 --- a/m4/nut_check_libfreeipmi.m4 +++ b/m4/nut_check_libfreeipmi.m4 @@ -71,6 +71,10 @@ if test -z "${nut_have_libfreeipmi_seen}"; then AC_SEARCH_LIBS([ipmi_monitoring_init], [ipmimonitoring], [nut_have_freeipmi_monitoring=yes], [nut_have_freeipmi_monitoring=no]) AC_SEARCH_LIBS([ipmi_monitoring_sensor_read_record_id], [ipmimonitoring], [], [nut_have_freeipmi_monitoring=no]) + dnl Check for FreeIPMI 1.1.X / 1.2.X which implies API changes! + AC_SEARCH_LIBS([ipmi_sdr_cache_ctx_destroy], [freeipmi], [nut_have_freeipmi_11x_12x=no], []) + AC_SEARCH_LIBS([ipmi_sdr_ctx_destroy], [freeipmi], [nut_have_freeipmi_11x_12x=yes], [nut_have_freeipmi_11x_12x=no]) + if test "${nut_have_freeipmi}" = "yes"; then nut_with_ipmi="yes" nut_ipmi_lib="(FreeIPMI)" @@ -80,6 +84,10 @@ if test -z "${nut_have_libfreeipmi_seen}"; then LIBIPMI_LIBS="${LIBS}" fi + if test "${nut_have_freeipmi_11x_12x}" = "yes"; then + AC_DEFINE(HAVE_FREEIPMI_11X_12X, 1, [Define if FreeIPMI 1.1.X / 1.2.X support is available]) + fi + if test "${nut_have_freeipmi_monitoring}" = "yes"; then AC_DEFINE(HAVE_FREEIPMI_MONITORING, 1, [Define if FreeIPMI monitoring support is available]) fi diff --git a/m4/nut_check_libltdl.m4 b/m4/nut_check_libltdl.m4 index e1058bb..4c5f6e7 100644 --- a/m4/nut_check_libltdl.m4 +++ b/m4/nut_check_libltdl.m4 @@ -12,6 +12,36 @@ if test -z "${nut_have_libltdl_seen}"; then LIBS_ORIG="${LIBS}" LIBS="" + AC_MSG_CHECKING(for libltdl cflags) + AC_ARG_WITH(libltdl-includes, + AS_HELP_STRING([@<:@--with-libltdl-includes=CFLAGS@:>@], [include flags for the libltdl library]), + [ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-libltdl-includes - see docs/configure.txt) + ;; + *) + CFLAGS="${withval}" + ;; + esac + ], []) + AC_MSG_RESULT([${CFLAGS}]) + + AC_MSG_CHECKING(for libltdl ldflags) + AC_ARG_WITH(libltdl-libs, + AS_HELP_STRING([@<:@--with-libltdl-libs=LIBS@:>@], [linker flags for the libltdl library]), + [ + case "${withval}" in + yes|no) + AC_MSG_ERROR(invalid option --with(out)-libltdl-libs - see docs/configure.txt) + ;; + *) + LIBS="${withval}" + ;; + esac + ], []) + AC_MSG_RESULT([${LIBS}]) + AC_CHECK_HEADERS(ltdl.h, [nut_have_libltdl=yes], [nut_have_libltdl=no], [AC_INCLUDES_DEFAULT]) AC_SEARCH_LIBS(lt_dlinit, ltdl, [], [nut_have_libltdl=no]) diff --git a/scripts/Makefile.in b/scripts/Makefile.in index 156e00a..92b7f73 100644 --- a/scripts/Makefile.in +++ b/scripts/Makefile.in @@ -124,6 +124,12 @@ 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@ @@ -227,6 +233,7 @@ 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@ diff --git a/scripts/augeas/Makefile.in b/scripts/augeas/Makefile.in index 22d5f63..ebeb554 100644 --- a/scripts/augeas/Makefile.in +++ b/scripts/augeas/Makefile.in @@ -91,6 +91,12 @@ 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@ @@ -194,6 +200,7 @@ 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@ diff --git a/scripts/hal/Makefile.in b/scripts/hal/Makefile.in index 4f9f7cd..f07c0e3 100644 --- a/scripts/hal/Makefile.in +++ b/scripts/hal/Makefile.in @@ -109,6 +109,12 @@ 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@ @@ -212,6 +218,7 @@ 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@ diff --git a/scripts/hal/ups-nut-device.fdi.in b/scripts/hal/ups-nut-device.fdi.in index d35c5d4..5587fd4 100644 --- a/scripts/hal/ups-nut-device.fdi.in +++ b/scripts/hal/ups-nut-device.fdi.in @@ -308,6 +308,13 @@ hald-addon-blazer_usb ups + + + battery + battery + hald-addon-blazer_usb + ups + battery @@ -585,7 +592,7 @@ - + battery battery diff --git a/scripts/hotplug/Makefile.in b/scripts/hotplug/Makefile.in index 8aeb214..124320a 100644 --- a/scripts/hotplug/Makefile.in +++ b/scripts/hotplug/Makefile.in @@ -114,6 +114,12 @@ 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@ @@ -217,6 +223,7 @@ 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@ diff --git a/scripts/hotplug/libhid.usermap b/scripts/hotplug/libhid.usermap index 40c07e2..9fab6ec 100644 --- a/scripts/hotplug/libhid.usermap +++ b/scripts/hotplug/libhid.usermap @@ -96,6 +96,8 @@ libhidups 0x0003 0x06da 0x0004 0x0000 0x0000 0x00 libhidups 0x0003 0x06da 0x0005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 # Phoenixtec Innova T libhidups 0x0003 0x06da 0x0201 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 +# Online Zinto A +libhidups 0x0003 0x06da 0x0601 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 # various models libhidups 0x0003 0x06da 0xffff 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 @@ -178,7 +180,7 @@ libhidups 0x0003 0x09ae 0x4007 0x0000 0x0000 0x00 libhidups 0x0003 0x09ae 0x4008 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 # PowerCOM -# PowerCOM BNT-xxxAP +# PowerCOM Vanguard and BNT-xxxAP libhidups 0x0003 0x0d9f 0x0004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 # PowerCOM IMP - IMPERIAL Series libhidups 0x0003 0x0d9f 0x00a2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000 diff --git a/scripts/java/Makefile.in b/scripts/java/Makefile.in index 7afd226..e1f7ac1 100644 --- a/scripts/java/Makefile.in +++ b/scripts/java/Makefile.in @@ -86,6 +86,12 @@ 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@ @@ -189,6 +195,7 @@ 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@ diff --git a/scripts/python/Makefile.in b/scripts/python/Makefile.in index 1f354b0..8758850 100644 --- a/scripts/python/Makefile.in +++ b/scripts/python/Makefile.in @@ -86,6 +86,12 @@ 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@ @@ -189,6 +195,7 @@ 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@ diff --git a/scripts/systemd/Makefile.in b/scripts/systemd/Makefile.in index 8c2bc3d..108ab16 100644 --- a/scripts/systemd/Makefile.in +++ b/scripts/systemd/Makefile.in @@ -118,6 +118,12 @@ 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@ @@ -221,6 +227,7 @@ 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@ diff --git a/scripts/systemd/nut-driver.service.in b/scripts/systemd/nut-driver.service.in index f81ac69..ec31ee2 100644 --- a/scripts/systemd/nut-driver.service.in +++ b/scripts/systemd/nut-driver.service.in @@ -4,7 +4,7 @@ After=local-fs.target network.target StopWhenUnneeded=yes [Service] -ExecStart=@SBINDIR@/upsdrvctl start -ExecStop=@SBINDIR@/upsdrvctl stop +ExecStart=@driverexecdir@/upsdrvctl start +ExecStop=@driverexecdir@/upsdrvctl stop Type=forking diff --git a/scripts/systemd/nutshutdown.in b/scripts/systemd/nutshutdown.in index 1b97fa2..2caac4b 100644 --- a/scripts/systemd/nutshutdown.in +++ b/scripts/systemd/nutshutdown.in @@ -1,2 +1,2 @@ #!/bin/sh -@SBINDIR@/upsmon -K >/dev/null 2>&1 && @SBINDIR@/upsdrvctl shutdown +@SBINDIR@/upsmon -K >/dev/null 2>&1 && @driverexecdir@/upsdrvctl shutdown diff --git a/scripts/udev/Makefile.in b/scripts/udev/Makefile.in index 00d19d5..190f882 100644 --- a/scripts/udev/Makefile.in +++ b/scripts/udev/Makefile.in @@ -111,6 +111,12 @@ 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@ @@ -214,6 +220,7 @@ 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@ diff --git a/scripts/udev/nut-usbups.rules.in b/scripts/udev/nut-usbups.rules.in index 6aa3166..cfa2e88 100644 --- a/scripts/udev/nut-usbups.rules.in +++ b/scripts/udev/nut-usbups.rules.in @@ -98,6 +98,8 @@ ATTR{idVendor}=="06da", ATTR{idProduct}=="0004", MODE="664", GROUP="@RUN_AS_GROU ATTR{idVendor}=="06da", ATTR{idProduct}=="0005", MODE="664", GROUP="@RUN_AS_GROUP@" # Phoenixtec Innova T - blazer_usb ATTR{idVendor}=="06da", ATTR{idProduct}=="0201", MODE="664", GROUP="@RUN_AS_GROUP@" +# Online Zinto A - blazer_usb +ATTR{idVendor}=="06da", ATTR{idProduct}=="0601", MODE="664", GROUP="@RUN_AS_GROUP@" # various models - usbhid-ups ATTR{idVendor}=="06da", ATTR{idProduct}=="ffff", MODE="664", GROUP="@RUN_AS_GROUP@" @@ -180,7 +182,7 @@ ATTR{idVendor}=="09ae", ATTR{idProduct}=="4007", MODE="664", GROUP="@RUN_AS_GROU ATTR{idVendor}=="09ae", ATTR{idProduct}=="4008", MODE="664", GROUP="@RUN_AS_GROUP@" # PowerCOM -# PowerCOM BNT-xxxAP - usbhid-ups +# PowerCOM Vanguard and BNT-xxxAP - usbhid-ups ATTR{idVendor}=="0d9f", ATTR{idProduct}=="0004", MODE="664", GROUP="@RUN_AS_GROUP@" # PowerCOM IMP - IMPERIAL Series - usbhid-ups ATTR{idVendor}=="0d9f", ATTR{idProduct}=="00a2", MODE="664", GROUP="@RUN_AS_GROUP@" diff --git a/server/Makefile.am b/server/Makefile.am index 5f2f679..8146568 100644 --- a/server/Makefile.am +++ b/server/Makefile.am @@ -21,10 +21,10 @@ endif sbin_PROGRAMS = upsd EXTRA_PROGRAMS = sockdebug -upsd_SOURCES = upsd.c user.c conf.c ssl.c sstate.c desc.c \ +upsd_SOURCES = upsd.c user.c conf.c netssl.c sstate.c desc.c \ netget.c netmisc.c netlist.c netuser.c netset.c netinstcmd.c \ conf.h nut_ctype.h desc.h netcmds.h neterr.h netget.h netinstcmd.h \ - netlist.h netmisc.h netset.h netuser.h ssl.h sstate.h stype.h upsd.h \ + netlist.h netmisc.h netset.h netuser.h netssl.h sstate.h stype.h upsd.h \ upstype.h user-data.h user.h sockdebug_SOURCES = sockdebug.c diff --git a/server/Makefile.in b/server/Makefile.in index dd63712..a633c0d 100644 --- a/server/Makefile.in +++ b/server/Makefile.in @@ -86,9 +86,9 @@ sockdebug_DEPENDENCIES = ../common/libcommon.la \ ../common/libparseconf.la $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) am_upsd_OBJECTS = upsd.$(OBJEXT) user.$(OBJEXT) conf.$(OBJEXT) \ - ssl.$(OBJEXT) sstate.$(OBJEXT) desc.$(OBJEXT) netget.$(OBJEXT) \ - netmisc.$(OBJEXT) netlist.$(OBJEXT) netuser.$(OBJEXT) \ - netset.$(OBJEXT) netinstcmd.$(OBJEXT) + netssl.$(OBJEXT) sstate.$(OBJEXT) desc.$(OBJEXT) \ + netget.$(OBJEXT) netmisc.$(OBJEXT) netlist.$(OBJEXT) \ + netuser.$(OBJEXT) netset.$(OBJEXT) netinstcmd.$(OBJEXT) upsd_OBJECTS = $(am_upsd_OBJECTS) upsd_LDADD = $(LDADD) upsd_DEPENDENCIES = ../common/libcommon.la ../common/libparseconf.la \ @@ -128,6 +128,12 @@ 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@ @@ -231,6 +237,7 @@ 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@ @@ -295,10 +302,10 @@ udevdir = @udevdir@ AM_CFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) LDADD = ../common/libcommon.la ../common/libparseconf.la $(NETLIBS) \ $(am__append_3) $(am__append_4) -upsd_SOURCES = upsd.c user.c conf.c ssl.c sstate.c desc.c \ +upsd_SOURCES = upsd.c user.c conf.c netssl.c sstate.c desc.c \ netget.c netmisc.c netlist.c netuser.c netset.c netinstcmd.c \ conf.h nut_ctype.h desc.h netcmds.h neterr.h netget.h netinstcmd.h \ - netlist.h netmisc.h netset.h netuser.h ssl.h sstate.h stype.h upsd.h \ + netlist.h netmisc.h netset.h netuser.h netssl.h sstate.h stype.h upsd.h \ upstype.h user-data.h user.h sockdebug_SOURCES = sockdebug.c @@ -399,9 +406,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netmisc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netssl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netuser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockdebug.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sstate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/upsd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/user.Po@am__quote@ diff --git a/server/conf.c b/server/conf.c index 3e348e2..c4d52fc 100644 --- a/server/conf.c +++ b/server/conf.c @@ -22,7 +22,7 @@ #include "upsconf.h" #include "sstate.h" #include "user.h" -#include "ssl.h" +#include "netssl.h" ups_t *upstable = NULL; int num_ups = 0; diff --git a/server/netcmds.h b/server/netcmds.h index c0b5225..613ef44 100644 --- a/server/netcmds.h +++ b/server/netcmds.h @@ -19,7 +19,7 @@ #include "nut_ctype.h" -#include "ssl.h" +#include "netssl.h" #include "netget.h" #include "netset.h" #include "netlist.h" diff --git a/server/ssl.c b/server/netssl.c similarity index 98% rename from server/ssl.c rename to server/netssl.c index bb95dca..ff3fd4e 100644 --- a/server/ssl.c +++ b/server/netssl.c @@ -1,4 +1,4 @@ -/* ssl.c - Interface to OpenSSL for upsd +/* netssl.c - Interface to OpenSSL for upsd Copyright (C) 2002 Russell Kroll @@ -29,7 +29,7 @@ #include "upsd.h" #include "neterr.h" -#include "ssl.h" +#include "netssl.h" char *certfile = NULL; diff --git a/server/ssl.h b/server/netssl.h similarity index 96% rename from server/ssl.h rename to server/netssl.h index 7f4009c..2d6224e 100644 --- a/server/ssl.h +++ b/server/netssl.h @@ -1,4 +1,4 @@ -/* ssl.h - ssl support prototypes for upsd +/* netssl.h - ssl support prototypes for upsd Copyright (C) 2002 Russell Kroll diff --git a/server/upsd.c b/server/upsd.c index 1bb6c27..f8d9c7e 100644 --- a/server/upsd.c +++ b/server/upsd.c @@ -35,7 +35,7 @@ #include "user.h" #include "nut_ctype.h" #include "stype.h" -#include "ssl.h" +#include "netssl.h" #include "sstate.h" #include "desc.h" #include "neterr.h" diff --git a/tests/Makefile.am b/tests/Makefile.am new file mode 100644 index 0000000..3960ad8 --- /dev/null +++ b/tests/Makefile.am @@ -0,0 +1,21 @@ +# Network UPS Tools: tests + +if HAVE_CPPUNIT + +TESTS = cppunittest + +check_PROGRAMS = $(TESTS) + +cppunittest_CXXFLAGS = $(CPPUNIT_CFLAGS) +cppunittest_LDFLAGS = $(CPPUNIT_LIBS) + +# List of src files for CppUnit tests +CPPUNITTESTSRC = example.cpp + +cppunittest_SOURCES = $(CPPUNITTESTSRC) cpputest.cpp + +else !HAVE_CPPUNIT + +EXTRA_DIST = example.cpp cpputest.cpp + +endif !HAVE_CPPUNIT diff --git a/tests/Makefile.in b/tests/Makefile.in new file mode 100644 index 0000000..4530104 --- /dev/null +++ b/tests/Makefile.in @@ -0,0 +1,698 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ + +# Network UPS Tools: tests +VPATH = @srcdir@ +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@ +@HAVE_CPPUNIT_TRUE@TESTS = cppunittest$(EXEEXT) +@HAVE_CPPUNIT_TRUE@check_PROGRAMS = $(am__EXEEXT_1) +subdir = tests +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_libpowerman.m4 \ + $(top_srcdir)/m4/nut_check_libssl.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 = +@HAVE_CPPUNIT_TRUE@am__EXEEXT_1 = cppunittest$(EXEEXT) +am__cppunittest_SOURCES_DIST = example.cpp cpputest.cpp +@HAVE_CPPUNIT_TRUE@am__objects_1 = cppunittest-example.$(OBJEXT) +@HAVE_CPPUNIT_TRUE@am_cppunittest_OBJECTS = $(am__objects_1) \ +@HAVE_CPPUNIT_TRUE@ cppunittest-cpputest.$(OBJEXT) +cppunittest_OBJECTS = $(am_cppunittest_OBJECTS) +cppunittest_LDADD = $(LDADD) +cppunittest_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(cppunittest_CXXFLAGS) \ + $(CXXFLAGS) $(cppunittest_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(cppunittest_SOURCES) +DIST_SOURCES = $(am__cppunittest_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +A2X = @A2X@ +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +ASCIIDOC = @ASCIIDOC@ +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@ +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@ +@HAVE_CPPUNIT_TRUE@cppunittest_CXXFLAGS = $(CPPUNIT_CFLAGS) +@HAVE_CPPUNIT_TRUE@cppunittest_LDFLAGS = $(CPPUNIT_LIBS) + +# List of src files for CppUnit tests +@HAVE_CPPUNIT_TRUE@CPPUNITTESTSRC = example.cpp +@HAVE_CPPUNIT_TRUE@cppunittest_SOURCES = $(CPPUNITTESTSRC) cpputest.cpp +@HAVE_CPPUNIT_FALSE@EXTRA_DIST = example.cpp cpputest.cpp +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(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 tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/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): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +cppunittest$(EXEEXT): $(cppunittest_OBJECTS) $(cppunittest_DEPENDENCIES) + @rm -f cppunittest$(EXEEXT) + $(cppunittest_LINK) $(cppunittest_OBJECTS) $(cppunittest_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cppunittest-cpputest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cppunittest-example.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +cppunittest-example.o: example.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cppunittest_CXXFLAGS) $(CXXFLAGS) -MT cppunittest-example.o -MD -MP -MF $(DEPDIR)/cppunittest-example.Tpo -c -o cppunittest-example.o `test -f 'example.cpp' || echo '$(srcdir)/'`example.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cppunittest-example.Tpo $(DEPDIR)/cppunittest-example.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='example.cpp' object='cppunittest-example.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cppunittest_CXXFLAGS) $(CXXFLAGS) -c -o cppunittest-example.o `test -f 'example.cpp' || echo '$(srcdir)/'`example.cpp + +cppunittest-example.obj: example.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cppunittest_CXXFLAGS) $(CXXFLAGS) -MT cppunittest-example.obj -MD -MP -MF $(DEPDIR)/cppunittest-example.Tpo -c -o cppunittest-example.obj `if test -f 'example.cpp'; then $(CYGPATH_W) 'example.cpp'; else $(CYGPATH_W) '$(srcdir)/example.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cppunittest-example.Tpo $(DEPDIR)/cppunittest-example.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='example.cpp' object='cppunittest-example.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cppunittest_CXXFLAGS) $(CXXFLAGS) -c -o cppunittest-example.obj `if test -f 'example.cpp'; then $(CYGPATH_W) 'example.cpp'; else $(CYGPATH_W) '$(srcdir)/example.cpp'; fi` + +cppunittest-cpputest.o: cpputest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cppunittest_CXXFLAGS) $(CXXFLAGS) -MT cppunittest-cpputest.o -MD -MP -MF $(DEPDIR)/cppunittest-cpputest.Tpo -c -o cppunittest-cpputest.o `test -f 'cpputest.cpp' || echo '$(srcdir)/'`cpputest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cppunittest-cpputest.Tpo $(DEPDIR)/cppunittest-cpputest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='cpputest.cpp' object='cppunittest-cpputest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cppunittest_CXXFLAGS) $(CXXFLAGS) -c -o cppunittest-cpputest.o `test -f 'cpputest.cpp' || echo '$(srcdir)/'`cpputest.cpp + +cppunittest-cpputest.obj: cpputest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cppunittest_CXXFLAGS) $(CXXFLAGS) -MT cppunittest-cpputest.obj -MD -MP -MF $(DEPDIR)/cppunittest-cpputest.Tpo -c -o cppunittest-cpputest.obj `if test -f 'cpputest.cpp'; then $(CYGPATH_W) 'cpputest.cpp'; else $(CYGPATH_W) '$(srcdir)/cpputest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cppunittest-cpputest.Tpo $(DEPDIR)/cppunittest-cpputest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='cpputest.cpp' object='cppunittest-cpputest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cppunittest_CXXFLAGS) $(CXXFLAGS) -c -o cppunittest-cpputest.obj `if test -f 'cpputest.cpp'; then $(CYGPATH_W) 'cpputest.cpp'; else $(CYGPATH_W) '$(srcdir)/cpputest.cpp'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + echo "$$grn$$dashes"; \ + else \ + echo "$$red$$dashes"; \ + fi; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes$$std"; \ + test "$$failed" -eq 0; \ + else :; fi + +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 + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +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-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +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 -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool 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-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-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am + + +# 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 --git a/tests/cpputest.cpp b/tests/cpputest.cpp new file mode 100644 index 0000000..448dd5b --- /dev/null +++ b/tests/cpputest.cpp @@ -0,0 +1,44 @@ +/* cpputest - basic runner for unit tests + + Copyright (C) + 2012 Emilien Kia + + 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 + + +int main(int argc, char* argv[]) +{ + /* Get the top level suite from the registry */ + CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest(); + + /* Adds the test to the list of test to run */ + CppUnit::TextUi::TestRunner runner; + runner.addTest( suite ); + + /* Change the default outputter to a compiler error format outputter */ + runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), + std::cerr ) ); + /* Run the tests. */ + bool wasSucessful = runner.run(); + + /* Return error code 1 if the one of test failed. */ + return wasSucessful ? 0 : 1; +} + diff --git a/tests/example.cpp b/tests/example.cpp new file mode 100644 index 0000000..28ea52e --- /dev/null +++ b/tests/example.cpp @@ -0,0 +1,62 @@ +/* example - CppUnit unit test example + + Copyright (C) + 2012 Emilien Kia + + 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 + +class ExampleTest : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE( ExampleTest ); + CPPUNIT_TEST( testOne ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + + void testOne(); +}; + +// Registers the fixture into the 'registry' +CPPUNIT_TEST_SUITE_REGISTRATION( ExampleTest ); + + +void ExampleTest::setUp() +{ +} + + +void ExampleTest::tearDown() +{ +} + + +void ExampleTest::testOne() +{ + // Set up + int i = 1; + float f = 1.0; + + // Process + int cast = (int)f; + + // Check + CPPUNIT_ASSERT_EQUAL( i, cast ); +} + + diff --git a/tools/Makefile.in b/tools/Makefile.in index 70c7439..3229321 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -126,6 +126,12 @@ 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@ @@ -229,6 +235,7 @@ 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@ diff --git a/tools/nut-scanner/Makefile.in b/tools/nut-scanner/Makefile.in index 9396c58..5c91916 100644 --- a/tools/nut-scanner/Makefile.in +++ b/tools/nut-scanner/Makefile.in @@ -164,6 +164,12 @@ 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@ @@ -267,6 +273,7 @@ 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@ diff --git a/tools/nut-scanner/nut-scanner.c b/tools/nut-scanner/nut-scanner.c index b6cd221..db582be 100644 --- a/tools/nut-scanner/nut-scanner.c +++ b/tools/nut-scanner/nut-scanner.c @@ -1,6 +1,7 @@ /* nut-scanner.c: a tool to detect NUT supported devices * - * Copyright (C) 2011 - Arnaud Quette + * 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 @@ -122,16 +123,16 @@ static int printq(int quiet,const char *fmt, ...) return 0; } - va_start(ap, fmt); - ret = vprintf(fmt, ap); - va_end(ap); + va_start(ap, fmt); + ret = vprintf(fmt, ap); + va_end(ap); return ret; } int main(int argc, char *argv[]) { - nutscan_snmp_t sec; + nutscan_snmp_t snmp_sec; int opt_ret; char * cidr = NULL; int allow_all = 0; @@ -145,7 +146,7 @@ int main(int argc, char *argv[]) void (*display_func)(nutscan_device_t * device); int ret_code = EXIT_SUCCESS; - memset(&sec,0,sizeof(sec)); + memset(&snmp_sec, 0, sizeof(snmp_sec)); nutscan_init(); @@ -175,43 +176,43 @@ int main(int argc, char *argv[]) if(!nutscan_avail_snmp) { goto display_help; } - sec.community = strdup(optarg); + snmp_sec.community = strdup(optarg); break; case 'l': if(!nutscan_avail_snmp) { goto display_help; } - sec.secLevel = strdup(optarg); + snmp_sec.secLevel = strdup(optarg); break; case 'u': if(!nutscan_avail_snmp) { goto display_help; } - sec.secName = strdup(optarg); + snmp_sec.secName = strdup(optarg); break; case 'W': if(!nutscan_avail_snmp) { goto display_help; } - sec.authPassword = strdup(optarg); + snmp_sec.authPassword = strdup(optarg); break; case 'X': if(!nutscan_avail_snmp) { goto display_help; } - sec.privPassword = strdup(optarg); + snmp_sec.privPassword = strdup(optarg); break; case 'w': if(!nutscan_avail_snmp) { goto display_help; } - sec.authProtocol = strdup(optarg); + snmp_sec.authProtocol = strdup(optarg); break; case 'x': if(!nutscan_avail_snmp) { goto display_help; } - sec.privProtocol = strdup(optarg); + snmp_sec.privProtocol = strdup(optarg); break; case 'S': if(!nutscan_avail_snmp) { @@ -374,11 +375,11 @@ display_help: else { printq(quiet,"Scanning SNMP bus.\n"); #ifdef HAVE_PTHREAD - if( pthread_create(&thread[TYPE_SNMP],NULL,run_snmp,&sec)) { + if( pthread_create(&thread[TYPE_SNMP],NULL,run_snmp,&snmp_sec)) { nutscan_avail_snmp = 0; } #else - dev[TYPE_SNMP] = nutscan_scan_snmp(start_ip,end_ip,timeout,&sec); + dev[TYPE_SNMP] = nutscan_scan_snmp(start_ip,end_ip,timeout,&snmp_sec); #endif /* HAVE_PTHREAD */ } } diff --git a/tools/nut-scanner/nutscan-snmp.h b/tools/nut-scanner/nutscan-snmp.h index 069da20..eda7958 100644 --- a/tools/nut-scanner/nutscan-snmp.h +++ b/tools/nut-scanner/nutscan-snmp.h @@ -33,6 +33,9 @@ static snmp_device_id_t snmp_device_table[] = { { ".1.3.6.1.4.1.17373.3.1.1.0" , "aphel_genesisII", ".1.3.6.1.4.1.17373"}, { ".1.3.6.1.4.1.534.6.6.6.1.1.12.0" , "aphel_revelation", ".1.3.6.1.4.1.534.6.6.6"}, { ".1.3.6.1.4.1.534.6.6.7.1.2.1.2.0" , "eaton_epdu", ".1.3.6.1.4.1.534.6.6.7"}, + { "" , "pulizzi_monitored", NULL}, + { ".1.3.6.1.4.1.20677.1" , "pulizzi_switched1", ".1.3.6.1.4.1.20677.1"}, + { ".1.3.6.1.4.1.20677.1" , "pulizzi_switched2", ".1.3.6.1.4.1.20677.2"}, { "1.3.6.1.4.1.534.1.1.2.0" , "pw", ".1.3.6.1.4.1.534.1"}, { ".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.318.1.1.1.1.1.1.0" , "apcc", NULL}, diff --git a/tools/nut-scanner/nutscan-usb.h b/tools/nut-scanner/nutscan-usb.h index a20fdb7..e030c8a 100644 --- a/tools/nut-scanner/nutscan-usb.h +++ b/tools/nut-scanner/nutscan-usb.h @@ -70,6 +70,7 @@ static usb_device_id_t usb_device_table[] = { { 0x06da, 0x0004, "blazer_usb" }, { 0x06da, 0x0005, "blazer_usb" }, { 0x06da, 0x0201, "blazer_usb" }, + { 0x06da, 0x0601, "blazer_usb" }, { 0x06da, 0xffff, "usbhid-ups" }, { 0x075d, 0x0300, "usbhid-ups" }, { 0x0764, 0x0005, "usbhid-ups" }, diff --git a/tools/nut-scanner/scan_ipmi.c b/tools/nut-scanner/scan_ipmi.c index d47ee52..d650efa 100644 --- a/tools/nut-scanner/scan_ipmi.c +++ b/tools/nut-scanner/scan_ipmi.c @@ -1,6 +1,7 @@ /* scan_ipmi.c: detect NUT supported Power Supply Units * - * Copyright (C) 2011 - Arnaud Quette + * 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 @@ -35,8 +36,12 @@ static const char *dl_error = NULL; static int (*nut_ipmi_fru_parse_close_device_id) (ipmi_fru_parse_ctx_t ctx); static void (*nut_ipmi_fru_parse_ctx_destroy) (ipmi_fru_parse_ctx_t ctx); +#ifdef HAVE_FREEIPMI_11X_12X +static void (*nut_ipmi_sdr_ctx_destroy) (ipmi_sdr_ctx_t ctx); +#else /* HAVE_FREEIPMI_11X_12X */ static void (*nut_ipmi_sdr_cache_ctx_destroy) (ipmi_sdr_cache_ctx_t ctx); static void (*nut_ipmi_sdr_parse_ctx_destroy) (ipmi_sdr_parse_ctx_t ctx); +#endif /* HAVE_FREEIPMI_11X_12X */ static ipmi_fru_parse_ctx_t (*nut_ipmi_fru_parse_ctx_create) (ipmi_ctx_t ipmi_ctx); static int (*nut_ipmi_fru_parse_ctx_set_flags) (ipmi_fru_parse_ctx_t ctx, unsigned int flags); static int (*nut_ipmi_fru_parse_open_device_id) (ipmi_fru_parse_ctx_t ctx, uint8_t fru_device_id); @@ -97,6 +102,15 @@ int nutscan_load_ipmi_library() goto err; } +#ifdef HAVE_FREEIPMI_11X_12X + + *(void **) (&nut_ipmi_sdr_ctx_destroy) = lt_dlsym(dl_handle, "ipmi_sdr_ctx_destroy"); + if ((dl_error = lt_dlerror()) != NULL) { + goto err; + } + +#else /* HAVE_FREEIPMI_11X_12X */ + *(void **) (&nut_ipmi_sdr_cache_ctx_destroy) = lt_dlsym(dl_handle, "ipmi_sdr_cache_ctx_destroy"); if ((dl_error = lt_dlerror()) != NULL) { goto err; @@ -106,6 +120,7 @@ int nutscan_load_ipmi_library() if ((dl_error = lt_dlerror()) != NULL) { goto err; } +#endif /* HAVE_FREEIPMI_11X_12X */ *(void **) (&nut_ipmi_fru_parse_ctx_create) = lt_dlsym(dl_handle, "ipmi_fru_parse_ctx_create"); if ((dl_error = lt_dlerror()) != NULL) { @@ -172,15 +187,28 @@ err: /* end of dynamic link library stuff */ /* Cleanup IPMI contexts */ +#ifdef HAVE_FREEIPMI_11X_12X +static void nut_freeipmi_cleanup(ipmi_fru_parse_ctx_t fru_parse_ctx, + ipmi_sdr_ctx_t sdr_ctx) +#else /* HAVE_FREEIPMI_11X_12X */ static void nut_freeipmi_cleanup(ipmi_fru_parse_ctx_t fru_parse_ctx, ipmi_sdr_cache_ctx_t sdr_cache_ctx, ipmi_sdr_parse_ctx_t sdr_parse_ctx) +#endif /* HAVE_FREEIPMI_11X_12X */ { if (fru_parse_ctx) { (*nut_ipmi_fru_parse_close_device_id) (fru_parse_ctx); (*nut_ipmi_fru_parse_ctx_destroy) (fru_parse_ctx); } +#ifdef HAVE_FREEIPMI_11X_12X + + if (sdr_ctx) { + (*nut_ipmi_sdr_ctx_destroy) (sdr_ctx); + } + +#else /* HAVE_FREEIPMI_11X_12X */ + if (sdr_cache_ctx) { (*nut_ipmi_sdr_cache_ctx_destroy) (sdr_cache_ctx); } @@ -188,6 +216,8 @@ static void nut_freeipmi_cleanup(ipmi_fru_parse_ctx_t fru_parse_ctx, if (sdr_parse_ctx) { (*nut_ipmi_sdr_parse_ctx_destroy) (sdr_parse_ctx); } + +#endif /* HAVE_FREEIPMI_11X_12X */ } /* Return 1 if supported, 0 otherwise */ @@ -198,8 +228,12 @@ int is_ipmi_device_supported(ipmi_ctx_t ipmi_ctx, int ipmi_id) unsigned int area_length = 0; uint8_t areabuf[IPMI_FRU_PARSE_AREA_SIZE_MAX+1]; ipmi_fru_parse_ctx_t fru_parse_ctx = NULL; +#ifdef HAVE_FREEIPMI_11X_12X + ipmi_sdr_ctx_t sdr_ctx = NULL; +#else /* HAVE_FREEIPMI_11X_12X */ ipmi_sdr_cache_ctx_t sdr_cache_ctx = NULL; ipmi_sdr_parse_ctx_t sdr_parse_ctx = NULL; +#endif /* HAVE_FREEIPMI_11X_12X */ /* Parse FRU information */ if (!(fru_parse_ctx = (*nut_ipmi_fru_parse_ctx_create) (ipmi_ctx))) @@ -211,13 +245,21 @@ int is_ipmi_device_supported(ipmi_ctx_t ipmi_ctx, int ipmi_id) /* lots of motherboards calculate checksums incorrectly */ if ((*nut_ipmi_fru_parse_ctx_set_flags) (fru_parse_ctx, IPMI_FRU_PARSE_FLAGS_SKIP_CHECKSUM_CHECKS) < 0) { +#ifdef HAVE_FREEIPMI_11X_12X + nut_freeipmi_cleanup(fru_parse_ctx, sdr_ctx); +#else nut_freeipmi_cleanup(fru_parse_ctx, sdr_cache_ctx, sdr_parse_ctx); +#endif /* HAVE_FREEIPMI_11X_12X */ return 0; } if ((*nut_ipmi_fru_parse_open_device_id) (fru_parse_ctx, ipmi_id) < 0) { +#ifdef HAVE_FREEIPMI_11X_12X + nut_freeipmi_cleanup(fru_parse_ctx, sdr_ctx); +#else nut_freeipmi_cleanup(fru_parse_ctx, sdr_cache_ctx, sdr_parse_ctx); +#endif /* HAVE_FREEIPMI_11X_12X */ return 0; } @@ -235,7 +277,11 @@ int is_ipmi_device_supported(ipmi_ctx_t ipmi_ctx, int ipmi_id) areabuf, IPMI_FRU_PARSE_AREA_SIZE_MAX) < 0) { +#ifdef HAVE_FREEIPMI_11X_12X + nut_freeipmi_cleanup(fru_parse_ctx, sdr_ctx); +#else nut_freeipmi_cleanup(fru_parse_ctx, sdr_cache_ctx, sdr_parse_ctx); +#endif /* HAVE_FREEIPMI_11X_12X */ return 0; } @@ -244,14 +290,22 @@ int is_ipmi_device_supported(ipmi_ctx_t ipmi_ctx, int ipmi_id) if (area_type == IPMI_FRU_PARSE_AREA_TYPE_MULTIRECORD_POWER_SUPPLY_INFORMATION) { /* Found a POWER_SUPPLY record */ +#ifdef HAVE_FREEIPMI_11X_12X + nut_freeipmi_cleanup(fru_parse_ctx, sdr_ctx); +#else nut_freeipmi_cleanup(fru_parse_ctx, sdr_cache_ctx, sdr_parse_ctx); +#endif /* HAVE_FREEIPMI_11X_12X */ return 1; } } } while ((ret = (*nut_ipmi_fru_parse_next) (fru_parse_ctx)) == 1); /* No need for further errors checking */ +#ifdef HAVE_FREEIPMI_11X_12X + nut_freeipmi_cleanup(fru_parse_ctx, sdr_ctx); +#else nut_freeipmi_cleanup(fru_parse_ctx, sdr_cache_ctx, sdr_parse_ctx); +#endif /* HAVE_FREEIPMI_11X_12X */ return 0; } @@ -297,7 +351,7 @@ nutscan_device_t * nutscan_scan_ipmi() return NULL; } - /* Loop through all possible devices */ + /* Loop through all possible components */ for (ipmi_id = 0 ; ipmi_id <= IPMI_FRU_DEVICE_ID_MAX ; ipmi_id++) { if (is_ipmi_device_supported(ipmi_ctx, ipmi_id)) {