2. Very detailed Change Log

This document intends to detail the change log for relatively recent work (roughly since the source code was tracked in Git).

2.1. 2024-12-02 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/mge-hid.c: simplify debug printouts with NUT_STRARG() [#2684, #1737]

2.2. 2024-12-02 Greg Troxel <gdt@lexort.com>

  • tests/nutipc_ut.cpp: tests: Do not expect signals to be messages POSIX does not require 1:1 delivery per kill() call. Adjust the test to not require behavior that 1) POSIX does not require and 2) is only probabalistically observed to happen, even if "most of the time".
  • include/nutipc.hpp: core ipc: Handle select returning EINTR

2.3. 2024-12-02 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: typo space removed

2.4. 2024-12-01 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • drivers/mge-hid.c: comment regarding ChargerType

2.5. 2024-12-01 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/mge-hid.c: restore white-space (TAB indentation and between decl type and varname)
  • drivers/mge-hid.c: restore white-space (TAB indentation and between decl type and varname) [#2684]
  • docs/snmp-subdrivers.txt: update with snmp_info_default() macro example [#2285]
  • docs/new-drivers.txt: quote driver names; note modbus unrelated drivers so far [#50, #1765]
  • NEWS.adoc: moved phoenixcontact_modbus update to other drivers [#2689]
  • drivers/phoenixcontact_modbus.c: fix use of pragmas for default switch cases [#2689]
  • drivers/phoenixcontact_modbus.c: no break after fatalx() [#2689]

2.6. 2024-12-01 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: add debug message for bypass/eco outside limits
  • drivers/mge-hid.c: Fix for bypass/eco when no values or outside of limits

2.7. 2024-11-30 Jim Klimov <jimklimov@gmail.com>

  • drivers/nhs_ser.c: populate missed explicit method parameter [#2692]

2.8. 2024-11-30 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: add debug log when enter to eco/bypass modes
  • drivers/mge-hid.c: fix eco vars in debug meassage
  • drivers/mge-hid.c: Fix for bypass limit In case we dont have Bypass transfer limit variables but still have ability to enter Bypass mode

2.9. 2024-11-29 RikyPlaza <158032745+RikyPlaza@users.noreply.github.com>

  • drivers/phoenixcontact_modbus.c: Handled default case with error
  • drivers/phoenixcontact_modbus.c: Re-implemented default cases.
  • drivers/phoenixcontact_modbus.c: Extended comment to "default" label example

2.10. 2024-11-29 Jim Klimov <jimklimov@gmail.com>

  • NEWS.adoc, configure.ac, docs/man/Makefile.am, docs/man/nhs_ser.txt, docs/nut.dict, drivers/Makefile.am: configure.ac, drivers/Makefile.am, docs/man/Makefile.am, docs/man/nhs_ser.txt, NEWS.adoc: temporarily constrain nhs_ser to Linux-only NUT builds [#2692]

2.11. 2024-11-29 Jim Klimov <jimklimov+nut@gmail.com>

  • data/driver.list.in: add usbhid-ups supported Ippon models [#2702]
  • drivers/nhs_ser.c: hide upsdrv_updateinfo() debug log of processing at verbosity 3-4_ [#2692]
  • drivers/nhs_ser.c: keep debug log of main milestones and errors at verbosity 1, add func [#2692]
  • drivers/nhs_ser.c: quieter logging in print_pkt_hwinfo() and print_pkt_data() [#2692]
  • drivers/nhs_ser.c: log method starting/ending quieter and with use of func [#2692]
  • drivers/nhs_ser.c: upsdrv_updateinfo(): rename "nhs." datapoints into "experimental.nhs." namespace [#2692]
  • drivers/nhs_ser.c: upsdrv_updateinfo(): FIXME commented - same criteria used for 3 alarms [#2692]
  • drivers/nhs_ser.c: memory robustness: strcpy⇒strncpy [#2692]
  • drivers/nhs_ser.c: memory robustness: sprintf⇒snprintf [#2692]
  • drivers/nhs_ser.c: fix code markup into NUT style [#2692] * indent with TAB characters, * separate declaration type and varname with TAB(s), * use space after comma
  • drivers/nhs_ser.c: fix "for (int i…)" to use of pre-declared variables [#2692]
  • drivers/nhs_ser.c: fix DEFAULLTPERC ⇒ DEFAULTPERC typo in the macro name [#2692]
  • drivers/nhs_ser.c: fix comment markup, wrap long lines, inject TABs in structs [#2692] Also drop comments from standalone program legacy now that this driver is an integrated part of NUT codebase.
  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - sprintf() from and to same variable [#2692] nhs_ser.c: In function ‘upsdrv_updateinfo’: nhs_ser.c:1858:37: error: ‘sprintf’ argument 3 overlaps destination object ‘alarm’ [-Werror=restrict] 1858 \| sprintf(alarm,"%s %s",alarm,"|UPS IN BATTERY MODE|"); \| ^~~~~~~~~~~~~~~~~~~~~~~~~~\
  • drivers/nhs_ser.c: upsdrv_updateinfo(): refactor debug of bad mains [#2692]

2.12. 2024-11-29 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: change voltage limit setting same as frequency in eco function also
  • drivers/mge-hid.c: change voltage limit setting same as frequency
  • drivers/mge-hid.c: move NUT_UNUSED_VARIABLE(value); back down
  • drivers/mge-hid.c: change the state for debug when no eco transfer limits avalible to use defaults
  • drivers/mge-hid.c: change vars in eaton_input_eco_mode_check_range()
  • drivers/mge-hid.c: change vars in eaton_input_bypass_check_range()
  • data/cmdvartab, docs/nut-names.txt: much clear description for input.transfer.bypass.forced

2.13. 2024-11-28 fenugrec <fenugrec@users.sourceforge.net>

  • drivers/libusb1.c: fix wrong return value of nut_libusb_get_interrupt() cf github #2401. When global var interrupt_size is not set, a transfer size of SMALLBUF (512) is requested when calling libusb_interrupt_transfer(). Our function nut_libusb_get_interrupt() should return the actual transferred size. Otherwise, the caller will attempt to parse any uninitialized data in the buffer after the response. In libusb0.c this was done correctly by using the return value of usb_interrupt_read(). With libusb1, the transferred size is written to tmpbufsize, and should therefore be used as the return val.

2.14. 2024-11-28 RikyPlaza <158032745+RikyPlaza@users.noreply.github.com>

  • drivers/phoenixcontact_modbus.c: Added pragma statemets as per tip to avoid compiler complains on "default" label in switch statements.

2.15. 2024-11-28 Lucas Bocchi <lucas.bocchii@gmail.com>

  • drivers/nhs_ser.c: Another miscalculation in battery time duration.
  • drivers/nhs_ser.c: Change on line 1936 - Battery voltage hardcoded in 12.0 v

2.16. 2024-11-28 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/developers.txt, docs/nut.dict: docs/developers.txt: clarify pragmas in switch/case/default vs. enum [#2689, #823]
  • NEWS.adoc, drivers/dstate.c: drivers/dstate.c: fflush(stdout) after dstate_dump() [#2695]
  • drivers/libusb1.c: nut_libusb_open(): fix if-clause typo to report that no devices were accessible (and none others matched) [#2699]
  • NEWS.adoc, drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c, NEWS.adoc: report if some devices WERE accessible but did not match [#2699]

2.17. 2024-11-28 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: 9PX added to comments
  • drivers/mge-hid.c: add 9PX models also
  • drivers/mge-hid.c: change to small chars
  • drivers/mge-hid.c: added Eaton 9SX

2.18. 2024-11-27 Lucas Bocchi <lucas.bocchii@gmail.com>

  • drivers/nhs_ser.c: Error on line 1717, on function to reopen serial in case of problem. We have default values but I set with variable porta and baudrate the correct port and speed.

2.19. 2024-11-27 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - float overflow [#2692] CodeQL alert: * Multiplication result converted to larger type High * Multiplication result may overflow float before it is converted to double.
  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - unused methods [#2692] Hide them away: nhs_ser.c:939:15: error: unused function strtolow [-Werror,-Wunused-function] static char
  • strtolow(char* s) { ^ nhs_ser.c:902:12: error: unused function write_serial [-Werror,-Wunused-function] static int write_serial(int fd, const char * dados, int size) { \^ 2 errors generated.
  • docs/man/nhs_ser.txt, drivers/nhs_ser.c: introduce option flags for debug_pkt_raw, debug_pkt_data, debug_pkt_hwinfo [#2692] Also helps avoid dead code and this warning: nhs_ser.c:467:13: error: unused function print_pkt_data [-Werror,-Wunused-function] static void print_pkt_data(pkt_data data) { \^
  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - shadowed variables (serial_fd) [#2692]
  • drivers/nhs_ser.c: drivers/nhs-nut.c: update © heading [#2692]
  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - comparing floating-points [#2692] nhs_ser.c:1873:74: error: comparing floating point with == or != is unsafe [-Werror,-Wfloat-equal] perc = get_vin_perc("vin_low_warn_perc") == get_vin_perc("vin_low_crit_perc") ? 2 : 1; ~~~~~~~~~~~~~~~~ \^ ~~~~~~~~~~~~~~~~\
  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - casting round() to int/long [#2692] This is an odd one, see https://stackoverflow.com/a/43481925/4715872 nhs_ser.c:1865:74: error: cast from function call of type double to non-matching type int [-Werror,-Wbad-function-cast] dstate_setinfo("ups.realpower","%d",(int)round(vpower)); ^~~~~~\~ The lrint() family of methods should be part of C99 and above, returning a long approximation of a double or float argument. Had to adjust dstate_setinfo() parameters from (unsigned) int to long.
  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - variable length array [#2692] nhs_ser.c:897:21: error: variable length array used [-Werror,-Wvla] uint8_t message[size]; ^~\
  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - mixing declarations and code [#2692] nhs_ser.c:904:17: error: mixing declarations and code is incompatible with standards before C99 [-Werror,-Wdeclaration-after-statement] ssize_t bytes_written = write(serial_fd, message,size); \^
  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - shadowed variables [#2692] nhs_ser.c:519:32: error: declaration shadows a variable in the global scope [-Werror,-Wshadow] static int openfd(const char * porta, int BAUDRATE) { ^ nhs_ser.c:247:13: note: previous declaration is here static char porta[1024] = DEFAULTPORT; ^ nhs_ser.c:1943:42: error: declaration shadows a local variable [-Werror,-Wshadow] for (int i = 0; i < 5; i+\+) { ^ nhs_ser.c:1657:18: note: previous declaration is here unsigned int i = 0; \^
  • drivers/nhs_ser.c: drivers/nhs-nut.c: fix compiler complaints - static vars/methods and strict parameters [#2692] * Static internal methods and pre-declarations on top of file: nhs_ser.c:1549:14: error: no previous prototype for function get_va [-Werror,-Wmissing-prototypes] unsigned int get_va(int equipment) { ^ nhs_ser.c:1549:1: note: declare static if the function is not intended to be used outside of this translation unit unsigned int get_va(int equipment) { ^ static * Explicit void args: nhs_ser.c:1571:20: error: this old-style function definition is not preceded by a prototype [-Werror,-Wstrict-prototypes] unsigned int get_ah() { \^
  • drivers/Makefile.am: Rename "nhs-nut" to "nhs_ser" follow-up [#2692]
  • drivers/nhs_ser.c: update comment about use of "clang --analyze" [#2692]
  • data/driver.list.in: update with devices supported by nhs_ser driver [#2692] List extracted from current driver code with grep strcpy(data.upsdesc drivers/nhs_ser.c | \ sed s/\^ strcpy(data.upsdesc,"\(.\)".*$/"NHS Sistemas Eletronicos LTDA"\t"ups"\t"2"\t"\1"\t"Serial port"\t"nhs_ser"/ \ >> data/driver.list.in
  • NEWS.adoc, docs/man/nhs_ser.txt, docs/nut.dict: NEWS.adoc, docs/man/nhs_ser.txt: rephrase naming of devices covered by nhs_ser driver [#2692]
  • NEWS.adoc, docs/man/Makefile.am, docs/man/{nhs-nut.txt ⇒ nhs_ser.txt}, drivers/Makefile.am, drivers/{nhs-nut.c ⇒ nhs_ser.c}: Rename "nhs-nut" to "nhs_ser" [#2692]
  • docs/man/Makefile.am, docs/man/nhs-nut.txt, docs/nut.dict: docs/man/nhs-nut.txt: introduce new driver manpage [#2692]
  • drivers/nhs-nut.c: revise upsdrv_makevartable(): fix help messages [#2692]
  • drivers/nhs-nut.c: revise upsdrv_makevartable(): use snprintf() and fix some more markup [#2692]
  • drivers/nhs-nut.c: revise upsdrv_makevartable() content and markup [#2692]
  • drivers/nhs-nut.c: fix DRIVER_VERSION to double-digits [#2692]
  • NEWS.adoc, docs/nut.dict: NEWS.adoc: introduce nhs-nut (sic) driver [#2692]
  • drivers/nhs-nut.c: fix upsdrv_shutdown() [#2692]
  • drivers/nhs-nut.c: fix trailing whitespace [#2692]
  • drivers/nhs-nut.c: fix compiler complaints [#2692] nhs-nut.c: In function ‘mount_hwinfo’: nhs-nut.c:786:5: error: missing initializer for field ‘end_marker’ of ‘pkt_hwinfo’ [-Werror=missing-field-initializers] 786 | }; | ^ nhs-nut.c:177:18: note: ‘end_marker’ declared here 177 \| unsigned int end_marker; | ^~~~~\~
  • drivers/nhs-nut.c: fix compiler complaints [#2692] Copy-paste typo? nhs-nut.c: In function ‘mount_datapacket’: nhs-nut.c:693:29: error: operation on ‘pktdata.icarregrms_real’ may be undefined [-Werror=sequence-point] 693 \| pktdata.icarregrms_real = pktdata.icarregrms_real = pktdata.icarregrms * 30; \| ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~\
  • drivers/nhs-nut.c: fix compiler complaints [#2692] nhs-nut.c: In function ‘get_bit_in_position’: nhs-nut.c:357:22: error: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Werror=sign-compare] 357 \| if (bit_position >= size * 8) { | ^\~
  • drivers/nhs-nut.c: fix compiler complaints [#2692] nhs-nut.c: In function ‘upsdrv_makevartable’: nhs-nut.c:2090:88: error: format ‘%f’ expects argument of type ‘double’, but argument 3 has type ‘int’ [-Werror=format=] 2090 \| sprintf(help,"Voltage In Percentage to calculate warning low level. Default is %0.2f",DEFAULLTPERC); \| ~~^ \| | \| double \| %0.2d etc. for other default macros
  • drivers/nhs-nut.c: fix compiler complaints [#2692] nhs-nut.c: In function ‘upsdrv_updateinfo’: nhs-nut.c:1733:53: error: format not a string literal and no format arguments [-Werror=format-security] 1733 \| upsdebugx(1,alarm); | ^~\~
  • drivers/nhs-nut.c: fix compiler complaints [#2692] nhs-nut.c:797:29: error: iteration 6 invokes undefined behavior [-Werror=aggressive-loop-optimizations] 797 \| pkthwinfo.status[i] = get_bit_in_position(&datapacket[14],sizeof(datapacket[14]),i,0); \| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\~
  • drivers/nhs-nut.c: fix compiler complaints [#2692] nhs-nut.c:713:43: error: suggest braces around empty body in an ‘if’ statement [-Werror=empty-body] 713 \| if (pktdata.perc_output > 100); \| ^ nhs-nut.c:713:13: error: this ‘if’ clause does not guard… [-Werror=misleading-indentation] 713 \| if (pktdata.perc_output > 100); | ~ nhs-nut.c:714:17: note: …this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’ 714 \| pktdata.perc_output = 100; | ~~\
  • drivers/nhs-nut.c: fix compiler complaints [#2692] nhs-nut.c:604:59: error: unused parameter ‘size’ [-Werror=unused-parameter] 604 \| pkt_data mount_datapacket(unsigned char * datapacket, int size, double tempodecorrido,pkt_hwinfo pkt_upsinfo) { \| ~~~\ nhs-nut.c:604:72: error: unused parameter ‘tempodecorrido’ [-Werror=unused-parameter] 604 \| pkt_data mount_datapacket(unsigned char * datapacket, int size, double tempodecorrido,pkt_hwinfo pkt_upsinfo) { \| ~~~~~~~~~\~
  • drivers/nhs-nut.c: fix compiler complaints [#2692] nhs-nut.c: In function ‘print_pkt_data’: nhs-nut.c:464:17: error: zero-length gnu_printf format string [-Werror=format-zero-length] 464 \| upsdebugx(1,""); | ^\~
  • drivers/Makefile.am: add nhs-nut to SERIAL_DRIVERLIST [#2692]

2.20. 2024-11-27 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • data/cmdvartab, docs/nut-names.txt: more clear description for input.transfer.bypass.forced
  • data/cmdvartab: change enable/disable to (enabled or disabled) in cmdvartab

2.21. 2024-11-26 RikyPlaza <158032745+RikyPlaza@users.noreply.github.com>

  • drivers/phoenixcontact_modbus.c: Removed default case label since clang complains.

2.22. 2024-11-26 Lucas Bocchi <lucas.bocchii@gmail.com>

  • drivers/nhs-nut.c: Some fixes in 1) Miscalculations of battery voltage and amps 2) Miscalculations in battery capacity 3) Miscalculations in time remaining
  • drivers/nhs-nut.c: Function have some errors and again need to re-commit code.
  • drivers/nhs-nut.c: Some small fixes in get_bit_in_position()
  • drivers/nhs-nut.c: Some minor alterations

2.23. 2024-11-25 RikyPlaza <158032745+RikyPlaza@users.noreply.github.com>

  • drivers/phoenixcontact_modbus.c: Corrected enum definition.
  • NEWS.adoc: Updated NEWS.adoc
  • drivers/phoenixcontact_modbus.c: Used enum for model type instead of defines
  • drivers/phoenixcontact_modbus.c: Alligned device.model variable
  • drivers/phoenixcontact_modbus.c: Review of variable declaration due to clang build failure

2.24. 2024-11-25 Lucas Bocchi <lucas.bocchii@gmail.com>

  • drivers/nhs-nut.c: First commit of NHS drivers/nhs-nut.c

2.25. 2024-11-24 RikyPlaza <158032745+RikyPlaza@users.noreply.github.com>

  • drivers/phoenixcontact_modbus.c: Avoid to use uint32_t* reading more than one modbus address and corrected alarm trigger (wrong bit used)

2.26. 2024-11-23 RikyPlaza <158032745+RikyPlaza@users.noreply.github.com>

2.27. 2024-11-22 RikyPlaza <rikyrod2001@gmail.com>

  • drivers/phoenixcontact_modbus.c: Added management for newer models which have different modbus addresses. Choice is made basing on firmware version.

2.28. 2024-11-21 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c, drivers/usbhid-ups.h: comments changes
  • drivers/mge-hid.c: more small comments changes
  • docs/nut-names.txt: fix again
  • docs/nut-names.txt: fix nut-names.txt

2.29. 2024-11-20 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/app/NUT-Monitor: improve portability (especially in testing) by not relying on only shebang
  • scripts/python/app/NUT-Monitor-py2gtk2.in, scripts/python/app/NUT-Monitor-py3qt5.in: scripts/python/app/NUT-Monitor-py3qt5.in and NUT-Monitor-py2gtk2.in: if SCRIPTDIR/../module/PyNUT.py exists, import it preferentially

2.30. 2024-11-20 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: small comments added
  • drivers/mge-hid.c: small comments change
  • drivers/usbhid-ups.h: small comment added
  • drivers/usbhid-ups.c, drivers/usbhid-ups.h: add ess mode
  • drivers/mge-hid.c: small comments change
  • data/cmdvartab, docs/nut-names.txt, drivers/mge-hid.c: rename input.transfer.forced to input.transfer.bypass.forced

2.31. 2024-11-19 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • drivers/mge-hid.c: reset ABM path when ABM not enabled

2.32. 2024-11-19 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • data/cmdvartab, docs/nut-names.txt: change rest bypass to Bypass
  • docs/nut-names.txt: bypass to Bypass in nut-names.txt
  • data/cmdvartab, docs/nut-names.txt: added to cmdvartab and nut-names.txt
  • drivers/mge-hid.c: added input.transfer.bypass.overload and input.transfer.bypass.outlimits
  • drivers/mge-hid.c: added input.bypass.switchable

2.33. 2024-11-18 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: change double to %.1f of voltage and frequency
  • drivers/mge-hid.c: add debug log in case out of limits for bypass/eco
  • drivers/mge-hid.c: comment added
  • drivers/mge-hid.c: rename eco function

2.34. 2024-11-16 Jim Klimov <jimklimov@gmail.com>

  • drivers/usbhid-ups.c: report unhandled negative HIDGetEvents() return values [#2681]
  • NEWS.adoc, docs/man/usbhid-ups.txt, drivers/usbhid-ups.c, include/nutconf.hpp: drivers/usbhid-ups.c: fix fallout of #2671 and complete the feature with optional interrupt_pipe_no_events_tolerance setting [#2681]

2.35. 2024-11-16 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: fix for upsnotify references

2.36. 2024-11-15 Jim Klimov <jimklimov+nut@gmail.com>

2.37. 2024-11-15 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: fix commands func
  • drivers/mge-hid.c: add check range for eco/bypass commands

2.38. 2024-11-14 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/mge-hid.c: bump subdriver version for added ECO code [#2637]
  • drivers/mge-hid.c: drop ECO/ABM-related changes from PR #2637 (revised in later PR)
  • clients/status.h: lower severity of ECO state [#2637]
  • drivers/mge-hid.c: reshuffle whitespace/markup of ECO code to same standard as around [#2637]

2.39. 2024-11-12 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: new distros' clang-medium warnings want -Wno-nullable-to-nonnull-conversion flag
  • drivers/apc_modbus.c: actually, report USB support (also) in DRIVER_NAME [#2666]
  • configure.ac, NEWS.adoc, UPGRADING.adoc: reshuffle defaulting of --with-modbus\+usb=yes and fix a typo checking --with-drivers there [#2666]
  • NEWS.adoc, UPGRADING.adoc: NEWS.adoc: document fixes for libmodbus\+libusb support [#2666]
  • drivers/apc_modbus.c: report (in debug traces) whether USB-capable libmodbus was used to build this driver [#2666]
  • configure.ac, docs/configure.txt: configure.ac: introduce --with-modbus\+usb option to require USB-capable libmodbus [#2666]
  • configure.ac: report "Modbus drivers" as plural [#2676]
  • configure.ac: report if building modbus\+usb [#2666]
  • m4/nut_check_libmodbus.m4: try re-detecting libmodbus support for libusb adding its CFLAGS and LIBS into the loop [#2666]
  • docs/config-prereqs.txt: update Debian/Ubuntu/TermUX with explicit binutils (for ldd) [#2673]
  • NEWS.adoc, configure.ac, m4/nut_report_feature.m4: configure.ac, m4/nut_report_feature.m4: group lines of first section better with NUT_REPORT_FEATURE, NUT_REPORT_DRIVER, NUT_REPORT_PROGRAM [#2676]

2.40. 2024-11-12 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: add ChargerType to ABM Table

2.41. 2024-11-11 Jim Klimov <jimklimov@gmail.com>

  • clients/Makefile.am: consider LIBSSL_LDFLAGS_RPATH [#2674]
  • m4/nut_check_libnss.m4: experiment more with LIBSSL_LDFLAGS_RPATH on Solarish platforms [#2674]
  • drivers/Makefile.am, server/Makefile.am, tools/nut-scanner/Makefile.am: server/Makefile.am, drivers/Makefile.am: consider LIBSSL_LDFLAGS_RPATH also [#2674]

2.42. 2024-11-10 Jim Klimov <jimklimov@gmail.com>

  • ci_build.sh: OpenIndiana and 32-bit libgd, do not only check about that situation with GCC [#2673]
  • m4/nut_check_libnetsnmp.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libneon.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libmodbus.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libgpiod.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libavahi.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libwrap.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libusb.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libsystemd.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libregex.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libpowerman.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libopenssl.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libnss.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libltdl.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libfreeipmi.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libgd.m4: convert to use depCFLAGS etc. and mix them with build-common CFLAGS etc. for target-platform-relevant checks [#2673]
  • m4/nut_check_libgd.m4: in test program, check also the gdImageString() [#2673]

2.43. 2024-11-10 Jim Klimov <jim@jimklimov.com>

  • NEWS.adoc, docs/config-prereqs.txt, docs/nut.dict: NEWS.adoc, docs/config-prereqs.txt: document solutions for #2673 and #2674
  • configure.ac, m4/nut_check_libnss.m4, m4/nut_check_libopenssl.m4, tools/nut-scanner/Makefile.am: m4/nut_check_libnss.m4, tools/nut-scanner/Makefile.am, etc: track LIBSSL_LDFLAGS_RPATH (custom on Solaris/illumos) [#2674]

2.44. 2024-11-09 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/config-prereqs.txt: update Mozilla NSS notes for OpenIndiana and OmniOS
  • ci_build.sh: more CI clues to recognize target bitness

2.45. 2024-11-08 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/config-prereqs.txt, docs/nut.dict: docs/config-prereqs.txt: update for OpenIndiana packaging of Mozilla NSPR
  • docs/config-prereqs.txt: extra header-nss package in OpenIndiana 2024.x
  • ci_build.sh: revise build of CGI on OI (troublesome with 32-bit variant nowadays)

2.46. 2024-11-06 Michał Bogdziewicz <michal@bogdziewicz.xyz>

  • drivers/usbhid-ups.c: handle zero HID events with reconnection

2.47. 2024-11-05 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/ci-farm-lxc-setup.txt, docs/config-prereqs.txt, docs/images/ci/jenkins-nut.txt, docs/nut.dict: docs/config-prereqs.txt, docs/ci-farm-lxc-setup.txt et al: update for NUT CI farm baseline JDK17 (per Jenkins core requirements since autumn 2024)

2.48. 2024-11-03 William Goodspeed <86338960+goodspeed34@users.noreply.github.com>

  • drivers/ydn23.h: fix bad lchksum Fix a bad checksum in length field. However, ‘liebert-gxe’ was not affected because the frame never exceeds 2\^4-1.

2.49. 2024-10-28 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • drivers/mge-hid.c: improve path decisions and comments

2.50. 2024-10-28 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: remove unused eaton_abm_charger_type_fun()
  • drivers/mge-hid.c: add UPS.BatterySystem.Charger.ChargerType to abm table

2.51. 2024-10-27 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • drivers/mge-hid.c: improve debug and enabled-ness
  • drivers/mge-hid.c: remove ABM_ENABLED_TYPE
  • drivers/mge-hid.c: explicit cast doubles to integers
  • drivers/mge-hid.c: refactor, treat ABM unknown as disabled

2.52. 2024-10-27 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: added comment
  • drivers/mge-hid.c: remove comment
  • drivers/mge-hid.c: more clear comments for charger modes
  • drivers/mge-hid.c: typo in comment
  • drivers/mge-hid.c: make abm charger tables better look

2.53. 2024-10-23 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: add info for Note ABM
  • drivers/mge-hid.c: typo in commment
  • drivers/mge-hid.c: update and clean code for statuses for easy to read and work
  • drivers/mge-hid.c: make code looks better

2.54. 2024-10-22 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/acknowledgements.txt: PCM/Powercom has a link back to NUT, nice!
  • docs/asciidoc.conf: support anchors in PDF
  • docs/acknowledgements.txt: use 4th arg to linkdoc specifically for HTML-Chunked section file names
  • docs/asciidoc.conf: introduce 4th arg to linkdoc specifically for HTML-Chunked section file names
  • docs/acknowledgements.txt: adapt reference to anchor in README to different renderers
  • docs/acknowledgements.txt: use "linkdoc" instead of "linksingledoc" (nut-website does not deliver single-HTML versions)

2.55. 2024-10-22 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: remove dischrg in ups.status when on battery for 9E Model
  • drivers/mge-hid.c: fix again
  • drivers/mge-hid.c: fix if
  • drivers/mge-hid.c: Fix again
  • drivers/mge-hid.c: Fix Typo
  • drivers/mge-hid.c: add possibly fix for 9E not chaging status when battery.charge < 100% , also avoid using same paths

2.56. 2024-10-21 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/mge-hid.c: bump version for beeper changes
  • docs/nut.dict: update for recent edits

2.57. 2024-10-21 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: change back to ABM_UNKNOWN and use only BOOL chrg/dschrg (eaton_charging_info(),eaton_discharging_info()) func to make same as was in original code for Constant Charge

2.58. 2024-10-20 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: add linksrcdoc and suggestsrcdoc macros
  • NEWS.adoc: beeper support with MGE HID [#2662]
  • UPGRADING.adoc: document ALARMCRITICAL setting [#2658]
  • INSTALL.nut.adoc: fix markup for linksrcdoc to GH-compatible macro call …and use proper new extensions
  • docs/ci-farm-lxc-setup.txt: fix text around linksrcdoc
  • docs/asciidoc.conf: fix anchored linkdoc for chunked-HTML (with anchors becoming filenames)
  • docs/asciidoc.conf: refactor repetitive text with suggestsrcdoc
  • docs/asciidoc.conf: define linksrcdoc after its consumers and do not refer to "link" macro anymore
  • Makefile.am: maintainer-asciidocs: port POSIX-shell replace_all() to help with backslashes
  • INSTALL.nut.adoc, README.adoc: Update NUT documentation sources with current docs/asciidoc-vars.conf: 4baaac1d4 (2024-10-20)
  • docs/acknowledgements.txt: experiment with 3-argument linksingledoc rendering
  • INSTALL.nut.adoc, docs/ci-farm-lxc-setup.txt: experiment with linksrcdoc and 3-argument linkdoc rendering
  • docs/asciidoc-vars.conf: define linksrcdoc with top_srcdir in th eloop
  • docs/asciidoc-vars.conf: try defining linksrcdoc macro
  • docs/asciidoc.conf: add linksrcdoc macro; extend definition of linkdoc and linksingledoc macros with optional reference to NUT source text document
  • docs/asciidoc.conf: update comments about macro definition per se

2.59. 2024-10-20 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: add comment
  • drivers/mge-hid.c: change back to ABM_DISABLED

2.60. 2024-10-19 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: set ABM_UNKNOWN for test ups.status
  • drivers/mge-hid.c: add advanced_battery_mode flag for not overwrite advanced_battery_monitoring if eaton_abm_enabled_fun() was runned
  • drivers/mge-hid.c: add comment
  • drivers/mge-hid.c: set advanced_battery_monitoring to disable in case of advanced_battery_monitoring != ABM
  • drivers/mge-hid.c: change debug message
  • drivers/mge-hid.c: comment change
  • drivers/mge-hid.c: add debug for set advanced_battery_type

2.61. 2024-10-18 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: fix again
  • drivers/mge-hid.c: typo fix
  • drivers/mge-hid.c: fixes
  • drivers/mge-hid.c: add eaton_abm_enabled_type_info()
  • drivers/mge-hid.c: typo fix
  • drivers/mge-hid.c: add eaton_abm_charger_type_fun()
  • drivers/mge-hid.c: add eaton_abm_charger_type_fun()
  • drivers/mge-hid.c: change if also in eaton_abm_enabled_fun()
  • clients/status.h: change severity to 1 instead 2
  • drivers/mge-hid.c: change back to if (dstate_getinfo("battery.charger.type"))
  • drivers/mge-hid.c: change all status same as original was \+ add ABM_ENABLED_TYPE

2.62. 2024-10-17 yonesmit <yonesmit@gmail.com>

  • drivers/mge-hid.c: Update mge-hid.c
  • drivers/mge-hid.c: Update mge-hid.c

2.63. 2024-10-17 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • clients/upsmon.c: additional debug messages for alarm states

2.64. 2024-10-17 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/ci-farm-lxc-setup.txt: fix asciidoc markup for nested paragraphs in indented lists

2.65. 2024-10-17 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: add back missing advanced_battery_monitoring=value;
  • drivers/mge-hid.c: try simple eaton_abm_enabled_fun()
  • drivers/mge-hid.c: int to double
  • drivers/mge-hid.c: fix declaration
  • drivers/mge-hid.c: fix eaton_abm_enabled_fun()

2.66. 2024-10-16 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • NEWS.adoc: fix typo regarding alarm handling
  • NEWS.adoc: adapt for broader scope of alarm handling
  • tools/nutconf/nutconf-cli.cpp: add alarm notifiers
  • scripts/python/app/NUT-Monitor-py2gtk2.in: add alarm status
  • scripts/python/app/NUT-Monitor-py3qt5.in: add alarm status
  • scripts/augeas/nutupsmonconf.aug.in: add alarm notifiers
  • include/nutconf.hpp: add alarm notifiers
  • docs/man/nutconf.txt: add alarm notifiers
  • common/nutconf.cpp, common/nutwriter.cpp: add alarm notifiers
  • clients/status.h: add alarm status

2.67. 2024-10-16 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: battery.charger.type.status added
  • drivers/mge-hid.c: same for eaton_abm_chrg_dischrg_info()
  • drivers/mge-hid.c: put battery.charger.status \+ battery.charger.mode and battery.charger.status for bath in one functions
  • drivers/mge-hid.c: add eaton_abm_chrg_dischrg_status_fun()
  • drivers/mge-hid.c: added battery.charger.abm.status for UPS.BatterySystem.Charger.Status
  • drivers/mge-hid.c: add eaton_abm_status_fun()
  • drivers/mge-hid.c: fix ABM Table
  • drivers/mge-hid.c: some try for add battery.charger.status \+ battery.charger.mode
  • drivers/mge-hid.c: add battery.charger.type

2.68. 2024-10-15 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • docs/man/upsmon.txt: make alarm notifiers consistent
  • docs/man/upsmon.conf.txt: add alarm settings
  • docs/man/upsmon.txt: add alarm settings
  • docs/nut.dict: add alarm-related words
  • conf/upsmon.conf.sample.in: add alarm settings
  • NEWS.adoc: add upsmon alarm handling

2.69. 2024-10-14 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • clients/upsmon.c, clients/upsmon.h: add alarm handling

2.70. 2024-10-14 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • docs/nut-names.txt: change to on in nut-names.txt also
  • drivers/mge-hid.c: change some values for bypass/eco

2.71. 2024-10-13 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • data/cmdvartab, docs/nut-names.txt: ecocontrol change description
  • docs/nut-names.txt: change nut-names.txt also
  • drivers/mge-hid.c: change eco/bypass values to avoid ERR TOO-LONG

2.72. 2024-10-12 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: add comment
  • drivers/mge-hid.c: fix upsdebugx
  • drivers/mge-hid.c: check freq limit in separate block for eaton_input_bypass_check_range()
  • drivers/mge-hid.c: check freq limit in separate block in eco mode
  • drivers/mge-hid.c: add function for check eco range
  • drivers/mge-hid.c: change comments sign
  • drivers/mge-hid.c: add frequency default in case no value

2.73. 2024-10-11 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: announce ECO mode concept support [issue #2495, PR #2637]
  • scripts/python/app/NUT-Monitor-py2gtk2.in, scripts/python/app/NUT-Monitor-py3qt5.in: scripts/python/app/NUT-Monitor-*: add reporting for ECO status [#2367]
  • clients/upsmon.c, clients/upsmon.h, common/nutconf.cpp, common/nutwriter.cpp, conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt, docs/man/upsmon.txt, docs/nut.dict, include/nutconf.hpp, scripts/augeas/nutupsmonconf.aug.in, tools/nutconf/nutconf-cli.cpp: upsmon (sources, docs, config samples, C+\+ nutconf support): add tracking and reporting for ECO status [#2367]
  • clients/status.h: add an entry for ECO status [#2367]
  • docs/nut.dict: update for changes in docs/nut-names.txt [#2495, #2637]

2.74. 2024-10-11 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: add freq to function comment
  • drivers/mge-hid.c: add frequency range check to eaton_input_bypass_check_range()
  • drivers/mge-hid.c: move declaration uppper
  • drivers/mge-hid.c: fix again upsdebugx
  • drivers/mge-hid.c: fix typo
  • drivers/mge-hid.c: more details for debugx \+ move declaration up
  • drivers/mge-hid.c: fix2 debugx
  • drivers/mge-hid.c: fix for upsdebugx
  • drivers/mge-hid.c: function to up for definition
  • drivers/mge-hid.c: fix3 eaton_input_bypass_check_range()
  • drivers/mge-hid.c: add define values
  • drivers/mge-hid.c: fix3 eaton_input_bypass_check_range()
  • drivers/mge-hid.c: fix2 eaton_input_bypass_check_range()
  • drivers/usbhid-ups.c: disable eco alarm
  • drivers/mge-hid.c: rename to eaton_input_bypass_check_range()
  • drivers/mge-hid.c: fix eaton_check_bypass_range()
  • drivers/mge-hid.c: fix for eaton_check_bypass_range()
  • drivers/mge-hid.c: add eaton_check_bypass_range() for check bypass limit

2.75. 2024-10-10 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: input.bypass.switch.off up to 12 becose return 11 bytes

2.76. 2024-10-09 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • docs/nut-names.txt: added values to nut-names
  • data/cmdvartab, drivers/mge-hid.c: add values to cmdvartab \+ change to bypass.sart/stop instead bypass.on/off
  • drivers/mge-hid.c, drivers/usbhid-ups.c: rename to ECO(HE) mode! fix comments

2.77. 2024-10-08 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/Makefile.am, docs/images/ci/ci-root.css: docs/images/ci/ci-root.css: Introduce a root NUT CI farm CSS file to include others (tracked in different repos)
  • docs/images/ci/jenkins-nut.css: update comments, add a style for Customizable Header plugin with DigitalOcean logo
  • docs/man/usbhid-ups.txt: battery.runtime=65535 troubleshooting [#731, #1740 et al]

2.78. 2024-10-07 Jim Klimov <jimklimov+nut@gmail.com>

  • data/driver.list.in: Add APC Back-UPS BK650M2-CH report with usbhid-ups [#1970]
  • docs/man/usbhid-ups.txt: extra comments about CPS offdelay [#578] Closes: #578
  • data/driver.list.in: Add NetVision U4BC02CB00NY100 report with snmp-ups [#1732] Closes: #1732
  • data/driver.list.in: Add APC Smart-UPS 5000 RM report with snmp-ups [#1559]
  • data/driver.list.in: Add Liebert GXT4-1500RT120 report [nut-ddl#42]
  • data/driver.list.in: Add Powermatic Cleanline L-1000C report [nut-ddl#43]
  • data/driver.list.in: Add APC Back-UPS ES 850G2 reports [nut-ddl#40]
  • data/driver.list.in: Add Techly 1000VA (very basic info so far) [#2651]
  • data/driver.list.in: Add 2E PS1000L reports [nut-ddl#41]

2.79. 2024-10-07 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: comment added for …forced
  • drivers/mge-hid.c: remove nfo_lkp_t eaton_input_transfer_on_off_info as eaton_enable_disable_info avalible
  • drivers/mge-hid.c: input.transfer.forced.enabled added \+ input.bypass.switch.on/off for RW vars

2.80. 2024-10-04 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/usbhid-ups.c: change back to ecomode
  • drivers/mge-hid.c: change he to ecomode

2.81. 2024-10-03 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: rename to bypassauto in info_lkp_t eaton_input_bypass_mode_info[]
  • drivers/mge-hid.c: spaces typo fixes
  • drivers/mge-hid.c: eaton_input_bypass_mode_info[] added
  • drivers/mge-hid.c: add bypass commands for test

2.82. 2024-10-02 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, conf/ups.conf.sample, docs/man/nut_usb_addvars.txt, docs/man/ups.conf.txt, drivers/main.c, include/nutconf.hpp: drivers/main.c, docs, etc.: accept "LIBUSB_DEBUG=NUM" setting via ups.conf
  • drivers/main.c: accept "debug_min" case-insensitively, like in upsmon and upsd

2.83. 2024-10-01 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: add ecomode commands
  • drivers/usbhid-ups.c: change ecomode to high-efficiency in status_info
  • drivers/mge-hid.c: info_lkp_t eaton_input_mode_info[] format spaces
  • drivers/usbhid-ups.c: fix typo ups_status
  • drivers/mge-hid.c, drivers/usbhid-ups.c: eco_mode_info[] back 3 values \+ UPS.PowerConverter.Input.[5].PresentStatus.Used added

2.84. 2024-09-30 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-hid.c: delete typo space
  • drivers/usbhid-ups.h: define info_lkp_t eco_mode_info[] in usbhid-ups.h
  • drivers/usbhid-ups.c: fix typo
  • drivers/usbhid-ups.c: fix info_lkp_t eco_mode_info[]
  • drivers/usbhid-ups.c, drivers/usbhid-ups.h: add eco_mode info

2.85. 2024-09-25 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • data/cmdvartab: Fix typo in "Outlet [P] → [p]rotection status"
  • drivers/mge-hid.c: change outlet.2 … Outlet.[1] to Outlet.[3]
  • data/cmdvartab, docs/nut-names.txt, drivers/mge-hid.c: outlet.n.status back and new one move to intro outlet.1.protect.status also define in cmdvartab and /docs/nut-names.txt
  • drivers/mge-hid.c: outlet.1.switch.status rename back to outlet.1.status
  • docs/nut-names.txt: change to switch (0-2) for input.eco.switchable in nut-names.txt
  • drivers/mge-hid.c: comment on ESS mode
  • data/cmdvartab, docs/nut-names.txt: adding input.eco.switchable,outlet.n.ecocontrol to cmdvartab and /docs/nut-names.txt
  • drivers/mge-hid.c: added info_lkp_t eaton_input_mode_info[] for input.eco.switchable
  • drivers/mge-hid.c, drivers/usbhid-ups.c, drivers/usbhid-ups.h: move info_lkp_t outlet_eco_yes_no_info[] to mge-hid.c

2.86. 2024-09-24 Jim Klimov <jimklimov@gmail.com>

  • docs/man/usbhid-ups.txt: document troubleshooting Linux USB quirk vs. Eaton devices [#630]

2.87. 2024-09-24 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: update and move "expected" improvements from v2.8.3 to v2.8.4 goals

2.88. 2024-09-24 DaRK AnGeL <masterwishx@gmail.com>

  • drivers/mge-hid.c: some typo fix

2.89. 2024-09-24 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • drivers/mge-xml.c: remove typo space
  • drivers/mge-xml.c: remove also from mge-xml.c
  • drivers/powerp-bin.c: remove outlet_eco_yes_no_info[] from powerp-bin.c
  • drivers/mge-xml.c, drivers/usbhid-ups.h: outlet_eco_yes_no_info defined in upshid-ups.h
  • drivers/mge-xml.c: outlet.1.ecocontrol added to mge-xml to fix undefined
  • drivers/mge-hid.c: remove *outlet_eco_yes_no_info from mgr-hid.c
  • drivers/mge-hid.c, drivers/mge-xml.c, drivers/powerp-bin.c, drivers/usbhid-ups.c: try to fix definition of outlet_eco_yes_no_info[] error
  • drivers/powerp-bin.c, drivers/usbhid-ups.c: added info_lkp_t outlet_eco_yes_no_info and valtab_t outlet_eco_yes_no_info
  • drivers/mge-hid.c: intoduce input.eco.switchable
  • drivers/mge-hid.c, drivers/mge-xml.c: outlet_eco_yes_no_info move to mge-xml.c
  • drivers/mge-hid.c: eaton_outlet_protection_status_info \+ outlet_eco_yes_no_info fix
  • drivers/mge-hid.c: add eco_pegasus_yes_no_info func to uotlet.2.ecocontrol
  • drivers/mge-hid.c: fix typo in comments
  • drivers/mge-hid.c: some of the fixes

2.90. 2024-09-23 Jim Klimov <jimklimov@gmail.com>

  • drivers/liebert-gxe.c: non-functional cosmetic fixes (NUT codebase style) [#2629]
  • drivers/ydn23.h: non-functional cosmetic fixes (NUT codebase style) [#2629]
  • drivers/liebert-gxe.c: issue messages mentioning "liebert-gxe" not plain "gxe" [#2629]
  • docs/man/liebert-gxe.txt: use double-dash for tirez [#2629]
  • docs/man/liebert-gxe.txt: clarify port/cable used [#2629]
  • NEWS.adoc: move liebert-gxe introduction into NUT v2.8.3 timeframe [#2629]

2.91. 2024-09-23 DaRK AnGeL <masterwishx@gmail.com>

  • drivers/mge-hid.c: first trying to add values

2.92. 2024-09-23 Arnaud Quette <arnaudquette@eaton.com>

  • drivers/mge-hid.c: EATON HID: completion on examples
  • drivers/mge-hid.c: EATON HID: add missing usages and paths

2.93. 2024-09-22 Jim Klimov <jimklimov@gmail.com>

  • drivers/liebert-gxe.c: satisfy opposing desires of static analysis Compiler wants both to handle default cases in switch lists, and dislikes a default label in enum handling when all known values are handled (and wants them all to be handled). The clash is only resolvable by pragmas, like elsewhere in out codebase.

2.94. 2024-09-15 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • clients/upssched.c, drivers/adelsystem_cbi.c, drivers/al175.c, drivers/dstate.c, drivers/generic_modbus.c, drivers/main.c, drivers/riello_usb.c: clients/, drivers/: use _with_errno helpers instead of strerror(errno)

2.95. 2024-09-14 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • docs/man/usbhid-ups.txt: add missing lowbatt argument

2.96. 2024-09-14 Jim Klimov <jimklimov@gmail.com>

  • docs/config-prereqs.txt: add a few recommended MacOS/HomeBrew packages

2.97. 2024-09-14 Gong Zhile <goodspeed@mailo.cat>

  • NEWS.adoc, data/driver.list.in, docs/man/Makefile.am, docs/man/liebert-gxe.txt, docs/nut.dict, drivers/Makefile.am, drivers/liebert-gxe.c, drivers/ydn23.h: drivers/ydn23.h: add ydn23 protocol helper, drivers/liebert-gxe.c: add Liebert GXE Series driver

2.98. 2024-09-13 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c: upsdrv_banner(): keep NUT version near NUT project name, only mention "driver" if needed (once) [#2583] Example change: * Network UPS Tools driver 2.8.2.1064-1064-g501bbdc62 (development iteration after 2.8.2) - network XML UPS 0.46 * Network UPS Tools 2.8.2.1064-1064-g501bbdc62 (development iteration after 2.8.2) - network XML UPS driver 0.46 Compare to older versions' markup where NUT version tailed in the end (generally fixed by PR #2583 due to possible nested parentheses in dev builds): * Network UPS Tools - Generic HID driver 0.53 (2.8.2) …and to other non-driver programs now, which generally do print their program name/type after NUT before version: * Network UPS Tools upsmon 2.8.2.1064-1064-g501bbdc62 (development iteration after 2.8.2)

2.99. 2024-09-12 Jim Klimov <jimklimov@gmail.com>

  • docs/nut-names.txt: document the Input Voltage Hysteresis concept [#2620]
  • docs/nut-names.txt: re-phrase input.transfer.hysteresis table description [#2620]
  • drivers/mge-hid.c: bump sub-driver version due to added data points [#2620]
  • data/cmdvartab, docs/nut-names.txt, drivers/mge-hid.c: Typo fix (hysteresYs ⇒ hysteresIs) [#2620]

2.100. 2024-09-12 Jim Klimov <jimklimov+nut@gmail.com>

  • data/cmdvartab: fix a bit of wording for "percent of nominal"
  • docs/nut-names.txt: fix asciidoc table markup and a bit of wording
  • Makefile.am: fix shell typo [#2624]

2.101. 2024-09-12 DaRK AnGeL <masterwishx@gmail.com>

  • data/cmdvartab, docs/nut-names.txt, drivers/mge-hid.c: add hysteresys value \+ add nominal to freq range

2.102. 2024-09-12 DaRK AnGeL <28630321+masterwishx@users.noreply.github.com>

  • data/cmdvartab: Update cmdvartab

2.103. 2024-09-11 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: avoid hard-coded auglensdir if we can, to avoid broken distcheck on some platforms/builds
  • COPYING, docs/acknowledgements.txt, docs/nut.dict, scripts/installer/.gitignore, scripts/installer/Makefile.am, scripts/installer/README.adoc, scripts/installer/common_EN/license.txt: docs: finalize re-licensing of scripts/installer from Eaton to NUT terms (GPL) [#2288, #2621]
  • m4/ax_realpath_lib.m4: recognize "GNU ld script" files which redirect to a real library
  • m4/ax_realpath_lib.m4: fix indentation
  • NEWS.adoc, drivers/usb-common.c, tools/nut-scanner/scan_usb.c: tools/nut-scanner/scan_usb.c: port nut_usb_get_string() from usb-common.c [#2604, #2615]
  • drivers/usb-common.c: fix C style of comments [#2604]
  • docs/man/nut_usb_addvars.txt: make a NOTE of LibUSB specific debugging [#2616]
  • Makefile.am: install-win-bundle-thirdparty DLL check: cover libexecdir [#1936 follow-up]
  • drivers/clone-outlet.c, drivers/clone.c: drivers/clone{,-outlet}.c: throttle if polling too quickly
  • drivers/clone-outlet.c, drivers/clone.c: drivers/clone{,-outlet}.c: update header comment descriptions and ©

2.104. 2024-09-11 DaRK AnGeL <masterwishx@gmail.com>

  • data/cmdvartab, docs/nut-names.txt: add missing values to nut vars \+ percent Hz in cmdvartab

2.105. 2024-09-10 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/Makefile.am: combine "make spellcheck-interactive" with "make touch-files and update them properly
  • drivers/clone-outlet.c, drivers/clone.c: drivers/clone{,-outlet}.c: parse_args(): add a skip_out label to log ignored socket protocol line details
  • docs/man/dummy-ups.txt: update regarding clone-outlet driver and differences of the three

2.106. 2024-09-09 DaRK AnGeL <masterwishx@gmail.com>

  • data/cmdvartab: add values description
  • drivers/mge-hid.c: change high to range in (input.transfer.frequency.bypass and input.transfer.frequency.eco)
  • drivers/mge-hid.c: Add Bypass and ECO Transfer values for future work on enable Eco mode for Eaton

2.107. 2024-09-08 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/clone.c, drivers/clone-outlet.c: reconcile shared code style
  • docs/man/clone.txt: revise vs. clone-outlet page

2.108. 2024-09-07 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/Makefile.am, docs/man/clone-outlet.txt, docs/nut.dict: Introduce docs/man/clone-outlet.txt
  • drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c: rename nut_libusb_subdriver_defaults() to common style [#2611]
  • NEWS.adoc, docs/nut.dict: NEWS.adoc: explain USB enumeration fix [#2611] With an Arduino Leonardo compatible board attached alongside a CyberPower CP1500PFCLCD, usbhid-ups would incorrectly conclude that there was no kernel driver attached to the UPS and then fail subsequent steps accordingly. The cause is the global usb_communication_subdriver_t struct; when a subdriver (e.g. arduino-hid) sets different values during the enumeration loop, they’re not set back to defaults afterwards, causing issues with other subdrivers (e.g. cps-hid). So, if a subdriver doesn’t match, set a selection of fields back to their default values using the newly added nut_usb_subdriver_defaults() before the next attempt. // tofurky

2.109. 2024-09-03 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: move bicker_ser entry to keep USB-related news together
  • drivers/blazer_usb.c, drivers/nutdrv_qx.c, drivers/riello_usb.c, drivers/tripplite_usb.c, drivers/usbhid-ups.c: Bump USB-capable driver versions impacted by new nut_usb_get_string() method [#1925, #2604]
  • NEWS.adoc: document new nut_usb_get_string() method - extend [#1925, #2604]
  • drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c: rename static nut_usb_set_altinterface() ⇒ nut_libusb_set_altinterface() to maintain a consistent code style [#2604]
  • NEWS.adoc: document new nut_usb_get_string() method [#1925, #2604]

2.110. 2024-09-01 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: document fix for allow_killpower flag [#2605]
  • tests/NIT/nit.sh: default to run with BASH where available (and system shell is not it)
  • tests/NIT/nit.sh: check with BASH before bailing out with available tools that did not see hits Builds in Android with Termux lack the permissions to see open ports.
  • tests/NIT/nit.sh: check that /proc/net/tcp* are readable, not just existing Builds in Android with Termux lack the permissions to see open ports.
  • tests/NIT/nit.sh: use TABCHAR in regex for portability

2.111. 2024-08-28 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • drivers/main.c: comment for setting driver.flag.allow_killpower default

2.112. 2024-08-28 Tormod Volden <debian.tormod@gmail.com>

  • drivers/libusb0.c: libusb0: Rename nut API functions for consistency with libusb1.c The original names could also be confused with libusb-1.0 API functions. Also rename nut_libusb_strerror() although not a nut API function.
  • drivers/libusb0.c, drivers/libusb1.c: libusb0/1: Simplify range checks in nut API nut_libusb_get_string() The string index is a number between 1 and 255, simply because it is the lower byte of wValue in the GET_DESCRIPTOR request. String index 0 is used for retrieving the langid array, so it is not valid for this function. There is no reason to impose a limit to the length of the buffer that the user is lending us, certainly not above the range of the involved types, so just a minimal sanity check is enough. Since in the minimal case we would return an empty zero-terminated string, it must at least have room for this.
  • drivers/libusb0.c, drivers/libusb1.c: libusb0/1: Fix up comments about expected types
  • drivers/libusb0.c, drivers/libusb1.c: libusb0/1: Use nut_usb_get_string() instead of libusb functions Fixes #1925
  • drivers/usb-common.c, drivers/usb-common.h: usb-common.c: Add API-neutral nut_usb_get_string() This function doesn’t use usb_get_string_simple() from libusb0 or libusb_get_string_descriptor_ascii() from libusb1 but replaces them to be able to add a workaround for devices with broken langid descriptors. If the langid descriptor is invalid, the en_US language is assumed. (See https://github.com/networkupstools/nut/issues/1925) It also adds retries to the string descriptor fetching, which may help in some cases. (See https://github.com/networkupstools/nut/issues/414) A small delay is introduced between the retries.

2.113. 2024-08-27 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • drivers/main.c: do not overwrite set allow_killpower flag with defaults

2.114. 2024-08-26 Tormod Volden <debian.tormod@gmail.com>

  • drivers/libusb0.c, drivers/libusb1.c: Revert "drivers/libusb{0,1}.c: retry getting Manufacturer/Product/Serial a few times if failed on the first" This reverts commit 0fa5687aef27ba7ada1cd8aeec6963560c08f00f. The reverted commit introduced retries when failing to retrieve various device string descriptors. In the following commits we will attempt this in a more centralized way, and for the purpose of clarity it is easiest to retract this and start with cleaner sheets.
  • drivers/libusb1.c: Revert "drivers/libusb1.c: nut_libusb_open(): try to re-fetch curDevice→Vendor, Product, Serial if NULL, after claiming it by other criteria [#2562]" This reverts commit ea99f96f87ea06cf5ff486ba7541bf8f74e2c33b. The reverted commit attempted to workaround a string descriptor retrieval issue by retrying after claiming an interface on the device. However, this did not help, and it was later found out that a broken langid descriptor was the root issue all along.
  • drivers/libusb0.c: Revert "drivers/libusb0.c: libusb_open(): try to re-fetch curDevice→Vendor, Product, Serial if NULL, after claiming it by other criteria [#2562]" This reverts commit ad83b70bbd3a0f6eff64d6b8dbfc14621d3cba97. The reverted commit attempted to workaround a string descriptor retrieval issue by retrying after claiming an interface on the device. However, this did not help, and it was later found out that a broken langid descriptor was the root issue all along.

2.115. 2024-08-22 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upsmon.c: generalize handling of unexpectedly long sleeps and negative time jumps [#1070]
  • clients/upsmon.c: fix debug print format for sleep during loop-end [#1070]
  • docs/FAQ.txt, docs/nut.dict: docs/FAQ.txt: refer to "nutshutdown" script from the older example
  • NEWS.adoc, docs/FAQ.txt, docs/man/upsdrvctl.txt, drivers/upsdrvctl.c, scripts/Solaris/nut-driver.xml.in, scripts/systemd/nut-driver@.service.in, scripts/systemd/nutshutdown.in, tests/NIT/nit.sh: upsdrvctl and docs: warn about direct use on builds with systemd/SMF (so NDE)
  • configure.ac: expose WITH_SOLARIS_SMF also to C code
  • clients/upsmon.c: add check for negative time jumps [#1070, #2597]
  • clients/upsmon.c: fix check for strange time jumps [#1070]

2.116. 2024-08-21 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: document generalization of upsmon clock-jump handling [#2597]
  • clients/upsmon.c: monitor if our sleep during end of loop cycle took too long [#1070] Treat any clock jump same as OS sleep (act to avoid stale UPS info), even if it was not a suspend/hibernate event but e.g. summer/winter time change or just upsmon suspended by a debugger or blocked stdio.
  • clients/upsmon.c: when we monitor changes of sleep/wake state and have a value from an aborted older loop cycle, make sure it is up to date now just before we handle it [#1070]
  • clients/upsmon.c: when we report ability (or not) to use sleep inhibition, report also if we can monitor changes of sleep/wake state [#1070]
  • tests/NIT/nit.sh: export TESTPASS_* values to NIT.env for the sandbox after we actually have them [#2597]
  • common/common.c: Inhibit(), isPreparingForSleep(): refactor debug-logging, add notes that we mark methods unsupported at run-time [#1070]
  • clients/upsmon.c: fix a bit of coding style for WIN32 code path
  • clients/upsmon.c: when OS wants to sleep, abort the UPS polling loop [#1070]
  • clients/upsmon.c: when OS wants to sleep, abort the sleep(sleepval) done between loop cycles [#1070]
  • clients/upsmon.c: consult whether isInhibitSupported/isPreparingForSleepSupported to avoid needless decisions and logs on some deployments [#1070]
  • common/common.c, include/common.h: include ways to quickly query whether isInhibitSupported/isPreparingForSleepSupported [#1070]
  • clients/upsmon.c: when OS wakes up from sleep, reload_conf() AFTER resetting clocks on UPS readings [#1070] Also make sure it is treated as a reload and not initial load!
  • tests/NIT/README.adoc, docs/nut.dict: update about mocking upsmon.conf [#2597]
  • clients/upsmon.c: when waking up after OS sleep/hibernation, reset UPS times to "now" to make-believe the readings are fresh and not stale [#1070]
  • clients/upsmon.c: report sleep_inhibitor_status value (quietly) during each loop processing [#1070]
  • touch-file callers can use to check for prepared sandbox [#2597]
  • tests/NIT/Makefile.am: build a few more binaries commonly used by NIT (or manually tested by NIT sandbox) [#2597]
  • tests/NIT/nit.sh: report NIT.env location for sourcing also after printing it out [#2597]
  • tests/NIT/nit.sh: export TESTDIR value to NIT.env [#2597]
  • tests/NIT/nit.sh: export TESTPASS_* values to NIT.env [#2597]
  • tests/NIT/nit.sh: remember the caller-provided TESTDIR value (if any) and do not remove it after exit [#2597]
  • tests/NIT/nit.sh: allow caller to set TESTDIR, and have more reasons to mktemp one in a non-default location [#2597]
  • Makefile.am, tests/NIT/Makefile.am, tests/NIT/nit.sh: Makefile.am, tests/NIT/Makefile.am: introduce check-NIT-sandbox check-NIT-sandbox-devel recipes to streamline dev-testing [#2597]

2.117. 2024-08-19 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c, m4/nut_check_libsystemd.m4: open_sdbus_once(): use older sd_bus_open_system() \+ optional sd_bus_set_description() as fallback [#1070]
  • conf/upsmon.conf.sample.in: re-word some text about notifications
  • clients/upsmon.h: fix whitespaces
  • clients/upsmon.c, clients/upsmon.h, common/nutconf.cpp, common/nutwriter.cpp, conf/upsmon.conf.sample.in, docs/man/nutconf.txt, docs/man/upsmon.conf.txt, docs/man/upsmon.txt, include/nutconf.hpp, scripts/augeas/nutupsmonconf.aug.in, tools/nutconf/nutconf-cli.cpp: upsmon code, docs, config tools: introduce notifications for SUSPEND_STARTING and SUSPEND_FINISHED [#1070]
  • docs/man/nutconf.txt: update with new notification types of NUT v2.8.1\+ era
  • clients/upsmon.c: report init_Inhibitor() success, should only be once per uptime [#1070]
  • common/common.c: open_sdbus_once(): fiddle with sd_bus_set_allow_interactive_authorization() [#1070]
  • common/common.c: Inhibit(), isPreparingForSleep(): log detailed systemd exception, if available [#1070]
  • common/common.c: fix systemd endpoint definition for inhibitor interface management [#1070]
  • common/common.c: Inhibit() et al: refactor with reopen_sdbus_once() and would_reopen_sdbus() sanity-check [#1070]
  • common/common.c: Inhibit() et al for unsupported platforms: only post "Not implemented" messages once [#1070]
  • clients/upsmon.c: refactor with init_Inhibitor() [#1070]
  • common/common.c: Inhibit() et al: quiesce error/debug messages [#1070]
  • common/common.c: open_sdbus_once(): use prettier sd_bus_open_system_with_description() for better journal logging [#1070]
  • common/common.c: open_sdbus_once(): only report failures once in a row [#1070]
  • UPGRADING.adoc: document systemd inhibitor interface support in NUT, and stress that older hacks for the purpose may be obsolete now [#1070]
  • clients/upsmon.c: add daemon support for OS-sleep inhibition and wake-up [#1070]
  • clients/upsmon.c: barebone structure for OS-sleep inhibition support [#1070] This commit adds support to process the systemd (later potentially equivalent) framework signals about going to sleep or waking up, to grab and release the locks which can hold up the actual start of sleep mode. Later work would focus on not shutting down because of the time jump when we wake up :)
  • common/common.c, include/common.h, m4/nut_check_libsystemd.m4: introduce Uninhibit() and isPreparingForSleep() methods [#1070]
  • common/common.c: comment about attributecleanup(f) usage [#1070]
  • m4/nut_check_libsystemd.m4: check for sd-bus.h auto-cleanup methods [#1070]
  • common/common.c: augment Inhibit() with a retry of D-Bus connection if a call() failed, and auto-close it on exit [#1070]
  • common/common.c: refactor Inhibit() with open_sdbus_once() and re-usable systemd_bus connection [#1070]
  • common/common.c, clients/upsmon.c: annotate ends of systemd-related ifdefs
  • m4/nut_check_libsystemd.m4: do not check for methods delivered by newer systemd which we do not use now [#1070]
  • clients/upsmon.c: indent nested preprocessor directives (optional includes)
  • NEWS.adoc: document systemd inhibitor interface support in NUT [#1070]
  • common/common.c, include/common.h: introduce Inhibit() method [#1070] Snow-ball several libsystemd pseudo-code and real code examples.
  • configure.ac, scripts/systemd/Makefile.am: consider WITH_LIBSYSTEMD_INHIBITOR availability for default installation of nut-sleep.service [#1833, #1070, #2596]
  • m4/nut_check_libsystemd.m4: detect systemd inhibitor support (via D-Bus API) [#1070] Thanks to pointers from https://github.com/systemd/systemd/issues/34004
  • scripts/systemd/nut-driver-enumerator-daemon-activator.service.in, scripts/systemd/nut-driver-enumerator-daemon.service.in, scripts/systemd/nut-driver-enumerator.path.in, scripts/systemd/nut-driver-enumerator.service.in, scripts/systemd/nut-driver.target, scripts/systemd/nut-driver@.service.in, scripts/systemd/nut-monitor.service.in, scripts/systemd/nut-server.service.in, scripts/systemd/nut.target, scripts/systemd/nutshutdown.in: scripts/systemd/*: bump © to 2024
  • NEWS.adoc, scripts/systemd/Makefile.am, scripts/systemd/nut-sleep.service: Introduce scripts/systemd/nut-sleep.service [#1833, #1070] Thanks to "Ropid" for contributing this file via https://github.com/networkupstools/nut/issues/1833#issuecomment-2292261061
  • m4/nut_check_libsystemd.m4: extend to try getting SYSTEMD_VERSION from systemctl if pkg-config is missing [#1070]
  • .gitignore, Makefile.am, configure.ac: configure.ac: when doing in-place builds, move config.log of the original invocation to config.log.inplace-outer
  • configure.ac: comment to document the trick about "ln -sr" test
  • configure.ac: comment a FIXME about TREE_VERSION definition
  • ci_build.sh: refactor "Starting initial clean-up … TAKING SHORTCUT", introduce CI_REGENERATE=true to force it * Move into a method for different BUILD_TYPE’s to share. * Have one "rm" command for different use-cases. * Add a new toggle to force the clean-up and regen. * Also clean away config.h (if one remains somehow, it confuses sub-tree builds like those done for Windows).
  • m4/nut_check_libgd.m4: generate test image to tmpfile() or stderr …so its binary content does not pollute common log

2.118. 2024-08-15 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac, m4/nut_check_libsystemd.m4: m4/nut_check_libsystemd.m4: check if nut_have_libsystemd_inhibitor [#1070]
  • scripts/fuse/README.adoc, scripts/fuse/execfuse-nut/getattr, scripts/fuse/execfuse-nut/read_file, scripts/fuse/execfuse-nut/readdir: scripts/fuse/README.adoc, scripts/fuse/execfuse-nut/*: separate "client-location" from "client-version" [#2591]
  • scripts/fuse/README.adoc, scripts/fuse/execfuse-nut/readdir: integrate with NIT-prepared environments [#2591]
  • scripts/fuse/README.adoc: suggest use of plain umount, it works too [#2591]
  • scripts/fuse/README.adoc: allow re-entrance with copy-pasted experiments (mkdir -p) [#2591]
  • scripts/fuse/README.adoc: list the built execfuse binary to check it was made [#2591]
  • scripts/fuse/README.adoc: clarify prerequisites for an execfuse build [#2591] These would likely become NUT optional dependencies in docs/config-prereqs.txt, if a more integrated client would be made to follow up with this idea eventually.

2.119. 2024-08-14 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, docs/nut.dict: announce the FUSE experiment [#2591]
  • scripts/fuse/README.adoc, scripts/fuse/execfuse-nut/getattr, scripts/fuse/execfuse-nut/read_file, scripts/fuse/execfuse-nut/readdir: scripts/fuse: extend execfuse-nut experiment with a /client-version pseudo-file [#2591]

2.120. 2024-08-13 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/fuse/README.adoc, scripts/fuse/execfuse-nut/getattr, scripts/fuse/execfuse-nut/init, scripts/fuse/execfuse-nut/read_file, scripts/fuse/execfuse-nut/readdir: Introduce a scripts/fuse experiment [#2591]

2.121. 2024-08-12 Jim Klimov <jimklimov+nut@gmail.com>

  • m4/nut_check_libgd.m4: AX_RUN_OR_LINK_IFELSE() to check that we can actually build a graphical program Namely, that further third-party libs are available for the chosen architecture, not only the headers. Had a problem with 32/64-bit build agent that only had a binary lib*.so set for 64-bit after an update.
  • ci_build.sh: actually honour CANBUILD_LIBGD_CGI=no
  • ci_build.sh: fix shell syntax that could confuse CANBUILD_LIBGD_CGI detection
  • drivers/usbhid-ups.c: upsdrv_initups(): cache testvar() outcome as exactly 0/1 [#2347] When building a complex text expression, we rely on maths in some spots.

2.122. 2024-08-11 Jim Klimov <jimklimov+nut@gmail.com>

  • data/driver.list.in: update about "Back-UPS BX****MI Series (may need tweaks since 2023)" [#2347]
  • drivers/usbhid-ups.c: clarify suggested settings for LB\+RB log flood [#2437]
  • NEWS.adoc, UPGRADING.adoc, docs/nut.dict: summarize the mitigation for spurious LOWBATT/REPLACEBATT events on APC BXnnnnMI devices [#2347]

2.123. 2024-08-10 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, drivers/bcmxcp.c, drivers/nutdrv_atcl_usb.c, drivers/richcomm_usb.c, m4/ax_c_pragmas.m4, tools/nut-scanner/scan_usb.c: tools/nut-scanner/scan_usb.c: do not actively suggest vendor(id), product(id), and serial options for bcmxcp_usb, richcomm_usb, nutdrv_atcl_usb [#1763, #1764, #1768, #2580]
  • NEWS.adoc, clients/nutclient.cpp, clients/upsclient.c, clients/upslog.c, clients/upssched.c, common/common.c, common/nutconf.cpp, common/nutstream.cpp, common/nutwriter.cpp, common/parseconf.c, drivers/apc_modbus.c, drivers/apcsmart-old.c, drivers/apcsmart.c, drivers/bcmxcp.c, drivers/belkin-hid.c, drivers/bestups.c, drivers/blazer_usb.c, drivers/dstate.c, drivers/etapro.c, drivers/hidparser.c, drivers/huawei-ups2000.c, drivers/main.c, drivers/mge-hid.c, drivers/mge-xml.c, drivers/netxml-ups.c, drivers/nut-libfreeipmi.c, drivers/nutdrv_atcl_usb.c, drivers/nutdrv_qx.c, drivers/nutdrv_qx_masterguard.c, drivers/openups-hid.c, drivers/powercom.c, drivers/rhino.c, drivers/richcomm_usb.c, drivers/riello.c, drivers/solis.c, drivers/tripplite_usb.c, m4/ax_c_pragmas.m4, server/netssl.c, server/sockdebug.c, server/upsd.c, tools/nut-scanner/scan_avahi.c: Fix clang-18 warnings about switch clauses without a default label [#2588]
  • include/str.h: use a more reliable definition of NUT_STRARG doing nothing [#2585]
  • m4/ax_c_pragmas.m4, docs/configure.txt: let --enable-NUT_STRARG-always setting have auto detection by default [#2585] Flips to "yes" for gcc-13.x (clang having issues is not proven at the moment)
  • m4/ax_c_pragmas.m4, docs/configure.txt, UPGRADING.adoc, docs/nut.dict: introduce configure --enable-NUT_STRARG-always setting [#2585]

2.124. 2024-08-06 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/usbhid-ups.c: when defaulting lbrb_log_delay_sec, suggest also setting the lbrb_log_delay_without_calibrating flag [#2347]

2.125. 2024-08-05 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, docs/nut.dict: NEWS.adoc: mention fixes for fallback localtime_r() and gmtime_r() [#1611, #2583]
  • drivers/huawei-ups2000.c: adapt to fixed gmtime_r() when a macron in WIN32 fallbacks [#1611, #2583]
  • include/timehead.h: fix hacky macro localtime_*() fallbacks for WIN32 builds [#2583, #1611] Partially inspired by /mingw64/include/time.h NOTE: Unlike linux\+mingw cross-builds, the semi-native ones on Windows with MSYS2 do not enforce _POSIX_THREAD_SAFE_FUNCTIONS and so can lack the optional declarations in the file above.
  • tools/nut-scanner/nut-scanner.c: no longer need to #include "nut_version.h" [#2573, #2097]
  • configure.ac, include/timehead.h: check also for mere declarations of localtime_r() etc.
  • configure.ac: report checking for lack of both decls and linkage for time methods
  • configure.ac: clarify that failed AC_CHECK_FUNCS() are about linker
  • scripts/Windows/build-mingw-nut.sh, configure.ac: promote use of _POSIX_THREAD_SAFE_FUNCTIONS It seems C+\+ builds using NUT config.h ⇒ timehead.h on WIN32 struggle uniquely (as C ones did not) with alleged redefinition of localtime_r() and gmtime_r() which is in fact optionally present in headers but not found by linking tests in AC_CHECK_FUNCS().
  • configure.ac: refactor with CODE_TIMEINCL
  • drivers/apc_modbus.c: indent code with TABs (cosmetic)
  • drivers/apc_modbus.c: indent optional includes (cosmetic)
  • tools/nutconf/nutconf-cli.cpp: indent nested preprocessor directives (include)
  • common/common.c: nut_report_config_flags(): refactor with describe_NUT_VERSION_once() copy of the code [#2573]
  • tools/nutconf/nutconf-cli.cpp: add a FIXME comment about lack of "-D" CLI option
  • tools/nutconf/nutconf-cli.cpp: add a version printout to Usage (both help and new standalone option) [#2573]
  • tools/nutconf/nutconf-cli.cpp: use just the xbasename() of prog name [#2573]
  • drivers/upsdrvctl.c: refactor to common handling of "-V" CLI arg and use of print_banner_once() [#2375]
  • drivers/main.c: upsdrv_banner(): rearrange the main version string to follow common NUT pattern [#2573]
  • tools/nut-scanner/Makefile.am, tools/nut-scanner/nut-scanner.c: tools/nut-scanner/nut-scanner.c: refactor to know its "progname" and pass it to print_banner_once() and show_usage() [#2573] Also update tools/nut-scanner/Makefile.am to have the symbols in libnutscan
  • tools/nut-scanner/nut-scanner.c: refactor to use print_banner_once() with its copy of describe_NUT_VERSION_once() instead of large code chunk in the program [#2573]
  • common/common.c: revise print_banner_once() to use describe_NUT_VERSION_once() rather than directly UPS_VERSION [#2573]
  • common/common.c, include/common.h: introduce a common method for NUT programs to describe_NUT_VERSION_once() [#2573]
  • drivers/main.c: avoid printing upsnotify() warnings when just querying program versions [#2573]
  • clients/upsc.c, clients/upscmd.c, clients/upslog.c, clients/upsmon.c, clients/upsrw.c, drivers/main.c, scripts/Windows/wininit.c, server/upsd.c, tools/nut-scanner/nut-scanner.c: Revise programs to print_banner_once(), use same style of comment for "-V" handling [#2573]
  • clients/upsc.c, clients/upscmd.c, clients/upslog.c, clients/upsmon.c, clients/upsrw.c, server/upsd.c: Revise program descriptions in help(), use same pattern for message layout there [#2573]
  • common/common.c, include/common.h: introduce a common method for NUT programs to print_banner_once() [#2573]
  • NEWS.adoc: Fix uses of banner_is_disabled() to not preclude CLI -V printouts [#2573]

2.126. 2024-08-02 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/scan_usb.c: nutscan_scan_usb(): avoid fatal_with_errno(), emit upsdebug_with_errno(0, …) and return NULL [#2575] Commented away idea: assume nutscan_avail_usb=0 if we failed to init or malloc? TODO: This might preclude cleanly unloading the library, and also the problem of one loop cycle might not repeat on another.
  • tools/gitlog2version.sh: in debug, report also SEMVER [#1949]

2.127. 2024-08-01 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/upsdrvsvcctl/upsdrvsvcctl.in, docs/man/upsdrvsvcctl.txt: complete the "upsdrvsvcctl status" feature [#2567]
  • scripts/upsdrvsvcctl/upsdrvsvcctl.in, docs/man/upsdrvsvcctl.txt: add an option to display binary version (and fix the script one in help) [#2567]
  • scripts/upsdrvsvcctl/upsdrvsvcctl.in: make path to UPSDRVCTL a variable, like ENUMERATOR is used [#2567]
  • NEWS.adoc: new dstate LOGOUT command [#2567]
  • drivers/upsdrvquery.c: upsdrvquery_close(): track if we loggedOut and so not complain about disconnection faults [#2567]
  • drivers/upsdrvctl.c: status: revise return values of checkprocname() vs. sendsignalpid(), unite via pidAlive [#2567]
  • tools/gitlog2version.sh: comment why we repeat TRUNK candidate branches, and add master in the end too [#1949]
  • drivers/dstate.c, drivers/dstate.h: drivers/dstate.{c,h}: err on the safe side with LOGOUT, and only mark the connection - close later [#2567]
  • server/netmisc.c: update net_help()
  • drivers/upsdrvquery.c: upsdrvquery_close(): take advantage of the new LOGOUT command [#2567]
  • drivers/dstate.c, docs/sock-protocol.txt: introduce a LOGOUT command [#2567] Now that the driver Unix socket / Windows named pipe connections can come and go (sibling drivers, upsdrvctl status…) it is not pretty to see logged messages about an unexpected connection loss. Having it coincide with a LOGOUT is better for troubleshooting.
  • drivers/upsdrvctl.c, docs/man/upsdrvctl.txt: "status": detect a RUNNING or not program using PID from either PID file or socket protocol [#2567]
  • docs/man/upsdrvctl.txt: add an example of "list" with hidden banner [#2567]
  • common/common.c: parsepid(): set errno in case of errors [#2567]
  • drivers/mge-hid.c: add Eaton 9En000 models "iau" suffix, and 9E3000 "ixl"/"ixlau" [#2562] Per https://github.com/networkupstools/nut/pull/2571#issuecomment-2261450468
  • drivers/mge-hid.c: add Eaton 9En000 models "iau" suffix, and 9E3000 "ixl"/"ixlau" [#2562] Per https://github.com/networkupstools/nut/pull/2571#issuecomment-2261450468

2.128. 2024-08-01 Jim Klimov <jim@jimklimov.com>

  • scripts/upsdrvsvcctl/upsdrvsvcctl.in: adjust SVC_NAME_WIDTH to framework type too [#2567]
  • scripts/upsdrvsvcctl/upsdrvsvcctl.in: allow caller to customize ENUMERATOR and UPSDRVCTL when testing [#2567]

2.129. 2024-07-31 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/mge-hid.c: add Eaton 9E1000* models, and "ir" suffix for rack [#2562] According to https://github.com/networkupstools/nut/pull/2571#issuecomment-2261337602
  • drivers/mge-hid.c: add Eaton 9E1000* models, and "ir" suffix for rack [#2562] According to https://github.com/networkupstools/nut/pull/2571#issuecomment-2261337602
  • drivers/libusb0.c: libusb_open(): try to re-fetch curDevice→Vendor, Product, Serial if NULL, after claiming it by other criteria [#2562]
  • drivers/libusb0.c: libusb_open(): comment about if (!callback){...} check
  • drivers/libusb1.c: nut_libusb_open(): try to re-fetch curDevice→Vendor, Product, Serial if NULL, after claiming it by other criteria [#2562]
  • drivers/libusb1.c: nut_libusb_open(): comment about if (!callback){...} check
  • drivers/mge-hid.c: rephrase the presumed 9E2000*i* model [#2562] I did not find any actual mentions of plain "9E2000" without an "i", only these: https://www.eaton.com/tr/en-gb/skuPage.9E2000I.html Also prepared for "9E3000i" models while here.
  • tools/gitlog2version.sh: actively discover a newest known NUT_VERSION_GIT_TRUNK if not provided explicitly [#1949]
  • drivers/upsdrvctl.c: fix use of nut_sendsignal_debug_level; add nut_upsdrvquery_debug_level hushing around upsdrvquery_connect_drvname_upsname() attempt [#2567]
  • drivers/upsdrvquery.c: upsdrvquery_connect(): fix pidfn⇒sockname var naming
  • drivers/upsdrvctl.c, docs/man/upsdrvctl.txt: status: print a header with column names [#2567]
  • docs/man/upsdrvctl.txt: status: clarify PF_PID negative values [#2567]
  • docs/man/upsdrvctl.txt: status: clarify print-out syntax just after the example [#2567]
  • conf/nut.conf.sample: prepare to export envvars which are NUT program configuration tweaks
  • docs/man/nut.conf.txt: update IMPORTANT NOTES
  • conf/nut.conf.sample: update heading comments (IMPORTANT NOTES)
  • drivers/upsdrvctl.c: status_driver(): no need to check for NULLness of conn→buf [#2567]
  • drivers/upsdrvctl.c: status_driver(): upsdrvquery_close(conn) after use [#2567]
  • scripts/upsdrvsvcctl/upsdrvsvcctl.in, docs/man/upsdrvsvcctl.txt: provide a basic "status" operation [#2567]
  • drivers/upsdrvctl.c, docs/man/upsdrvctl.txt: complete "upsdrvctl status" with socket protocol queries [#2567]
  • common/common.c, include/common.h: refactor parsepidfile() out of sendsignalfn()
  • drivers/dstate.c, docs/sock-protocol.txt, docs/nut.dict: implement DUMPVALUE and DUMPSTATUS queries
  • drivers/dstate.c, docs/sock-protocol.txt, docs/nut.dict: implement GETPID query
  • drivers/dstate.c: refactor st_tree_dump_conn_one_node() out of st_tree_dump_conn() [#2567]

2.130. 2024-07-30 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/maintainer-guide.txt: note bumping wikipedia article
  • NEWS.adoc, docs/man/upsdrvctl.txt, drivers/upsdrvctl.c: drivers/upsdrvctl.c: add "status" operation (initially triial skeleton) [#2567]
  • drivers/upsdrvctl.c: only log suggestions about exec debugging if we would start or shutdown
  • drivers/upsdrvctl.c: comment why pidfn is not used in apparent WIN32 codepaths
  • tests/NIT/nit.sh: introduce NUT_FOREGROUND_WITH_PID=true tweak
  • tools/gitlog2version.sh: Set exit code based on availability of default version info data point [#1949]
  • tools/gitlog2version.sh: getver_git(): "return 1" if we fail to discover DESC or BASE data [#1949]
  • tools/gitlog2version.sh: report if Git-based version info discovery failed and we fall back [#1949]
  • tools/gitlog2version.sh: only consider BASE after we get DESC successfully (and abort if there is no common BASE) [#1949]
  • tools/gitlog2version.sh: refactor with a separate NUT_VERSION_GIT_ALWAYS_DESC toggle envvar [#1949]
  • server/netget.c: get_var_server(): refer to PACKAGE_URL (and hard-coded "https://www.networkupstools.org/" if PACKAGE_URL points completely elsewhere) [#1949] Tested with "GET VAR dummy server.info" command
  • server/netmisc.c: net_ver(): refer to PACKAGE_URL (and hard-coded "https://www.networkupstools.org/" if PACKAGE_URL points completely elsewhere) [#1949] Tested with "VER" command
  • tools/gitlog2version.sh: default PACKAGE_URL with "www" in the string [#1949]
  • clients/upslog.c, clients/upsmon.c, drivers/main.c, server/upsd.c: use banner_is_disabled() checking [#1789 vs. #316]
  • drivers/upsdrvctl.c, docs/man/upsdrvctl.txt: use banner_is_disabled() checking [#1789 vs. #316]
  • NEWS.adoc, UPGRADING.adoc, common/common.c, conf/nut.conf.sample, include/common.h: Introduce NUT_QUIET_INIT_BANNER envvar support and banner_is_disabled() common method [balancing issues #1789 vs. #316]
  • conf/nut.conf.sample: document NUT_QUIET_INIT_SSL missed before [#1662]
  • conf/nut.conf.sample, docs/man/nut.conf.txt: document NUT_QUIET_INIT_UPSNOTIFY missed before [#2136]
  • conf/nut.conf.sample, docs/man/nut.conf.txt: document NUT_DEBUG_PID missed before [#2118]
  • drivers/upsdrvctl.c: main(): revise reporting of command_name in debug logs [#2567] …and avoid a potential argv array overflow (or at least useless NULL reporting) along the way
  • drivers/upsdrvctl.c: send_all_drivers(): drop redundant "ups = upstable" assignments
  • NEWS.adoc, docs/man/upsdrvctl.txt, drivers/upsdrvctl.c: drivers/upsdrvctl.c: add "list" operation [#2567]

2.131. 2024-07-29 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/maintainer-guide.txt: suggest also use of VERSION_FORCED and VERSION_FORCED_SEMVER files in our release rituals, we have support anyway and want to test it in-vivo [#1949]
  • NEWS.adoc, docs/man/usbhid-ups.txt, docs/nut.dict, drivers/usbhid-ups.c: drivers/usbhid-ups.c, docs/man/usbhid-ups.txt: introduce lbrb_log_delay_sec et al [#2347]
  • drivers/usbhid-ups.c: track start and end timestamps of calibration [#2347]
  • NEWS.adoc, docs/new-drivers.txt, drivers/dstate.c, drivers/dstate.h: drivers/dstate.{c,h}, docs/new-drivers.txt, NEWS.adoc: introduce status_get()
  • drivers/usbhid-ups.c: avoid "\n" starting an upsdebugx() message That "\n" gets printed as "#012"
  • NEWS.adoc: document the recent fixes for apcsmart [#704]
  • drivers/apcsmart.c: upsdrv_updateinfo(): if dstate_is_stale, log if we fix it [#704]
  • drivers/apcsmart.c: upsdrv_updateinfo(): if dstate_is_stale, try to reconnect every 60 retry attempts [#704]
  • drivers/apcsmart.c: upsdrv_updateinfo(): if dstate_is_stale, try to flush the incoming data buffer [#704]
  • drivers/apcsmart.c: upsdrv_updateinfo(): if dstate_is_stale, retry slowly [#704]
  • drivers/apcsmart.c: update upsdebugx() to report func where they did not
  • NEWS.adoc, docs/nut.dict, drivers/apcsmart.c: drivers/apcsmart.c: constrain strcpy() ⇒ strncpy() NOTE: Further improvement is possible in that strncpy() does not guarantee a NUL byte in the end of resulting string (if input is too long, it is only truncated).
  • drivers/apcsmart.c: revise comments and log messages

2.132. 2024-07-28 Jim Klimov <jimklimov+nut@gmail.com>

  • Makefile.am: distribute VERSION_FORCED and/or VERSION_FORCED_SEMVER if present [#1949]
  • docs/maintainer-guide.txt: clarify use of annotated Git tags [#1949]
  • docs/maintainer-guide.txt: clarify for tools/gitlog2version.sh now in the loop [#1949]
  • drivers/snmp-ups.h: neuter also PACKAGE_URL if present, to avoid conflict with net-snmp-config.h [#1949]
  • tools/nut-scanner/scan_snmp.c: neuter also PACKAGE_URL if present, to avoid conflict with net-snmp-config.h [#1949]
  • NEWS.adoc, data/driver.list.in, drivers/mge-hid.c: drivers/mge-hid.c, NEWS.adoc: try to recognize Eaton 9E model and info [#1925] Also handle "unknown 2000" assuming it is a mis-read "Eaton 9E 2000(i?)" which refused to tell libusb its vendor/product/serial strings. This may be the answer to such issues as #1925, #2380 (re-opened), #2492

2.133. 2024-07-27 Jim Klimov <jimklimov+nut@gmail.com>

  • .gitignore, UPGRADING.adoc, ci_build.sh, tools/gitlog2version.sh: tools/gitlog2version.sh: allow NUT_VERSION_FORCED_SEMVER for some distros [#1949] Test: :; ./clients/upsmon -DDV Network UPS Tools upsmon 2.8.2.404.365-769-g96f0c9cb3 0.000000 [D1] Network UPS Tools version 2.8.2.404.365-769-g96f0c9cb3 (development iteration after 1.1.1) built with clang version 16.0.6…
  • .gitignore, UPGRADING.adoc, ci_build.sh, tools/gitlog2version.sh: tools/gitlog2version.sh, ci_build.sh: allow VERSION_FORCED for some distros [#1949]
  • tools/gitlog2version.sh: update comment [#1949]
  • Makefile.am, autogen.sh, configure.ac, include/Makefile.am, tools/gitlog2version.sh: tools/gitlog2version.sh et al: change configurable vars to NUT_VERSION_* namespace [#1949]
  • docs/config-prereqs.txt: kudos to Termux
  • autogen.sh: kill obsolete nut_version.h during regen [#1949]
  • autogen.sh, configure.ac: configure.ac: drop square brackets around macro in AC_INIT [#1949] Per suggestion from https://github.com/NixOS/nix/issues/5832

2.134. 2024-07-26 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/gitlog2version.sh: only PREFER_GIT blindly if abs_top_srcdir is a git workspace [#1949]
  • tools/nut-scanner/nut-scanner.c: hush compiler warnings about unreachable code paths with NUT_VERSION_IS_RELEASE macro decisions [#1949]
  • common/common.c: hush compiler warnings about unreachable code paths with NUT_VERSION_IS_RELEASE macro decisions [#1949]
  • autogen.sh: update comment about AC_INIT complaints for m4_esyscmd_s() [#1949]
  • configure.ac: update comment about AC_INIT complaints for m4_esyscmd_s() [#1949]
  • tools/gitlog2version.sh: provide a fallback for older git which does not know how to --exclude [#1949]
  • ci_build.sh: check_gitignore(): define FILE_GLOB_EXCLUDE differently [#1949]
  • common/common.c: convert nut_report_config_flags() to more definitive behavior with NUT_VERSION_IS_RELEASE flag and NUT_VERSION_SEMVER_MACRO string [#1949]
  • tools/nut-scanner/nut-scanner.c: use NUT_VERSION_IS_RELEASE and NUT_VERSION_SEMVER_MACRO when printing version [#1949] Note this is a custom printer, separate from common.c
  • common/common.c, include/Makefile.am: include/Makefile.am: nut_version.h: inject also NUT_VERSION_SEMVER_MACRO and NUT_VERSION_IS_RELEASE [#1949]
  • configure.ac: introduce NUT_SOURCE_GITREV_IS_RELEASE and NUT_SOURCE_GITREV_SEMVER [#1949]
  • ci_build.sh: update suggestion about Homebrew envvar setting [#2522]
  • drivers/libshut.c: shut_control_msg(): restrict memcpy() amount Avoid warning: libshut.c:1296:25: error: memcpy forming offset [11, 17] is out of the bounds [0, 11] of object shut_pkt with type unsigned char[11] [-Werror=array-bounds=]
  • configure.ac: set PACKAGE_TARNAME and PACKAGE_URL verbatim via AC_INIT() [#1949]
  • docs/config-prereqs.txt, docs/nut.dict: clarify envvar pre-sets for MacOS/Homebrew [#2522, #2555]
  • common/common.c: compareprocname(): comment about libtool-wrapped developer builds [#2463]
  • configure.ac: revise injection of "-O0" into debug-able C code builds on some platforms
  • autogen.sh: add line separators around big blocks of scripted messages
  • ci_build.sh: check_gitignore(): define FILE_GLOB_EXCLUDE differently [#1949]

2.135. 2024-07-25 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: clarify further work possible about NUT versioning support [#1949]
  • NEWS.adoc, docs/nut.dict, UPGRADING.adoc: announce NUT development-friendly versioning scheme [#1949]
  • tools/Makefile.am: EXTRA_DIST the gitlog2version.sh helper [#1949]
  • .gitignore, Makefile.am, autogen.sh, ci_build.sh, tools/gitlog2version.sh: tools/gitlog2version.sh et al: add support for (taballed) VERSION_DEFAULT file [#1949]
  • configure.ac: provide m4_esyscmd_s for builds with older autotools releases [#1949]
  • configure.ac: refactor to use tools/gitlog2version.sh directly in AC_INIT without hacks [#1949]
  • tools/gitlog2version.sh: refactor to share more code; introduce PREFER_GIT toggle [#1949]
  • tools/gitlog2version.sh: add WANT_VER query support, 3-digit SEMVER, and URL, and IS_RELEASE [#1949]
  • ci_build.sh: check_gitignore(): introduce FILE_GLOB_EXCLUDE and handle FILE_GLOB allowing for multi-token values

2.136. 2024-07-24 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: set PACKAGE_TARNAME and PACKAGE_URL [#1949]
  • configure.ac, include/Makefile.am: use consistently the tools/gitlog2version.sh for version info [#1949]
  • tools/gitlog2version.sh: introduce new helper script to parse NUT structured version from Git (if available) [#1949]
  • m4/nut_check_aspell.m4: avoid "exec — 2>&1" trick, not all shells like it
  • configure.ac: avoid square brackets in m4 script [#1949]

2.137. 2024-07-23 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/sock-protocol.txt: update with examples of propagated flag names [#266]
  • server/netset.c: comment about true meaning of "!val" clause [#266]
  • docs/net-protocol.txt: update examples of invalid numbers [#265]
  • server/netget.c: get_type(): reword logged message for assuming a NUMBER [#266]
  • UPGRADING.adoc: document NUT_DEBUG_SYSLOG and its possible impact on future packaging [#2394]

2.138. 2024-07-22 Jim Klimov <jimklimov+nut@gmail.com>

  • server/netget.c: get_type(): report assuming UPS[%s] variable %s is a NUMBER to help catch code that did not set the flags [#266]
  • server/sstate.c: fix upsdebugx() and upslogx() calls to refer to func and not hard-coded strings [#266]
  • drivers/dstate.c: fix upsdebugx() and upslogx() calls to refer to func and not hard-coded strings [#266]
  • common/state.c: fix upsdebugx() and upslogx() calls to refer to func and not hard-coded strings [#266] This is more streamlined and also fixes some mis-attributed messages (evolution? copy-paste?)
  • server/netset.c: set_var(): trace-log why this method errors out [#266]
  • drivers/main.c: comment about immutable (or not) driver/default/override dstate values [#266]
  • common/state.c: log about not-updating an immutable value [#266]
  • clients/upsclient.c: when host is known NULL, report that directly, no need for NUT_STRARG() [#2512]
  • common/common.c: compareprocname(): fix basename comparison (copy-paste typo) [#2463]
  • common/common.c: refactor sendsignalpid() to check checkprocname_ignored() and getprocname(pid) once for several tests against its value, and report it in the end [#2463]
  • include/common.h, common/common.c: refactor apart checkprocname_ignored() from checkprocname() and compareprocname() [#2463]
  • include/common.h, common/common.c: refactor apart compareprocname() from checkprocname() [#2463]
  • conf/hosts.conf.sample, conf/nut.conf.sample, conf/ups.conf.sample, conf/upsd.conf.sample, conf/upsd.users.sample, conf/upsmon.conf.sample.in, conf/upssched.conf.sample.in, conf/upsset.conf.sample, docs/man/hosts.conf.txt, docs/man/nut.conf.txt, docs/man/ups.conf.txt, docs/man/upsd.conf.txt, docs/man/upsmon.conf.txt, docs/man/upssched.conf.txt, docs/man/upsset.conf.txt: docs/man/.conf.txt, conf/.sample*: note about ASCII-only contents of parsed config files [#2543]
  • docs/nut.dict: update docs/nut-names.txt with items defined by 42ITy NUT fork [#2339]
  • NEWS.adoc: update docs/nut-names.txt with items defined by 42ITy NUT fork [#2339]
  • drivers/usbhid-ups.c, NEWS.adoc: for devices with VendorID=0x06da (Phoenixtec) suggest trying nutdrv_qx [#334]

2.139. 2024-07-20 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: document fix of prefix for custom distchecks [#2541]
  • Makefile.am: re-define "prefix" to help both native distcheck and its sub-make brethren pass [#2541]

2.140. 2024-07-20 Alejandro González <me@alegon.dev>

  • drivers/cps-hid.c: support ups.firmware and input.sensitivity These variables were tested to work fine on a CP1350EPFCLCD UPS.
  • drivers/cps-hid.c: use consistent indentation in recently added code

2.141. 2024-07-19 Jim Klimov <jimklimov@gmail.com>

  • Makefile.am, scripts/Makefile.am, scripts/udev/Makefile.am: use AM_MAKEFLAGS when calling $(MAKE)
  • scripts/augeas/Makefile.am: EXTRA_DIST lens templates (including the generated nutupsconf.aug.in) if not installing as DATA
  • Makefile.am: pass DISTCHECK_CONFIGURE_FLAGS explicitly to sub-makes for different distcheck scenarios [#2541]
  • ci_build.sh: update log-trace messages about default-tgt:* running a sequential or parallel build
  • ci_build.sh: update log-trace messages about Homebrew

2.142. 2024-07-19 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: update for cps-hid bump [#2540]
  • drivers/cps-hid.c: tone down the version bump [#2540]
  • docs/config-prereqs.txt, docs/nut.dict: docs/config-prereqs.txt: update MacOS build agent setup [#2522]

2.143. 2024-07-18 Jim Klimov <jimklimov@gmail.com>

  • Jenkinsfile-dynamatrix: do not build "pure autoconf default" scenario on MacOS\+Homebrew
  • docs/config-prereqs.txt: update about NUT CI Jenkins agent on MacOS

2.144. 2024-07-18 Jim Klimov <jimklimov+nut@gmail.com>

  • server/upsd.c: fix build on systems without IPV6_V6ONLY
  • configure.ac, tools/nut-scanner/nut-scanner.c: tools/nut-scanner/nut-scanner.c: update build for systems that lack all getifaddr() related methods [#2244]
  • common/str.c, configure.ac, include/nut_float.h: Provide fallback strtof() for platforms where it is missing
  • include/timehead.h, configure.ac, common/Makefile.am, common/timegm_fallback.c: add a fallback timegm()
  • configure.ac: refactor discovery of SEMLIBS (may be needed to AX_RUN_OR_LINK_IFELSE() just a bit below) [#2522]
  • tools/nut-scanner/nut-scan.h, configure.ac: sem_open() usage needs O_CREAT header [#2522]
  • clients/upssched.c: indent preprocessor clauses
  • tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/scan_*: typo fix from copy-pasted %i⇒PRIuSIZE [#2522]
  • tools/nut-scanner/nut-scanner.c: include nut_stdint.h always, not only in threaded builds [#2522]

2.145. 2024-07-17 Jim Klimov <jimklimov@gmail.com>

  • Makefile.am: check-scripts-syntax: fix to ignore old /bin/bash and try something else if possible MacOS ships 3.x and does not grok our syntax; their HomeBrew version is ok.
  • configure.ac, tools/nut-scanner/nut-scan.h, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-init.c, tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/*: add ability to use named semaphores [#2522]
  • configure.ac: add a sem_open() detector of named semaphore support [#2522]
  • configure.ac: try to run sem_init() detector to see if it is usable [#2522] Should fail e.g. on MacOS where it is present in headers but not implemented and throws deprecation warnings which our compile\+link(+run) check can use to rule out the support.
  • docs/config-prereqs.txt, docs/nut.dict: docs/config-prereqs.txt: note temurin JDK installation in MacOS/HomeBrew section
  • docs/config-prereqs.txt: fix typo in NetBSD section

2.146. 2024-07-17 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/nut-scanner.c: bump RESERVE_FD_COUNT for NetSNMP use of files [#2511]
  • m4/nut_check_libusb.m4: differentiate native and cross mingw builds, they vary in preferences
  • NEWS.adoc: when cross-building with a non-cross pkg-config program, neuter its PKG_CONFIG_LIBDIR
  • docs/Makefile.am: adjust to possibility of repeated date\+author title lines [#2510] While we group by those (by default, overridable) when generating the ChangeLog, we ignore the e-mail for comparisons — and different signatures can matter!
  • m4/nut_check_pkgconfig.m4: when cross-building with a non-cross pkg-config program, neuter its PKG_CONFIG_LIBDIR Imported from wxWidgets project; their license is LGPL-based with extra permissions: https://github.com/wxWidgets/wxWidgets/blob/master/docs/licence.txt
  • m4/nut_check_pkgconfig.m4: report PKG_CONFIG_PATH and pkg-config --variable pc_path pkg-config for troubleshooting

2.147. 2024-07-17 Alejandro González <me@alegon.dev>

  • data/driver.list.in, drivers/cps-hid.c: drivers/cps-hid.c: support variables available on CP1350EPFCLCD UPS

2.148. 2024-07-16 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, configure.ac, docs/nut.dict, include/Makefile.am, include/nut_bool.h, m4/nut_check_bool.m4, tests/.gitignore, tests/Makefile.am, tests/nutbooltest.c: configure.ac, m4/nut_check_bool.m4, include/nut_bool.h, tests/nutbooltest.c et al: introduce a NUT_CHECK_BOOL scriptlet and a header with nut_bool_t type [#1176] Chose to use a unique type name to avoid conflicts with third-party headers which deliver a bool_t (currently commonly hacked into many NUT sources). Using lower-cased true and false values, hoping for maximum compatibility with C99 and newer language standards (if the compilers do implement them on whatever obscure platform NUT gets built on, and then our new nut_bool_t definition can be just an alias for what the language gives us). A test case was added to make sure it behaves as expected on different systems. Converting the sources from their custom type definitions and usages would be a separate step.
  • drivers/bcmxcp.c, drivers/belkin-hid.c, drivers/isbmex.c, drivers/libhid.c, drivers/powercom.c, drivers/powerp-bin.c, drivers/powerp-txt.c, drivers/tripplite.c, drivers/tripplite_usb.c: drivers/*.c: switch to #include "nut_float.h" instead of direct <math.h> and/or <float.h> [#1176]
  • tools/nut-scanner/scan_snmp.c: cosmetic fixes, reconcile with DMF branch
  • Makefile.am, NEWS.adoc, UPGRADING.adoc: for ChangeLog generation from git metadata, default to HANGELOG_REQUIRE_GROUP_BY_DATE_AUTHOR=true [#2510]
  • tools/gitlog2changelog.py.in: fixup! tools/gitlog2changelog.py.in: cosmetic fixes
  • tools/gitlog2changelog.py.in: support CHANGELOG_REQUIRE_GROUP_BY_DATE_AUTHOR mode [#2510]
  • tools/gitlog2changelog.py.in: cosmetic fixes
  • tools/gitlog2changelog.py.in: comment about possible interleaved date\+author entries [#2510]
  • docs/Makefile.am: "doc" target as part of "all" is not alone there [#2510]
  • docs/Makefile.am: actually do fail with ChangeLog.html-contentchecked recipe hits [#2510] …except for when we deliberately generated nothing and report it in the document

2.149. 2024-07-15 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/Makefile.am: try to make sure we only build ChangeLog.adoc once (or keep the first built copy in a parallel fanout) [#2510]
  • docs/Makefile.am: clarify the message about DOC-CHANGELOG-GENERATE-WRAPPER to differentiate it better from the real build [#2510]
  • README.adoc: avoid double-dash in the TIP block, this somehow breaks PDF generation
  • README.adoc: make "NUT GitHub Star History Chart" visible only in GitHub/HTML auto-rendering but not in static PDF docs
  • docs/nut.dict, docs/man/hwmon_ina219.txt: update for OI aspell dictionaries
  • README.adoc: reword the GitHub stars image
  • clients/Makefile.am: dlname_filter(): use a shell function to avoid mixing backticks and double-quotes (upsets ksh) [#2431]
  • tools/nut-scanner/nutscan-init.c, tools/nut-scanner/Makefile.am, NEWS.adoc: use client/libupsclient-version.h for SOFILE_LIBUPSCLIENT/SOPATH_LIBUPSCLIENT [#2431]
  • clients/Makefile.am, clients/.gitignore: generate a client/libupsclient-version.h from libtool information file [#2431]
  • tools/nut-scanner/Makefile.am, NEWS.adoc: bump "minor" semver component [#2511, #2431, #2450 et al] Earlier bump went to "patch" component, but here we actually have an API expansion (and more exported symbols), so the more important component should be bumped.
  • tools/nut-scanner/nut-scanner.c: count auto-selected subnets, loudly warn if none were chosen [#2244]
  • tools/nut-scanner/nut-scan.h: minor typo fix in comment
  • tools/nut-scanner/nutscan-init.c, include/nut_platform.h, m4/ax_realpath_lib.m4: move definition of SOEXT to the header [#2431] This would allow the multiplatform-aware library-picking logic to be used elsewhere (e.g. DMF) eventually.
  • drivers/libhid.c, drivers/libhid.h: drivers/libhid.{c,h}: clarify "NUT HID Library - User API" in file headings
  • clients/upsclient.c, clients/upsclient.h, clients/upsmon.c, common/nutwriter.cpp, drivers/apc-mib.c, drivers/hwmon_ina219.c, drivers/libhid.c, drivers/libhid.h, drivers/masterguard.c, drivers/mge-utalk.h, drivers/microdowell.c, drivers/nutdrv_qx.c, drivers/usbhid-ups.c, include/nut_platform.h, include/parseconf.h, server/netssl.c, server/nut_ctype.h, tools/nut-scanner/nut-scanner.c: *.{c,h}: Revise indentation of nested preprocessor clauses/code - vol.2 Conform to NUT code style guide, and satisfy pre-processors that insist on "traditional" code layout by default (hash sign must start the line for them).
  • docs/config-prereqs.txt: for platforms that offer a choice of python2/3 package names, separate its installation sample from the big block of unambiguous packages [#2467]
  • m4/ax_realpath_lib.m4, tools/nut-scanner/nutscan-init.c: add HP-UX *.sl file name patterns into the loop [#2431]

2.150. 2024-07-12 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/Makefile.am: if remaking ChangeLog.html due to failed content check, remove the faulty file [#2510]
  • docs/Makefile.am: ChangeLog.html-contentchecked: no dependencies, avoids (re-)generation and log messages [#2510]
  • NEWS.adoc, UPGRADING.adoc, docs/man/usbhid-ups.txt, docs/nut.dict, drivers/powercom-hid.c, drivers/usbhid-ups.c: drivers/powercom-hid.c, docs et al: add powercom_sdcmd_byte_order_fallback to send shutdown/stayoff in old byte order [#2480]
  • docs/Makefile.am: make a retry of ChangeLog.html more visible [#2510]
  • docs/Makefile.am: avoid lots of noise about symlinks to prep-src-docs
  • docs/Makefile.am: avoid unbalanced double-quotes inside backticks [#2510]
  • tests/Makefile.am: avoid "$\^" which BSD make does not always resolve
  • scripts/python/Makefile.am: avoid "$\^" which BSD make does not always resolve [#2529]
  • scripts/Solaris/Makefile.am: avoid "$\^" which BSD make does not always resolve
  • docs/Makefile.am: use ChangeLog.html-contentchecked to retry building a broken document (once) [#2510]
  • .gitignore, docs/Makefile.am: docs/Makefile.am: turn ChangeLog.html-contentchecked into a standalone recipe [#2510]
  • docs/Makefile.am: sanity-check html-single ChangeLog.html - report it as FAILED only once, and list the current size etc. [#2510]
  • scripts/Windows/build-mingw-nut.sh: do not complain so loudly about missing optional cgi dir
  • scripts/Windows/build-mingw-nut.sh: check the built docs [#2510]
  • docs/Makefile.am: report the amount of times the first/second/last entries were seen (if not 2) [#2510]
  • docs/Makefile.am: sanity-check html-single ChangeLog.html for presence of a few key entries (exactly once) [#2510]
  • ci_build.sh, scripts/Windows/build-mingw-nut.sh: consistently report "configure phase complete" and use of PARMAKE_FLAGS [#2510] Note that scripted WIN32 cross-build currently is sequential-only and only with the make from PATH.

2.151. 2024-07-11 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/Makefile.am: revise *.po ⇒ *.mo generation [#2529]
  • scripts/valgrind/.valgrind.supp: sem_open is broken in some libc implementations [#2511] Per https://forums.freebsd.org/threads/named-semaphore-uninitialized-bytes.84850/ apparently BSD libc and GLibc at least do suffer
  • scripts/valgrind/.valgrind.supp, tools/nut-scanner/Makefile.am, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-display.c, tools/nut-scanner/nutscan-ip.c, tools/nut-scanner/nutscan-serial.c, tools/nut-scanner/scan_avahi.c, tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_nut_simulation.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_usb.c, tools/nut-scanner/scan_xml_http.c: scripts/valgrind/.valgrind.supp: update titles for libssl suppressions
  • tools/nut-scanner/nutscan-init.c, tools/nut-scanner/scan_avahi.c, tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_usb.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/scan_*.c: reconcile coding style some more [#2511]
  • tools/nut-scanner/scan_xml_http.c: nutscan_scan_xml_http_thready(): revise trace-logging and comment markup [#2511]

2.152. 2024-07-10 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/scan_snmp.c, scripts/valgrind/.valgrind.supp: constrain warnings about library methods [#2511]
  • tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_avahi.c, scripts/valgrind/.valgrind.supp: constrain warnings about library methods [#2511]
  • tools/nut-scanner/scan_snmp.c, scripts/valgrind/.valgrind.supp: constrain libnetsnmp leak reports [#2511] It seems that although init_snmp() is called once, every use of the library initializes some data which it then does not release, at least on the test system here.
  • tools/nut-scanner/scan_xml_http.c: close broadcast socket too, avoid FD leak [#2511]
  • tools/nut-scanner/scan_nut.c: list_nut_devices_thready(): free allocations more reliably [#2511]
  • tools/nut-scanner/scan_snmp.c: track nut_initialized_snmp to only init_snmp() once per library load [#2511]
  • tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c: tools/nut-scanner/scan_*.c: drop remaining usage of WSAStartup() overlooked before
  • tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/scan_*.c: initialize "stwS" and "stwST" to better track semaphore usage in debugger
  • tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-init.c, tools/nut-scanner/scan_avahi.c, tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_usb.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/*.c: refactor nutscan_free() to actively lt_dlclose() the loaded library modules [#2511] Avoid some memory leak reports
  • common/common.c: nut_prepare_search_paths(): avoid an FD leak, and comment what we do about "dirname" with and without realpath() support
  • Makefile.am, NEWS.adoc, docs/developers.txt, docs/nut.dict, scripts/Makefile.am, scripts/valgrind/.valgrind.supp, scripts/valgrind/README.adoc, scripts/valgrind/valgrind.sh: Introduce scripts/valgrind with helper script\+data to trace memory usage [#2511]
  • tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/scan_*: revise "thready" scanning methods [#2511] * Clearly name "thread-ready" scanning methods that can be used standalone or from pthread_create() constraints * Settle on "thready" methods freeing caller’s data (so we do not worry about doing it after the parallel loops, or at a wrong moment before) * Unify code mark-up in the files to facilitate later comparisons * Update some comments
  • NEWS.adoc, tools/nut-scanner/nut-scan.h, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-init.c, tools/nut-scanner/scan_ipmi.c: tools/nut-scanner/scan_ipmi.c, nut-scan.h, nutscan-init.c, nut-scanner.c, NEWS.adoc: implement parallel scanning for remote IPMI controllers [#2523]
  • UPGRADING.adoc: Revert "UPGRADING.adoc: hush the changes of PR for issue #2523 until it is in the codebase" This reverts commit d710adef2eba7003a0b42ae2d38709a7204befb4: the feature is here now.
  • UPGRADING.adoc: hush the changes of PR for issue #2523 until it is in the codebase
  • tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: use blank lines in fallback not-built-here methods markup (as in other files)
  • UPGRADING.adoc: highlight API (and a bit of ABI) changes to libnutscan, version bumped [#2244, #2523 et al]
  • drivers/nut-libfreeipmi.c: fix indentation (TAB vs SPACE)
  • clients/upsclient.h, drivers/nut-libfreeipmi.c, drivers/usb-common.c, drivers/usb-common.h, tools/nut-scanner/nut-scan.h, tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_usb.c, tools/nut-scanner/scan_xml_http.c: *.{c,h}: Revise indentation of nested preprocessor clauses/code Conform to NUT code style guide, and satisfy pre-processors that insist on "traditional" code layout by default (hash sign must start the line for them).
  • tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/scan_{nut,snmp,xml_http}.c: update comments
  • tools/nut-scanner/nutscan-device.c, tools/nut-scanner/nutscan-device.h, tools/nut-scanner/nutscan-display.c, tools/nut-scanner/nutscan-init.c, tools/nut-scanner/nutscan-ip.h, tools/nut-scanner/scan_avahi.c, tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_usb.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/*: update © headers

2.153. 2024-07-09 Jim Klimov <jimklimov@gmail.com>

  • tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/scan_{ipmi,snmp,xml_http}.c: comment concerns about bracketed IPv6 in "port" values [#2512]
  • tools/nut-scanner/scan_nut.c: report discovered IPv4 addresses in brackets [#2512]

2.154. 2024-07-09 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/nut-scanner.c: add a warning comment about bit-counting for -m auto [#2244, #2516]
  • tools/nut-scanner/nut-scanner.c: implement "-m auto" for two WIN32 APIs [#2516]
  • NEWS.adoc: update nut-scanner -m auto note - WIN32 is now supported too [#2516]
  • tools/nut-scanner/nutscan-init.c, tools/nut-scanner/nutscan-ip.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/*: move WIN32 WSAStartup() rituals to nutscan_init() so they only run once and for all [#2516]
  • common/common.c: revise debug-tracing of get_libname*() methods
  • configure.ac: fix location of NUT_CHECK_HEADER_IPHLPAPI call [#2516]
  • configure.ac, tools/nut-scanner/Makefile.am: detect WIN32 support of newer GetAdaptersAddresses() and/or older GetAdaptersInfo() [#2516]
  • configure.ac: clarify why we call "cygpath" or "pwd -W", constrain their warnings if they fail (wrong "pwd"), and report the outcome
  • builtin)
  • m4/nut_check_headers_windows.m4: introduce NUT_CHECK_HEADER_IPHLPAPI [#2516]
  • tools/nut-scanner/nut-scanner.c, tools/nut-scanner/scan_xml_http.c: nut-scanner: convert NetXML scan to use nutscan_ip_ranges_iter*() [#2511]
  • tools/nut-scanner/nut-scanner.c, tools/nut-scanner/scan_snmp.c: nut-scanner: convert SNMP scan to use nutscan_ip_ranges_iter*() [#2511]
  • tools/nut-scanner/nut-scanner.c, tools/nut-scanner/scan_nut.c: nut-scanner: convert Old NUT scan to use nutscan_ip_ranges_iter*() [#2511]
  • tools/nut-scanner/nut-scanner.c, tools/nut-scanner/scan_ipmi.c: nut-scanner: convert IPMI scan to use nutscan_ip_ranges_iter*() [#2511]
  • docs/man/Makefile.am, docs/man/nutscan_add_ip_range.txt, docs/man/nutscan_free_ip_ranges.txt, docs/man/nutscan_init_ip_ranges.txt, docs/man/nutscan_stringify_ip_ranges.txt, docs/nut.dict, tools/nut-scanner/nutscan-ip.c, tools/nut-scanner/nutscan-ip.h: nut-scanner: introduce nutscan_stringify_ip_ranges() [#2244, #2511]
  • tools/nut-scanner/nutscan-ip.c: nutscan_add_ip_range(): save irl.start_ip⇐irl.stop_ip in alphanumeric comparison order [#2511]
  • NEWS.adoc, docs/man/Makefile.am, docs/man/nutscan_add_ip_range.txt, docs/man/nutscan_free_ip_ranges.txt, docs/man/nutscan_init_ip_ranges.txt, docs/man/nutscan_ip_ranges_iter_inc.txt, docs/man/nutscan_ip_ranges_iter_init.txt, docs/man/nutscan_scan_ipmi.txt, docs/man/nutscan_scan_nut.txt, docs/man/nutscan_scan_snmp.txt, docs/man/nutscan_scan_xml_http_range.txt, docs/nut.dict, tools/nut-scanner/nut-scan.h, tools/nut-scanner/nutscan-ip.c, tools/nut-scanner/nutscan-ip.h: nut-scanner: implement iteration across nutscan_ip_range_list_t collection [#2511]
  • tools/nut-scanner/nutscan-ip.h: add nutscan_ip_range_list_t structure comments [#2244, #2511]
  • tools/nut-scanner/nutscan-ip.c: fix comment markup
  • docs/man/nutscan_add_ip_range.txt: update wording and structure comments [#2244, #2511]
  • docs/man/nutscan_add_ip_range.txt: fix copy-paste typo in title [#2244, #2511]
  • docs/man/Makefile.am: extend HTML_DEV_MANS_FICTION to be on par with .3 man pages
  • docs/man/Makefile.am: move a comment up to cover more relevant entries
  • docs/man/nut-scanner.txt, docs/nut.dict: docs/man/nut-scanner.txt: clarify about text host names as start/stop/cidr IPs [#2519]

2.155. 2024-07-08 Jim Klimov <jimklimov@gmail.com>

  • tools/nut-scanner/Makefile.am, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-init.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/scan_*.c: trace parallel scan ability init [#2511]
  • tools/nut-scanner/nutscan-ip.c: /tools/nut-scanner/nutscan-ip.c: wrap iterated IPv6 addresses in square brackets [#2512]
  • clients/upsclient.c: comment about bracketed IP addresses/host names [#2512]
  • clients/upsclient.c: troubleshoot wrong upsname@hostname where only hostname was expected [#2512]
  • clients/upsclient.c: cosmetic fix
  • clients/upsclient.c: troubleshoot wrong hostname [#2512]
  • clients/upsc.c: enable support for NUT_DEBUG_LEVEL envvar [#2512]

2.156. 2024-07-08 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upsclient.c: troubleshoot wrong upsname@hostname where only hostname was expected - use NUT_STRARG() for safety [#2512]
  • docs/man/Makefile.am, docs/man/nutscan.txt, docs/man/nutscan_add_ip_range.txt, docs/man/nutscan_free_ip_ranges.txt, docs/man/nutscan_init_ip_ranges.txt, docs/nut.dict, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-ip.c, tools/nut-scanner/nutscan-ip.h: nut-scanner code and docs: refactor with nutscan_ip_range_list_t type for ip_ranges[] list and helper metadata, and methods as part of libnutscan [#2244, #2511] Not bumping library version, because it was recently bumped as part of other PRs about this issue. Technically the scope of the library has been changed by new exported methods and header lines.
  • tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-ip.h: move ip_range_t definition into header [#2244]
  • tools/nut-scanner/nut-scan.h: move __cplusplus extern "C" guard up to before we declare vars and types
  • docs/man/nut-scanner.txt, NEWS.adoc: (fixed) IPv6 addresses must be passed in square brackets [#2512]
  • tools/nut-scanner/nut-scanner.c: strip square brackets around start_ip/end_ip, if any [#2512]
  • tools/nut-scanner/nutscan-ip.c: nutscan_cidr_to_ip(): strip square brackets around first_ip, if any [#2512]
  • tools/nut-scanner/nutscan-ip.c: nutscan_cidr_to_ip(): sanity-check for cidr==null [#2512]
  • tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_nut.c: fix order of WIN32 active init calls vs. pthread variable declarations [#2511]
  • tools/nut-scanner/nut-scanner.c: debug-log the Parallel scan support status in this build and run [#2511]
  • tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/scan_*.c: update some comments [#2511]
  • tools/nut-scanner/scan_xml_http.c: collapse single and multiple IP address cases into one [#2512] This should apply formatting from nutscan_ip_iter_init() to single-IP scans like it happens for other protocols already. Also take the chance to rectify indentations through parallel threads code.
  • tools/nut-scanner/scan_xml_http.c: comment where logical blocks end
  • tools/nut-scanner/nut-scanner.c: -t timeout: fix to use strtol() not atol() [#2244]
  • tools/nut-scanner/nut-scanner.c: handle_arg_cidr(): fix to use strtol() not atoi() [#2244]
  • tools/nut-scanner/nut-scanner.c: handle_arg_cidr(): report ignoring a subnet by family before checking for mask length [#2244]
  • tools/nut-scanner/nut-scanner.c: handle_arg_cidr() rename "optarg" to "arg_addr" [#2244] Avoid warning about clash with a global variable. Fallout of refactoring original code into a method. Also make it const as we do not change the original value anyway.
  • tools/nut-scanner/nut-scanner.c, docs/man/nut-scanner.txt, docs/nut.dict, NEWS.adoc: handle_arg_cidr(): add -m auto*/ADDRLEN mode [#2244]
  • tools/nut-scanner/nut-scanner.c: handle_arg_cidr(): log why some discovered subnets are filtered out [#2244]
  • tools/nut-scanner/nut-scanner.c: handle_arg_cidr(): line-wrap long printouts [#2244]
  • tools/nut-scanner/nut-scanner.c: handle_arg_cidr(): tabs (style) [#2244]
  • tools/nut-scanner/nut-scanner.c: refactor handle_arg_cidr() logic to un-indent it some more [#2244]
  • tools/nut-scanner/nut-scanner.c: refactor handle_arg_cidr() into a separate method [#2244] Allow for some shorter indentation

2.157. 2024-07-06 Jim Klimov <jimklimov+nut@gmail.com>

  • m4/nut_check_libavahi.m4: fix detection of SOFILE/SOPATH - we need only the client library [#2431]
  • NEWS.adoc, docs/man/nut-scanner.txt, tools/nut-scanner/nut-scanner.c: tools/nut-scanner/nut-scanner.c: implement "-m auto{4,6}" modes to limit selection of ranges to IPv4/IPv6 only [#2244]
  • tools/nut-scanner/nut-scanner.c, NEWS.adoc: neuter networking "-m auto" support for WIN32 (needs different implementation) [#2244]
  • tools/nut-scanner/nut-scanner.c: separate POSIX headers from WIN32 ones (for networking "-m auto" support) [#2244]

2.158. 2024-07-05 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/nut-scanner.c: -m auto discovery: use shorter addr/mask buffers [#2244]
  • tools/nut-scanner/nut-scanner.c: comment some TODOs [#2244]
  • tools/nut-scanner/nut-scanner.c: -m auto: implement actually converting discovered subnets into CIDR and adding to IP ranges for scanning [#2244]
  • tools/nut-scanner/nut-scanner.c: flush existing start_ip/end_ip before handling whatever value of -m option [#2244]
  • tools/nut-scanner/nut-scanner.c: quieter debug about "Discovering getifaddrs()" [#2244]
  • tools/nut-scanner/nut-scanner.c: use pre-allocated struct sockaddr_in{,6} so it is aligned how-ever the platform likes [#2244]
  • tools/nut-scanner/nut-scanner.c: use fatalx() instead of hackarounds [#2244]
  • tools/nut-scanner/nut-scanner.c: retain getifaddrs() findings printout as a real upsdebugx() trail [#2244] Originally I intended to use these to check that the address parsing code works, and drop the printf() of these messages. But if I collect them into a string and upsdebug() it - why not, can help troubleshooting in real life later, too.
  • tools/nut-scanner/nut-scanner.c: upscale sockaddr flags to uintmax_t for debug printouts to be predictable on different platforms [#2244]
  • NEWS.adoc, docs/man/nut-scanner.txt, tools/nut-scanner/nut-scanner.c: tools/nut-scanner/nut-scanner.c et al: prepare for -m auto mode with detection of configured network interfaces
  • drivers/libshut.c: libshut_open(): use static structs and memcpy() to actually fix alignment warnings
  • tools/nut-scanner/nut-scanner.c: quieter debug about add_ip_range() in-/semi-valid inputs [#2244]
  • tools/nut-scanner/nutscan-ip.c: refactor to name IPv4 vars with a "4" in the name, and use static structs and memcpy() to actually fix alignment warnings [#2244]
  • tools/nut-scanner/nutscan-ip.c: nutscan_cidr_to_ip(): update comments and logged reports to help troubleshooting [#2244]
  • tools/nut-scanner/nut-scanner.c: use xcalloc() instead of hackarounds [#2244]
  • tools/nut-scanner/Makefile.am, NEWS.adoc: expose more of libcommon* symbols in libnutscan to use them in nut-scanner [#2244]

2.159. 2024-07-04 Jim Klimov <jimklimov@gmail.com>

  • .circleci/config.yml: report IP address when re-running the job with SSH
  • docs/developers.txt: document pragmas for unused code/vars
  • docs/developers.txt: document indentation style for nested macros/pragmas Inspired by weird bugs in code analysis tools on some platforms (and their headers). * https://stackoverflow.com/questions/42031921/unterminated-unconditional-directive-error-when-preprocessing-c-code
  • https://bugs.llvm.org/show_bug.cgi?id=31886
  • ci_build.sh: jump through some hoops to avoid use of "cpp" program name if we can
  • .circleci/config.yml: try to install MC into "Re-run job with SSH" envs
  • .circleci/config.yml: allow use of latest brew packages
  • .circleci/config.yml: force use of CPP="clang -E" with clang builds
  • .circleci/config.yml: force use of python3.12 for MacOS/Homebrew as of now
  • ci_build.sh: cater for netsnmp\+openssl intimacy on MacOS/Homebrew
  • m4/ax_realpath_lib.m4: fall back to use "uname -m" for MacOS linker arch
  • configure.ac: refactor with PROBE_OS_GROUP/PROBE_OS_USER to try "id" where "getent" is missing Primarily this facilitates "in-place replacement" builds

2.160. 2024-07-04 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/nut-scanner.txt: document that currently different IP range scans do not parallelize together [#2244] See also: https://github.com/networkupstools/nut/issues/2511
  • tools/nut-scanner/nut-scanner.c: drop unused DEFAULT_TIMEOUT macro [#2244] We actually use DEFAULT_NETWORK_TIMEOUT from common.h same as in clients/upsclient.c
  • tools/nut-scanner/nutscan-device.c: protect nutscan_add_device_to_device() from adding a list to itself
  • tools/nut-scanner/nut-scanner.c: use run*() methods for most of the non-threaded scans too [#2244]
  • tools/nut-scanner/nut-scanner.c, docs/man/nut-scanner.txt, NEWS.adoc: introduce a way to scan several IP address ranges [#2244]
  • docs/man/nut-scanner.txt, docs/nut.dict: docs/man/nut-scanner.txt: note that some protocols require IP address options and others behave differently without them [#2244]
  • docs/man/nut-scanner.txt: update general markup
  • docs/man/nut-scanner.txt: update general wording about IP address options [#2244]
  • tools/nut-scanner/nutscan-ip.c: tools/nut-scanner/nut-scanner.c: comment some TODO for IPv6 netmask proper support [#2244]
  • tools/nut-scanner/nut-scanner.c: clarify some code comments [#2244]
  • tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/{scan_xml_http.c,scan_snmp.c,scan_nut.c,scan_ipmi.c}: report the IP address (range, single, none) in the log [#2244]

2.161. 2024-07-03 Jim Klimov <jimklimov@gmail.com>

  • m4/nut_check_libnetsnmp.m4: revise detection of the two headers
  • m4/ax_realpath_lib.m4: revise to better detect MacOS *.dylib files [#2431]
  • tools/nut-scanner/nutscan-init.c: do not detect NUT_PLATFORM_APPLE_OSX as WITH_MACOSX (driver)
  • m4/nut_check_libnetsnmp.m4: check for both headers we use typically, and report the findings
  • .circleci/config.yml: relink net-snmp from brew to be in default search paths It seems the XCode version of the library and its headers gets preferred, so we either find no symbols or load the library variant built without them.
  • m4/nut_check_libnetsnmp.m4: report myCFLAGS_SOURCE and myLIBS_SOURCE from which we learned the settings
  • .circleci/config.yml: clean up debugging around openssl@3 [#2502]
  • .circleci/config.yml: relink openssl package if needed, and fail job if we can not
  • .circleci/config.yml: relink openssl package
  • .circleci/config.yml: report what "brew" knows about openssl* package(s)
  • docs/config-prereqs.txt, .circleci/config.yml: we can detect HOMEBREW_PREFIX from the running system [#2502]
  • .circleci/config.yml: try to ensure openssl@3 usability by reinstalling it in the end, and report what pkg-config knows
  • ci_build.sh: do not set CPPFLAGS on MacOS/Homebrew builds [#2502]
  • .circleci/config.yml: use clang (not gcc) directly, gcc now seems to just be an alias [#2502]
  • tools/nut-scanner/Makefile.am: undefine NETSNMP_USE_OPENSSL if building without it
  • drivers/Makefile.am: undefine NETSNMP_USE_OPENSSL if building without it
  • configure.ac: detect WITH_SSL variants before other libraries (notably net-snmp)
  • .circleci/config.yml: stash resulting config.nut_report_feature.log [#2501]
  • .circleci/config.yml: now ci_build.sh used for MacOS/Homebrew builds knows to not distruct system include dirs by default [#2501]
  • ci_build.sh: for MacOS/Homebrew builds, do not distruct system include dirs by default [#2501]
  • .circleci/config.yml, docs/config-prereqs.txt: enable cppunit with MacOS/Homebrew builds [#2502]
  • ci_build.sh: try to mark Homebrew (MacOS) include paths as "-isystem" to avoid some warnings [#2502]
  • tests/cpputest-client.cpp, tests/cpputest.cpp, tests/example.cpp, tests/nutclienttest.cpp, tests/nutconf_parser_ut.cpp, tests/nutconf_ut.cpp, tests/nutipc_ut.cpp, tests/nutstream_ut.cpp: tests/*.cpp: wrap CPPUNIT includes with more pragmas to ignore warnings [#2502]
  • m4/ax_c_pragmas.m4: add many C+\+ pragmas about CPPUNIT grief seen on MacOS builds [#2502]
  • drivers/snmp-ups.h, tools/nut-scanner/scan_snmp.c: use HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNUSED_PARAMETER around net-snmp headers
  • m4/ax_c_pragmas.m4: introduce HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_UNUSED_PARAMETER
  • NEWS.adoc: report changes about MacOS builds on NUT CI and interactively [#2502]
  • .circleci/config.yml: pass just HOMEBREW_PREFIX to ./ci_build.sh now, not customized paths anymore [#2502]
  • ci_build.sh: inject pkg-config, libltdl and libsnmp settings with HOMEBREW_PREFIX automatically
  • ci_build.sh: guess CI_CCACHE_SYMLINKDIR with HOMEBREW_PREFIX automatically
  • .circleci/config.yml, docs/config-prereqs.txt, docs/nut.dict: .circleci/config.yml, docs/config-prereqs.txt: install docbook-xsl and document nuances around it
  • ci_build.sh: set *FLAGS after detecting CI_OS_NAME nuances
  • .circleci/config.yml: use HOMEBREW_PREFIX variable as already used by brew [#2502]
  • configure.ac: revise use of AC_SEARCH_LIBS for i2c methods (one per call)
  • m4/nut_check_libregex.m4: further simplify work with AC_SEARCH_LIBS
  • m4/nut_check_libregex.m4: AC_SEARCH_LIBS is for one method at a time
  • scripts/augeas/gen-nutupsconf-aug.py.in: mark regex strings as r"" [#2183]
  • .circleci/config.yml, docs/config-prereqs.txt: clarify dependencies available via Homebrew on MacOS [#2502]

2.162. 2024-07-03 Jim Klimov <jimklimov+nut@gmail.com>

  • .circleci/config.yml: introduce NUTCI_HOMEBREW_BASEDIR to parameterize location of Homebrew libs, includes and ccache [#2502]
  • .circleci/config.yml: introduce NUTCI_HOMEBREW_BASEDIR to parameterize location of Homebrew libs, includes and ccache [#2502]
  • docs/config-prereqs.txt, .circleci/config.yml: clarify the different Homebrew locations are due to architecture, not age [#2502]
  • configure.ac: fix capitalization of Python the language [#2183]
  • configure.ac: rectify adding to PYTHON_FAILED_TEST_DETAILS [#2183]
  • configure.ac: fix reported messages after refactoring [#2183]
  • configure.ac: trace decision-making about NUT-Monitor installation (or not) [#2183]
  • configure.ac, m4/nut_check_python.m4: reshuffle Python detection vs. capability probing [#2183]
  • configure.ac: refactor detection of usable Python interpreters; report their module search paths and versions [#2183]
  • configure.ac: separate tests for nut_with_pynut_py* from nut_have_telnetlib_py*, and in those separate tests of stock telnetlib from fallback nut_telnetlib [#2183]
  • configure.ac: be sure to probe nut_telnetlib module from source dir [#2183] Avoid confusion for out-of-tree builds
  • COPYING, docs/nut.dict, scripts/python/module/nut_telnetlib.py: COPYING, scripts/python/module/nut_telnetlib.py: clarify the license for the copied file [#2183]
  • configure.ac: upper-case Python name in message [#2183]
  • configure.ac: typo in path to test with nut_telnetlib Python module [#2183]

2.163. 2024-07-02 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c, clients/upsmon.c, server/upsd.c: clarify PID-file checks wording: "is running or not"
  • m4/ax_realpath_lib.m4: try to make use of LDFLAGS, LIBS and CFLAGS when discovering libraries [#2431] At least MacOS with Homebrew seems puts each packaged library into its own directory, so args like -L/opt/homebrew/Cellar/neon/0.32.5/lib would be required for successful discovery.
  • UPGRADING.adoc: clarify about AX_REALPATH_LIB benefits that can simplify packaging [#2431]
  • tests/NIT/nit.sh: log_debug the python shebang, and separate first
  • NEWS.adoc, docs/nut.dict, tools/nut-scanner/nutscan-init.c: tools/nut-scanner/*, NEWS.adoc, docs/nut.dict: make use of AX_REALPATH_LIB discovered libraries [#2431]
  • tools/nut-scanner/nutscan-init.c: set libname=NULL after we free() it [#2431]
  • tools/nut-scanner/nutscan-init.c: rearrange pragma indentations and update comments [#2431]
  • common/common.c: extend get_libname() to try exact hits if base_libname includes path separator character(s) [#2431]
  • tools/nut-scanner/nutscan-init.c, m4/ax_realpath_lib.m4: acknowledge MacOS Darwin "*.dylib" extension [#2431]
  • m4/nut_compiler_family.m4: fence NUT_COMPILER_FAMILY to only run the logic once

2.164. 2024-07-01 Jim Klimov <jimklimov+nut@gmail.com>

  • m4/nut_check_libavahi.m4, m4/nut_check_libfreeipmi.m4, m4/nut_check_libneon.m4, m4/nut_check_libnetsnmp.m4, m4/nut_check_libusb.m4: m4/nut_check_lib*.m4: call AX_REALPATH_LIB to discover SOPATH*/SOFILE* for nut-scanner third-party libs [#2431] libavahi, libfreeipmi, libneon, libnetsnmp, libusb0/1 NOTE: The libnutclient is separate, we build it - so can not detect the final name in advance right here
  • m4/ax_realpath_lib.m4: introduce a way to find dynamic library names [#2431]
  • .circleci/config.yml: add /opt/homebrew to include and lib choices [#2502]
  • configure.ac: MacOS Darwin fails to run python scripts with proper interpreter via shebang [#2502]
  • .circleci/config.yml: re-enable relinking libtool files Allegedly should help find ltdl.h
  • .circleci/config.yml: update Homebrew dependency list to facilitate builds on newer baseline [#2502]
  • docs/config-prereqs.txt: update dependency list and CI_CCACHE_SYMLINKDIR for newer Homebrew recipes [#2502]
  • .circleci/config.yml: update CI_CCACHE_SYMLINKDIR for newer Homebrew recipes [#2502]
  • tests/NIT/nit.sh: report the detected python shebang
  • .circleci/config.yml: store config.log artifact for troubleshooting [#1419]
  • NEWS.adoc, configure.ac, docs/nut.dict, scripts/python/Makefile.am, scripts/python/README.adoc, scripts/python/module/Makefile.am, scripts/python/module/PyNUT.py.in, scripts/python/module/nut_telnetlib.py, scripts/python/module/setup.py.in: Provide a fallback copy of telnetlib module for PyNUTClient [#2183]
  • .circleci/config.yml: add a failfast implementation to abort broken builds and use fewer resources [#2502] The underlying problems are usually shared.
  • .circleci/config.yml: bump XCode version to the oldest currently available now [#2502] Closes: #2502
  • ci_build.sh: allow to customize PYTHON implementation when dev-building (without args)
  • scripts/python/module/test_nutclient.py.in: make internal debug verbosity of the module optional

2.165. 2024-06-25 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, docs/nut.dict: NEWS.adoc: update for libserial-nutscan.la [#2490]
  • configure.ac: fix indentations for recently changed --with-docs code [#2473]
  • Makefile.am: move distcheck-light-man up to distcheck-light [#2473]
  • common/Makefile.am: do not embed libnutwincompat.la pieces into libcommonstr.la Initially that embedding was done to help libnutscan builds with libcommonstr.la helper, but then a separate link with libnutwincompat.la was back-ported - so this line removal helps both to constrain the helper size/scope, and against a build-time conflict.

2.166. 2024-06-24 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/Makefile.am: bump libnutscan version-info just in case after recent recipe changes
  • tools/nut-scanner/Makefile.am: drop LINKED_SOURCE_FILES now that we have libserial-nutscan.la
  • tools/nut-scanner/Makefile.am: append to common make variables instead of defining them at first assignment Would help later when merging DMF/FTY branches; for now just a bit of syntactic sugar and reduction of diffs against them.
  • drivers/Makefile.am, tools/nut-scanner/Makefile.am: introduce libserial-nutscan.la to simplify nut-scanner recipes Initiated in DMF branch by commit 4fec99ab62977365c0fa3de12f77ed9b6a01cc20

2.167. 2024-06-20 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/dstate.c, drivers/dstate.h: drivers/dstate.{c,h}: introduce conn_t→readzero field and throttles around it [#2484]
  • clients/nutclient.h, clients/nutclientmem.h, clients/upsclient.h, drivers/generic_gpio_common.h, drivers/generic_gpio_libgpiod.h, drivers/hidparser.h, drivers/libhid.h, drivers/main.h, drivers/upsdrvquery.h, server/upsd.h: Numerous headers: define include-guard to a number value; revise names of these guards
  • drivers/dstate.c: indent ifdef-fenced includes
  • drivers/dstate.c, NEWS.adoc: a read() returning 0 after a select with O_NDELAY means EOF (the other side closed socket) [#2484]
  • tests/NIT/nit.sh: report PID_* set by this script for NUT daemons it has launched
  • tests/NIT/nit.sh: when we DEBUG_SLEEP, report practical steps after dumping envvars - so dev/tester knows how they can proceed
  • tests/NIT/nit.sh: document a typical test sandbox preparation

2.168. 2024-06-18 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: update for recent changes in NEWS.adoc [#2478]
  • NEWS.adoc: mention use of SSL linker deps for snmp-ups and netxml-ups builds [#2479]
  • NEWS.adoc: mention libcommonstr.la [#2478]

2.169. 2024-06-17 Jim Klimov <jimklimov+nut@gmail.com>

  • common/Makefile.am: libcommonstr_la_LIBADD \+= @BSDKVMPROCLIBS@ [#2463, #2478]

2.170. 2024-06-15 Jim Klimov <jimklimov+nut@gmail.com>

  • common/Makefile.am, tools/nut-scanner/Makefile.am: Introduce private libcommonstr.la recipe A smaller helper library than libcommonclient.la which is sometimes an overkill, e.g. in nut-scanner where the libupsclient.so/.dll is loaded dynamically for "Old NUT" scans and there is no specific use for object files included into libcommonclient.la. More use-cases with DMF codebase (currently not yet upstreamed). Combined from a series of commits like * 3ba6b576cd2248484eaad41a9e2a480cbd2aa6a6 * c418728e6ed7879f4a569ca0e3fd6f38fcb27eae * 5f16b7b7c89fa341090e886e7ca5cf8d981430eb * bc4cd957280c67778a36b49b524092dc15d1aa8b
  • NEWS.adoc, docs/configure.txt: document --with-doc=dist-auto option [#2473]
  • configure.ac: apply comment for nut_with_libltdl=no vs. nut_with_nut_scanner=yes situation Derived from commits 21d62421fea72c4f981bfa05fb259da65a795ac9 and 9322e2e3404b97615af799b7062e962030277830 in the FTY branch.
  • Makefile.am: use job-server for DMF-related targets with sub-makes: cover distcheck-light-man
  • Makefile.am: make distcheck-light-man should test installability of NUT-Monitor and PyNUT (even if as a co-bundle) Modernize DISTCHECK_LIGHT_MAN_FLAGS for 2022\+ Replicate commit e19fa235a7cecdf5bc5752ab87c3e6db81932dac from PR https://github.com/networkupstools/nut/pull/1504
  • README.adoc: add a Star History Chart badge/image

2.171. 2024-06-15 Fabrice Fontaine <fontaine.fabrice@gmail.com>

  • clients/upsclient.h: include sys/types.h Include sys/types.h to avoid the following uclibc build failure with collectd raised since version 2.8.0 and https://github.com/networkupstools/nut/commit/3f3851eab0d51e029f67e7db359860cc983557f4: configure:109633: checking int type of port argument for NUT upscli_splitname configure:109665: /home/buildroot/instance-0/output-1/host/bin/x86_64-linux-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -Wall -Werror -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5 In file included from conftest.c:172: /home/buildroot/instance-0/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/upsclient.h:114:1: error: unknown type name ssize_t; did you mean size_t? 114 \| ssize_t upscli_sendline_timeout(UPSCONN_t *ups, const char *buf, size_t buflen, const time_t timeout); | ^~~~~ \| size_t Fixes: - http://autobuild.buildroot.org/results/205/2058f87ad7dbf7fbc62c8747855c82da4157ea35/collectd-5.12.0/config.log

2.172. 2024-06-15 Bohdan <chbgdn@gmail.com>

  • drivers/powercom-hid.c: fix bytes order in shutdown commands

2.173. 2024-06-13 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, UPGRADING.adoc, clients/upsmon.c, common/common.c, drivers/main.c, drivers/upsdrvctl.c, include/common.h, scripts/Windows/wininit.c, server/upsd.c: Extend sendsignal*() API some more to optionally fall back to checkprocname() vs current getpid() [#2463]
  • NEWS.adoc, UPGRADING.adoc, common/common.c, conf/nut.conf.sample, docs/man/nut.conf.txt, docs/nut.dict, include/common.h: Introduce NUT_IGNORE_CHECKPROCNAME=true support to skip PID process name validation if it causes problems [#2463]
  • UPGRADING.adoc: warn that packaged program name mismatches can be a problem [#2463]

2.174. 2024-06-10 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upsmon.c: for OB UPS and communications failure, leave just the debug log message [#2454]
  • NEWS.adoc: explain the fix for #2454 via #2462
  • common/common.c: checkprocname(): case #5 is not "exact", fix the message [#2463]

2.175. 2024-06-09 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c, include/common.h: common/common.c: getprocname(): implement support for WIN32 parsing without a /proc [#2463]
  • common/common.c, configure.ac: common/common.c: getprocname(): implement support for /proc/NNN/psinfo (Solaris/illumos) parsing [#2463]
  • common/common.c: getprocname(): revise printed messages [#2463]
  • common/Makefile.am, common/common.c, configure.ac: common/common.c: getprocname(): implement support for (Open)BSD parsing without a /proc [#2463]
  • common/common.c: getprocname(): implement support for /proc/NNN/stat parsing [#2463]

2.176. 2024-06-08 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: getprocname(): implement support for /proc/NNN/cmdline parsing [#2463]
  • UPGRADING.adoc, clients/upsmon.c, common/common.c, docs/nut.dict, drivers/main.c, drivers/upsdrvctl.c, include/common.h, server/upsd.c: Pass "progname" through sendsignal*() methods to verify that we sendsignal*() via old PID only to same progname [#2463] Internal API change for common.c/h
  • common/common.c: sendsignalpid(): comment about not-signaling PID<2

2.177. 2024-06-07 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, common/common.c, configure.ac, include/common.h: Introduce getprocname() and checkprocname() for suspicious PID values, and helper parseprogbasename() [#2463]
  • NEWS.adoc: rearrange entries

2.178. 2024-06-06 Jim Klimov <jimklimov+nut@gmail.com>

  • data/driver.list.in: shorten HCL title for Cyber Energy devices Asked via mailing list to not deference the USB VID:PID in the HCL title

2.179. 2024-06-05 Andriy Gapon <avg@FreeBSD.org>

  • clients/upsmon.c: clients/upsmon: restore handling of comm failure while on battery Commit 2647f026f7f0 from #2108 updated is_ups_critical() such that a communication failure (commstate == 0) while on battery (linestate == 0) would be treated as immediately entering critical state. There was no way to disable that behavior or add any grace period. As such, that change made DEADTIME parameter ineffective as lastpoll being stuck should be equivalent to commstate == 0 because any lastpoll update sets commstate to 1. This change removes special handling of that condition from is_ups_critical() and reverts to the prior behavior where recalc() looks at lastpoll and deadtime to set LB flag after the configured communication timeout.

2.180. 2024-06-04 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/NIT/nit.sh: make use of NUT_DEBUG_SYSLOG tweak setting
  • NEWS.adoc, common/common.c, conf/nut.conf.sample, docs/man/nut.conf.txt, include/common.h: Introduce a NUT_DEBUG_SYSLOG environment variable [#2394]

2.181. 2024-06-03 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/documentation.txt: update URL for Configuration Examples to directly fetch the latest PDF book, not go to the GH release page (fix typo)
  • docs/documentation.txt: update links for Roger Price original page and replicas in NUT GitHub org
  • docs/documentation.txt: update URL for Configuration Examples to directly fetch the latest PDF book, not go to the GH release page

2.182. 2024-05-30 Nicola Fontana <ntd@entidi.it>

  • docs/man/bicker_ser.txt: bicker_ser: improve styling of relay modes doc
  • docs/man/bicker_ser.txt, drivers/bicker_ser.c: bicker_ser: move unofficial variables into "experimental" namespace
  • drivers/bicker_ser.c: bicker_ser: register the shutdown.return instcmd
  • drivers/bicker_ser.c: bicker_ser: enforce expected data size When receiving a packet of known data size, ensure that data size is exactly what expected. That should avoid later surprises, e.g. fiddling with bytes never received.

2.183. 2024-05-28 Nicola Fontana <ntd@entidi.it>

  • drivers/bicker_ser.c: bicker_ser: avoid GCC warnings Initialize the parameter struct to avoid GCC complains about "‘parameter.value’ may be used uninitialized in this function". This is not a real error because, if bicker_write is successful, that struct is populated properly.
  • drivers/bicker_ser.c: bicker_ser: bump driver version
  • docs/man/bicker_ser.txt: bicker_ser: add variables info to manpage Variables are mapped 1:1 to Bicker parameters, so the descriptions have been borrowed and adapted directly from the UPS Gen2 software manual.
  • drivers/bicker_ser.c: bicker_ser: allow writing to Bicker parameters All Bicker parameters (at least the supported ones) can be changed, so enable writing and set proper ranges. Expose all parameters, even the non-standard ones.

2.184. 2024-05-27 Nicola Fontana <ntd@entidi.it>

  • drivers/bicker_ser.c: bicker_ser: ensure battery.charge.low is defined According to RFC-9271, that variable is part of the "Desktop PC Variables" set so it is expected to be present and its default value is 20 seconds.
  • drivers/bicker_ser.c: bicker_ser: allow NULL dst in parameter handling The comments say to use NULL for discarding the results but bicker_receive_parameter() was accessing dst->id, effectively preventing it. Fix that bug and improve the code: now bicker_receive_parameter() validates the parameter id (so it can be used freely) and it always logs debugging info about the parameter.
  • drivers/bicker_ser.c: bicker_ser: add id validation to bicker_get()
  • drivers/bicker_ser.c: bicker_ser: make dst optional in bicker_write The dst argument is optional in every other function, so be consistent and make it optional also in this one.
  • drivers/bicker_ser.c: bicker_ser: rename parameter to dst This should make clear that argument is just used for destination.

2.185. 2024-05-24 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/nut.exe.txt, docs/nut.dict: suggest some PowerShell magic to prepare Windows Firewall for upsd [#2446, #2455]
  • scripts/Windows/wininit.c, docs/man/nut.exe.txt: introduce "nut.exe start/stop" wrappings [#2455]
  • scripts/Windows/wininit.c: introduce an SvcExists() method [#2455]
  • scripts/Windows/wininit.c: clarify that this is what becomes "nut.exe" normally [#2446]
  • docs/man/nut.exe.txt: mention net start/stop to manage Windows services [#2446, #2455]

2.186. 2024-05-23 Nicola Fontana <ntd@entidi.it>

  • drivers/bicker_ser.c: bicker_ser: expose mappable parameters Every Bicker parameter that has a correspondence in nut-names.txt has been mapped. If the parameter is disabled on the device, no NUT variable is created. If the NUT variable is set to an empty string, the parameter is reset and disabled on the device and that NUT variable is removed.
  • drivers/bicker_ser.c: bicker_ser: add sanity checks to bicker_set These devices seem to be picky on what you use to set parameters.
  • drivers/bicker_ser.c: bicker_ser: make parameter handling less error prone Using an in/out struct and making some specific field mandatory is cumbersome and error prone. Now the data needed for setting or getting parameters is explicitly required by the arguments.

2.187. 2024-05-22 Nicola Fontana <ntd@entidi.it>

  • drivers/bicker_ser.c: bicker_ser: refactor to clarify packet manipulation Change BICKER_PACKET from a constant value to a macro that depends on the data length. This should make clear that the packet size depends directly from the data size. Refactored some code here and there trying to minimize the presence of magic numbers and clarify the intentions.
  • drivers/bicker_ser.c: bicker_ser: use proper format modifiers in logs Ensure the format string in logging messages is the correct one without subcasting. Furthermore, due to the promotion rules of the C language (where any given type, even unsigned, is promoted to int when possible), explicitly cast to unsigned where required.
  • drivers/bicker_ser.c: bicker_ser: use uint8_t for bytes instead of char char is by default signed and (as the name implies) designed to access string characters. For accessing bytes, the uint8_t type is more appropriate.
  • drivers/bicker_ser.c: bicker_ser: cosmetic fixes
  • drivers/bicker_ser.c: bicker_ser: fix alignment and endianness problems Accessing an uint16_t on odd addresses is not portable. Avoid having to deal with that issue by always constructing words mathematically from single bytes. This also solves any endianness difference.
  • drivers/bicker_ser.c: bicker_ser: fix string dstate setting User provided strings could contain printf special sequences and as such they should never be used in the format argument of dstate_setinfo().
  • drivers/bicker_ser.c: bicker_ser: differentiate between error and unsupported When a command is unsupported, the "\x01\x03\xEE\x07\x04" response packet is returned. This is different from a response packet with a wrong command index. WARNING: the "unsupported" packet has been found sperimentally and it is an undocumented feature.

2.188. 2024-05-21 Nicola Fontana <ntd@entidi.it>

  • drivers/bicker_ser.c: bicker_ser: add parameter support Added the needed infrastructure for getting and setting parameters. Actually the only parameter that is surely working is "ups.delay.start".
  • drivers/bicker_ser.c: bicker_ser: use variable for low battery limit
  • drivers/bicker_ser.c: bicker_ser: add more state variables Identification fields are now queried from the device. Also "battery.charge" is now set properly.
  • drivers/bicker_ser.c: bicker_ser: refactor to allow more complex packet handling I’m planning to add functions for reading strings, i.e. without knowing beforehand the size of the response packets. This required some refactoring of the receiving functions. Also, while at it, added docblocks to many Bicker functions, hopefully easing the maintenance in the future.
  • drivers/bicker_ser.c: bicker_ser: explicitly pass the command index In the previous implementation the command index was always \x03, as stated by the UPSIC manual. After new evidence has been found (UPS-Gen2 software user manual), it came out there are much more commands grouped in different indexes.
  • drivers/bicker_ser.c: bicker_ser: update protocol documentation Bicker told me to refer to the UPS Gen software’s user manual for more details on their protocol, and in fact that manual contains much more info. Added a summary of available commands to the comments, as a quick reference for feature implementation.

2.189. 2024-05-18 Nicola Fontana <ntd@entidi.it>

  • NEWS.adoc: announce bicker_ser driver [#2318]

2.190. 2024-05-18 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/nut-scanner.c: clarify logs about "SKIPPED" scans as not requested "or supported"
  • tools/nut-scanner/nut-scanner.c: clarify "old nut" (libupsclient) vs. avahi detection in messages/help
  • tools/nut-scanner/nutscan-init.c: only set nutscan_avail_snmp=1 if WITH_SNMP_STATIC in nutscan_init() …and let debug log know we skipped the library search, and why.
  • tools/nut-scanner/nutscan-init.c, NEWS.adoc: avoid always considering "Old NUT" method available [fallout of #2246] If libupsclient.so was not loaded, we can not really use this search. Seems like a copy-paste problem mis-adding the NUT Simulation support.

2.191. 2024-05-17 Nicola Fontana <ntd@entidi.it>

  • docs/man/Makefile.am, docs/man/bicker_ser.txt, docs/nut.dict: bicker_ser: add manpage
  • drivers/bicker_ser.c: bicker_ser: use length macros to increase expressiveness
  • drivers/bicker_ser.c: bicker_ser: add big-endian platform support
  • data/driver.list.in: add bicker_ser based UPSes
  • drivers/bicker_ser.c: bicker_ser: add shutdown support The protocol supports shutdown after a custom delay settable between 0 and 255 seconds. Unfortunately the real device (UPSIC-2403D) seems to always enforce a 2 seconds delay.

2.192. 2024-05-16 Nicola Fontana <ntd@entidi.it>

  • drivers/Makefile.am, drivers/bicker_ser.c: bicker_ser: Bicker UPSes based on PSZ-1063 Add a new driver for Bicker DC UPS systems based on the PSZ-1063 extension module. This includes UPSIC-1205, UPSIC-2403 and DC2412-UPS(LD) models.

2.193. 2024-05-16 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/Makefile.am, .gitignore: use unique temporary filenames in $(NUT_SPELL_DICT).usage-report, ChangeLog.adoc and .adoc.adoc-parsed rules to avoid surprises TODO: Look at why we might call generation of ChangeLog.adoc several times simultaneously and the make job server would not prevent that?
  • Makefile.am: avoid spurious "find: …/ChangeLog: No such file or directory" with some "test" command implementations [nut-website#52] Some test's evaluate all conditions first and only handle them via boolean logic later. Oh the audacity!
  • scripts/augeas/Makefile.am: fix check in out-of-tree builds (e.g. distcheck) [#657]

2.194. 2024-05-15 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, docs/Makefile.am: disable "make install" for "html-chunked" documentation [#2445] These documents are delivered as an horde of files spread in a nested directory hierarchy for each document, and the install scripts that automake uses seem to struggle with that. Maybe just need to find a suitable automagic keyword - but this can wait.
  • scripts/Windows/wininit.c: help(): report the confpath() to configure the daemons [#2432]
  • NEWS.adoc, docs/man/Makefile.am, docs/man/nut.exe.txt: add a man page of NUT for Windows wrapper for all-in-one service [#2432]
  • NEWS.adoc, UPGRADING.adoc, docs/nut.dict: note the enabled installation of built PDF and HTML files [#2445]
  • scripts/Windows/build-mingw-nut.sh: make sure docs are built as requested (and possible)
  • scripts/Windows/build-mingw-nut.sh: enable HTML (man) page builds where possible
  • scripts/Windows/build-mingw-nut.sh: neuter the use-case of --without-pkg-config (not implemented in m4 - do not confuse ourselves)
  • Makefile.am: typo fix man-html⇒html-man
  • configure.ac, docs/Makefile.am, docs/man/Makefile.am: support actually installing built PDF and HTML docs

2.195. 2024-05-14 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/Windows/wininit.c: introduce "-D" CLI option support to request debug of this and called NUT programs
  • scripts/Windows/wininit.c: C pedantic warnings - mark methods with no args as such (void)
  • scripts/Windows/wininit.c: when the service fails to start… [#2430] * as a console app that tried to be a service - report the error not only in Event Log but also on console; * for other issues write the LastError code to Event Log; * always exit with error code
  • scripts/Windows/wininit.c: when the program fails to start and has no arguments, report help() and exit with error code [#2432]
  • scripts/Windows/wininit.c: add help() and ways to request it and NUT version info [#2432]
  • scripts/Windows/wininit.c: update comments
  • scripts/Windows/wininit.c: parse_nutconf(): update emitted messages when starting/stopping daemons
  • scripts/Windows/wininit.c: rectify whitespace (coding style)
  • clients/upsmon.c: clear_pdflag(): fix message markup and content for a non-NUT killpower file [#2444]
  • drivers/mge-hid.c, NEWS.adoc: extend mge_model_names[] for Eaton 5SC and 5PX series [#2380]
  • drivers/mge-hid.c: indent falback round() implem consistently
  • drivers/mge-hid.c: indent vendor ID macros consistently
  • drivers/mge-hid.c: bump © for AQ
  • NEWS.adoc, docs/nut.dict: announce hwmon_ina219 driver [#2430]
  • drivers/hwmon_ina219.c: battery_voltage_params_init() comment about not re-evaluating during driver uptime [#2430]
  • drivers/hwmon_ina219.c: scan_hwmon_ina219(): make use of detect_ina219() a bit more idiomatic and log a skipped non-ina219 location [#2430]
  • drivers/hwmon_ina219.c: upsdrv_help(): drop sysfs_dir setting - it is an addvar() auto-documented feature [#2430]
  • drivers/hwmon_ina219.c: upsdrv_help(): clarify sysfs_dir setting [#2430]
  • docs/man/hwmon_ina219.txt: update default.battery.voltage.nominal description [#2430] Clarified existing pre-set combos recognized by the driver code.

2.196. 2024-05-10 Jim Klimov <jimklimov@gmail.com>

  • docs/Makefile.am: re-evaluate calls to "make ../ChangeLog" always, now that the parent Makefile knows when to slack off [nut-website#52]
  • Makefile.am, docs/Makefile.am: Makefile.am: update ChangeLog recipe to log messages about its work/skip/fail decisions [nut-website#52]
  • Makefile.am: update ChangeLog recipe to be a no-op if the existing file is newer than anything in a NUT_GITDIR (may be not "./git/" directly) [nut-website#52]
  • Makefile.am: update ChangeLog recipe to be a no-op if the existing file is newer than .git/HEAD [nut-website#52] if test -e .git/HEAD && ( rm -f "find "$@" -not -newer .git/HEAD" |\| true ) 2>/dev/null && ls -la .git/HEAD "$@" 2>/dev/null ; then SKIP ; else WORK ; fi Hopefully this takes care of corner cases: * No .git/HEAD ⇒ WORK (may be unsuccessfully, maybe not - e.g. Git submodules referring to parent) * rm fails, maybe find returns empty ⇒ DON’T CARE, go to LS * ls fails (one of target files is absent - e.g. ChangeLog removed or never was there) ⇒ WORK Only if the ChangeLog is still there after the attempt on its life, SKIP and keep it
  • docs/download.txt: update NetBSD links to use correct http(s) schemas [nut-website#52]

2.197. 2024-05-10 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: mention refactoring and warning-fixing during NUT v2.8.3 cycle
  • tools/nut-scanner/nutscan-display.c: fix the order of calloc() parameters [#2437, #823]
  • autogen.sh: clarify that the script succeeded so it is easier to see in build logs
  • tools/nut-usbinfo.pl: find_usbdevs(): do not explode if find() hits the "." directory; also quickly skip some binary file patterns
  • tools/nut-usbinfo.pl: if DEBUG then trace visited directories and files
  • include/nutipc.hpp: template-id not allowed for destructor in C\+\+20: clang(-14) insists on having it anyway [#2437]
  • include/nutipc.hpp: template-id not allowed for destructor in C++20: C\+\+11 also does not insist on having it [#2437]
  • include/nutipc.hpp: template-id not allowed for destructor in C\+\+20 [#2437]

2.198. 2024-05-07 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: update for hwmon_ina219 man page [#2430]
  • docs/nut.dict: apply changes from upstream NUT sources

2.199. 2024-05-06 Jim Klimov <jimklimov+nut@gmail.com>

  • include/nutconf.hpp: annotate (for older C+\+) the methods which can throw() [#2294]
  • include/nutconf.hpp: refactor exception-throwing in Settable<T> getters [#2433]
  • include/nutconf.hpp: in Settable<T> operators to "return _value", throw() if it was not yet set() at all or since last clear() [#2294, #2433]
  • common/nutwriter.cpp: serializeCertHost(): try to avoid "may be used uninitialized in this function" warnings [#2294, #2433]
  • NEWS.adoc: update the gamatronic news with a note that it fixed a segfault seen in the field [#2427]

2.200. 2024-05-03 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/gamatronic.c: report a response buffer overflow as well as an invalid length string [#2427]
  • drivers/gamatronic.c: report a response buffer overflow (should not happen though) [#2427]
  • NEWS.adoc: note the update of gamatronic driver [#2427]
  • drivers/gamatronic.c: avoid hard-coded buffer length, make it a macro [#2427]

2.201. 2024-05-02 Mike Jager <mike@mikej.net.nz>

  • drivers/gamatronic.c: bump driver version Co-authored-by: Sam Cook <github@sam.net.nz>
  • drivers/gamatronic.c: don’t trust UPS-provided data length Co-authored-by: Sam Cook <github@sam.net.nz>
  • drivers/gamatronic.c: don’t strcpy overlapped strings Co-authored-by: Sam Cook <github@sam.net.nz>

2.202. 2024-05-02 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/usbhid-ups.c, NEWS.adoc: complete the support of onlinedischarge_log_throttle_hovercharge setting [#2215, #2423]
  • drivers/usbhid-ups.c: update messages and comments about onlinedischarge_log_throttle_*charge [#2215, #2423]

2.203. 2024-05-01 Jan Viktorin <jan.viktorin@gmail.com>

  • data/driver.list.in, docs/man/Makefile.am, docs/man/hwmon_ina219.txt, drivers/Makefile.am, drivers/hwmon_ina219.c: Support for INA219 over hwmon on Linux INA219 [1] is a monitor of current. It is accessible via I2C. In the Linux Kernel, it is integrated via hwmon subsystem (thus, the I2C is hidden). When INA219 is installed to monitor current of batteries, it can be used as a simple UPS. This driver is intended to be used with CM4-POE-UPS-BASE [2], a baseboard for Raspberry PI Compute Module 4. With default setting, using 3x3000 mAh batteries, 30% per-CPU avg load, \200 kB/s of reads and writes to SSD disk, the system withstood ~6 hours without power. When remaining \~15 %, it took another 6,5 minutes before it died (that’s enough time to usually shutdown gracefully): 20240501 165801 100 NA NA [OL] NA NA 20240501 165831 96 NA NA [OB DISCHRG] NA NA … 20240501 231306 21 NA NA [OB DISCHRG] NA NA 20240501 231336 19 NA NA [OB DISCHRG] NA NA 20240501 231406 19 NA NA [OB DISCHRG] NA NA 20240501 231436 19 NA NA [OB DISCHRG] NA NA 20240501 231506 17 NA NA [OB DISCHRG] NA NA 20240501 231536 17 NA NA [OB DISCHRG] NA NA 20240501 231606 17 NA NA [OB DISCHRG] NA NA 20240501 231636 14 NA NA [FSD OB DISCHRG LB] NA NA 20240501 231706 13 NA NA [FSD OB DISCHRG LB] NA NA 20240501 231736 13 NA NA [FSD OB DISCHRG LB] NA NA 20240501 231806 13 NA NA [FSD OB DISCHRG LB] NA NA 20240501 231836 10 NA NA [FSD OB DISCHRG LB] NA NA 20240501 231906 11 NA NA [FSD OB DISCHRG LB] NA NA 20240501 231936 11 NA NA [FSD OB DISCHRG LB] NA NA 20240501 232006 9 NA NA [FSD OB DISCHRG LB] NA NA 20240501 232036 8 NA NA [FSD OB DISCHRG LB] NA NA 20240501 232106 7 NA NA [FSD OB DISCHRG LB] NA NA 20240501 232136 5 NA NA [FSD OB DISCHRG LB] NA NA 20240501 232206 4 NA NA [FSD OB DISCHRG LB] NA NA 20240501 232236 2 NA NA [FSD OB DISCHRG LB] NA NA 20240501 232306 0 NA NA [FSD OB DISCHRG LB] NA NA [1] https://www.ti.com/lit/ds/symlink/ina219.pdf [2] https://www.waveshare.com/wiki/CM4-POE-UPS-BASE
  • data/driver.list.in: fix whitespace Fixes: a816677fcf0e ("data/driver.list.in: add CP1350PFCLCD")

2.204. 2024-04-29 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/augeas/Makefile.am: disable back augparse test - only passes on some distros so far [#657] Add make targets for custom testing though
  • common/nutwriter.cpp: NutConfConfigWriter::writeConfig(): encase in pragmas to hush warnings about macro code [#2294]
  • scripts/augeas/tests/test_nut.aug, scripts/augeas/tests/test_nut_flaky.aug: scripts/augeas/tests/test_nut_flaky.aug: added to relocate a test case which passes on some distros and fails on others [#657]
  • scripts/augeas/nutupsconf.aug.tpl: avoid matching "/" in default.* or override.* expressions [#2294] Such possibility makes augtools-1.12.0 upset (fixed since 1.13.0, see https://github.com/hercules-team/augeas/issues/668 for details)
  • scripts/augeas/nutupsconf.aug.tpl: reshuffle end-of-line chars in regex [#2294]
  • include/nutconf.hpp, common/nutwriter.cpp: error: must #include <typeinfo> before using typeid [#2294]
  • NEWS.adoc: document that augeas lens have remaining issues
  • common/nutwriter.cpp: UpsmonConfigWriter::writeConfig(): try to avoid "may be used uninitialized in this function" warnings [#2294]
  • scripts/augeas/tests/test_nut.aug: add a comment about passing thest that probably should have failed [#657]
  • scripts/augeas/tests/test_nut_fixme.aug: Add scripts/augeas/tests/test_nut_fixme.aug for known-broken corner cases [#657]
  • include/nutconf.hpp: BoolInt: avoid "if (b)" constructs in favor of explicit call to operator via "if (b == true)" [#2294]
  • include/nutconf.hpp: align new UpsConfiguration entries cosmetically [#2294]
  • include/nutconf.hpp: fix comment to reconcile C and shell text [#2294]
  • include/nutconf.hpp: handle more "ups.conf" keywords introduced between NUT 2.6.5 and 2.8.2 [#2294]

2.205. 2024-04-27 Jim Klimov <jimklimov+nut@gmail.com>

  • include/nutconf.hpp: document how to discover keywords for UpsConfiguration class [#2294]

2.206. 2024-04-26 Jim Klimov <jimklimov@gmail.com>

  • server/upsd.c, NEWS.adoc: log-trace daemon exit and clarify other messages [#2417]

2.207. 2024-04-26 Jim Klimov <jimklimov+nut@gmail.com>

  • include/nutconf.hpp: refactor UpsConfiguration methods which point to "flag" not just "bool" or "str" entities [#2294] Toss in other GenericUPS_* values Sort alphabetically
  • include/nutconf.hpp, common/nutconf.cpp: extend setFlag() semantics to true/false with implementation handling remove() where needed [#2294]
  • drivers/blazer.c, drivers/blazer_ser.c, drivers/blazer_usb.c: drivers/blazer*: fix "protocol" to be VAR_VALUE like elsewhere (and de-facto), not VAR_FLAG
  • drivers/nut-ipmipsu.c: reformat commented-away contents of upsdrv_makevartable() Also restore planned "sensorid" line lost in 71a6c17a09f6ace3a71525e38c10d47daca78e60
  • scripts/augeas/tests/test_nut.aug: update comment [#657]
  • scripts/augeas/tests/test_nut.aug: add a test for comment persistence in config
  • scripts/augeas/nutupsconf.aug.tpl, scripts/augeas/tests/test_nut.aug: scripts/augeas/nutupsconf.aug.tpl: fix and test detection of wildcard keys (default\|override).*
  • NEWS.adoc, docs/nut.dict, scripts/augeas/Makefile.am: scripts/augeas/Makefile.am, NEWS.adoc: re-enable augeas "check-local" [#657]
  • scripts/augeas/tests/test_nut.aug: revise handling of "Dummy UPS" in tests [#657, #2294]
  • scripts/augeas/Makefile.am: rearrange "if HAVE_AUGPARSE ⇒ check-local" clause
  • scripts/augeas/nutnutconf.aug.in: handle "nut.conf" keywords introduced between NUT 2.6.5 and 2.8.2 [#2294]
  • scripts/augeas/nutupsconf.aug.tpl: handle common "ups.conf" keywords introduced between NUT 2.6.5 and 2.8.2 [#2294]
  • scripts/augeas/gen-nutupsconf-aug.py.in: bump © years
  • scripts/augeas/nutupsdusers.aug.in: reword upsd_users_upsmon_type_re [#2294]
  • scripts/augeas/nutupsmonconf.aug.in: handle "upsmon.conf" keywords introduced between NUT 2.6.5 and 2.8.2 [#2294]
  • include/nutconf.hpp, common/nutconf.cpp, common/nutwriter.cpp, tests/nutconf_parser_ut.cpp, tests/nutconf_ut.cpp: typo fix poolFreq* ⇒ pollFreq*
  • scripts/augeas/nutupsdconf.aug.in: handle "upsd.conf" keywords introduced between NUT 2.6.5 and 2.8.2 [#2294]
  • include/nutconf.hpp, tests/nutconf_ut.cpp: revise UpsConfiguration::setUsbSetAltInterface() logic to not save a bogus -1 [#2294]

2.208. 2024-04-25 Jim Klimov <jimklimov+nut@gmail.com>

  • common/nutconf.cpp, include/nutconf.hpp, tests/nutconf_ut.cpp: include/nutconf.hpp, common/nutconf.cpp: introduce GenericConfiguration::getDouble() and setDouble() methods [#2294]
  • include/nutconf.hpp, tests/nutconf_ut.cpp: add "IntHex" fields to UpsConfiguration and test different parsing variants [#2294]
  • include/nutconf.hpp, common/nutconf.cpp: introduce GenericConfiguration::getIntHex() and setIntHex() methods [#2294]
  • include/nutconf.hpp: include/nutconf.hpp, common/nutconf.cpp, common/nutwriter.cpp, tests/nutconf_ut.cpp: handle and test "ups.conf" keywords introduced between NUT 2.6.5 and 2.8.2 [#2294]
  • include/nutconf.hpp: comment concerns about "default." and "override." supportability in UpsConfiguration class [#2294]
  • include/nutconf.hpp: refactor class UpsConfiguration methods with idiomatic setBool()/getBool() [#2294]
  • include/nutconf.hpp, common/nutconf.cpp: introduce GenericConfiguration::getBoolInt() and setBoolInt() method set [#2294]
  • include/nutconf.hpp, common/nutconf.cpp: introduce GenericConfiguration::getBool() and setBool() method set [#2294]
  • include/nutconf.hpp, common/nutconf.cpp: introduce GenericConfiguration::getFlag() and setFlag() methods [#2294]
  • include/nutconf.hpp: add BoolInt constructors from supported data types [#2294]
  • common/nutconf.cpp: wrap long lines and standardize style in method declarations

2.209. 2024-04-24 Jim Klimov <jimklimov+nut@gmail.com>

  • include/nutconf.hpp, common/nutconf.cpp, common/nutwriter.cpp, tests/nutconf_ut.cpp: handle and test "nut.conf" keywords introduced between NUT 2.6.5 and 2.8.2 [#2294] Note that "nut.conf" options follow shell syntax, unlike most other NUT config files
  • common/nutwriter.cpp: introduce helper macro SHELL_CONFIG_DIRECTIVEX() [#2294]
  • include/nutwriter.hpp, common/nutwriter.cpp: update comments to match classes to config files [#2294]
  • conf/nut.conf.sample, docs/man/nut.conf.txt: document NUT_DEBUG_LEVEL envvar support

2.210. 2024-04-23 Jim Klimov <jimklimov+nut@gmail.com>

  • include/nutconf.hpp, common/nutconf.cpp, common/nutwriter.cpp, tests/nutconf_ut.cpp: handle and test "upsmon.conf" keywords introduced between NUT 2.6.5 and 2.8.2 [#2294]
  • common/nutwriter.cpp, include/nutconf.hpp: include/nutconf.hpp, include/nutwriter.cpp: extend CertHost class with BoolInt fields
  • include/nutconf.hpp: extend BoolInt class with a constructor
  • include/nutconf.hpp, tests/nutconf_parser_ut.cpp: extend BoolInt class with toString() and << for practical use (and test it) It seems that the assignment operator to string can only be done in the std::string class - a casting operator does not suffice, so the next best things are streaming and explicit methods to emit strings. While at it, also implement assignment into BoolInt objects via <<
  • include/nutconf.hpp, tests/nutconf_parser_ut.cpp: extend BoolInt class with a bool01 toggle (and test it) Allows to enable/disable comparison of bool value to int 0/1 values.
  • include/nutconf.hpp, tests/nutconf_parser_ut.cpp: include/nutconf.hpp, common/nutwriter.cpp, tests/nutconf_ut.cpp: introduce and unit-test a BoolInt helper class [#2402]
  • include/nutconf.hpp, common/nutwriter.cpp: introduce struct nut::CertHost (for upsmon.conf…) [#2402]
  • tests/nutconf_parser_ut.cpp: typo fixes in test names; whitespace rectification

2.211. 2024-04-22 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: drop key words absent in both current NUT and NUT-WEBSITE sources [#2402]

2.212. 2024-04-22 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/nutconf_ut.cpp: NutConfigUnitTest::testUpsdConfiguration(): use NutConfigUnitTest::check() with the option to discard double-quotes from content (paths) for a fallback comparison Primarily useful to check this new check() method itself. And because nutwriter.cpp implementation was updated to always use double-quotes for the string values with paths (looking forward to running on MacOS and Windows).
  • include/nutconf.hpp, common/nutwriter.cpp, common/nutconf.cpp: handle "upsd.conf" keywords introduced between NUT 2.6.5 and 2.8.2 [#2294]
  • include/nutconf.hpp, common/nutwriter.cpp: introduce struct nut::CertIdent (for upsd.conf, upsmon.conf…) [#2402]
  • common/nutconf.cpp: implement StringToSettableNumber() for Settable<bool> with NUT boolean keyword support
  • tests/nutconf_ut.cpp: extend NutConfigUnitTest::check() with an option to discard double-quotes from content for a fallback comparison
  • include/nutconf.hpp, common/nutconf.cpp, common/nutwriter.cpp, tools/nutconf/nutconf-cli.cpp: rename nut::UpsmonConfiguration::Monitor::isMaster ⇒ isPrimary [#840]

2.213. 2024-04-21 Jim Klimov <jimklimov+nut@gmail.com>

  • include/nutconf.hpp: UpsdUsersConfiguration: update comments about existing methods [#2294]

2.214. 2024-04-19 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: nut_driver_enumerator_main(): do not re-save name when live reload of a driver sufficed [#2410]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: nut_driver_enumerator_main(): save new content checksum and name when live reload of a driver sufficed and service is not redefined [#2410]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: nut_driver_enumerator_main(): differentiate UPSS (service instance name) and CURR_DEV (device section name) to reload a driver [#2410]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: nut_driver_enumerator_main(): if driver program reload failed, retry verbosely (optionally) to help troubleshooting
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: nut_driver_enumerator_main(): report if we "Got some changes to reconcile…" with specific service instance names [#2410]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: clarify that upslist_savednames_find_mismatch() is reserved for future features and is incomplete [#682, #2410]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: revisit upslist_savednames_find_missing() and upslist_savednames_find_mismatch() [#682, #2410] * Document better
  • Fix envvars used in queries * Fix matching of TABCHAR
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: log if NEW_CHECKSUM is empty - that it happened and what it means [#2410]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in, NEWS.adoc: fix round parentheses to curly braces, so we still recognize NEW_CHECKSUM for nut-driver reloads [#2410, fallout of #682]

2.215. 2024-04-18 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: remove words only relevant to nut-website (which are parts of larger tokens) [#2402]
  • docs/Makefile.am: clarify the NUT_SPELL_DICT used when a spelling check fails [#2402]

2.216. 2024-04-17 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: remove words only relevant to nut-website [#2402]
  • common/nutipc.cpp: fix include order for common.h
  • NEWS.adoc, drivers/main.c: drivers/main.c: move "-d" CLI option handling also to start of program [fallout of #2259] We consult the value of dump_data to decide about foreground mode, but after moving the -D option handling (and this decision) upwards to facilitate early debugging, the variable is never modified in time anymore. Thanks for the catch to Eric Clappier and IPM/42ity team.
  • drivers/snmp-ups.c: fix whitespace
  • tests/NIT/nit.sh: rename logged NIT_SCRIPT_PID⇒PID_NIT_SCRIPT
  • tests/NIT/nit.sh: introduce testgroup_sandbox_upsmon_master() and sandbox_start_upsmon_master()
  • clients/upsmon.c: clarify log message about absence of explicit POWERDOWNFLAG setting [#321]
  • tests/NIT/nit.sh: introduce upsmon_start_loop() and PID_UPSMON tracking
  • tests/NIT/nit.sh: generatecfg_upsmon*(): fix MONITOR line markup
  • server/upsd.c: get_ups_ptr(): log unresolved name for troubleshooting
  • tests/NIT/nit.sh: generatecfg_upsmon_trivial(): fix SHUTDOWNCMD to use the expanded NUT_STATEPATH value
  • clients/upsmon.c, common/common.c, drivers/main.c, drivers/upsdrvctl.c, include/common.h, server/upsd.c: common/common.c et al: Introduce NUT_SENDSIGNAL_DEBUG_LEVEL_KILL_SIG0PING value for nut_sendsignal_debug_level [#1782]
  • tests/NIT/nit.sh: avoid stopping daemons when handling NIT_CASE =\~ generatecfg_*\|is*
  • tests/NIT/nit.sh: avoid removing TESTDIR when handling NIT_CASE =\~ generatecfg_*\|is*
  • tests/NIT/nit.sh: unset DEBUG_SLEEP when handling NIT_CASE =\~ generatecfg_*\|is*
  • tests/NIT/nit.sh: in NIT.env, hide "DEBUG_SLEEP|PATH\|LD_LIBRARY_PATH*" settings as comments
  • tests/NIT/nit.sh: fix updatecfg_upsmon_supplies()
  • tests/NIT/nit.sh: add PATH into generated NIT.env
  • tests/NIT/nit.sh: add a warning comment about generated NIT.env vs. re-runs of the script
  • common/nutipc.cpp, common/nutstream.cpp, include/nutipc.hpp, include/nutstream.hpp, include/nutwriter.hpp, tests/cpputest-client.cpp, tests/cpputest.cpp, tests/example.cpp, tests/nutclienttest.cpp, tests/nutconf_parser_ut.cpp, tests/nutipc_ut.cpp, tests/nutstream_ut.cpp: C+\+ test and other sources: bump and format © headings
  • NEWS.adoc, common/common.c, common/nutipc.cpp, include/common.h: common/common.c et al: introduce a rootpidpath() method
  • common/common.c: cache a non-NULL "path" found by altpidpath(), confpath(), dflt_statepath() on the first call Speed up work upon subsequent calls, and be sure to return the same value consistently.
  • tests/NIT/nit.sh: also set NUT_PIDPATH for e.g. upsmon
  • tests/NIT/nit.sh: allow to run generatecfg*() helpers as a NIT_CASE
  • tests/NIT/nit.sh: generatecfg_upsmon_trivial(): tweak SHUTDOWNCMD to record its attempts into a "$NUT_STATEPATH/upsmon.sd.log" file
  • tests/NIT/nit.sh: extend generatecfg_upsmon_*() methods with a way to customize power supply count (served by MONITOR, required by MINSUPPLIES)
  • tests/NIT/nit.sh: fix comment typo
  • tests/NIT/nit.sh: populate a "$NUT_CONFPATH/NIT.env" to facilitate external testing (notably with DEBUG_SLEEP and test daemons left running)

2.217. 2024-04-16 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, clients/upsmon.c, clients/upsmon.h, conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt, docs/nut.dict: clients/upsmon.c et al: introduce OBLBDURATION config toggle [#321]
  • NEWS.adoc, data/driver.list.in, docs/nut.dict: data/driver.list.in, NEWS.adoc: add support-known for Visench C1K [#2395]
  • drivers/nutdrv_qx.c: fix whitespace

2.218. 2024-04-15 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: update for nut-website

2.219. 2024-04-15 Jim Klimov <jimklimov+nut@gmail.com>

  • .gitignore, Makefile.am, docs/Makefile.am: Makefile.am, docs/Makefile.am: add recipe for spellcheck-report-dict-usage to prepare a $(NUT_SPELL_DICT).usage-report [#2402] Facilitate maintenance of nut-website’s spell checking dictionary with words unique to the site sources.
  • scripts/installer/Makefile.am: make sure scripts/installer/common/README_ipp-os-shutdown.adoc-spellchecked is cleaned away
  • NEWS.adoc, drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c, NEWS.adoc: avoid spurious syslog of "(nut_)libusb_get_string: Success" [#2399]

2.220. 2024-04-13 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c: Hush the fopen(pidfile) messages before dealing with "INSTCMD driver.exit" so that we can make that verbose again if dialog started but failed to stop the other driver [#2384, #2392]
  • drivers/main.c: change messages around "INSTCMD driver.exit" activity [#2392]
  • drivers/main.c: silence compiler warnings about NUT_STRARG() for "INSTCMD driver.exit" in some builds [#2392]
  • drivers/main.c: use nut_upsdrvquery_debug_level verbosity toggle to hush scary noise from attempts to "driver.exit" a sibling [#1782, #2392, #2384]
  • drivers/main.c: when looping to SIGTERM a duplicate driver, check if we got a signal ourselves (e.g. user pressed Ctrl\+C)
  • drivers/upsdrvquery.c, drivers/upsdrvquery.h: drivers/upsdrvquery.{c,h}: extend with nut_upsdrvquery_debug_level verbosity toggle [#1782, #2392, #2384]
  • drivers/upsdrvctl.c: stop_driver(), signal_driver_cmd(): use nut_sendsignal_debug_level verbosity toggle to hush initial fopen(pidfile) scary noise [#1782]
  • drivers/upsdrvctl.c: annotate "ifdef WIN32" locations waiting for #1916 to be solved

2.221. 2024-04-12 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, data/cmdvartab, docs/man/nutupsdrv.txt, docs/man/upsdrvctl.txt, drivers/main.c, drivers/main.h, drivers/upsdrvctl.c: drivers/main.{c,h}, drivers/upsdrvctl.c, data/cmdvartab, man pages: Implement "INSTCMD driver.exit" [#2392]
  • drivers/upsdrvctl.c: help(): prepend sections with a blank line
  • drivers/upsdrvctl.c: bump © years and primary authors
  • drivers/main.c: bump © year
  • drivers/main.c: properly indent cmd/pidfile handling and annotate ends of large clauses
  • drivers/main.c, NEWS.adoc: handle "-FF" to process PID files (and competing driver instances) same as when backgrounding [#2384]
  • drivers/main.c: add debug tracing for interactions with PID file and "Duplicate driver instance" [#2384]

2.222. 2024-04-11 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/riello_ser.txt, drivers/riello_ser.c, NEWS.adoc: port "localcalculation" feature from riello_ser [#1692, #2390]
  • docs/man/riello_usb.txt: drop extra "EXTRA ARGUMENTS" title; wrap long lines [#1692]

2.223. 2024-04-07 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/developers.txt, docs/nut.dict: document some caveats about using IDEs to develop NUT

2.224. 2024-04-06 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upsmon.c, server/upsd.c, drivers/main.c, drivers/upsdrvctl.c: fflush(stdout) after printing the NUT program banner [#1783] Forking daemons suffer from unflushed buffers cloned into every fork() and printed for every exit() — of each forked child process.
  • clients/upsmon.c: pepper with a few debug printouts
  • scripts/systemd/README.adoc: suggest use of systemd drop-ins for unit customization [#1783]
  • scripts/misc/notifyme-debug: Introduce scripts/misc/notifyme-debug helper/example
  • docs/Makefile.am: update URL to asciidoc issue with --destination-dir [#281] The "asciidoc" github repo was apparently hidden as the python2 codebase, with "asciidoc-py(3?)" surviving with a separate issue/PR/… history. The discussion of interest is available in a snapshot on Archive.Org so far.
  • docs/Makefile.am: refine SUFFIXES to not cause "bogus spellcheck call" situations Per experimentation, calls to create e.g. "asciidoc-vars.conf-spellchecked" without a SPELLCHECK_SRC_ONE (reported as bogus events) happened because of Makefile SUFFIXES entry "-spellchecked" causing it to be tried as an implicit prerequisite, e.g.: Considering target file asciidoc-vars.conf. Looking for an implicit rule for asciidoc-vars.conf. Trying pattern rule with stem asciidoc-vars.conf. Trying implicit prerequisite asciidoc-vars.conf-spellchecked. Found an implicit rule for asciidoc-vars.conf. Considering target file asciidoc-vars.conf-spellchecked. Looking for an implicit rule for asciidoc-vars.conf-spellchecked. Trying pattern rule with stem asciidoc-vars.conf-spellchecked. Trying implicit prerequisite asciidoc-vars.conf-spellchecked,v. Trying pattern rule with stem asciidoc-vars.conf-spellchecked. Trying implicit prerequisite RCS/asciidoc-vars.conf-spellchecked,v. Trying pattern rule with stem asciidoc-vars.conf-spellchecked. Trying implicit prerequisite RCS/asciidoc-vars.conf-spellchecked. Trying pattern rule with stem asciidoc-vars.conf-spellchecked. Trying implicit prerequisite s.asciidoc-vars.conf-spellchecked. Trying pattern rule with stem asciidoc-vars.conf-spellchecked. Trying implicit prerequisite SCCS/s.asciidoc-vars.conf-spellchecked. No implicit rule found for asciidoc-vars.conf-spellchecked. Finished prerequisites of target file asciidoc-vars.conf-spellchecked. No need to remake target asciidoc-vars.conf-spellchecked. Finished prerequisites of target file asciidoc-vars.conf. Prerequisite asciidoc-vars.conf-spellchecked is newer than target asciidoc-vars.conf. Must remake target asciidoc-vars.conf. Makefile:1302: update target asciidoc-vars.conf due to: asciidoc-vars.conf-spellchecked …and indeed it is bogus. This little fix removes the situation and does not preclude the files without .txt exception (license etc.) getting spellchecked or prepped.
  • clients/upsmon.c: clarify that lack of a running daemon PID file is OK when checking_flag (for POWERDOWNFLAG)
  • NEWS.adoc, docs/nut.dict: use nut_sendsignal_debug_level verbosity toggle to hush initial fopen(pidfile) scary noise [#1782]
  • server/upsd.c: use nut_sendsignal_debug_level verbosity toggle to hush initial fopen(pidfile) scary noise [#1782]
  • drivers/main.c: use nut_sendsignal_debug_level verbosity toggle to hush initial fopen(pidfile) scary noise [#1782]
  • clients/upsmon.c: use nut_sendsignal_debug_level verbosity toggle to hush initial fopen(pidfile) scary noise [#1782]
  • common/common.c, include/common.h: extend with nut_sendsignal_debug_level verbosity toggle [#1782]
  • clients/upsmon.c: do not be verbose in loadconfig() if we are just quietly checking killpower flag [#2383]

2.225. 2024-04-05 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: americanize the verb ending [#321]
  • clients/upsmon.c: support "reload_flag = -1" for help() [#321]
  • docs/man/upsmon.conf.txt: suggest use of "upsmon -K" instead of direct lookups into POWERDOWNFLAG file; note recommended locations [#321]
  • conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt: suggest the minimal functional content of upsmon.conf [#321]
  • clients/upsmon.c: help(): call loadconfig() quietly and report the value or absence of explicit POWERDOWNFLAG setting [#321]
  • clients/upsmon.c: loadconfig(): report absence of explicit POWERDOWNFLAG setting [#321]
  • clients/upsmon.c: loadconfig(): report entering the method (and the config file used)
  • clients/upsmon.c: loadconfig(): only upslogx() if active nut_debug_level is not negative
  • clients/upsmon.c: addups(): only upslogx() if active nut_debug_level is not negative
  • conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt: document that POWERDOWNFLAG must be configured (no compiled-in default in upsmon) [#321]
  • NEWS.adoc: document the situation about POWERDOWNFLAG setting [#321]

2.226. 2024-04-04 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/maintainer-guide.txt: remind to prepare a GitHub label for eventual issues with the new release
  • docs/maintainer-guide.txt: remind to verify GPG checksums (and make sure sources are published) [#2381]

2.227. 2024-04-03 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, drivers/libhid.c: Fix comments/docs around the maxreport flag for usbhid-ups driver, vs. max_report_size setting in code

2.228. 2024-04-02 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/maintainer-guide.txt: update release ritual details
  • data/driver.list.in: fix some comments with double quotes
  • data/driver.list.in: note about comments
  • docs/nut.dict: update for nut-website

2.229. 2024-04-01 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/maintainer-guide.txt: update commit instructions for AC_INIT bumps
  • configure.ac: bump AC_INIT to development version 2.8.2.1
  • NEWS.adoc, UPGRADING.adoc, docs/docinfo.xml.in: Revert "NEWS.adoc, UPGRADING.adoc, docs/docinfo.xml.in: finalize text before NUT v2.8.2 release" This reverts commit fc9d6211b46955ce7961536cac53a2e10e248584.
  • configure.ac: mark exact NUT v2.8.2 release Happy Fools' Day!
  • docs/maintainer-guide.txt: update instruction
  • Makefile.am: avoid parallelizing "doc" and "all-recursive" just in case (only follow up by "make doc") Maybe this is behind duplicate man page builds which tend to step on each other’s toes.
  • docs/maintainer-guide.txt: example command for tag remake
  • docs/maintainer-guide.txt: example command fix
  • .github/workflows/PyNUTClient.yml, NEWS.adoc, appveyor.yml, configure.ac, docs/docinfo.xml.in, scripts/Windows/build-mingw-nut.sh: Update versions for release of NUT v2.8.2
  • drivers/adelsystem_cbi.c, drivers/al175.c, drivers/apcsmart.c, drivers/apcupsd-ups.c, drivers/asem.c, drivers/bcmxcp.c, drivers/belkin.c, drivers/belkinunv.c, drivers/bestfcom.c, drivers/bestfortress.c, drivers/bestuferrups.c, drivers/bestups.c, drivers/blazer_ser.c, drivers/blazer_usb.c, drivers/clone-outlet.c, drivers/clone.c, drivers/dummy-ups.c, drivers/etapro.c, drivers/everups.c, drivers/gamatronic.c, drivers/generic_gpio_libgpiod.c, drivers/generic_modbus.c, drivers/genericups.c, drivers/huawei-ups2000.c, drivers/isbmex.c, drivers/ivtscd.c, drivers/liebert-esp2.c, drivers/liebert.c, drivers/macosx-ups.c, drivers/masterguard.c, drivers/metasys.c, drivers/mge-utalk.c, drivers/microdowell.c, drivers/microsol-apc.c, drivers/netxml-ups.c, drivers/nut-ipmipsu.c, drivers/nutdrv_atcl_usb.c, drivers/nutdrv_siemens_sitop.c, drivers/oneac.c, drivers/optiups.c, drivers/phoenixcontact_modbus.c, drivers/pijuice.c, drivers/powercom.c, drivers/powerman-pdu.c, drivers/powerpanel.c, drivers/rhino.c, drivers/richcomm_usb.c, drivers/riello_ser.c, drivers/safenet.c, drivers/skel.c, drivers/sms_ser.c, drivers/snmp-ups.c, drivers/socomec_jbus.c, drivers/solis.c, drivers/tripplite.c, drivers/tripplite_usb.c, drivers/tripplitesu.c, drivers/upscode2.c, drivers/usbhid-ups.c, drivers/victronups.c: drivers/*.c: mass-bump DRIVER_VERSION values due to changes in main.c since NUT v2.8.1 release
  • NEWS.adoc, UPGRADING.adoc, docs/docinfo.xml.in: finalize text before NUT v2.8.2 release
  • docs/maintainer-guide.txt: top note about (not-)spellchecking this doc
  • docs/maintainer-guide.txt: update release instructions, fix typos

2.230. 2024-03-31 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: mention belkin-hid fix as also a regression fix [#2371]
  • drivers/riello_usb.c: upsdrv_initinfo(): set batt_volt_* limit vars from nominal voltage alignment, then apply from settings or initial reading [#1692]
  • drivers/riello_usb.c: upsdrv_initinfo(): set batt_volt_* limit vars from settings or initial reading [#1692]

2.231. 2024-03-26 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/Makefile.am: EXTRA_DIST the test mock "program" source
  • NEWS.adoc: document fixes for Belkin/Liebert readings
  • tests/getexponenttest-belkin-hid.c, drivers/belkin-hid.c: absorb liebert_psi5_line_voltage_fun() into common liebert_line_voltage_fun() Hopefully should help more devices than those which serve this or that HID subtree only. Follows up from PR #2369

2.232. 2024-03-25 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/belkin-hid.c: fix liebert_line_voltage_fun() and friends for 0..500V range (cover 3-pole while we are at it) Not touching liebert_config_voltage_fun() at the moment as have no non-integer examples under hand to test against.
  • tests/getexponenttest-belkin-hid.c: add tests for larger value ranges (over 200V)
  • drivers/belkin-hid.c: comment expectations for liebert_line_voltage_fun() and friends
  • tests/.gitignore, tests/Makefile.am: tests: no longer need a replica of belkin-hid.c in tests/ to build getexponenttest-belkin-hid Suffices that we #include it in the test source, and drivers/ are among include dirs
  • tests/.gitignore, tests/Makefile.am, tests/driver-stub-usb.c, tests/{getexponenttest.c ⇒ getexponenttest-belkin-hid.c}: tests: rename getexponenttest ⇒ getexponenttest-belkin-hid since it became quite specific to that subdriver source Still, can serve as an example/blueprint for other drivers' tests.
  • tests/getexponenttest.c: use our macros to avoid "comparing floating point with == or != is unsafe [-Werror,-Wfloat-equal]" [#2371]
  • drivers/belkin-hid.c, tests/Makefile.am, tests/driver-stub-usb.c, tests/getexponenttest.c: drivers/belkin-hid.c: Revert modifications for unit-testing, arrange its build differently [#2371]
  • drivers/belkin-hid.c, tests/.gitignore, tests/Makefile.am, tests/driver-stub-usb.c, tests/getexponenttest.c: Add unit tests for belkin-hid liebert_line_voltage_fun() and related methods [#2370]
  • drivers/belkin-hid.c: whitespace fix
  • drivers/belkin-hid.c: update © heading [#2369 follow-up]

2.233. 2024-03-24 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/riello_usb.c: extend built-in default battery low/high range to match nutdrv_qx data for PbAc batteries [#1692]
  • drivers/riello_usb.c, docs/man/riello_usb.txt: pick battery low/high range via known or configured battery.voltage.nominal [#1692]
  • drivers/riello_usb.c, docs/man/riello_usb.txt: allow configurable battery.voltage.low/.high for localcalculation guesstimates [#1692]
  • drivers/riello_usb.c: bump © and DRIVER_VERSION for "localcalculation" related support [#1692]
  • drivers/riello_usb.c: comment the meaning of logical blocks changed by PR #1692

2.234. 2024-03-23 Jim Klimov <jimklimov+nut@gmail.com>

  • UPGRADING.adoc, NEWS.adoc: mention changes in tools/gitlog2changelog.py.in [#2360, #2366]
  • tools/gitlog2changelog.py.in: when authorMustBeASCII, only parse str via unicode() if we did not shortcut it earlier, and fix a typo in encoding value
  • tools/gitlog2changelog.py.in: trace absence of "unicode" type in some python bundles
  • NEWS.adoc: Add Liebert PSI5 [#2369]

2.235. 2024-03-22 Jim Klimov <jimklimov+nut@gmail.com>

  • Makefile.am, docs/Makefile.am: use abs_top_builddir for wrapper rules
  • docs/Makefile.am, docs/man/Makefile.am: clarify default "all" target variants as requiring a prep
  • Makefile.am: be sure to prep before the many docs-related targets
  • Makefile.am: fix typo for "docs/man" prep for spellcheck target
  • Makefile.am: clarify default "all" target variants
  • docs/man/Makefile.am: typo fix in comments
  • docs/man/apc_modbus.txt: update comments for libmodbus\+rtu_usb builds - with a static library suggestion [#2063]
  • Jenkinsfile-dynamatrix: enable "autotools driven build with default configuration … with fatal warnings" for all branch types Earlier enabled for fightwarn and PRs against stable branches, but not for master-branch builds themselves.
  • tools/nut-scanner/scan_xml_http.c, tools/nut-scanner/scan_snmp.c: ignore potentially unreachable code in platforms-dependent range checks Same as 34056dd43261c92e9230e2d18ddf5e8f498d98e9 earlier.

2.236. 2024-03-22 James R. Parks <jrjparks@zathera.com>

  • drivers/belkin-hid.c, drivers/usbhid-ups.c, drivers/usbhid-ups.h: feat: Add support for Liebert PSI5 Adding support for the Liebert PSI5 model of UPS.

2.237. 2024-03-21 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/apc_modbus.txt, docs/nut.dict: update manpage with instructions for USB-capable builds [#2063]
  • m4/nut_check_libmodbus.m4: make it visible when some libmodbus is found, but does not support libusb while we want it (and will fail NUT configure later) [#2063]

2.238. 2024-03-19 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/installer/make_package.sh: update comments
  • scripts/installer/README.adoc, docs/nut.dict: update about directory layout and contents expected by make_package.sh
  • scripts/installer/Makefile.am, scripts/installer/README.adoc, scripts/installer/nut: scripts/installer: avoid SCM-tracking a symlink to NUT source root

2.239. 2024-03-18 Jim Klimov <jimklimov+nut@gmail.com>

  • Jenkinsfile-dynamatrix: for autotools-only builds, select by OS_DISTRO (avoide duplicates with OS_FAMILY)
  • Jenkinsfile-dynamatrix: exclude GCC on OpenBSD 6.5 from autotools CI builds Old compiler that won’t hush about warnings, pollutes CI dashboard. Equivalent builds handled by ci_build.sh are in quiet mode for the first compilation attempt (usually the only one, if all is OK) so these warnings are just not seen by build-log analysis parser.
  • configure.ac, Makefile.am, docs/Makefile.am, tools/gitlog2changelog.py.in: detect if we should mangle ChangeLog.pdf section titles with non-ASCII contributor names
  • docs/Makefile.am: hint to asciidoc/dblatex to trivialize section names into ASCII themselves Inspired by http://aerostitch.github.io/misc/asciidoc/asciidoc-title_uft8.html but did not directly help at least for Ubuntu 14.04 worker NOTE: Fallback suggestion to add --dblatex-opts="--param=latex.encoding=utf8" actually broke the PDF doc builds, not only for ChangeLog.
  • tools/gitlog2changelog.py.in: trivialize author names into plain ASCII Older asciidoc/a2x/dblatex stack fails with non-ASCII characters in section titles (date and commit author become ChangeLog sections). Inspired by: * http://aerostitch.github.io/misc/asciidoc/asciidoc-title_uft8.html * https://stackoverflow.com/questions/51710082/what-does-unicodedata-normalize-do-in-python * https://stackoverflow.com/questions/38697037/how-to-convert-python-2-unicode-function-into-correct-python-3-x-syntax
  • Makefile.am: make sure that "make all" ends up making all types of docs
  • common/nutconf.cpp, common/nutwriter.cpp, include/nutconf.hpp, tests/nutconf_ut.cpp, tools/nutconf/nutconf-cli.cpp: nutconf-related C+\+ sources: deprecate certain terminology and keywords [#840]
  • common/nutconf.cpp, common/nutwriter.cpp, include/nutconf.hpp, tests/nutconf_parser_ut.cpp: nutconf-related C+\+ sources: fix typo in source var names: hotSync ⇒ hostSync
  • common/nutconf.cpp, common/nutwriter.cpp, include/nutconf.hpp, tools/nutconf/nutconf-cli.cpp: nutconf-related C+\+ sources: add new UPSMON-style notification keywords to vocabulary

2.240. 2024-03-14 Jim Klimov <jimklimov+nut@gmail.com>

  • Jenkinsfile-dynamatrix: rectify passing of CONFIG_OPTS [relies on nut/jenkins-dynamatrix#34]
  • Jenkinsfile-dynamatrix: wrap unstashing of sources into their own pipeline sub-stage
  • Jenkinsfile-dynamatrix: fix passing of (multi-token) DISTCHECK_FLAGS to autotools build/test variants
  • Jenkinsfile-dynamatrix: add a section for direct use of autotools (once per platform) in all stable-branch builds In fallout of PR #2256 we had situations "caused" by tighter integration for NUT CI builds (and developer convenience via ./ci_build.sh) which were not seen on the NUT CI farm but could bite the common approach of ./autogen.sh && ./configure && make on some (not all) platforms.
  • common/nutstream.cpp: avoid pedantic warning about a const/static variable
  • tools/nutconf/Makefile.am: apply convenience CCACHE exports like for other compiled sources [#2256]
  • Makefile.am, clients/Makefile.am, common/Makefile.am, configure.ac, drivers/Makefile.am, include/Makefile.am, lib/Makefile.am, server/Makefile.am, tests/Makefile.am, tests/NIT/Makefile.am, tools/Makefile.am, tools/nut-scanner/Makefile.am: configure.ac, .am: wherever we export CCACHE_ envvars for convenience - avoid doing so if they were not set at configure time [#2256]

2.241. 2024-03-07 Jim Klimov <jimklimov+nut@gmail.com>

  • .github/workflows/codeql.yml: revise APT preinstallation * clang or gcc/g+\+ depending on matrix.compiler * collapse other pkgs into one call * add libneon*-dev
  • .github/workflows/codeql.yml: use C/C+\+ buids with "native" autogen\+configure (and a single run for each config combo)
  • .github/workflows/codeql.yml: exile "python" analysis into one "included" matrix cell

2.242. 2024-03-06 Jim Klimov <jimklimov+nut@gmail.com>

  • .github/workflows/codeql.yml: add ./ci_build.sh options to constrain build/check scenario workload sprawl
  • .github/workflows/codeql.yml: make a CodeQL matrix of compiler/NUT_SSL_VARIANTS/NUT_USB_VARIANTS instead of single fightwarn-all
  • .github/workflows/codeql.yml: fix stringification of "ubuntu-latest"
  • .github/workflows/codeql.yml: make "ubuntu-latest" formally a part of "matrix.os" for "if" clause
  • .github/workflows/codeql.yml: install prerequisite packages and ensure a "BUILD_TYPE=fightwarn-all ./ci_build.sh" loop for C/C+\+ "Autobuild" implementation
  • .github/workflows/codeql.yml: non-default C/C+\+ "Autobuild" implementation
  • .github/workflows/codeql.yml, .github/codeql/codeql-config.yml: add "paths" for Python scripts
  • Jenkinsfile-dynamatrix: fiddle with BUILD_WARNFATAL settings
  • .github/workflows/codeql.yml: extend with python

2.243. 2024-03-04 Jim Klimov <jimklimov+nut@gmail.com>

  • Jenkinsfile-dynamatrix: fix naming for cross-Windows builds ("Strict C" part is optional)
  • Jenkinsfile-dynamatrix: add a TODO about "completely out-of-tree" builds
  • autogen.sh: in the end of successful execution, lead interactive users to running the ./configure script

2.244. 2024-03-03 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/systemd/nut-driver-enumerator-daemon-activator.path.in: clarify the unit description (it does not strictly restart the daemon, can reload if running too)
  • docs/config-prereqs.txt: clarify that FreeBSD likely does not want to "pkg add openssl" in fact [#2275]
  • README.adoc: update phrasing on DigitalOcean and NUT CI farm

2.245. 2024-03-02 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/systemd/nut-server.service.in: summarize LimitNOFILE increase and ExecStartPost to monitor that it was applied, from FTY branch Originates from FTY commits: * 062d1868fa (Jim Klimov 2018-01-16 13:11:08 \+0100) * 0e28cc865c (Jim Klimov 2018-01-16 13:37:39 \+0100) * e9a67100a0 (Jim Klimov 2018-01-16 13:41:52 \+0100)
  • tools/nut-scanner/scan_snmp.c: apply comments from FTY branch
  • tools/nut-usbinfo.pl: quietly skip editor backup files, and those prepared by "git difftool" for comparisons
  • scripts/systemd/.gitignore: do not GitIgnore nut-driver.target, it lives in SCM now
  • drivers/snmp-ups.c: apply comments and formatting from FTY branch
  • drivers/dstate.c: apply comments from FTY branch Originally from commits 9723e08096 and 6909e965a9 (Jan 2017)
  • docs/man/nut-scanner.txt: reconcile asciidoc markup with FTY branch
  • docs/config-prereqs.txt: reconcile markup with FTY branch
  • docs/config-notes.txt: reconcile markup with FTY branch
  • common/common.c: reconcile markup with FTY branch
  • autogen.sh: reconcile markup with FTY branch
  • UPGRADING.adoc: fix basic asciidoc list markup for releases v2.6.x and older
  • NEWS.adoc, UPGRADING.adoc: clarify drop of oldmge-shut from NUT codebase
  • NEWS.adoc: rephrase the text about Eaton-contributed installer from news prepared in FTY branch
  • tools/nut-scanner/nut-scanner.c: bump © years, reconcile with master branch

2.246. 2024-03-01 Yifeng Li <tomli@tomli.me>

  • docs/nut.dict: nut.dict: add model "KRTL" to dictionary.
  • docs/man/huawei-ups2000.txt: huawei-ups2000.txt: add UPS2000-G-3KRTL to the confirmed list A user has reported that UPS2000-G-3KRTL is confirmed working, thus this commit adds it to the list of known-working models. A remark about standard and long runtime variants has also been added.
  • docs/Makefile.am: reminder about missing dictionary when aspell is unavailable When aspell is not unavailable, the cause can either be that aspell itself is not installed, or it has no English dictionary (aspell-en). I’ve wasted several minutes due to this oversight. Add this reminder in the error message to give clue to future developers.

2.247. 2024-03-01 Jim Klimov <jimklimov+nut@gmail.com>

  • m4/ax_c_pragmas.m4: comment where "-Wcast-function-type-strict" comes from
  • tools/nut-scanner/nut-scanner.c: use same conservative base level of USB scan verbosity when scanning all media types (-C) [#2334]
  • tools/nut-scanner/scan_nut_simulation.c: do not abort if CONFPATH is missing [#2235]
  • NEWS.adoc, conf/ups.conf.sample, docs/man/nut_usb_addvars.txt, docs/man/ups.conf.txt, docs/nut.dict, drivers/arduino-hid.c, drivers/libshut.c, drivers/libusb0.c, drivers/libusb1.c, drivers/main.c, drivers/powervar-hid.c, tools/nut-scanner/scan_usb.c: Multiple USB-capable drivers: add ways to tune USB HID config, report, descriptor indexes and in/out endpoints [#2149]
  • docs/Makefile.am: comment typo fix
  • drivers/usb-common.c: free() USB matcher structures if called again [#2309] e.g. when reconnecting after link loss

2.248. 2024-02-29 Jim Klimov <jimklimov@gmail.com>

  • m4/ax_c_pragmas.m4: introduce HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_ADDRESS

2.249. 2024-02-29 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/config-prereqs.txt: clarify libneon.so symlink on OpenBSD
  • common/common.c: get_libname_in_dir(): report first found "related" name (if any), if got no hits
  • docs/config-prereqs.txt: document hacks to get pip for Python 2.7 …on systems that only support it partially Courtesy of https://stackoverflow.com/a/65125295/4715872
  • conf/Makefile.am, data/Makefile.am, data/html/Makefile.am, docs/man/Makefile.am, scripts/Makefile.am, scripts/Solaris/Makefile.am, scripts/Windows/Makefile.am, scripts/devd/Makefile.am, scripts/hotplug/Makefile.am, scripts/installer/Makefile.am, scripts/python/Makefile.am, scripts/systemd/Makefile.am, scripts/udev/Makefile.am, scripts/upsdrvsvcctl/Makefile.am, tests/NIT/Makefile.am: */Makefile.am: fix comment referring to "$(top_builddir)/install-sh"
  • drivers/hidparser.h, drivers/libhid.h, drivers/nutdrv_qx.h, drivers/serial.h, drivers/snmp-ups.h, drivers/usb-common.h, drivers/usbhid-ups.h, include/common.h, include/nut_float.h, include/nut_stdint.h, include/proto.h: /.h: use NUT_NETVERSION as a header guard for #include "config.h"
  • NEWS.adoc: fix for battery_voltage_reports_one_pack flag handling [#2324]

2.250. 2024-02-28 Jim Klimov <jimklimov+nut@gmail.com>

  • m4/nut_check_libltdl.m4: fix detection on OpenBSD
  • docs/config-prereqs.txt: clarify how to get pip on OpenBSD
  • indent.sh, scripts/HP-UX/makedepot.sh, scripts/Windows/build-mingw-nut.sh, scripts/installer/make_package.sh, scripts/subdriver/gen-snmp-subdriver.sh, scripts/subdriver/gen-usbhid-subdriver.sh: NUT shell scripts: use a better portable shebang for bash interpreter discovery NOTE: Some scripts require BASH syntax; maybe not all of them do (did not revise at this time)
  • scripts/HP-UX/makedepot.sh: fix whitespace

2.251. 2024-02-27 Jim Klimov <jimklimov@gmail.com>

  • Makefile.am: ChangeLog: fix shell-scripting typo

2.252. 2024-02-27 Jim Klimov <jimklimov+nut@gmail.com>

  • include/state.h: include time headers (we use timespec/timeval here)
  • configure.ac: report if deliberately avoiding hardlinks for LN_S_R implementation
  • ci_build.sh: support CI_FAILFAST also to bail out from parallel/sequential build_to_only_catch_errors_target() logic - ensure parallel builds succeed "as is"
  • configure.ac: revise detection of LN_S_R
  • Makefile.am: avoid what some makes see as a loop for ChangeLog
  • Makefile.am: make sure "make ChangeLog" does some work …even with OpenBSD make implementation
  • docs/Makefile.am: produce proper asciidoc markup for ChangeLog.adoc if "FAILED to resolve input or output filename with this make implementation…"
  • Makefile.am: fix out-of-tree build of ChangeLog file

2.253. 2024-02-27 Denny Page <dennypage@me.com>

  • drivers/nutdrv_qx.c: Correct access method used for flag battery_voltage_reports_one_pack

2.254. 2024-02-26 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/Makefile.am: use libnutwincompat.la where appropriate
  • tools/nut-scanner/Makefile.am: fix libnutscan_la_LIBADD vs. libnutscan_la_LDFLAGS
  • common/Makefile.am: define libnutwincompat.la recipe
  • common/Makefile.am: annotate automake if/else/endif with the appropriate macro name, and indent Should help with navigation/maintenance of the code base
  • common/Makefile.am: pre-define CLEANFILES along with other vars of that sort
  • tools/nut-scanner/Makefile.am: annotate automake if/else/endif with the appropriate macro name Should help with navigation/maintenance of the code base
  • tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_xml_http.c: nut-scanner sources : fix leading indentation (SPACEs to TABs) to be consistent in the same file
  • tools/nut-scanner/Makefile.am: rearrange and deduplicate lines for $(top_builddir)/include/nut_version.h target

2.255. 2024-02-22 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: note revised recipes [#2318]
  • Makefile.am, clients/Makefile.am, common/Makefile.am, conf/Makefile.am, data/Makefile.am, data/html/Makefile.am, docs/Makefile.am, drivers/Makefile.am, scripts/Makefile.am, scripts/Solaris/Makefile.am, scripts/Windows/Makefile.am, scripts/devd/Makefile.am, scripts/hotplug/Makefile.am, scripts/installer/Makefile.am, scripts/python/Makefile.am, scripts/python/module/Makefile.am, scripts/systemd/Makefile.am, scripts/udev/Makefile.am, scripts/upsdrvsvcctl/Makefile.am, server/Makefile.am, tests/Makefile.am, tests/NIT/Makefile.am, tools/nut-scanner/Makefile.am, tools/nutconf/Makefile.am: */Makefile.am: be sure to use AM_MAKEFLAGS and invoke jobserver (\+) everywhere we call another $(MAKE)
  • docs/Makefile.am: fix AM_FLAGS ⇒ AM_MAKEFLAGS
  • scripts/python/module/Makefile.am: fix AM_FLAGS ⇒ AM_MAKEFLAGS
  • conf/Makefile.am, data/Makefile.am, data/html/Makefile.am, docs/man/Makefile.am, scripts/Makefile.am, scripts/Solaris/Makefile.am, scripts/Windows/Makefile.am, scripts/devd/Makefile.am, scripts/hotplug/Makefile.am, scripts/installer/Makefile.am, scripts/python/Makefile.am, scripts/systemd/Makefile.am, scripts/udev/Makefile.am, scripts/upsdrvsvcctl/Makefile.am, tests/NIT/Makefile.am: */Makefile.am: pass (top_)(src\|build)dir, MKDIR_P and AM_MAKEFLAGS of caller into docs/Makefile parsing
  • Makefile.am: comment how to maintain list of subdirs for spellchecking TOTHINK: Do we want to just automate this discovery?
  • Makefile.am: use jobserver for spellcheck* callouts; ensure .prep-src-docs are pre-generated
  • Makefile.am, docs/nut.dict, scripts/installer/common/README_ipp-os-shutdown.adoc: Makefile.am: spellcheck "scripts/installer" too [#2288]
  • README.adoc, docs/Makefile.am, …g_Host_Dark_56px.png ⇒ fosshost_org_Host_Dark_56px.png}, …st_Light_309px.png ⇒ fosshost_org_Host_Light_309px.png}, …Host_Light_38px.png ⇒ fosshost_org_Host_Light_38px.png}, docs/images/ci/jenkins-nut.css, docs/images/ci/jenkins-nut.txt, docs/nut.dict: docs: rename FossHost logo files to not include a dot in the name …it upsets some versions of dblatex (used in PDF generation) which treat everything after the first dot as a file extension.
  • ci_build.sh: do not claim "Could not query git repo" if it was just clean
  • docs/Makefile.am, docs/man/Makefile.am, .gitignore: fix back the "-prepped" suffix (with a dash)
  • docs/Makefile.am, docs/man/Makefile.am: fix clean-up of *_prepped files
  • scripts/installer/common/README_ipp-os-shutdown.adoc: scripts/installer/README_ipp-os-shutdown.adoc: fix asciidoc list style
  • docs/nut.dict, scripts/python/module/README.adoc: scripts/python/module/README.adoc: fix spelling error
  • docs/Makefile.am: when touching a *-spellchecked file, ensure its dir exists This file may be the only (or first) build product, so nobody else made that dir for us!

2.256. 2024-02-21 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/Makefile.am: abolish dependency from spellcheck on .prep-src-docs
  • docs/Makefile.am: spellcheck recipes: pass an explicitly empty SPELLCHECK_SRC list to sub-makes (do not confuse .prep-src-docs dependency)
  • docs/Makefile.am: spellcheck recipes: report "pwd" when complaining about bogus paths
  • docs/Makefile.am: do not hard-code running dpkg (for diags) everywhere
  • docs/Makefile.am, docs/man/Makefile.am: use full path relative to abs_top_builddir for .prep-src-docs Facilitate running the docs/Makefile from other dirs (to spell-check their docs)
  • docs/nut.dict: learn about "wildcard" (singular)
  • docs/Makefile.am, docs/man/Makefile.am: do not "ls" files for PREP_SRC, suffices to sort\|uniq the names in a diferent manner
  • docs/Makefile.am, docs/man/Makefile.am: drop shell debug tracing from .prep-src-docs rules
  • docs/Makefile.am, docs/man/Makefile.am: chop non-trivial "srcdir" from PREP_SRC pathnames, if present
  • docs/Makefile.am, docs/man/Makefile.am: list PREP_SRC pathnames starting from builddir as "make" crafts them, not from srcdir
  • docs/Makefile.am, docs/man/Makefile.am: try to accomodate different "make" implementations for .prep-src-docs file discovery

2.257. 2024-02-20 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/Makefile.am, docs/man/Makefile.am: only the paths deal in absolutes!
  • docs/Makefile.am: depend spellcheck on .prep-src-docs too, for completeness
  • docs/Makefile.am, docs/man/Makefile.am: .prep-src-docs: for in-tree builds, cover all PREP_SRC names even if they do not yet exist
  • docs/Makefile.am, docs/man/Makefile.am: revise calling the prep vs. document products again
  • .gitignore, docs/Makefile.am, docs/man/Makefile.am: docs/man/Makefile.am, docs/Makefile.am, Makefile.am: use *.txt_prepped (with underscore) for suffix rules
  • docs/man/Makefile.am, docs/Makefile.am: insist on having a "$(builddir)/.prep-src-docs" …do not get distracted by one in-tree, if any, when doing out-of-tree builds
  • docs/.gitignore: GitIgnore .prep-src-docs* touch-files
  • .gitignore, Makefile.am, docs/Makefile.am, docs/man/Makefile.am: docs/man/Makefile.am, docs/Makefile.am, Makefile.am: avoid hacky rules to pre-call .prep-src-docs; use hacky touch-files instead
  • Makefile.am: try to be sure to use the job server for docs-related sub-makes …when using custom make targets to build specific docs or checks
  • docs/man/Makefile.am: enable the opportunistic suffix rule for build products to depend on .prep-src-docs Hopefully avoids duplicate parallel runs of the helper where the make implementation would support it (courtesy above standard requirements).
  • docs/Makefile.am, docs/man/Makefile.am: play with VPATH to help prefer PREP_SRC symlinks
  • docs/Makefile.am, docs/man/Makefile.am: when creating PREP_SRC symlinks, report current workdir (help with relative src/build dirs)
  • docs/Makefile.am, docs/man/Makefile.am: when cleaning PREP_SRC symlinks, be sure to only hit symlinks
  • docs/man/Makefile.am: be sure to include LINKMAN_INCLUDE_GENERATED into PREP_SRC
  • docs/man/Makefile.am: simplify clean-up
  • docs/man/Makefile.am, docs/Makefile.am: rearrange dependencies on .prep-src-docs, avoid sub-makes where we can
  • docs/man/Makefile.am, docs/Makefile.am: make sure that "all" target is first

2.258. 2024-02-19 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/nutscan-display.c: revise use of nutdev_num in nutscan_display_sanity_check_serial() Actually rewind it back to the number which the first entry for this device type had in the "continuous numbering" we track for this scan report.
  • docs/man/Makefile.am: fix out-of-tree build check for linkman-driver{,tool}-names.txt recipes
  • docs/Makefile.am, docs/man/Makefile.am: touch .prep-src-docs if called for in-tree builds too
  • docs/Makefile.am, docs/man/Makefile.am: do not hard-depend common targets on .prep-src-docs
  • tools/nut-scanner/nutscan-display.c: convert nutdev_num and last_nutdev_num to size_t
  • tools/nut-scanner/nutscan-display.c: update comments about methods iterating WHOLE lists, not just parsing one "device"
  • tools/nut-scanner/nutscan-display.c: fix nutdev_name rendition (it is NOT always a "nut-serialX"!)
  • docs/Makefile.am, docs/man/Makefile.am: PREP_SRC: symlink from abs_srcdir to avoid the mess with relative paths and ".." offsets
  • docs/Makefile.am, docs/man/Makefile.am: prefix sub-make calls with "\+" to invoke jobserver
  • docs/Makefile.am, Makefile.am: explicitly "make .prep-src-docs" before calling (possibly parallel) sub-make for docs or docs/man
  • docs/Makefile.am, docs/man/Makefile.am: report "Preparing to generate" separately from actually "Generating"
  • docs/Makefile.am, docs/man/Makefile.am: augment with .prep-src-docs target for building out-of-tree
  • docs/Makefile.am: do not make a "NOTE:…" line into a heading
  • Makefile.am: ChangeLog: re-use one from tarball when not building from git
  • Makefile.am: call tools/gitlog2changelog.py in SOURCE dir (where git repo is) and use CHANGELOG_FILE to store the result in BUILD dir
  • Makefile.am: add a shortcut to "make ChangeLog.adoc"; fix formal markup if we "failed to generate the ChangeLog" to produce a sane adoc⇒pdf note anyway
  • tools/gitlog2changelog.py.in: allow to use CHANGELOG_FILE="-" for redirect to stdout
  • tools/gitlog2changelog.py.in: allow to customize CHANGELOG_FILE
  • tools/nut-scanner/nutscan-display.c: update comments about last_nutdev_num

2.259. 2024-02-17 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/config-prereqs.txt: update for LUA pacakge naming on new Ubuntu/Debian distros
  • drivers/eaton-ups-pwnm2-mib.c: bump version after edit in be29b to drop values not needed in this fork of the mapping

2.260. 2024-02-16 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/nutipc_ut.cpp: use NutFile::tmp_dir() and NutFile::path_sep() for temporary PID file path construction [#2314]
  • include/nutstream.hpp: expose NutFile::tmp_dir() and NutFile::path_sep() for good measure
  • tests/nutipc_ut.cpp: NutIPCUnitTest::testSignalSend(): report PID file name and contents when in verbose mode
  • tests/nutipc_ut.cpp: use unique PID filenames for each test run Closes: #2314

2.261. 2024-02-15 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/NIT/nit.sh: introduce upsd_start_loop() Improve chances of passing the test suite even on congested CI farm agents
  • tests/nutconf_ut.cpp: with fixed ABS_TOP_SRCDIR for WIN32, un-block config file parsing tests
  • configure.ac: The more slashes - the better! One can never fully escape them!
  • .github/workflows/codeql.yml: update to v3 Due to https://github.blog/changelog/2024-01-12-code-scanning-deprecation-of-codeql-action-v2/
  • docs/config-prereqs.txt: fix Windows sub-section heading levels
  • drivers/ever-hid.c: clarify a comment about USB VID 0x0483
  • NEWS.adoc, data/driver.list.in, drivers/cps-hid.c, scripts/upower/95-upower-hid.hwdb: drivers/cps-hid.c et al: add support for Cyber Energy branded devices [#2312]
  • common/nutstream.cpp: NutFile::open(): add a big comment about POSIX/WIN32 (absolute) path concerns Copied from tests, but would hopefully evaporate there eventually as that particular acute issue gets resolved.
  • tests/nutconf_ut.cpp: add a big comment about POSIX/WIN32 (absolute) path concerns
  • common/nutstream.cpp: checkExistsWritableDir(): add debuggging, fix use of access() check
  • configure.ac: fix WIN32 resolution of build/src paths for tests

2.262. 2024-02-14 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: fix up ABS_TOP_SRCDIR/ABS_TOP_BUILDDIR for builds of NUT directly on Windows agents
  • common/nutstream.cpp: NutFile::open(): try to report the filename which was problematic
  • appveyor.yml: be sure to have a NUT_STATEPATH spelled in a way that is writeable by WIN32 system methods (e.g. not mangled by mingw/msys)
  • common/nutstream.cpp: try more locations for getTmpDirPath(), particularly on WIN32
  • tests/nutstream_ut.cpp: improve chances on parallel CI testing: retry listen_sock.bind() a few times; freeze/thaw the writer PID
  • common/nutstream.cpp: neuter fallback localtime_r(), gmtime_r() on mingw builds
  • configure.ac: fix nut_with_debuginfo*="legacy" to consider flag list snapshots made just after autoconf might have mangled them
  • configure.ac: to not change nut_with_debuginfo* from "no" to "legacy", leave it strictly as caller asked Recent changes are more careful about the "LEGACY FALLBACK" application. Let users ask for it explicitly though.
  • common/nutstream.cpp: NutFile(anonymous_t): trace the attempted m_tmp_dir and filename (if known) in theexception (so far WIN32 code path)
  • common/nutstream.cpp: NutFile(anonymous_t): use tmp file as binary in both POSIX and WIN32 code
  • common/nutstream.cpp: NutFile(anonymous_t): pre-zero filename buffer
  • common/nutstream.cpp: getTmpDirPath(): return "/tmp" not "/var/tmp" by default
  • common/nutstream.cpp: getTmpDirPath(): comment about a C\+\+17 equivalent to maybe call later
  • common/nutstream.cpp: :NutFile(anonymous_t), getTmpDirPath(): use ASCII char variants of Windows path related methods
  • configure.ac: typo fix (--with-cppunit ⇒ --enable-cppunit) in messages
  • NEWS.adoc, docs/nut.dict: NEWS.adoc: document "configure --with-debuginfo" possibility [#2310]
  • m4/nut_report_feature.m4: adjust NUT_REPORT_COMPILERS to note about debug optimizations
  • configure.ac: move CONFIG_C(XX)FLAGS definition back down to where we check AC_PROG_C* macros
  • configure.ac: rename C(XX)FLAGS_ORIG to CONFIG_C(XX)FLAGS to avoid conflict with m4 scripts and to maintain similarly to CONFIG_FLAGS
  • configure.ac: move stashing of CFLAGS_ORIG/CXXFLAGS_ORIG higher in the script; only do it if they are not yet set (and do set them if re-entering for an in-place build)
  • configure.ac: add C(XX)FLAGS_ORIG tracing printouts to where we check nut_with_debuginfo
  • configure.ac: hide C(XX)FLAGS_(BEFORE\|AFTER)_ACPROG tracing printouts; move "LEGACY DEFAULT FALLBACK" CFLAGS to the same block where we check AC_PROG_C*
  • configure.ac: fix typo in shell test
  • configure.ac: avoid needless quoting in AC_MSG_RESULT() printouts
  • configure.ac: do not mangle C(XX)FLAGS added by autotools; just stash and consult original values when deciding --with-debuginfo behavior
  • configure.ac: rearrange mangling of CFLAGS and CXXFLAGS by autotools defaults (optimizations/debug barged in) and our script
  • m4/nut_report_feature.m4: adjust NUT_REPORT_COMPILERS to note about debug optimizations
  • configure.ac: move CONFIG_C(XX)FLAGS definition back down to where we check AC_PROG_C* macros
  • configure.ac: rename C(XX)FLAGS_ORIG to CONFIG_C(XX)FLAGS to avoid conflict with m4 scripts and to maintain similarly to CONFIG_FLAGS
  • configure.ac: move stashing of CFLAGS_ORIG/CXXFLAGS_ORIG higher in the script; only do it if they are not yet set (and do set them if re-entering for an in-place build)
  • configure.ac: add C(XX)FLAGS_ORIG tracing printouts to where we check nut_with_debuginfo
  • configure.ac: hide C(XX)FLAGS_(BEFORE\|AFTER)_ACPROG tracing printouts; move "LEGACY DEFAULT FALLBACK" CFLAGS to the same block where we check AC_PROG_C*
  • NEWS.adoc, docs/nut.dict: NEWS.adoc: document "configure --with-debuginfo" possibility [#2290]
  • configure.ac: fix typo in shell test
  • configure.ac: avoid needless quoting in AC_MSG_RESULT() printouts
  • configure.ac: do not mangle C(XX)FLAGS added by autotools; just stash and consult original values when deciding --with-debuginfo behavior
  • configure.ac: rearrange mangling of CFLAGS and CXXFLAGS by autotools defaults (optimizations/debug barged in) and our script

2.263. 2024-02-13 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: avoid autoconf-added debug/optimization settings
  • configure.ac: allow to --enable-cppunit=force for dev-testing
  • common/nutstream.cpp, common/Makefile.am: augment getTmpDirPath() with NUT altpidpath() support
  • common/nutstream.cpp: drop fflush() for sockets, not applicable type
  • common/nutstream.cpp: refactor getTmpDirPath() with checkExistsWritableDir() helper
  • configure.ac: avoid autoconf-added debug/optimization settings
  • include/nutstream.hpp: make flush() methods in the NutStream classes part of the interface API
  • common/nutstream.cpp, include/nutstream.hpp, tests/nutstream_ut.cpp: introduce flush() methods in the classes; use in NutFile stream tests between write() and read() parts [#2293] WIN32 builds failed due to lack of flush() and read an empty temporary file. Apparently the OS does not read() from a queued write() buffer/FS cache for a file.
  • common/nutstream.cpp, include/nutstream.hpp: track NutSocket domain and type (e.g. AF_INET and SOCK_STREAM) Also sanity-check if they fit when used.
  • common/nutstream.cpp: avoid use of hard-coded temporary path; fix WIN32 use-case [#2293] In WIN32 builds, ::tmpfile() tries to write to C:\ root dir and usually has no permissions to do so. Here we actively probe common envvars for temporary directories (or also use a WIN32 syscall for the effect) to try and get a realistic TMPDIR. TODO: Consider NUT statepath/(alt)pidpath… maybe not available in tests though. Probe if the chosen dir actually exists?
  • tests/nutstream_ut.cpp: use global "verbose" setting to trace readTestData()/writeTestData() helpers
  • tests/cpputest.cpp, tests/nutstream_ut.cpp: let individual tests see the global "verbose" setting from CLI
  • tests/nutstream_ut.cpp: Revert "tests/nutstream_ut.cpp: let the destructor alone close() the bound socket" This reverts commit f93c31fa9a5804d8aadbefb0cfb98e0cc03b6e7d.
  • configure.ac: allow to --enable-cppunit=force for dev-testing
  • common/nutstream.cpp: fix NutSocket calls to read/write/close/connect methods to use our WIN32/POSIX friendly wrappers
  • tests/nutstream_ut.cpp: let the destructor alone close() the bound socket
  • tests/nutstream_ut.cpp: getFreePort(): use sock.closex() with exceptions on errors right away

2.264. 2024-02-12 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac, tests/Makefile.am: define CPPUNIT_NUT_CXXFLAGS properly
  • configure.ac: if we apply nut_with_debuginfo_CXX, avoid separate settings for CPPUNIT_NUT_CXXFLAGS debugging
  • configure.ac: separate internally nut_with_debuginfo into nut_with_debuginfo_C vs. nut_with_debuginfo_CXX
  • configure.ac, ci_build.sh: introduce --with-debuginfo (BUILD_DEBUGINFO) setting
  • ci_build.sh: empty BUILD_TYPE is not an "error", fix the warning message
  • ci_build.sh: add "TAKING SHORTCUT" to re-generate if current configure script syntax is broken
  • appveyor.yml: try to print "make check" post-mortem details with a subshell It is surprisingly difficult to do in-line scripts for Windows via YAML
  • configure.ac, tests/Makefile.am: define CPPUNIT_NUT_CXXFLAGS properly
  • configure.ac: if we apply nut_with_debuginfo_CXX, avoid separate settings for CPPUNIT_NUT_CXXFLAGS debugging
  • appveyor.yml: Revert "appveyor.yml: use double-quotes to wrap bash calls (windows shell is quirky with single quotes)" This reverts commit abf2a9e24e2d122f10c6b74121439f88a43f1d57.
  • tests/nutstream_ut.cpp: on IWN32, use WSAStartup() before socket methods
  • include/nutipc.hpp, tests/nutipc_ut.cpp: accomodate the likes of OSX where sigemptyset() is a macro
  • appveyor.yml: use double-quotes to wrap bash calls (windows shell is quirky with single quotes)
  • ci_build.sh: empty BUILD_TYPE is not an "error", fix the warning message
  • tests/nutipc_ut.cpp: testSignalRecvQuick(): avoid switch/case over an enum Avoids warning about "enumeration values not explicitly handled in switch: …"
  • appveyor.yml: print trace files if "make check" failed
  • tests/cpputest.cpp: avoid segfault with debug-trace progress printer and certain compiler optimizations
  • tests/cpputest.cpp: be sure to avoid debug-trace segfaults if "test" is NULL
  • tests/nutstream_ut.cpp: avoid forked helper continuing with another copy of tests
  • configure.ac: separate internally nut_with_debuginfo into nut_with_debuginfo_C vs. nut_with_debuginfo_CXX
  • ci_build.sh: add "TAKING SHORTCUT" to re-generate if current configure script syntax is broken
  • configure.ac, ci_build.sh: introduce --with-debuginfo (BUILD_DEBUGINFO) setting
  • tests/nutipc_ut.cpp: be sure to caught_signals.clear() early in testSignalRecv*()
  • tests/nutipc_ut.cpp, tests/nutconf_ut.cpp: register each test separately to trace them better
  • tests/cpputest.cpp: be sure to flush the printout of starting test name before churning CPU on it
  • tests/nutstream_ut.cpp: try to actively probe an available port number for the test
  • tests/nutipc_ut.cpp: separate tests about received signal count (rapid-fire) and order (staggered)

2.265. 2024-02-10 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: warn early if building with mingw and strict/ansi C/C+\+ mode
  • drivers/mge-hid.c: fix includes and defines for WIN32 build with strict C89
  • common/common.c: avoid "FOR loop initial declarations" (are only allowed in C99 or C11 mode) for a WIN32 codepath
  • server/netssl.c: include common.h⇒config.h first
  • drivers/riello_ser.c: include common.h⇒config.h first
  • drivers/riello.c: include common.h⇒config.h first
  • server/sockdebug.c: include common.h⇒config.h first
  • drivers/snmp-ups.h: rearrange commented-away code
  • drivers/riello_ser.c: rearrange commented-away code
  • clients/upsmon.c, drivers/dstate.c, drivers/eaton-pdu-marlin-mib.c, drivers/main.c, drivers/nutdrv_qx.c, drivers/snmp-ups.c, drivers/tripplite_usb.c, drivers/upsdrvctl.c, drivers/upsdrvquery.c, scripts/Windows/DriverInstaller/wdi-simple.c, server/conf.c, server/pipedebug.c, server/sstate.c: Fix comment style from double-slash to C89 compatible
  • common/strptime.c: fix indentations and comment style
  • drivers/nutdrv_qx_ablerex.c: rearrange commented-away code
  • common/strptime.c: use NUT config.h
  • drivers/pijuice.c: indent nested #if/#endif macros for readability
  • clients/cgilib.c: include common.h⇒config.h first; be sure to have stdio.h for snprintf()
  • docs/developers.txt: extend notes about NUT CI farm hosting (with DigitalOcean) [#2192]
  • docs/developers.txt, docs/nut.dict: docs/developers.txt: extend notes about baseline supported C/C+\+ standards
  • UPGRADING.adoc, NEWS.adoc: mention fixed C/C+\+ standard support in builds
  • tests/generic_gpio_utest.c: "int main()" requires a return value
  • tests/generic_gpio_utest.c, tests/generic_gpio_liblocal.c: avoid "FOR loop initial declarations" (are only allowed in C99 or C11 mode) A little fallout for recent fix of actually doing C89 bulids via ci_build.sh
  • configure.ac, m4/nut_compiler_family.m4: extend sensitivity for "-std=…" to also cover "-ansi" option
  • ci_build.sh: update comment for "ignored" BUILD_WARNOPT and BUILD_WARNFATAL settings when BUILD_TYPE is empty
  • Jenkinsfile-dynamatrix: constrain cross-mingw builds to GNU C standard by default (Strict C seems broken on OS side)
  • drivers/raritan-px2-mib.c: fix NULL from string to pointer (raritanpx2_outlet_status_info[] sentinel) Closes: #2304
  • drivers/raritan-px2-mib.c: add a comment about daisy-chain features anticipated by this vendor MIB
  • drivers/raritan-px2-mib.c: add more values to raritanpx2_outlet_status_info[] Found per https://www.circitor.fr/Mibs/Html/P/PDU2-MIB.php#SensorStateEnumeration
  • drivers/delta_ups-mib.c: fix typo for "split-phase" UPS type mapping Closes: #2302
  • Jenkinsfile-dynamatrix: constrain cross-mingw builds to GNU C standard by default (Strict C seems broken on OS side)

2.266. 2024-02-09 Jim Klimov <jimklimov@gmail.com>

  • drivers/tripplite_usb.c: update comments and logging for unit id matcher

2.267. 2024-02-09 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/sms_ser.c, clients/upssched.c: avoid "FOR loop initial declarations" (are only allowed in C99 or C11 mode) A little fallout for recent fix of actually doing C89 bulids via ci_build.sh
  • m4/nut_compiler_family.m4: fix detection of a compiler standard already requested by caller
  • tests/NIT/nit.sh: support NIT_CASE=isBusy_NUT_PORT for troubleshooting
  • tests/NIT/nit.sh: isBusy_NUT_PORT(): check known sockets also with "ss" tool
  • tests/NIT/nit.sh: isBusy_NUT_PORT(): do not test for non-emptiness of /proc/net/tcp* (they have contents AND are reported empty on some distros)
  • tests/NIT/nit.sh: isBusy_NUT_PORT(): add log_debug() tracing about detected or not detected information
  • tests/NIT/nit.sh: make sure log_debug() never errors out
  • tests/NIT/nit.sh: support NIT_CASE=isBusy_NUT_PORT for troubleshooting
  • tests/NIT/nit.sh: isBusy_NUT_PORT(): check known sockets also with "ss" tool
  • tests/NIT/nit.sh: isBusy_NUT_PORT(): do not test for non-emptiness of /proc/net/tcp* (they have contents AND are reported empty on some distros)
  • tests/NIT/nit.sh: isBusy_NUT_PORT(): add log_debug() tracing about detected or not detected information
  • tests/NIT/nit.sh: make sure log_debug() never errors out
  • drivers/sms_ser.c, clients/upssched.c: avoid "FOR loop initial declarations" (are only allowed in C99 or C11 mode) A little fallout for recent fix of actually doing C89 bulids via ci_build.sh
  • ci_build.sh: refine CANBUILD_NUTCONF handling vs. CXXFLAGS="-std=…"
  • tests/nutstream_ut.cpp: try to fix the use of really random port numbers (again)
  • tests/nutipc_ut.cpp: try to fix the occasional fault of testSignalRecv() - also with USER1 after USER2 (and a sleep)
  • tests/nutipc_ut.cpp: try to fix the occasional fault of testSignalRecv()
  • m4/nut_compiler_family.m4: fix detection of a compiler standard already requested by caller
  • drivers/eaton-pdu-marlin-mib.c, drivers/hpe-pdu-mib.c: drivers/*-mib.c: fix "open" to "opened" (again) for dry contact states Re-apply commit d3b6ea4d89 to modernized codebase of PR #2285 and newly cover drivers/hpe-pdu-mib.c as well
  • drivers/baytech-mib.c, drivers/eaton-ups-pwnm2-mib.c, drivers/huawei-mib.c: drivers/*-mib.c: clean up typos for PR #2285
  • drivers/tripplite_usb.c: typo fix in formatting string
  • common/nutstream.cpp, include/nutstream.hpp: NutFile class: refactor constructor with access_t mode to not use tmpnam() [#2295] The method for NutFile::tmpName() was private and only used in this constructor, and relied on the unsafe tmpnam() method to openx() the resulting file with a given mode. With this change, the file is created via tmpfile() and freopen()'ed with the desired mode. Downside: name inherently unknown. Upside: auto-deletion of the temporary file. Closes: #2295
  • common/nutstream.cpp, include/nutstream.hpp: NutFile class: refactor strAccessMode() helper into a separate method [#2295]
  • common/nutstream.cpp: NutFile class: take more care about empty m_name or null m_impl values (sanity-checks etc.)
  • common/nutstream.cpp, include/nutstream.hpp: wrap some long exception-printing lines
  • tools/nutconf/nutconf-cli.cpp: rearrange getMode() default handling Avoid claims that "control reaches end of non-void function [-Wreturn-type]"
  • tools/nutconf/Makefile.am, tools/nutconf/{nutconf.cpp ⇒ nutconf-cli.cpp}: tools/nutconf/nutconf.cpp: rename to nutconf-cli.cpp to reduce ambiguity
  • tests/Makefile.am, tests/{nutconf.cpp ⇒ nutconf_parser_ut.cpp}: tests/nutconf.cpp: rename to nutconf_parser_ut.cpp to reduce ambiguity
  • drivers/tripplite_usb.c: harden the int types used to detect and report unit id
  • NEWS.adoc: update for tripplite_usb unit id matcher [#2297]

2.268. 2024-01-31 sapireli <114778791+sapireli@users.noreply.github.com>

  • drivers/tripplite_usb.c: Fix for undefined upsid in config small fix restoring matching when upsid is undefined in config closes #2282

2.269. 2024-01-30 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/cpputest.cpp: initialize random number generator with srand() Ensure better that the ports used by nutstream_ut.cpp can end up random.
  • common/nutwriter.cpp: avoid UPSD_DIRECTIVEX and UPSMON_DIRECTIVEX macros claiming "unreachable code" warnings
  • tests/nutstream_ut.cpp: make use of HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_DEPRECATED_DECLARATIONS to fix warnings on CentOS7 (older clang, older cppunit)
  • m4/ax_c_pragmas.m4: introduce HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_DEPRECATED_DECLARATIONS
  • tools/nutconf/nutconf.cpp: getMode(): wrap potentially unreachable de-enumeration code into pragmas
  • drivers/snmp-ups-helpers.c: convert to info_lkp_fun_vp2s() and info_lkp_sentinel
  • tests/nutstream_ut.cpp: use CPPUNIT_ASSERT_MESSAGE with prepared C+\+ string, not inlined
  • tests/nutstream_ut.cpp: troubleshoot listen_sock.bind(m_listen_address) hiccups
  • tests/nutstream_ut.cpp: nutconf related tests: CPPUNIT_MACROS raise warnings (for older compilers/distros), try some workarounds
  • common/nutconf.cpp, tools/nutconf/nutconf.cpp: nutconf related code: where we use pragmas for "-Wcovered-switch-default", do also use "-Wunreachable-code" (for older compilers)
  • tests/nutstream_ut.cpp: troubleshoot writer_exit!=0
  • tests/nutipc_ut.cpp: not all shells have "test" with two equality chars
  • tests/nutstream_ut.cpp: cast the random() port number to uint16_t

2.270. 2024-01-29 Jim Klimov <jimklimov+nut@gmail.com>

  • include/nutipc.hpp, include/nutstream.hpp: Revert "nutconf related headers: tell clang to ignore "unknown" \retval in Doxygen comments" This reverts commit 9ec19231ced75d942955a31108613cecdb4a75fe. Some clang versions warn about unknown pragma. Not a quick win…
  • NEWS.adoc: document addition of nutconf [#2290]
  • NEWS.adoc: update info about installer
  • drivers/snmp-ups.h: do not lose function pointers in non-DMF builds with info_lkp_fun_s2l() and info_lkp_nuf_vp2s()
  • drivers/eaton-ats16-nm2-mib.c: rename eaton_ats16_ambient_drycontacts_info[] ⇒ eaton_ats16_nm2_ambient_drycontacts_info[] to match other table naming patterns
  • drivers/eaton-ats16-nm2-mib.c: wrap new EMP002 snmp_info_t entries into snmp_info_default() macros
  • NEWS.adoc, docs/nut.dict: NEWS.adoc: document recently addressed issues and merged PRs that would be part of NUT v2.8.2 eventually
  • configure.ac: tell clang to ignore "unknown" \retval in Doxygen comments
  • include/nutipc.hpp, include/nutstream.hpp: nutconf related headers: tell clang to ignore "unknown" \retval in Doxygen comments
  • common/nutipc.cpp: disarm NUT fallbacks for time methods (as may be defined in our common.h) for C+\+ (notably on mingw)
  • tests/nutstream_ut.cpp: ensure random() symbol for WIN32 builds
  • common/nutstream.cpp: comment not-use of wincompat.h wq
  • tools/nutconf/nutconf.cpp: avoid bogus warnings about uninitialized map
  • common/Makefile.am: add NETLIBS to libnutconf (esp. needed on WIN32 builds)
  • tests/nutstream_ut.cpp: Randomize bind(port) to try avoiding collisions in parallel testing

2.271. 2024-01-28 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • clients/upsmon.c: debug information to rectify unwanted OFF criticalities

2.272. 2024-01-28 Jim Klimov <jimklimov+nut@gmail.com>

  • common/nutipc.cpp, common/nutstream.cpp, include/nutipc.hpp, tests/nutconf_ut.cpp, tests/nutipc_ut.cpp, tests/nutstream_ut.cpp: nutconf related codebase: neuter code parts that need WIN32 implementations (process IPC, etc.)
  • common/nutstream.cpp: radically avoid the hassle with sa_family type
  • include/nutstream.hpp, common/nutstream.cpp: currently neuter AF_UNIX support code under WIN32
  • common/nutstream.cpp: add a comment about NutFile::m_tmp_dir (should not be hard-coded in the long run)
  • common/nutconf.cpp: rename "system" and "word" vars to avoid clashes with some build environments
  • common/nutstream.cpp: adapt socket operations to Win/Lin cross builds, similar to nutclient.cpp solution
  • common/nutconf.cpp, common/nutipc.cpp, common/nutstream.cpp, common/nutwriter.cpp, include/nutipc.hpp, include/nutstream.hpp, tests/nutconf.cpp, tests/nutipc_ut.cpp, tests/nutstream_ut.cpp: nutconf related sources: revise include file lists and order (config.h, WIN32…)
  • drivers/snmp-ups.h: reshuffle in main codebase for unrecognized DMF macros
  • scripts/installer/Makefile.am, …/{README_ipp-os-shutdown.txt ⇒ README_ipp-os-shutdown.adoc}: scripts/installer/Makefile.am: spellcheck common/README_ipp-os-shutdown.adoc
  • scripts/installer/Makefile.am: EXTRA_DIST all the files
  • configure.ac, scripts/Makefile.am, scripts/installer/Makefile.am, scripts/installer/{README.txt ⇒ README.adoc}: scripts/installer/Makefile.am: added to distribute and spell-check README.adoc
  • scripts/installer/README.txt: comments on nutconf and authors
  • m4/nut_check_libgd.m4: fall back to checking with explicit -lpng in the LDFLAGS loop
  • docs/nut.dict: Update nut.dict

2.273. 2024-01-27 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/snmp-ups.h: adapt to non-DMF SNMP NUT driver builds
  • scripts/subdriver/gen-snmp-subdriver.sh: bump version and copyright
  • drivers/apc-ats-mib.c, drivers/apc-epdu-mib.c, drivers/apc-pdu-mib.c, drivers/bestpower-mib.c, drivers/delta_ups-mib.c, drivers/eaton-pdu-nlogic-mib.c, drivers/eaton-pdu-pulizzi-mib.c, drivers/emerson-avocent-pdu-mib.c, drivers/hpe-pdu3-cis-mib.c, drivers/huawei-mib.c, drivers/raritan-pdu-mib.c, drivers/raritan-px2-mib.c, drivers/xppc-mib.c: drivers/*-mib.c: convert versions to at least double digits
  • Makefile.am, clients/Makefile.am, common/Makefile.am, data/html/Makefile.am: */Makefile.am: standardize to have the export commands on top, just after title comment line
  • scripts/python/module/Makefile.am: avoid "make clean" invalidating the NUT build area Otherwise we can not find the test script (generated from .in by configure normally)
  • common/nutconf.cpp: NutConfigParser::parseConfig(): reshuffle base vs. overridden call for parser to work again Fine piece of C+\+ magic and inheritance. Wrong call got called.
  • NEWS.adoc: untie OFF from linestate in upsmon FSD [#2279]

2.274. 2024-01-26 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • clients/upsmon.c: fix offstate not being a requirement for a critical UPS on OFF

2.275. 2024-01-25 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: use -Wno-exit-time-destructors and -Wno-global-constructors with clang+\+ to not worry about "(static) const something" variables
  • tests/nutconf.cpp, tests/nutipc_ut.cpp: nutconf related tests: avoid "old-style cast" usage
  • tests/nutconf_ut.cpp, tests/nutipc_ut.cpp, tests/nutstream_ut.cpp: nutconf related tests: avoid "no out-of-line virtual method definitions" (weak-vtables)
  • tests/nutipc_ut.cpp: declare the override of nut::Signal::Handler methods
  • tests/nutconf.cpp, tests/nutconf_ut.cpp, tests/nutipc_ut.cpp, tests/nutstream_ut.cpp: nutconf related tests: declare the override of CPPUNIT methods
  • tests/nutstream_ut.cpp: fix cast of size_t vs. double for "pivot"
  • tools/nutconf/nutconf.cpp: avoid shadowing a class property with method arg name
  • tools/nutconf/nutconf.cpp: mark almost all methods in the tool as static
  • tools/nutconf/nutconf.cpp: align "us_timeout" to be "useconds_t" not "long" (per libnutscan API evolution)
  • common/nutconf.cpp: cast around std::getline() for parenthesized syntax Why didn’t the original author just receive the word into target string?.. e.g.: std::getline(system, monitor.upsname, @); std::getline(system, monitor.hostname);
  • common/nutconf.cpp, include/nutconf.hpp: include/nutconf.{c,h}pp: align port type to uint16_t (not plain or short int as mismatched in older code)
  • common/nutwriter.cpp: include/nutwriter.hpp: comment away a currently unused static method
  • common/nutstream.cpp: include/nutstream.hpp: align size_t vs ssize_t maths
  • common/nutipc.cpp: include/nutipc.hpp: align size_t vs ssize_t maths
  • common/nutipc.cpp: include/nutipc.hpp: align array deleter with allocator
  • include/nutipc.hpp: align templated class destructor name with class name
  • include/nutstream.hpp: decorate unimplemented methods which only throw with noreturn (for C\+\+11 and newer)
  • common/nutwriter.cpp, include/nutconf.hpp, tools/nutconf/nutconf.cpp: include/nutconf.hpp: align UpsmonConfiguration::notifyFlags type with clients/upsmon.h (notifylist→flags) Note that here we have "unsigned int" and there a plain "int" at the moment; but even with short signed ints we currently do not have too many values :) This fix also drops a warning about shortening the cast when assigning from a temporary "unsigned int flags" in UpsmonConfigParser::onParseDirective()
  • common/nutconf.cpp: include/nutconf.cpp: NutConfigParser::parseConfig(): explicitly handle all enum values in switch/case (and allow "default" to be safe)
  • common/nutconf.cpp: include/nutconf.cpp: NutConfigParser::parseConfig(): be explicit about the infinite loop Assignment of tok=parseToken() does not return a boolean (nor even a nullptr) so should not be a while(…) condition by itself.
  • common/nutconf.cpp: include/nutconf.cpp: avoid annotating a switch/case fallthrough
  • common/nutconf.cpp: include/nutconf.hpp: err on the safe side by having a default handler in a currently exhaustive switch(enum)
  • common/nutconf.cpp, common/nutipc.cpp, common/nutstream.cpp, include/nutipc.hpp: nutconf related sources: avoid "old-style cast" usage
  • include/nutconf.hpp: avoid naming clash for Token "type" and "str" properties vs. method args
  • common/nutconf.cpp, common/nutipc.cpp, common/nutstream.cpp, common/nutwriter.cpp, include/nutconf.hpp, include/nutipc.hpp, include/nutstream.hpp, include/nutwriter.hpp: nutconf related sources: avoid "no out-of-line virtual method definitions" (weak-vtables)
  • common/nutconf.cpp, common/nutipc.cpp, common/nutstream.cpp, include/nutconf.hpp, include/nutipc.hpp, include/nutstream.hpp, tests/nutipc_ut.cpp, tests/nutstream_ut.cpp, tools/nutconf/nutconf.cpp: nutconf related changes: avoid NULL ("zero as null pointer constant"), use "::" prefix for C methods
  • include/nutipc.hpp: avoid naming clash for QUIT signal and command

2.276. 2024-01-25 Jim Klimov <jim@jimklimov.com>

  • tools/nut-usbinfo.pl: avoid dying on unknown file name patterns (e.g. *-mib.c.bak), just warn and skip them

2.277. 2024-01-24 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/eaton-ats16-nm2-mib.c, drivers/eaton-pdu-marlin-mib.c, drivers/eaton-ups-pwnm2-mib.c, drivers/mge-mib.c, drivers/raritan-pdu-mib.c: drivers/*-mib.c: convert to use info_lkp_sentinel, info_lkp_default et al wrapping
  • ci_build.sh: update that nutconf is now fair game for builds and tests
  • configure.ac: default --with-nutconf=auto (based on have_cxx11) and add it to --with-all
  • drivers/apc-ats-mib.c, drivers/apc-epdu-mib.c, drivers/apc-mib.c, drivers/apc-pdu-mib.c, drivers/baytech-mib.c, drivers/bestpower-mib.c, drivers/compaq-mib.c, drivers/cyberpower-mib.c, drivers/delta_ups-mib.c, drivers/eaton-ats16-nm2-mib.c, drivers/eaton-ats16-nmc-mib.c, drivers/eaton-ats30-mib.c, drivers/eaton-pdu-genesis2-mib.c, drivers/eaton-pdu-marlin-mib.c, drivers/eaton-pdu-nlogic-mib.c, drivers/eaton-pdu-pulizzi-mib.c, drivers/eaton-pdu-revelation-mib.c, drivers/eaton-ups-pwnm2-mib.c, drivers/eaton-ups-pxg-mib.c, drivers/emerson-avocent-pdu-mib.c, drivers/hpe-pdu-mib.c, drivers/hpe-pdu3-cis-mib.c, drivers/huawei-mib.c, drivers/ietf-mib.c, drivers/mge-mib.c, drivers/netvision-mib.c, drivers/raritan-pdu-mib.c, drivers/raritan-px2-mib.c, drivers/xppc-mib.c: drivers/*-mib.c: convert to use snmp_info_sentinel wrapping
  • drivers/apc-ats-mib.c, drivers/apc-epdu-mib.c, drivers/apc-mib.c, drivers/apc-pdu-mib.c, drivers/baytech-mib.c, drivers/bestpower-mib.c, drivers/compaq-mib.c, drivers/cyberpower-mib.c, drivers/delta_ups-mib.c, drivers/eaton-ats16-nm2-mib.c, drivers/eaton-ats16-nmc-mib.c, drivers/eaton-ats30-mib.c, drivers/eaton-pdu-genesis2-mib.c, drivers/eaton-pdu-marlin-mib.c, drivers/eaton-pdu-nlogic-mib.c, drivers/eaton-pdu-pulizzi-mib.c, drivers/eaton-pdu-revelation-mib.c, drivers/eaton-ups-pwnm2-mib.c, drivers/eaton-ups-pxg-mib.c, drivers/emerson-avocent-pdu-mib.c, drivers/hpe-pdu-mib.c, drivers/hpe-pdu3-cis-mib.c, drivers/huawei-mib.c, drivers/ietf-mib.c, drivers/mge-mib.c, drivers/netvision-mib.c, drivers/raritan-pdu-mib.c, drivers/raritan-px2-mib.c, drivers/xppc-mib.c: drivers/*-mib.c: convert to use snmp_info_default() wrapping
  • drivers/apc-ats-mib.c, drivers/apc-epdu-mib.c, drivers/apc-mib.c, drivers/apc-pdu-mib.c, drivers/baytech-mib.c, drivers/bestpower-mib.c, drivers/compaq-mib.c, drivers/cyberpower-mib.c, drivers/delta_ups-mib.c, drivers/eaton-ats16-nm2-mib.c, drivers/eaton-ats16-nmc-mib.c, drivers/eaton-ats30-mib.c, drivers/eaton-pdu-marlin-mib.c, drivers/eaton-pdu-nlogic-mib.c, drivers/eaton-pdu-pulizzi-mib.c, drivers/eaton-pdu-revelation-mib.c, drivers/eaton-ups-pwnm2-mib.c, drivers/eaton-ups-pxg-mib.c, drivers/emerson-avocent-pdu-mib.c, drivers/hpe-pdu-mib.c, drivers/hpe-pdu3-cis-mib.c, drivers/huawei-mib.c, drivers/ietf-mib.c, drivers/mge-mib.c, drivers/netvision-mib.c, drivers/raritan-pdu-mib.c, drivers/raritan-px2-mib.c, drivers/xppc-mib.c: drivers/*-mib.c: convert to use info_lkp_sentinel, info_lkp_default et al wrapping
  • drivers/snmp-ups.h: introduce also info_lkp_nuf_vp2s(), info_lkp_nuf_s2l() and info_lkp_fun_s2l() wrappers
  • scripts/subdriver/gen-snmp-subdriver.sh, drivers/snmp-ups.h: introduce short-hand snmp_info_sentinel and info_lkp_sentinel
  • scripts/subdriver/gen-snmp-subdriver.sh: convert C table generator to propose info_lkp_default(…) instead of fixed C structure items
  • scripts/subdriver/gen-snmp-subdriver.sh: convert C table generator to propose snmp_info_default(…) instead of fixed C structure items
  • drivers/snmp-ups.h: introduce wrappers to handle optionally-defined NULL fields for snmp_info_t and info_lkp_t [DMF]
  • scripts/subdriver/gen-snmp-subdriver.sh: start subdriver versions as 0.01 for double digits
  • tests/nutconf_ut.cpp: update expectations for current ups.conf.sample default contents
  • configure.ac, tests/nutconf_ut.cpp: rearrange to use ABS_TOP_SRCDIR and ABS_TOP_BUILDDIR in the test program
  • tools/nutconf/nutconf.cpp: adapt nutscan_scan_usb() to libnutscan API evolution
  • common/nutstream.cpp: address a run-time warning about tempnam()
  • include/nutipc.hpp: Process::Child<M>::wait(): fix error-case check
  • common/nutstream.cpp: formatIPv{4,6}addr(): code typo fix (bit maths, not boolean expressions!)
  • common/nutconf.cpp, include/nutconf.hpp, include/nutipc.hpp, include/nutstream.hpp, include/nutwriter.hpp: nutconf related sources: fix implicit copy/move operator warnings - use explicit defaults, destructors, and clarify overrides
  • common/nutconf.cpp: NutConfigParser::parseConfig(): fix switch/case that did not check all enum values
  • common/nutconf.cpp, include/nutconf.hpp, include/nutipc.hpp, include/nutstream.hpp, tools/nutconf/nutconf.cpp: nutconf related sources: use NUT_UNUSED_VARIABLE() to decorate the code where needed
  • common/nutconf.cpp, common/nutwriter.cpp, include/Makefile.am, include/{nutconf.h ⇒ nutconf.hpp}, include/nutwriter.hpp, tests/nutconf.cpp, tests/nutconf_ut.cpp, tools/nutconf/nutconf.cpp: Rename include/nutconf.h ⇒ .hpp as a C+\+ specific source file
  • common/nutconf.cpp, common/nutstream.cpp, common/nutwriter.cpp, include/nutconf.h, include/nutipc.hpp, include/nutstream.hpp, include/nutwriter.hpp, tests/nutconf.cpp, tests/nutconf_ut.cpp, tools/nutconf/nutconf.cpp: nutconf related sources: fix typos and wording in comments
  • common/nutipc.cpp, common/nutstream.cpp, include/nutconf.h, include/nutipc.hpp, include/nutstream.hpp, tools/nutconf/nutconf.cpp: nutconf related sources: fix deprecated throw() declarations to not be used since C++11 They are invalid in C++17 as the code did fence against; however C\+\+11 already shows them as deprecated, and with "fatal warnings" this bites!
  • common/nutconf.cpp: NutConfigParser::parseConfig(): pre-initialize "sep" to avoid surporises
  • common/nutconf.cpp, common/nutipc.cpp, common/nutstream.cpp, common/nutwriter.cpp, include/nutconf.h, include/nutipc.hpp, include/nutstream.hpp, include/nutwriter.hpp, tests/nutconf.cpp, tests/nutconf_ut.cpp, tests/nutipc_ut.cpp, tests/nutstream_ut.cpp, tools/nutconf/nutconf.cpp: nutconf related sources: fix whitespace style
  • tools/nutconf/nutconf.cpp: fix file description
  • tools/nutconf/Makefile.am: update Makefile markup and comments

2.278. 2024-01-23 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/eaton-pdu-marlin-mib.c: marlin_device_count_fun(): decorate a NUT_UNUSED_VARIABLE()

2.279. 2024-01-21 Jim Klimov <jimklimov+nut@gmail.com>

  • server/netssl.c: fix decl-after-statement NUT_UNUSED_VARIABLE() implementation counts as a code statement, so should be after true declarations.

2.280. 2024-01-21 Duncan Webb <duncan@linuxowl.com>

  • server/netssl.c: Fix possible buffer overrun calls to PR_GetErrorText Removed call to NSS_NoDB_Init as certfile will be defined. Copy paste from upscli change to ssl_init.

2.281. 2024-01-20 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upsmon.c: fix comment wording [#840, #2240]
  • scripts/upower/95-upower-hid.hwdb: update for recent changes in drivers/belkin-hid.c [#2271]

2.282. 2024-01-19 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: upsconf_getSection_content(): optimize string emptiness checks
  • NEWS.adoc, docs/nut.dict: update for nut-driver-enumerator [#682]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: fix systemd_findSavedDeviceName() to use common SYSTEMD_CONFPATH variable
  • drivers/belkin-hid.c: add Liebert PowerSure PST UPS productid [#2271]
  • docs/ci-farm-lxc-setup.txt: errata for virt-top too new to work with LXC

2.283. 2024-01-19 Charles Lepple <clepple+nut@gmail.com>

  • drivers/belkin-hid.c: fix Liebert GXT4 UPS productid Follow-up to 3e1b00ec3ff105a05e67ae8602996cf7436f816b which intended to add the ID after NUT v2.7.4 release, but fell prey to copy-paste typo (got 0x0004 instead of intended 0x0000): commit 3e1b00ec3ff105a05e67ae8602996cf7436f816b Date: Sat Jun 3 12:24:15 2017 -0400 usbhid-ups: add Liebert GXT4 USB VID:PID [10AF:0000] Source: http://lists.alioth.debian.org/pipermail/nut-upsuser/2017-June/010682.html Voltage and ConfigVoltage appear to be scaled improperly per the debug output.

2.284. 2024-01-18 Vytautas Survila <vytautas.survila@gmail.com>

  • drivers/nutdrv_qx.c: use correct read_size for too much data read message

2.285. 2024-01-18 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/security.txt: typography: fix quoting style
  • docs/security.txt, docs/man/upsd.conf.txt, docs/man/upsmon.conf.txt: stress that multi-word "Certificate Name" values should be double-quoted; fix examples [#2265]
  • docs/man/upsmon.conf.txt: fix multi-paragraph attachments in the very nested MONITOR section Blanks and pluses are the trick: https://stackoverflow.com/a/52164722/4715872
  • docs/man/upsd.conf.txt: fix multi-paragraph attachments in sections

2.286. 2024-01-15 Vytautas Survila <vytautas.survila@gmail.com>

  • drivers/nutdrv_qx.c: return actual number of bytes we copied to buffer

2.287. 2024-01-15 Jim Klimov <jimklimov@gmail.com>

  • drivers/apc-mib.c: bump DRIVER_VERSION to double-digits 1.60 is more future-proof than 1.7 (after 1.6) :)

2.288. 2024-01-15 Christian Manal <manal@uni-bremen.de>

  • drivers/apc-mib.c: update MIB values

2.289. 2024-01-14 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/Makefile.am: neuter the fictive nutscan_add_commented_option_to_device.html recipe for now [#2221]
  • docs/man/Makefile.am: fix nutscan_add_commented_option_to_device.html recipe for BSD make [#2221]

2.290. 2024-01-13 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/scan_usb.c: code after declarations [#2221]
  • docs/man/nutscan_add_option_to_device.txt, docs/man/Makefile.am: fix markup for a single asciidoc text describing several command names [#2221] https://asciidoc-py.github.io/userguide.html#X1
  • tools/nut-scanner/nut-scanner.c: disambiguate and un-shadow link_detail_level variables [#2221]

2.291. 2024-01-12 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/scan_usb.c, UPGRADING.adoc: make use of nutscan_add_commented_option_to_device() for link-specific details if not suggesting to use them directly [#2221]
  • NEWS.adoc, docs/man/nutscan_add_option_to_device.txt, tools/nut-scanner/nutscan-device.c, tools/nut-scanner/nutscan-device.h, tools/nut-scanner/nutscan-display.c: libnutscan API: add a concept of commented-away suggested option values instead of hacks in prepared config data [#2221]
  • NEWS.adoc: reword the entry about desktop integration [#2205]
  • NEWS.adoc, docs/man/nut-scanner.txt, docs/man/nutscan_scan_usb.txt, docs/nut.dict, tools/nut-scanner/Makefile.am, tools/nut-scanner/README.adoc, tools/nut-scanner/nut-scan.h, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/scan_usb.c: nut-scanner: change "-U" handling to tweak generated device configuration section level of detail [#2221]
  • NEWS.adoc, drivers/Makefile.am: drivers/Makefile.ami, NEWS.adoc: fix builds --without-usb [#2262]
  • docs/nut.dict, NEWS.adoc: document recent improvements to nut-scanner
  • docs/man/nut-scanner.txt: change markup for code and output examples [#2247]
  • NEWS.adoc: debug level initialized earlier now [#2259] Checked for a similar need in other programs - nut-scanner does it already, and others start with the getopt() loop.
  • drivers/main.c: move NUT_DEBUG_LEVEL and "-D" CLI option handling to start of program [#2259] This allows to use upsdebugx() in early initialization methods like upsdrv_makevartable()

2.292. 2024-01-11 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: add info about #2259
  • drivers/main.c: if nutdrv_qx is built for serial-only support but asked to use USB options at run-time, help the user about the discrepancy [#2259]
  • drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c: report in debug trace which USB implementation is used [#2259]

2.293. 2024-01-03 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/images/ci/jenkins-nut.css: update hosting logo from FH to DO [#2192] Imported from NUT CI farm where this CSS was edited in the beginning of the month
  • tests/NIT/nit.sh: testcase_sandbox_nutscanner_list(): adjust generated section names to nut-scanner evolution
  • tools/nut-scanner/scan_avahi.c: fix indentation to match surrounding code [#2246]
  • tools/nut-scanner/Makefile.am: bump libnutscan version due to scan_nut_simulation.c [#2246]
  • tools/nut-scanner/scan_avahi.c: fix indentation to match surrounding code [#2246]
  • tools/nut-scanner/Makefile.am: bump libnutscan version due to scan_nut_simulation.c [#2246]
  • scripts/Windows/DriverInstaller/README.adoc: update link to libwdi
  • docs/ci-farm-lxc-setup.txt: note path to DHCP lease file for troubleshooting

2.294. 2024-01-02 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: fix NUT_AM_MAKE_CAN_EXPORT test syntax for Solaris ksh
  • Makefile.am, clients/Makefile.am, common/Makefile.am, configure.ac, drivers/Makefile.am, include/Makefile.am, lib/Makefile.am, server/Makefile.am, tests/Makefile.am, tests/NIT/Makefile.am, tools/Makefile.am, tools/nut-scanner/Makefile.am: */Makefile.am, configure.ac: constrain makefile exports to implementations where NUT_AM_MAKE_CAN_EXPORT
  • Makefile.am, clients/Makefile.am, common/Makefile.am, drivers/Makefile.am, include/Makefile.am, lib/Makefile.am, server/Makefile.am, tests/Makefile.am, tests/NIT/Makefile.am, tools/Makefile.am, tools/nut-scanner/Makefile.am: /Makefile.am: export PATH and CCACHE_ envvars to be used during rebuilds
  • configure.ac: remember PATH_DURING_CONFIGURE
  • configure.ac: track selected CCACHE_* envvars as "precious"
  • configure.ac: allow to specify --with-CCACHE_NAMESPACE=… for the build
  • docs/Makefile.am, docs/cables/Makefile.am, docs/man/Makefile.am, include/Makefile.am, scripts/python/module/Makefile.am, tests/NIT/Makefile.am, tools/Makefile.am, tools/nut-scanner/Makefile.am: */Makefile.am: add top line descriptions where missing
  • ci_build.sh: fix reporting of used envvars (avoid shell functions/aliases/…)

2.295. 2023-12-24 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/scan_nut_simulation.c: Fix declaration-after-code in scan_nut_simulation.c

2.296. 2023-12-24 Arnaud Quette <arnaud.quette@free.fr>

  • tools/nut-scanner/scan_nut_simulation.c: nut-scanner: actually simplify simulation scan code Reimplement scan algorithm, and remove non-portable scandir code. Get back to my early implemention, using opendir/readdir, as in common/common.c. This works and is portable!
  • tools/nut-scanner/scan_nut_simulation.c: nut-scanner: simplify simulation scan code Remove non-portable directory-filtering code, since there is no actual need for it, and very few chances of false positive results.
  • tools/nut-scanner/scan_nut_simulation.c: nut-scanner: don’t require alphasort Sorting is not needed, and despite alphasort being supported since: * Since glibc 2.10: (_POSIX_C_SOURCE >= 200809L) * || Glibc versions ⇐ 2.19: (_BSD_SOURCE |\| _SVID_SOURCE) it seems still not supported on some platforms.
  • tools/nut-scanner/nut-scan.h, tools/nut-scanner/scan_nut_simulation.c: nut-scanner: fix nutscan_scan_nut_simulation prototype Please CI and add void args

2.297. 2023-12-23 Arnaud Quette <arnaud.quette@free.fr>

  • docs/man/nut-scanner.txt: nut-scanner: spell checks
  • docs/man/nut-scanner.txt, tools/nut-scanner/nutscan-device.c, tools/nut-scanner/nutscan-device.h, tools/nut-scanner/nutscan-display.c: nut-scanner: fix device-name collisions in generated conf When nut-scanner is called separately, to scan different buses, it will generate similar names for each of these: * USB scan > [nutdev1] > … * NUT scan > [nutdev1] > … * … As a result, one can’t just redirect nut-scanner outputs directly to ups.conf, without a sed hack workaround. Solution: simply refine the device names, like "nutdev-<method><id>". Ex: nutdev-usb1, nutdev-usb2, nutdev-nut1, nutdev-snmp1, nutdev-simulation1, …

2.298. 2023-12-22 Arnaud Quette <arnaud.quette@gmail.com>

  • NEWS.adoc, data/driver.list.in, docs/developer-guide.txt, docs/man/Makefile.am, docs/man/nut-scanner.txt, docs/man/nutscan_init.txt, docs/man/nutscan_scan_nut_simulation.txt, tools/nut-scanner/Makefile.am, tools/nut-scanner/nut-scan.h, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-device.c, tools/nut-scanner/nutscan-device.h, tools/nut-scanner/nutscan-init.c, tools/nut-scanner/nutscan-init.h, tools/nut-scanner/scan_avahi.c, tools/nut-scanner/scan_nut_simulation.c: nut-scanner: detect and configure NUT simulation devices (#2246) * nut-scanner: detect and configure NUT simlation devices Provide an additional nut-scanner "-n \| --nut_simulation_scan" option to detect and configure dummy simulation (.dev & .seq) from the default $sysconfdir. Also advertise NUT Simulation Devices in HCL. This should standardize and streamline the use of nut-scanner as an automatic detection and configuration tool. Closes: #networkupstools/nut/issues/2242
  • NEWS.adoc, data/driver.list.in, tools/nut-scanner/scan_avahi.c, tools/nut-scanner/scan_nut.c: 2236 nut scanner reports non existent driver for nut discovery (#2245) * Start to advertise NUT support of itself * nut-scanner: NUT scan (old and Avahi) points at dummy-ups the previously pointed driver "nutclient" does not exist yet. At least points to a sane working default * Document in NEWS Closes: #networkupstools/nut/issues/2236

2.299. 2023-12-15 Jim Klimov <jim@jimklimov.com>

  • docs/ci-farm-lxc-setup.txt, docs/nut.dict: suggest dependency packages for LXC and QEMU

2.300. 2023-12-10 Matt Merhar <mattmerhar@protonmail.com>

  • NEWS.adoc, drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c: reset driver parameters while enumerating With an Arduino Leonardo compatible board attached alongside a CyberPower CP1500PFCLCD, usbhid-ups would incorrectly conclude that there was no kernel driver attached to the UPS and then fail subsequent steps accordingly. The cause is the global usb_communication_subdriver_t struct; when a subdriver (e.g. arduino-hid) sets different values during the enumeration loop, they’re not set back to defaults afterwards, causing issues with other subdrivers (e.g. cps-hid). So, if a subdriver doesn’t match, set a selection of fields back to their default values using the newly added nut_usb_subdriver_defaults() before the next attempt.

2.301. 2023-12-10 Jim Klimov <jimklimov+nut@gmail.com>

  • README.adoc: use DigitalOcean referral campaign identifier in badge URL [#2192]
  • tools/nut-scanner/scan_usb.c: hide bcdDevice logic behind ifdef WITH_BCD_DEVICE [#2221] Earlier approaches to only partially comment away code trigger static analysis warnings here or there, and we do not want to fully drop it here just yet.
  • tools/nut-scanner/scan_usb.c: comment away bcdDevice which we do not currently use [#2221]

2.302. 2023-12-10 Arnaud Quette <Arnaud.Quette@free.fr>

  • tools/nut-scanner/scan_usb.c: nut-scanner USB: disable some output results Some additional fields, like device (device number / path), may introduce more issues than solving. Hence disable these

2.303. 2023-12-05 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, docs/man/usbhid-ups.txt, docs/nut.dict, drivers/usbhid-ups.c: drivers/usbhid-ups.c, docs/man/usbhid-ups.txt, NEWS.adoc: introduce "onlinedischarge_log_throttle_hovercharge" setting [#2215]
  • drivers/usbhid-ups.c, docs/man/usbhid-ups.txt, NEWS.adoc: introduce "onlinedischarge_log_throttle_sec" setting and/or throttling by changes of battery.charge [#2214]
  • NEWS.adoc, docs/man/usbhid-ups.txt, docs/nut.dict, drivers/usbhid-ups.c: drivers/usbhid-ups.c, docs/man/usbhid-ups.txt, NEWS.adoc: deprecate "onlinedischarge" in favor of "onlinedischarge_onbattery" option name [#2213]
  • docs/man/upsmon.txt: update with NOTCAL state
  • conf/upsmon.conf.sample.in: update NOTIFYFLAG examples

2.304. 2023-12-01 Jim Klimov <jimklimov+nut@gmail.com>

  • data/driver.list.in: note that "NEW Keor Multiplug" is not supported as of 2023 …per "mrc989" report on IRC channel
  • server/conf.c, clients/upsmon.c: align logged DEBUG_MIN NUM casing and wording with the setting/docs
  • clients/upsmon.c: when POLLFAIL_LOG_THROTTLE_MAX>0 takes effect, report also how often it would report in seconds [#2207]
  • clients/upsmon.c: align logged POLLFAIL_LOG_THROTTLE_MAX casing with the setting/docs
  • NEWS.adoc, clients/upsmon.c: clients/upsmon.c: forget poll-failure error-states and the counts involved when we reload config [#2207]
  • clients/upsmon.c: markup/style typo fix
  • NEWS.adoc, clients/upsmon.c, conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt, docs/man/upsmon.txt: clients/upsmon.c, NEWS.adoc: fix an off-by-one error with POLLFAIL_LOG_THROTTLE_MAX loop counting [#2207]
  • clients/upsmon.c, NEWS.adoc: Forget POLLFAIL_LOG_THROTTLE_MAX before configuration reload [#2207]
  • clients/upsmon.c: clarify wording about POLLFAIL_LOG_THROTTLE_MAX "standard behavior"
  • docs/man/upsmon.txt, docs/man/upsmon.conf.txt, conf/upsmon.conf.sample.in: clarify wording about POLLFAIL_LOG_THROTTLE_MAX "standard behavior"

2.305. 2023-11-28 Jim Klimov <jim@jimklimov.com>

  • m4/nut_check_aspell.m4: check if aspell can use the discovered tex module (binary arch match) and try to fall back to built-in defaults if not Either way, avoid an unusable make spellcheck which just reports a massive failure.

2.306. 2023-11-27 Laurent Bigonville <bigon@bigon.be>

  • NEWS.adoc, scripts/python/app/NUT-Monitor-py3qt5.in: Set the DesktopFileName in scripts/python/app/NUT-Monitor-py3qt5 This binds the application with the desktop file and allow the Desktop to display the proper icon and application name.

2.307. 2023-11-27 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/app/NUT-Monitor-py2gtk2.in: leave a comment to suggest using g_set_prgname() Suggested by Laurent Bigonville Currently I’ve failed to find a test system with Py2 \+ GTK2 preinstalled (the one I had was updated and half the old dependencies are missing), and did not quickly find python syntax examples for it as well.
  • scripts/python/app/NUT-Monitor-py3qt5.in: take a cautious approach to setDesktopFileName()
  • NEWS.adoc, docs/nut.dict: checking and formatting for the entry about DesktopFileName in NUT-Monitor-py3qt5 [#2205]

2.308. 2023-11-27 Jim Klimov <jim@jimklimov.com>

  • m4/nut_check_aspell.m4: run a live check if the detected aspell is useful
  • m4/nut_check_aspell.m4: AC_SUBST detected paths after checking if detected aspell is useful

2.309. 2023-11-25 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/app/NUT-Monitor, NEWS.adoc: check if implementation scripts exist before looking into them for a PYTHON* version Closes: #2201
  • NEWS.adoc: note the fix for #2198
  • scripts/python/app/NUT-Monitor, NEWS.adoc: fix typo (qt3⇒qt5) Closes: #2199

2.310. 2023-11-24 Axel Gembe <axel@gembe.net>

2.311. 2023-11-23 Xin LI <delphij@FreeBSD.org>

  • drivers/libusb1.c: Remove unnecessary validation for bus_num The libusb_get_bus_number() function serves as a simple accessor for the bus number of the opaque device struct. Unlike libusb_get_port_number(), it does not have the ability to convey errors back to the caller, and a bus number of 0 is a valid value. Therefore, any validation around bus_num is redundant. This commit removes the unnecessary validation code related to bus_num.

2.312. 2023-11-23 Axel Gembe <axel@gembe.net>

  • drivers/apc_modbus.c: apc_modbus: Add target outlet group to load.* and shutdown.* commands Maybe this is needed, needs to be confirmed.
  • drivers/apc_modbus.c: apc_modbus: Always store times in UTC This changes _apc_modbus_date_from_nut to use timegm instead of mktime which does not add the current time zone information. This fixes dates that are off-by-one compared to what was set.
  • drivers/apc_modbus.c: apc_modbus: Fix re-read of values at the end of setvar The for loop searching for the correct register map kept on looping after finding the value which caused the apc_map mariable to potentially point to the wrong register map. This can cause the re-read of the set value at the end of the function to fail.
  • drivers/apc_modbus.c, drivers/apc_modbus.h: apc_modbus: Add ups.test.result This outputs the test result, the source of the start of the test and a result modifier.

2.313. 2023-11-22 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/nutdrv_qx.c: armac_command(): avoid "-Wdeclaration-after-statement" Also minor cleanup with comments markup
  • drivers/nutdrv_qx.c: load_armac_endpoint_cache(): avoid "-Wdeclaration-after-statement" situations Also log if effectively skipping the method (not libusb-1.x build)
  • README.adoc: add links to custom Jenkins Dynamatrix library and setup for NUT
  • README.adoc: do our best to top-align the cells in acknowledgements table, and comment about caveats of known renderers
  • README.adoc: rephrase the sponsoring/starring tip section
  • README.adoc: dumb down the table format for GitHub renderer
  • README.adoc: no need for a plus in table for multi-paragraph cells
  • README.adoc: align columns in vendor logo table; leave a FIXME comment for PDF renditions
  • README.adoc: try to fix vendor acknowledgements table width
  • README.adoc: refer from "NUT and Ecosystem" to "Acknowledgements for NUT CI and Ops" table with vendor logos [#2192]
  • README.adoc: use single PNG for OpenCollective vendor logo
  • README.adoc, docs/nut.dict: README.adoc: use alt/url/width/height markup for vendor logo images
  • docs/Makefile.am, docs/images/ci/OC_logo_merged_140x26.png, docs/images/ci/OC_logo_merged_171x32.png: docs/images/ci/OC_logo_merged_XxY.png: add merged (and also resized) single image files
  • docs/asciidoc-vars.conf: fix "imagesdir" for GitHub rendering
  • README.adoc: fix title markup
  • README.adoc, docs/nut.dict: README.adoc: make "NUT and the ecosystem" a separate chapter (including a "TIP" on GitHub starring)
  • .github/pull_request_template.md: remind to Please star NUT on GitHub, this helps with sponsorships [#2192]
  • README.adoc: start with a note about sponsorship and GitHub stars

2.314. 2023-11-21 Jim Klimov <jimklimov+nut@gmail.com>

  • README.adoc, docs/nut.dict: README.adoc: fix GitHub rendering of logos in the README [#2192]
  • docs/Makefile.am, docs/images/ci/jenkins-nut.txt: docs/Makefile.am: list IMAGE_LOGO_FILES andi IMAGE_LOGO_FILES_JENKINS_NUT for EXTRA_DIST
  • scripts/python/module/MANIFEST.in, scripts/python/module/Makefile.am, scripts/python/module/setup.py.in: scripts/python/module/MANIFEST.in: distribute "tox.ini" in a different way so it is only in sdist [#2193]
  • drivers/main.c, NEWS.adoc: fix fallout of TOCTOU fixes for socket file non-default permissions [#2185]

2.315. 2023-11-20 Jim Klimov <jimklimov+nut@gmail.com>

2.316. 2023-11-19 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/module/.gitignore: Update .gitignore
  • .github/workflows/PyNUTClient.yml: Update PyNUTClient.yml
  • .github/workflows/PyNUTClient.yml: Update PyNUTClient.yml
  • .github/workflows/PyNUTClient.yml: Update PyNUTClient.yml
  • .github/workflows/PyNUTClient.yml: Update PyNUTClient.yml
  • .github/workflows/PyNUTClient.yml: Update PyNUTClient.yml
  • .github/workflows/PyNUTClient.yml: Update PyNUTClient.yml
  • .github/workflows/PyNUTClient.yml: Update PyNUTClient.yml
  • .github/workflows/PyNUTClient.yml: Update PyNUTClient.yml

2.317. 2023-11-18 Jim Klimov <jimklimov+nut@gmail.com>

  • .github/workflows/PyNUTClient.yml: convert to use scripts/python/module/Makefile.am directly, to avoid discrepancies in two logic impementations
  • scripts/python/module/tox.ini: update pip as a "commands_pre" action [#2186]
  • .github/workflows/PyNUTClient.yml: fix typo determining TAG_NAME
  • scripts/python/module/Makefile.am, scripts/python/module/setup.py.in, scripts/python/module/tox.ini: Py: try to beat sense into packaging all the files
  • scripts/python/module/Makefile.am: add "py-in" and "redist" targets for manual iterations
  • scripts/python/module/.gitignore, scripts/python/module/Makefile.am, scripts/python/module/tox.ini: scripts/python/module: add Python testing framework handling (tox.ini etc) [#2186]

2.318. 2023-11-16 Jim Klimov <jimklimov@gmail.com>

  • drivers/Makefile.am: dist the apc_modbus.h file

2.319. 2023-11-16 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/module/setup.py.in: update "keywords" to refer to NUT
  • scripts/python/module/setup.py.in: constrain lowest known compatible python version
  • scripts/python/module/setup.py.in: clean up formatting
  • scripts/python/module/Makefile.am: create the PyNUTClient/src directory for better module naming
  • scripts/python/module/Makefile.am: clean the many .pypi-dist* touch-files we have now
  • scripts/python/module/Makefile.am: allow "make clean dist" to do a sane thing
  • NEWS.adoc: update for arduino-hid [#2188]
  • NEWS.adoc: Update NEWS.adoc
  • drivers/arduino-hid.c: Update arduino-hid.c
  • scripts/systemd/nut-driver-enumerator-daemon-activator.path.in, scripts/systemd/nut-driver-enumerator-daemon-activator.service.in, scripts/systemd/nut-driver-enumerator-daemon.service.in, scripts/systemd/nut-driver-enumerator.path.in: scripts/systemd/nut-driver-enumerator-daemon*.in: add NUT headers like in other systemd units

2.320. 2023-11-15 Kelly Byrd <kbyrd@memcpy.com>

  • drivers/arduino-hid.c: battery.runtime, status OL/OB and more for Arduino subdriver Add support for the common status flags as well as time remaining, battery voltage and other variables found in other HID subdrivers. The Arduino library always supported these items, just the NUT subdriver didn’t pick them up so things like status were always OB.

2.321. 2023-11-14 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/module/setup.py.in: do not install_require telnetlib which is not a standalone project [#2181]
  • .github/workflows/PyNUTClient.yml, scripts/python/module/.gitignore, scripts/python/module/Makefile.am, scripts/python/module/setup.py.in: scripts/python/module/setup.py.in: reference the license file (GPLv3 per NUT COPYING doc) [#2180]
  • scripts/python/module/setup.py.in: rectify whitespace
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: AVOID_REPARSE of the (empty) ups.conf in the main loop method [#2178]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: consider two empty UPS lists (conf and svc) as a valid situation (nothing to reconcile yet) [#2178]
  • scripts/Solaris/nut-driver-enumerator.xml.in: do not return exit-code 42 if "No more changes to reconcile"
  • server/conf.c, drivers/snmp-ups.c, clients/upsmon.c, clients/upssched.c: report if config errors were seen and we ignored them (went on)
  • scripts/Solaris/nut.xml.in: revise "refresh" handling in umbrella service

2.322. 2023-11-14 Axel Gembe <axel@gembe.net>

  • drivers/apc_modbus.c, drivers/apc_modbus.h, drivers/upshandler.h: apc_modbus: Updates, command, writable variables and outlet group support This adds support for commands, writable variables and outlet groups. - For commands there is a new table called apc_modbus_command_map which defines the supported commands as a tuple of command name, register offset and value to write. This also adds a new instcmd status called STAT_INSTCMD_CONVERSION_FAILED for when conversion of values fails. On startup all the commands are registered using dstate_addcmd. This also adds support for the upsdrv_shutdown function. - For writable variables we added a new flag called APC_VF_RW to the existing variables that indicates a writable variable. We added code to convert from a string to UINT/INT/STRING variables with output in APCs register format. There is a new _apc_modbus_setvar function that handles setting variables and rereading them from the device. This also adds a new setvar status called STAT_SET_CONVERSION_FAILED for when conversion of values fails. Variables are now correctly set as ST_FLAG_STRING and ST_FLAG_RW and we call dstate_setaux to give a maximum length for strings. - For outlet groups, we now have names, configurable delays and commands per outlet group. Devices have an outlet group called MOG (Main outlet group) that switches all the outputs of the UPS and 1-3 SOGs (Switched outlet groups) that can be controlled independently. Note that MOG is outlet.group.0 and the SOGs start at outlet.group.1. The outlet groups should have markings with the same index at the back of the unit. - This also reduces the length of some of the defines to make the variable maps more readable. - It also adds a comment to when the reopen matcher is created that clarifies why we create it.
  • drivers/apcsmart-old.c: apcsmart-old: Fix return value for not writable variable The code returned STAT_SET_UNKNOWN, which is for variables that were not found, instead this should return STAT_SET_INVALID, which means that the variable is not writable.

2.323. 2023-11-13 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/Makefile.am: when used to make spellcheck from different directories (and of other-directory files) try to report the path to text source relative to NUT source
  • scripts/augeas/README.adoc: for paragraph-quote block markup
  • NEWS.adoc, UPGRADING.adoc, autogen.sh, configure.ac, docs/nut.dict, scripts/devd/.gitignore, scripts/devd/Makefile.am, tools/Makefile.am, tools/nut-usbinfo.pl: tools/nut-usbinfo.pl: generate FreeBSD style quirks information [#2159]
  • data/html/README.adoc, docs/nut.dict, scripts/Windows/README.adoc, scripts/augeas/README.adoc, scripts/python/README.adoc, scripts/python/app/README.adoc, scripts/usb_resetter/README.adoc: scripts/*/README.adoc: revise markup for proper rendered visuals
  • Makefile.am, data/html/Makefile.am, data/html/README, data/html/README.adoc, docs/nut.dict: data/html/README.adoc: rename to .adoc extension, refresh text and markup, add to spell-checking laundry list
  • Makefile.am, tests/NIT/Makefile.am, tests/NIT/{README ⇒ README.adoc}: tests/NIT/README.adoc: rename to .adoc extension, refresh text and markup, add to spell-checking laundry list
  • scripts/Makefile.am, scripts/RedHat/README, scripts/RedHat/README.adoc: scripts/RedHat/README.adoc: rename to .adoc extension, refresh text and markup, add to spell-checking laundry list
  • docs/nut.dict, scripts/Makefile.am, scripts/usb_resetter/{README.md ⇒ README.adoc}: scripts/usb_resetter/README.adoc: convert from .md to .adoc, refresh text, add to spell-checking laundry list (also do EXTRA_DIST this directory)
  • Makefile.am, scripts/hotplug/Makefile.am, scripts/hotplug/README, scripts/hotplug/README.adoc: scripts/hotplug/README.adoc: rename to .adoc extension, refresh text and markup, add to spell-checking laundry list
  • Makefile.am, scripts/udev/Makefile.am, scripts/udev/README, scripts/udev/README.adoc: scripts/udev/README.adoc: rename to .adoc extension, refresh text and markup, add to spell-checking laundry list
  • Makefile.am, docs/nut.dict, scripts/upsdrvsvcctl/Makefile.am, scripts/upsdrvsvcctl/README, scripts/upsdrvsvcctl/README.adoc: scripts/upsdrvsvcctl/README.adoc: rename to .adoc extension, refresh text and markup, add to spell-checking laundry list
  • scripts/Makefile.am, scripts/Solaris/Makefile.am, scripts/Windows/Makefile.am, scripts/augeas/Makefile.am, scripts/devd/Makefile.am, scripts/hotplug/Makefile.am, scripts/systemd/Makefile.am, scripts/udev/Makefile.am, scripts/ufw/Makefile.am, scripts/upsdrvsvcctl/Makefile.am: scripts/*/Makefile.am: add/update headings about the NUT scripts/subdir for easier navigation
  • Makefile.am, scripts/devd/Makefile.am, scripts/devd/README, scripts/devd/README.adoc: scripts/devd/README.adoc: rename to .adoc extension, refresh text and markup, add to spell-checking laundry list
  • scripts/augeas/Makefile.am: comment about spellchecking and markup of README.adoc
  • scripts/ufw/Makefile.am: comment about spellchecking and markup of README.adoc
  • Makefile.am, docs/nut.dict, scripts/systemd/Makefile.am, scripts/systemd/README, scripts/systemd/README.adoc: scripts/systemd/README.adoc: rename to .adoc extension, refresh text and markup, add to spell-checking laundry list
  • Makefile.am, scripts/Makefile.am: scripts/README.adoc: add to spell-checking laundry list
  • scripts/README.adoc: refresh text and markup
  • scripts/Makefile.am, scripts/{README ⇒ README.adoc}: scripts/README: rename to .adoc extension
  • Makefile.am, docs/nut.dict, scripts/python/Makefile.am, scripts/python/app/README.adoc, scripts/python/module/README.adoc: scripts/python/*/README.adoc: add to spell-checking laundry list
  • Makefile.am, docs/nut.dict, scripts/Windows/Installer/README.adoc, scripts/Windows/Makefile.am, scripts/Windows/README.adoc: scripts/Windows/*/README.adoc: add to spell-checking laundry list
  • …/DriverInstaller/{README.txt ⇒ README.adoc}, scripts/Windows/Makefile.am: scripts/Windows/Makefile.am: fix EXTRA_DIST to cover many other scripts and resource files
  • Makefile.am, docs/nut.dict, scripts/Solaris/Makefile.am: scripts/Solaris/README.adoc: add to spell-checking laundry list
  • scripts/Solaris/README.adoc: refresh text and markup
  • scripts/Solaris/Makefile.am, scripts/Solaris/{README ⇒ README.adoc}: scripts/Solaris/README: rename to .adoc extension

2.324. 2023-11-12 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, clients/upsmon.c, clients/upsmon.h, conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt, docs/nut.dict: clients/upsmon.{c,h} et al: add notification support for NOTCAL state change [#2169]
  • NEWS.adoc, docs/nut.dict: NEWS.adoc: document fix of INSTCMD NPE [#2155]
  • NEWS.adoc: inject a new NUT v2.8.3 expectations plan
  • NEWS.adoc: refer to PR #2156 for powerpanel fix
  • docs/maintainer-guide.txt: ensure PyNUT publication
  • .github/workflows/PyNUTClient.yml: only update TestPyPI repo if PyNUT sources changed

2.325. 2023-11-11 root <root@deb128.rd-dpis77.local>

  • clients/upsmon.c: It is important to reset the "CAL" status. This will be reset later if necessary.

2.326. 2023-11-11 Jim Klimov <jim@jimklimov.com>

  • .github/workflows/PyNUTClient.yml: limit auto-runs to NUT upstream [#2158] Other repos lack needed pypi credentials anyway.

2.327. 2023-11-10 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/Makefile.am, autogen.sh: cause USB (and SNMP) file re-generation if generating script was changed
  • autogen.sh, m4/nut_check_python.m4: update ad-hoc lists for python3.x program name detection
  • drivers/powervar-hid.c: fix file perms
  • autogen.sh: re-generate USB ID listing files if we updated sources
  • tools/nut-usbinfo.pl: add a big scary header that nutscan-usb.h is generated

2.328. 2023-11-09 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, conf/nut.conf.sample, conf/upsd.conf.sample, docs/config-notes.txt, docs/man/nut.conf.txt, docs/man/upsd.conf.txt, scripts/augeas/nutupsdconf.aug.in, server/conf.c, server/upsd.c, server/upsd.h: upsd: introduce support for ALLOW_NOT_ALL_LISTENERS configuration toggle [#723]
  • NEWS.adoc, server/upsd.c: server/upsd.c: server_load(): if listenersTotal != listenersValid, default to fatal start-up failure [#723]
  • server/upsd.c: server_load(): if discrepancy of listenersTotal vs. listenersValid amounts to localhost-related addresses, let it slide [#723]
  • server/upsd.c: server_load(): keep track of listenersTotal vs. listenersValid for certain localhost-related string names and IP addresses [#723]
  • NEWS.adoc, server/upsd.c: server/upsd.c: server_load(): keep track of listenersTotal vs. listenersValid, and base "no listening interface available" diagnosis on the latter, not on the firstaddr→sock_fd [#723]
  • server/upsd.c: setuptcp(): warn if requested to LISTEN on "localhost" by name (in case it misfires for IPv4 vs. IPv6)
  • server/Makefile.am: limit SSL and LIBWRAP options to upsd (sockdebug/pipedebug is not networked)
  • scripts/python/module/.gitignore: .pypi* touch-files [#2158]
  • .github/workflows/PyNUTClient.yml: fix testpypi repo url argument [#2158]
  • .github/workflows/PyNUTClient.yml: publish from our non-default directory location [#2158]
  • .github/workflows/PyNUTClient.yml: update pypa action to "release/v1" (not chasing specific tag) [#2158]
  • .github/workflows/PyNUTClient.yml: update doc reference comments [#2158]
  • .github/workflows/PyNUTClient.yml: separate source preparation from distro preparation [#2158]
  • scripts/python/module/README.adoc: reshuffle paragraphs for readability, fix a few typos [#2158]
  • docs/maintainer-guide.txt: make note to check PyPI resources [#2158]
  • .github/workflows/PyNUTClient.yml: refine yaml vs. shell syntax some more [#2158]
  • .github/workflows/PyNUTClient.yml: refine yaml vs. shell syntax [#2158]
  • scripts/python/module/setup.py.in: scripts/python/module/setup.py: refer to README.txt made for sdist [#2158]
  • .github/workflows/PyNUTClient.yml, scripts/python/module/Makefile.am: actually better prefer "pip build" as the newest designed solution [#2158]
  • .github/workflows/PyNUTClient.yml, scripts/python/module/Makefile.am: prefer setup.py for its sdist support [#2158]
  • .github/workflows/PyNUTClient.yml: align with recent changes in scripts/python/module/Makefile.am [#2158]
  • scripts/python/module/Makefile.am: use quieter "pip" build wrapper, not directly calling setup.py [#2158]
  • scripts/python/module/Makefile.am: make sure the src/… module is found (wants init.py) [#2158]
  • scripts/python/module/setup.py.in: fix README quoting as the long description [#2158]
  • .github/workflows/PyNUTClient.yml, scripts/python/module/.gitignore, scripts/python/module/Makefile.am: scripts/python/module/Makefile.am: PyPI standard wants a README.txt to be present [#2158]
  • scripts/python/module/Makefile.am: revise verbosity and selection of upload target [#2158]
  • configure.ac, .github/workflows/PyNUTClient.yml: refine definition of NUT_SOURCE_GITREV_NUMERIC to avoid dash separator and use a dot (major.minor.patch.commitnumsince) [#2158]
  • scripts/python/module/Makefile.am: revise GENERATED_DIST artifacts [#2158]
  • scripts/python/module/setup.py.in: fix README content type [#2158]
  • .github/workflows/PyNUTClient.yml, configure.ac, scripts/python/module/Makefile.am, scripts/python/module/setup.py.in: Introduce NUT_SOURCE_GITREV_NUMERIC for scripts/python/module/Makefile.am [#2158]
  • configure.ac, scripts/python/Makefile.am, scripts/python/module/.gitignore, scripts/python/module/Makefile.am: Introduce scripts/python/module/Makefile.am to allow PyPI repo activities from command line [#2158]

2.329. 2023-11-09 Greg Troxel <gdt@lexort.com>

  • scripts/python/Makefile.am: python: Do not install setup.py

2.330. 2023-11-09 Doug Nazar <nazard@nazar.ca>

  • NEWS.adoc: Update with powerpanel driver changes

2.331. 2023-11-08 Vytautas Survila <vytautas.survila@gmail.com>

  • drivers/nutdrv_qx.c: support Armac O/850E/PSW #2153 Support for Armac UPS that uses interrupt instead of control msg. It will be enabled automatically only for devices that reports 0x82 as in endpoint address with interrupt transfer type

2.332. 2023-11-08 Jim Klimov <jimklimov+nut@gmail.com>

  • .github/workflows/PyNUTClient.yml, configure.ac, scripts/python/Makefile.am, scripts/python/module/.gitignore, scripts/python/module/{setup.py ⇒ setup.py.in}: .github/workflows/PyNUTClient.yml, scripts/python/module/setup.py: rename setup.py into a .in template; use @NUT_SOURCE_GITREV@ [#2158]
  • .github/workflows/PyNUTClient.yml: publish (master) branch builds to TestPyPI repository [#2158]
  • .github/workflows/PyNUTClient.yml: follow warnings for token access [#2158]
  • .github/workflows/PyNUTClient.yml: update set-output action ⇒ GITHUB_OUTPUT file [#2158] Follow warnings into https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
  • .github/workflows/PyNUTClient.yml: use definitive version of pypa action - v1.8.10 (current latest) [#2158]
  • .github/workflows/PyNUTClient.yml: use definitive version of pypa action [#2158]
  • scripts/python/module/setup.py: note the renaming of README.adoc
  • .github/workflows/PyNUTClient.yml: fix shell syntax [#2158]
  • .github/workflows/PyNUTClient.yml: fix shell syntax [#2158]
  • .github/workflows/PyNUTClient.yml: fix shell syntax [#2158]
  • .github/workflows/PyNUTClient.yml: use default github-hosted runner [#2158]
  • .github/workflows/PyNUTClient.yml: also publish master-branch rolling changes [#2158]
  • NEWS.adoc, scripts/python/Makefile.am, scripts/python/{README ⇒ README.adoc}, scripts/python/app/{README ⇒ README.adoc}, scripts/python/module/{README ⇒ README.adoc}: scripts/python/*/README: rename to *.adoc extension [#1953]

2.333. 2023-11-08 Jim Klimov <jim@jimklimov.com>

  • .github/workflows/PyNUTClient.yml, NEWS.adoc, scripts/python/module/README, scripts/python/module/setup.py: Add recipes for PyPI publishing of PyNUTClient bindings for NUT [#2158] Note: PyPI names are case-insensitive, and "pynut" was occupied.

2.334. 2023-11-07 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-usbinfo.pl: track preference of certain drivers over others [#1021]
  • NEWS.adoc, docs/man/nutscan_add_device_to_device.txt, docs/man/nutscan_add_option_to_device.txt, docs/nut.dict, tools/nut-scanner/Makefile.am, tools/nut-scanner/nutscan-device.h, tools/nut-scanner/nutscan-display.c, tools/nut-scanner/scan_usb.c, tools/nut-usbinfo.pl: tools/nut-usbinfo.pl, nut-scanner: extend to track alt_driver_names in generated config suggestions
  • tools/nut-usbinfo.pl: track all suitable driver names (in comments)

2.335. 2023-11-07 Doug Nazar <nazard@nazar.ca>

  • drivers/powerp-txt.c: powerpanel: Rewrite status parsing of text protocol to be generic Instead of having several scanf formats for different devices, parse the individual fields provided only.
  • drivers/powerp-bin.c: powerpanel: Don’t report errors about output voltage if not available
  • drivers/libhid.c: Fix passing of errors up from libusb 1.x. The api for get_item_buffered() requires the actual error to be in errno which was automatic for libusb 0.x but libusb 1.x doesn’t use errno. Otherwise a poll-only driver will miss errors like disconnects and never try to reconnect.
  • drivers/dstate.c: Fix SIGSEGV while preforming INSTCMD Parameter arg[2] is not guaranteed to be valid while preforming INSTCMD. Don’t pass directly to main_instcmd().

2.336. 2023-11-06 Jim Klimov <jim@jimklimov.com>

  • configure.ac: quiece -Wincompatible-function-pointer-types-strict for clang-17 on some platforms [#823]

2.337. 2023-11-05 Kelly Byrd <kbyrd@memcpy.com>

  • drivers/libusb0.c, drivers/libusb1.c, drivers/nut_libusb.h, drivers/usb-common.h: Add usb_config_index to usb_communication_subdriver_s, default to 0. The tactical goal of this change is to change ret = libusb_get_config_descriptor(device, (uint8_t)usb_subdriver.hid_rep_index, &conf_desc); to ret = libusb_get_config_descriptor(device, (uint8_t)usb_subdriver.usb_config_index, &conf_desc); Before this change, libusb1.c did libusb_get_config_descriptor() with a config index equal to the interface number. For composite devices using an interface index > 0, this is usally the wrong choice. Concretely, I’m using an Arduino for a DIY UPS project and these are composite devices with multiple interfaces under the first (and only) config descriptor. In the USB descriptor heirarchy, deivce descriptors have config descriptors which have interface descriptors. Also, nearly all USB devices have a single configuration (index 0). In order to do this, I added a new member alongside the existing hid_rep_idex and hid_desc_index. I chose to do this instead of using the add_var method because this member is used in places in very similar ways to how hid_rep_index and hid_desc_index is used. This new member defaults to 0 which covers the majority of USB devices. Any future subdriver is able to use this if a device requires it. For existing subdrives, we’ll just use an index of 0. I also changed some debug logging to print out the config index where the code was already printing the interface index.

2.338. 2023-11-05 Fabrice Fontaine <fontaine.fabrice@gmail.com>

  • m4/nut_check_python.m4: allow overriding of PYTHON{2,3}_SITE_PACKAGES Allow the end-user to override PYTHON{2,3}_SITE_PACKAGES as this can be useful when cross-compiling

2.339. 2023-11-03 Fabrice Fontaine <fontaine.fabrice@gmail.com>

  • m4/nut_compiler_family.m4: fix cross-compilation Do not use isystem with host paths when cross-compiling

2.340. 2023-11-02 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: nut_enable_inplace_runtime: pass libexecdir if specified
  • docs/man/upsmon.txt: avoid characters (some unicode space) that some versions of asciidoc dislike
  • NEWS.adoc, docs/nut.dict, lib/libnutclientstub.pc.in: Clarify what is libnutclientstub
  • docs/config-prereqs.txt, docs/nut.dict: clarify about /dev/shm and noexec option [#2143 follow-up]
  • docs/config-prereqs.txt: small fixes to Slackware 15 chapter [#2143 follow-up]
  • docs/man/al175.txt, docs/man/apc_modbus.txt, docs/man/apcupsd-ups.txt, docs/man/asem.txt, docs/man/bcmxcp.txt, docs/man/bcmxcp_usb.txt, docs/man/belkin.txt, docs/man/belkinunv.txt, docs/man/bestfcom.txt, docs/man/bestfortress.txt, docs/man/bestuferrups.txt, docs/man/bestups.txt, docs/man/blazer_ser.txt, docs/man/blazer_usb.txt, docs/man/clone.txt, docs/man/dummy-ups.txt, docs/man/etapro.txt, docs/man/everups.txt, docs/man/gamatronic.txt, docs/man/genericups.txt, docs/man/isbmex.txt, docs/man/ivtscd.txt, docs/man/liebert-esp2.txt, docs/man/liebert.txt, docs/man/macosx-ups.txt, docs/man/masterguard.txt, docs/man/metasys.txt, docs/man/microdowell.txt, docs/man/microsol-apc.txt, docs/man/netxml-ups.txt, docs/man/nutdrv_atcl_usb.txt, docs/man/nutdrv_qx.txt, docs/man/nutdrv_siemens_sitop.txt, docs/man/oneac.txt, docs/man/optiups.txt, docs/man/pijuice.txt, docs/man/powercom.txt, docs/man/powerpanel.txt, docs/man/rhino.txt, docs/man/richcomm_usb.txt, docs/man/safenet.txt, docs/man/skel.txt, docs/man/snmp-ups.txt, docs/man/solis.txt, docs/man/tripplite.txt, docs/man/tripplitesu.txt, docs/man/upscode2.txt, docs/man/usbhid-ups.txt, docs/man/victronups.txt: Fix man pages to have SYNOPSIS as the second section per standard
  • docs/config-prereqs.txt, docs/nut.dict: docs/config-prereqs.txt: update about docbook-xml / linuxdoc-tools [#2142]
  • m4/nut_check_asciidoc.m4, configure.ac: separate A2X_MIN_VERSION from ASCIIDOC_MIN_VERSION [#2142]
  • docs/config-prereqs.txt, docs/nut.dict: add diffutils to Slackware baseline (not in default install)
  • scripts/Windows/Makefile.am: avoid "Using $< in a non-suffix rule context is a GNUmake idiom" for non-GNU makes
  • docs/Makefile.am: avoid "Using $< in a non-suffix rule context is a GNUmake idiom" for non-GNU makes
  • docs/config-prereqs.txt, docs/nut.dict: docs/nut.dict: update spellchecker to make older systems happy
  • configure.ac: dumb down the check for HAVE_WINDOWS_H to cater for older autotools

2.341. 2023-11-01 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/config-prereqs.txt, docs/nut.dict: add a chapter on Slackware 15 build environment - clarify Sotirov’s SlackPack
  • configure.ac: only define that we HAVE_WINDOWS if both the minimally required tools and headers are in place
  • m4/nut_check_headers_windows.m4: add automake conditionals for detected header files
  • docs/config-prereqs.txt, docs/nut.dict: add a chapter on Slackware 15 build environment - clarify Alien Slack Builds
  • docs/config-prereqs.txt, docs/nut.dict: add a chapter on Slackware 15 build environment
  • scripts/Windows/Makefile.am: limit binary builds to cases where we HAVE_WINDOWS [#2142]
  • docs/man/huawei-ups2000.txt, docs/man/liebert-esp2.txt: fix titles
  • configure.ac: bump AC_INIT to development version 2.8.1.1

2.342. 2023-10-31 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, UPGRADING.adoc, docs/docinfo.xml.in: Revert "NEWS.adoc, UPGRADING.adoc, docs/docinfo.xml.in: finalize text before NUT v2.8.1 release" This reverts commit 909705233877a45953f9c739abd9bc8156a05627.
  • configure.ac: update AC_INIT for NUT v2.8.1 release
  • docs/configure.txt, scripts/Windows/README.adoc, scripts/Windows/build-mingw-nut.sh: update examples for NUT v2.8.1 release
  • appveyor.yml: update for NUT v2.8.1 release
  • docs/maintainer-guide.txt: revise procedures for NUT v2.8.1 release
  • docs/maintainer-guide.txt: update filenames to adjust for changes leading up to NUT v2.8.1 release
  • docs/docinfo.xml.in: set the date for NUT v2.8.1 release
  • NEWS.adoc, UPGRADING.adoc, docs/docinfo.xml.in: finalize text before NUT v2.8.1 release
  • ci_build.sh: for default developer builds without parameters, nowadays we should have default warnings active and fatal
  • tests/NIT/nit.sh: take advantage of NUT_QUIET_INIT_UPSNOTIFY=true [#2136]
  • scripts/Windows/Installer/README.adoc: add initial notes on the NUT for Windows Installer [#1485]
  • scripts/Windows/build-mingw-nut.sh: handle optional cgi-bin location and lack of NUT libs among system dependencies more eloquently (WRT build log)
  • scripts/Windows/build-mingw-nut.sh: allow caller to customize WINDIR, TOP_DIR, BUILD_DIR and INSTALL_DIR
  • scripts/Windows/build-mingw-nut.sh: double-quote path variables
  • scripts/Windows/build-mingw-nut.sh: handle optional cgi-bin location more eloquently (WRT build log)
  • INSTALL.nut.adoc, NEWS.adoc, appveyor.yml, ci_build.sh, docs/config-prereqs.txt, scripts/Windows/Makefile.am, scripts/Windows/{README ⇒ README.adoc}, scripts/Windows/build-mingw-prereqs.sh: Rename scripts/Windows/README ⇒ scripts/Windows/README.adoc
  • docs/man/apc_modbus.txt: update the man page with caveats applicable at the publication time (Oct 2023) [#2063 follow-up]

2.343. 2023-10-30 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac, scripts/Windows/Installer/.gitignore, scripts/Windows/Installer/{NUT-Installer.xml ⇒ NUT-Installer.xml.in}: scripts/Windows/Installer/NUT-Installer.xml: make it a .in template and substitute NUT PACKAGE_VERSION
  • clients/upsc.c: typo fix in self-identification message
  • drivers/upsdrvctl.c: fix formatting string for wstat debug-print [#2135]
  • NEWS.adoc, drivers/riello.c, drivers/riello_ser.c, drivers/riello_usb.c: drivers/riello*.c: fix back bit maths changed with #1106
  • UPGRADING.adoc: revise envvars that tweak specific message verbosity

2.344. 2023-10-29 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/upsdrvctl.c: trace (and timestamp) the exit paths from tool [#2135]
  • scripts/Aix/nut.init.in, scripts/HP-UX/nut-drvctl.sh, scripts/HP-UX/nut-upsd.sh, scripts/HP-UX/nut-upsmon.sh, scripts/RedHat/upsd.in, scripts/RedHat/upsmon.in, scripts/Solaris/nut.in, scripts/Solaris/svc-nut-monitor.in, scripts/Solaris/svc-nut-server.in, scripts/Solaris8/S99upsmon: Suggest NUT_QUIET_INIT_UPSNOTIFY=true in sample init-scripts [#2136]
  • common/common.c, NEWS.adoc, docs/nut.dict: support NUT_QUIET_INIT_UPSNOTIFY envvar to hide upsnotify "failed…will not spam more" messages [#2136]
  • drivers/upsdrvctl.c: differentiate waitpid(…, WNOHANG) returns of "-1" vs "0" [#2135]
  • drivers/upsdrvctl.c: make use of return value from execv()
  • drivers/upsdrvctl.c: trace-debug the waitpid() return info
  • drivers/upsdrvctl.c: forkexec(): fix comments and whitespaces
  • drivers/upsdrvctl.c: forkexec(): fix return type of waitpid()
  • drivers/upsdrvctl.c: do not treat a driver initialization timeout as immediate error for upsdrvctl exit code - review the results again [#2134]

2.345. 2023-10-28 Jim Klimov <jimklimov+nut@gmail.com>

  • conf/ups.conf.sample, docs/man/ups.conf.txt: further clarify behavior of maxstartdelay [#2134]
  • conf/ups.conf.sample, docs/man/ups.conf.txt: clarify behavior of maxstartdelay [#2134]
  • clients/upsmon.c: Revert "clients/upsmon.c: remove doshutdown() attributenoreturn annotation, now it can [#2133]" This reverts commit 2e7263812b4f97cb0d667550e0e660ab50c2ed9e.
  • NEWS.adoc, clients/upsmon.c, conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt: clients/upsmon.c et al: adjust definition of SHUTDOWNEXIT to allow a finite delay between SHUTDOWNCMD and exit() [#2133]
  • clients/upsmon.c: remove doshutdown() attributenoreturn annotation, now it can [#2133]

2.346. 2023-10-27 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc, clients/upsmon.c, conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt, docs/nut.dict: clients/upsmon.c et al: introduce SHUTDOWNEXIT boolean option [#2133]

2.347. 2023-10-26 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • NEWS.adoc: reference respective PR for repeater_disable_strict_start option
  • drivers/dummy-ups.c, docs/man/dummy-ups.txt, NEWS.adoc: introduce repeater_disable_strict_start config option

2.348. 2023-10-26 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: update list of dummy-ups improvements for NUT v2.8.1

2.349. 2023-10-25 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • drivers/dummy-ups.c: relax error handling to prevent premature driver termination

2.350. 2023-10-25 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/apcsmart.c: apc_getcaps(): revert to behavior like in NUT v2.7.4 about invalid nument/entlen value(s) [#1941]
  • drivers/apcsmart-old.c: fix DRIVER_NAME to reflect "old"ness of this driver

2.351. 2023-10-24 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • clients/upsmon.c: debug msgs for possible FSD conditions on conn drop
  • clients/upsmon.c: sanity check status for debug msg on conn drop
  • clients/upsmon.c: print last remembered line state in connection drop debug msg

2.352. 2023-10-24 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/apcsmart-old.c: do_capabilities(): revert to behavior like in NUT v2.7.4 about invalid nument/entlen value(s) [#1941]
  • Jenkinsfile-dynamatrix: leave "enableDebugTraceGithubStatusHighlights=true" default just for fightwarn-like branches

2.353. 2023-10-23 desertwitch <24509509+desertwitch@users.noreply.github.com>

  • clients/upsmon.c: keep last UPS linestate on drop_connection

2.354. 2023-10-21 Jim Klimov <jimklimov+nut@gmail.com>

  • Jenkinsfile-dynamatrix: add a dynamatrixGlobalState.enableDebugTraceGithubStatusHighlights toggle

2.355. 2023-10-21 Axel Gembe <axel@gembe.net>

  • drivers/apc_modbus.c: apc_modbus: Add an early exit if a USB regex is non-zero A minuscule optimization.
  • drivers/apc_modbus.c: apc_modbus: Use snprintf instead of strncpy strncpy does not necessarily zero terminate the buffer so we replace it with snprintf and add error checking. This also fixes an off-by-one in the snprintf error checking of the _apc_modbus_double_to_nut and _apc_modbus_power_to_nut functions and adds error checking to every snprintf call.
  • drivers/apc_modbus.c, drivers/apcsmart.c, drivers/belkinunv.c, drivers/openups-hid.c, drivers/optiups.c, drivers/tripplitesu.c, include/common.h, tests/getvaluetest.c: Add SIZEOF_ARRAY macro and use where applicable This adds a new SIZEOF_ARRAY to common.h and changes some code to use it.

2.356. 2023-10-19 Jim Klimov <jimklimov+nut@gmail.com>

  • .gitignore: GitIgnore .ci*.txt* if some are left over in the NUT CI farm work area
  • .gitignore: GitIgnore .ci*.txt* if some are left over in the NUT CI farm work area
  • tests/NIT/nit.sh: avoid printing "Error:…" in successful cases This confuses CI log analyzer

2.357. 2023-10-18 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/NIT/nit.sh: testcase_sandbox_nutscanner_list(): fix reporting
  • report why a test case failed sanity-checks; * avoid grep output spilling to test log to avoid confusion; * revise that exactly expected port count was seen (that was the confusion); * use log_*() in that sanity-check block
  • tests/NIT/nit.sh: tag more progress messages with respective testcase; revise upsd stopping after testcase_upsd_allow_no_device()
  • tests/NIT/nit.sh: use log_separator() before sandbox_forget_configs() in testgroup*()
  • tests/NIT/nit.sh: use NUT_DEBUG_PID envvar to help test-log readability
  • NEWS.adoc, UPGRADING.adoc, common/common.c: common/common.c: optionally support NUT_DEBUG_PID envvar presence to include PID number in debug-level identifiers
  • tests/NIT/nit.sh: sandbox_start_drivers(): report success or failure
  • tests/NIT/nit.sh: report driver PIDs when debugging
  • tests/NIT/nit.sh: tag progress/report messages emitted by test cases to help log readability
  • tests/NIT/nit.sh: testcase_sandbox_start_drivers_after_upsd(): fix matching expression and explain why
  • tests/NIT/nit.sh: testcase_sandbox_start_drivers_after_upsd(): bump timeout and explain why
  • tests/NIT/nit.sh: better filter the processes we look at after sandbox_start_drivers() if debugging
  • drivers/dummy-ups.c: bump © and version due to recent changes
  • drivers/dummy-ups.c: avoid blank line in debug logs
  • drivers/dummy-ups.c: refactor prepare_filepath() into one helper method
  • drivers/dummy-ups.c: use better-qualified "fn" rather than potentially short "device_path" to stat the paths
  • drivers/dummy-ups.c: clarify that "upsfd" is not really used in file-based dummy-ups; check for invalid FD for good measure (to avoid fstat() on that)
  • drivers/dummy-ups.c: reconcile method prototype with implem
  • drivers/dummy-ups.c: clarify a nested if/elif/… tree
  • drivers/dummy-ups.c: clarify some debug messages
  • configure.ac: relax the check warning for gmtime_[rs] and localtime_[rs] As long as we have one, it is okay Closes: #2115
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: handle service dependencies for apc_modbus [#139, #2063]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: update a comment
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: revise service dependencies for apcupsd-ups relay driver
  • NEWS.adoc: announce the new apc_modbus driver [#139, #2063]

2.358. 2023-10-18 Axel Gembe <axel@gembe.net>

  • tools/nut-usbinfo.pl: nut_usbinfo.pl: Lowercase the USB ids before inserting If we don’t normalize the case before inserting VID/PID/Driver into $vendor we can have duplicate entries.

2.359. 2023-10-17 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/libusb1.c: nut_libusb_open(): do not keep Bus/Device/BusPort pointers to random malloc() block if we did not get a number to print there from libusb Avoid (un-)pretty prints like: 0.031364 [D2] - Bus: 006 0.031366 [D2] - Bus Port: ▒UV▒▒U 0.031368 [D2] - Device: 001

2.360. 2023-10-16 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upsmon.c: clients/upsmon.{c,h}: refactor restoring pollfreq (from alert to normal) [#2108]
  • clients/upsmon.c, clients/upsmon.h: clients/upsmon.{c,h}: untie OFF/BYPASS states from ONLINE/ONBATT and linestate attr [#2108]
  • data/cmdvartab: define descriptions for recently added commands and variables [#2112]
  • m4/ax_run_or_link_ifelse.m4: revise to only impose gcc/clang warning option requirements into compilers that identify as GCC or CLANG [#2096 fallout]
  • m4/ax_run_or_link_ifelse.m4: C+\+ does not support -Werror=implicit-function-declaration [#2109, #2096 fallout]
  • include/str.h, m4/ax_c_pragmas.m4, tests/Makefile.am: Refactor uses of HAVE_PRINTF_STRING_NULL vs. REQUIRE_NUT_STRARG for printf("%s", NULL) support [#2109]
  • m4/ax_c_pragmas.m4, configure.ac: merge two tests for printf("%s", NULL) [#2109]
  • m4/ax_c_pragmas.m4: extend AX_C_PRINTF_STRING_NULL with use of AX_RUN_OR_LINK_IFELSE option to ignore certain warnings [#2109]
  • configure.ac: fix logged output of inet_pton() test
  • m4/ax_run_or_link_ifelse.m4: extend with options to customize CFLAGS and CXXFLAGS [#2109]
  • drivers/usbhid-ups.c, docs/man/usbhid-ups.txt, NEWS.adoc: introduce onlinedischarge_calibration config option [#2104]

2.361. 2023-10-15 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: Update NEWS.adoc: clarify wording
  • clients/upsmon.c: revise is_ups_critical() with OFF, BYPASS and CAL considerations [#2104]
  • clients/upsmon.c: reword a message for critically lost primary UPS
  • NEWS.adoc, clients/upsmon.c, clients/upsmon.h, conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt, docs/nut.dict: clients/upsmon.c et al: introduce OFFDURATION config toggle [#2104]
  • drivers/usbhid-ups.c: set CAL status before reporting other possibly critical power states [#2104, #2044, fallout of #2055]

2.362. 2023-10-13 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/sms_ser.txt: update some wording
  • NEWS.adoc: sms_ser introduced [#2090]

2.363. 2023-10-12 Jim Klimov <jimklimov@gmail.com>

  • drivers/tripplite_usb.c: avoid varname shadowing
  • drivers/sms_ser.c: use explicit void in function prototypes
  • NEWS.adoc: tripplite_usb allows upsid setting [#2075]
  • drivers/tripplite_usb.c: cosmetic fixes (whitespace)

2.364. 2023-10-11 sapireli <114778791+sapireli@users.noreply.github.com>

  • drivers/tripplite_usb.c: @jimklimov my apologies please dont kill me for closing the pull request just saw your typo fix on the old one implemented it here.
  • docs/man/tripplite_usb.txt, docs/nut.dict, drivers/tripplite_usb.c: @jimklimov my apologies i royally screwed up the pull request with a rebase. I just started a new to have a clean slate scnario. also added the NUT_UNUSED_VARIABLE per your recommendation. tripplite_usb.c Added UPS ID (upsid) Support: The code now includes support for matching and uniquely identifying UPS devices using the UPS ID (upsid). The upsid configuration option has been added, which accepts a regular expression to match the UPS ID string. This was done by adding a new function called match_by_unitid, that reads the upsid from the config file, then reads the upsid from the device, and checks if they match. This function is now passed to the comm_driver matcher on first connect and reconnects. Added the upsid to the upsdrv_makevartable function so it is read and stored from the config file. tripplite_usb.txt Updated Documentation: The driver documentation was updated to reflect the new functionality. The "EXTRA ARGUMENTS" section now includes information about the upsid configuration option, and how to set it. thank you to @jimklimov for pointing me in the right direction and hand holding.

2.365. 2023-10-11 Jim Klimov <jimklimov+nut@gmail.com>

  • Jenkinsfile-dynamatrix: enable @Library(jenkins-dynamatrix@) notation for custom-built plugin on NUT CI farm

2.366. 2023-10-10 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upsclient.c, server/netssl.c, m4/ax_c_pragmas.m4: hush -Wcast-function-type-strict due to void* vs. practical pointers with NSS method pointers [#2084]
  • tests/generic_gpio_utest.c: cosmetic fixes
  • tests/generic_gpio_utest.c: avoid "error: variable might be clobbered by longjmp or vfork" [#2092]
  • data/driver.list.in: add CP1350PFCLCD
  • tests/Makefile.am: refer to nutlogtest$(EXEEXT) for clarity in dependencies

2.367. 2023-10-10 Clappier, Eric <EricClappier@eaton.com>

  • drivers/compaq-mib.c: Fix issues in compaq mib

2.368. 2023-10-09 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/nutlogtest.c: revise include statements

2.369. 2023-10-08 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: Update nut.dict for PR #2090

2.370. 2023-10-08 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c: follow TOCTOU analysis suggestions about file permissions check and enforcement
  • Jenkinsfile-dynamatrix: hush down groovy debug verbosity, use BRANCH_NAME patterns as the default toggle to be loud and slow

2.371. 2023-10-08 Alex W Baulé <alexwbaule@gmail.com>

  • docs/man/Makefile.am, docs/man/sms_ser.txt: Add man file and update Makefile.am

2.372. 2023-10-07 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/generic_gpio_utest.c: avoid NULL deref in printf() on some platforms
  • Jenkinsfile-dynamatrix: warn about lack of dynacfgPipeline.configureEnvvars when we "Investigate envvars"
  • drivers/sms_ser.h: drivers/sms_ser.c: fix use of methods without a prototype - expose in header
  • drivers/sms_ser.c: Revert "drivers/sms_ser.c: fix use of methods without a prototype - make them static" This reverts commit 8de11079a80754af38ad67524009003028a6912e to try a different approach.
  • drivers/sms_ser.c: fix use of methods without a prototype - make them static
  • drivers/sms_ser.c: fix mixing of "unsigned int" and "long" delays
  • drivers/sms_ser.c: fix printf(ssize_t)
  • drivers/Makefile.am: "dist" the new sms_ser.h header

2.373. 2023-10-06 Jim Klimov <jimklimov@gmail.com>

  • NEWS.adoc: optiups fixes [#2089]

2.374. 2023-10-06 Jim Klimov <jimklimov+nut@gmail.com>

  • Jenkinsfile-dynamatrix: enable tracing for fightwarn branches
  • tests/generic_gpio_utest.c: more fscanf() width warnings

2.375. 2023-10-05 moonbuggy <3319867+moonbuggy@users.noreply.github.com>

  • drivers/optiups.c: use str_to_short() instead of atoi()
  • drivers/optiups.c: use short instead of long/float
  • data/driver.list.in: updated driver.list.in

2.376. 2023-10-05 Jim Klimov <jimklimov@gmail.com>

  • drivers/optiups.c: Shuffle lines to keep declarations before operations

2.377. 2023-10-05 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/Makefile.am: bail out of spellcheck of empty SPELLCHECK_SRC_ONE filenames Sometimes we get this: Makefile:1216: update target asciidoc-vars.conf due to: asciidoc-vars.conf-spellchecked rm -f "asciidoc-vars.conf" |\| true ; \ echo " ASPELL Spell checking on ./"; \ … touch "asciidoc-vars.conf" ASPELL Spell checking on ./ sed: read error on stdin: Is a directory Only seen for "asciidoc-vars.conf" so far: :; git checkout -f ; touch docs/asciidoc-vars.conf ; make spellcheck ; clear ; make dist -j 20 --trace V=1
  • docs/man/Makefile.am: fix EXTRA_DIST of driver man page sources even if the build was configured for just some subset of drivers [#2081]
  • drivers/apcupsd-ups.c: use detected availability of struct pollfd to define or not the fallback
  • configure.ac: detect availability of struct pollfd
  • m4/ax_run_or_link_ifelse.m4: make more effort to detect undefined-ness of methods
  • include/wincompat.h: comment correct portable arg type for inet_ntop()

2.378. 2023-10-04 moonbuggy <3319867+moonbuggy@users.noreply.github.com>

  • drivers/optiups.c: correct voltages for Opti-UPS 230V AC models; correct battery capacity for 24V models

2.379. 2023-10-04 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: upsnotify(): make first/only notification faults visible They can be important for troubleshooting, e.g. services that rely on sd_notify() but never get the READY message would loop in restarts.
  • clients/Makefile.am: refactor definitions of LDADD_FULL and LDADD_CLIENT for easier reuse upsmon is a daemon with systemd notify among other things, and uses the full libcommon upssched should suffice with the client version
  • docs/configure.txt, docs/nut.dict: docs/configure.txt: document --libexecdir
  • scripts/systemd/nutshutdown.in: also log critical progress messages to /dev/console if available (and not-quiet mode)

2.380. 2023-10-04 Axel Gembe <axel@gembe.net>

  • configure.ac: Fix out of source tree builds The code to detect the available drivers does so by parsing Makefile.am but it does not do so relative to "$srcdir" so trying to do a configure outside of the source directory will fail.

2.381. 2023-10-04 Alex W Baulé <alexwbaule@gmail.com>

  • docs/sms-brazil-protocol.txt, drivers/Makefile.am, drivers/sms_ser.c, drivers/sms_ser.h: add support to SMS 1phase brazil from #1987 Tested on Nobreak SMS PREMIUM 1500 VA (with WiFi) and M3 Senoidal.

2.382. 2023-10-03 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/apcupsd-ups.c: port bits of poll.h to have this buildable on older WIN32
  • common/wincompat.c, configure.ac, include/wincompat.h, tools/nut-scanner/scan_xml_http.c: Add a fallback inet_ntop() implementation Needed for tools/nut-scanner/scan_xml_http.c on MinGW cross-builds
  • drivers/clone.c: fix casting warnings
  • drivers/upsdrvquery.c: fix casting warnings
  • drivers/main.c: fix cmdret=upsdrvquery_oneshot() as a generally ssize_t value
  • drivers/main.c: fix indentation
  • drivers/main.c: fix portability of chown() used as chgrp() Initial implementation passed -1 as uid to have it not changed. Not all OSes support that behavior.
  • drivers/dummy-ups.c: fix casting warnings
  • clients/upssched.c: fix casting warnings
  • common/common.c: fix casting warnings
  • tests/generic_gpio_utest.c: fix warnings about formatting strings
  • docs/nut.dict: update for nut-website additions

2.383. 2023-10-02 Jim Klimov <jimklimov+nut@gmail.com>

  • Jenkinsfile-dynamatrix: default a MAKE=make envvar if somehow missing (strange bug for autotools build scenarios)
  • Jenkinsfile-dynamatrix: default a MAKE=make envvar if somehow missing (strange bug for autotools build scenarios)
  • docs/Makefile.am: avoid defining "check-local" target twice to include optional "spellcheck", not all tools like that [#2081]
  • scripts/systemd/nutshutdown.in: simplify with sourcing of the optional config file
  • scripts/systemd/nutshutdown.in: make it useful for NUT clients (which shut down and may want to avoid power races)
  • tests/generic_gpio_liblocal.c, tests/generic_gpio_utest.c: tests/generic_gpio_*.c: fix clang warnings [#823]
  • drivers/snmp-ups.c: fix the dangling pointer warning some compilers have found [#823]

2.384. 2023-10-01 Jim Klimov <jimklimov+nut@gmail.com>

  • conf/nut.conf.sample, docs/man/nut.conf.txt, docs/nut.dict, scripts/systemd/nutshutdown.in: Introduce POWEROFF_QUIET for nutshutdown et al
  • docs/man/nut.conf.txt: document ALLOW_NO_DEVICE setting
  • conf/nut.conf.sample: document other options currently highlighted in the man page
  • conf/nut.conf.sample: fixup! conf/nut.conf.sample: update existing comments
  • conf/nut.conf.sample: refer to man nut.conf for more info
  • conf/nut.conf.sample: update existing comments
  • scripts/systemd/nutshutdown.in: update indentations and comments
  • scripts/systemd/nutshutdown.in: fixup! scripts/systemd/nutshutdown.in: add copyright header, update practical comments
  • configure.ac, scripts/systemd/nut-driver-enumerator.path.in, scripts/systemd/nut-driver-enumerator.service.in, scripts/systemd/nut-driver.target, scripts/systemd/nut-driver@.service.in, scripts/systemd/nut-monitor.service.in, scripts/systemd/nut-server.service.in, scripts/systemd/nut.target: scripts/systemd/*.in: add short copyright header to unit files
  • scripts/systemd/nutshutdown.in: add copyright header, update practical comments

2.385. 2023-09-30 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: nut_prepare_search_paths(): use realpath() where available, and so xstrdup()/free() in general [#317]
  • NEWS.adoc, common/common.c, include/common.h, tools/nut-scanner/Makefile.am, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-init.c: common, nut-scanner: Introduce nut_prepare_search_paths() to pre-filter the usable set [#317]
  • tools/nut-scanner/nutscan-ip.c: WIN32 builds require WSAStartup() before getaddrinfo() et al
  • tools/nut-scanner/nutscan-ip.c: trace getaddrinfo() failures
  • tests/NIT/nit.sh: consider an empty output of nut-scanner an error (to retry from one mode to another)
  • tools/nut-scanner/nut-scanner.c: typo (lacking newline) in an usage message
  • NEWS.adoc, common/common.c: common/common.c: vupslogx(): dynamically adjust the needed buffer size for longer printouts, e.g. PATH in upsdebugx_report_search_paths() [#317]
  • common/common.c: vupslog(): stash errno value at start of method, so later calls do not corrupt what we want to report; fix declarations-on-top for windows builds
  • common/common.c: fix get_libname_in_pathset() increment of checked-directory counter Be sure to bump the number, not the pointer!
  • common/common.c: fix get_libname_in_pathset() mutilating the input pathset string It was unexpected to see just one entry in getenv("PATH") after the first loop…
  • configure.ac, common/common.c: search_paths[]: introduce MULTIARCH_TARGET_ALIAS as/if suggested by compiler [#317]
  • common/common.c: vupslog(): print timestamp\+buf in one operation
  • common/common.c: extend upsdebugx_report_search_paths() to follow actual search order of get_libname() with more locations possibly checked [#317]
  • common/common.c: comment about peculiarities of search_paths[] contents [#317]
  • NEWS.adoc, UPGRADING.adoc, tools/nut-scanner/Makefile.am, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-init.c: nut-scanner: use upsdebugx_report_search_paths() [#317] Also bumps public API version of libnutscan due to added symbol.
  • common/common.c, include/common.h: common.{c,h}: introduce upsdebugx_report_search_paths() [#317]
  • data/driver.list.in: leave a note about Riello Netman "not-plus" SNMP card naming [#1878]

2.386. 2023-09-30 Axel Gembe <axel@gembe.net>

  • AUTHORS, data/driver.list.in, docs/man/Makefile.am, docs/man/apc_modbus.txt, docs/nut.dict, drivers/Makefile.am, drivers/apc_modbus.c, m4/nut_check_libmodbus.m4, tools/nut-usbinfo.pl: apc_modbus: Support for APC Modbus protocol This adds a new driver called apc_modbus to support the APC Modbus protocol over serial ports, TCP connections and USB ports. For USB support to work it needs a [patched libmodbus that has support for the APC USB Modbus encapsulation](https://github.com/EchterAgo/libmodbus/commits/rtu_usb). If a libmodbus without USB support is detected the driver will build with just the serial and TCP/IP support.

2.387. 2023-09-21 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut-names.txt: clarify that the tables of short SPEC names is just a component in longer phase-aware naming scheme
  • docs/nut-names.txt: add a section to define and discuss Structured naming
  • ci_build.sh: only impose GNU make as default if spellchecking via script

2.388. 2023-09-20 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: update dictionary for nut-website changes

2.389. 2023-09-20 Jim Klimov <jimklimov+nut@gmail.com>

  • ci_build.sh: define MAKE=… fallback default in one place
  • ci_build.sh: --disable-spellcheck in many default BUILD_TYPE=… scenarios geared towards binary builds and checks (do not waste time on aspell in matrix checking loops) [#2065]
  • ci_build.sh: make sure our MAKE envvar is defined and not empty - in all cases [jenkins-dynamatrix#24]

2.390. 2023-09-19 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/usb-common.c: make sure to have settings like HAVE_LIBREGEX visible when processing other headers [#1369]
  • drivers/usbhid-ups.c: fix visibility of vars used only in builds with HAVE_LIBREGEX [#1369]
  • docs/developers.txt, docs/nut.dict: clarify that NUT_UNUSED_VARIABLE goes after variable declarations, add chapter headings, revise some text [#2056]
  • docs/Makefile.am: fix ChangeLog.adoc preparation for OpenBSD make [#1953]
  • conf/Makefile.am, data/Makefile.am, docs/Makefile.am, docs/man/Makefile.am: */Makefile.am: spellcheck targets: differentiate SPELLCHECK_SRCDIR vs. SPELLCHECK_BUILDDIR [#2067]
  • docs/Makefile.am: EXTRA_DIST asciidoc-vars.conf [#1953]
  • Makefile.am: Introduce LICENSE-DCO into the source codebase [#1994]
  • configure.ac: configure: fix handling of --enable-cppcheck
  • NEWS.adoc, UPGRADING.adoc, configure.ac, docs/Makefile.am, docs/configure.txt: configure.ac: introduce --enable-spellcheck to have it as part of "make check" where available [#2067]
  • configure.ac, m4/nut_check_asciidoc.m4, m4/nut_check_aspell.m4: externalize detection of aspell tool and ability
  • m4/nut_check_asciidoc.m4: consider a separate ASPELL_FILTER_SHARE_PATH [#2065]
  • appveyor.yml: enable spellchecks [#2065]
  • m4/nut_check_asciidoc.m4: if there is no "tex.amf", do not yield a useless ASPELL_FILTER_TEX_PATH (e.g. ".") [#2065]
  • docs/man/nut_usb_addvars.txt, docs/nut.dict: docs/man/nut_usb_addvars.txt: clarify where "busport" can be verified in the OS [#2043]
  • m4/nut_check_asciidoc.m4, docs/Makefile.am: cater to different ways of packaging aspell with ASPELL_FILTER_TEX_PATH [#2065]

2.391. 2023-09-18 Jim Klimov <jimklimov@gmail.com>

  • drivers/Makefile.am: Update Makefile.am Steamline use of LIBREGEX_CFLAGS via AM_CFLAGS, same as others.
  • tools/nut-scanner/nutscan-display.c: fix report for "same serial in different devices"
  • tools/nut-scanner/nutscan-display.c: do not drop out after the first (non-NULL) report, let all complaints be known
  • tools/nut-scanner/nutscan-display.c: report trailing blanks in serial numbers
  • configure.ac: hush down some more clang "-Wextra" or "-Weverything" warnings that we can not really address [#2055, #823]
  • docs/nut.dict: Update with words missing in some platform default dictionaries
  • NEWS.adoc, drivers/ever-hid.c: drivers/ever-hid.c: fix "powerfactor" without a namespace

2.392. 2023-09-18 Jim Klimov <jimklimov+nut@gmail.com>

  • .gitignore: GitIgnore leftover conf1234.file patterns
  • m4/nut_check_asciidoc.m4, docs/Makefile.am: detect and use ASPELL_FILTER_PATH where available Thanks to https://github.com/msys2/MSYS2-packages/issues/2088 for hints
  • drivers/nutdrv_qx.c, docs/man/nutdrv_qx.txt: list available "protocol" setting values in command-line usage request (--help) [#1369]
  • drivers/usbhid-ups.c, docs/man/usbhid-ups.txt: list available "subdriver" setting values in command-line usage request (--help) [#1369]
  • docs/man/nutdrv_qx.txt, docs/man/usbhid-ups.txt: update man page notes about subdriver settings [#1369]
  • m4/nut_check_libregex.m4: avoid using cached reply for the absent library name, when checking for -lregex
  • ci_build.sh: introduce initial clean-up shortcut (used if recipes change)
  • .gitattributes: make sure docs/nut.dict is always LF (no CR)

2.393. 2023-09-17 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/usbhid-ups.c: match_function_subdriver_name(): require (or recommend) vendorid/productid [#1369]
  • drivers/usbhid-ups.c: match_function_subdriver_name(): report the name of found USB HID subdriver [#1369]
  • drivers/usbhid-ups.c: match_function_subdriver_name(): automate use of regex "somename.*" [#1369]
  • NEWS.adoc, docs/man/usbhid-ups.txt, drivers/usbhid-ups.c: drivers/usbhid-ups.c: implement match_function_subdriver_name() for "subdriver" matching option; update docs about it [#1369]
  • clients/Makefile.am: build clients against libcommonclient.la (fewer link and run-time deps pulled), not libcommon.la
  • common/Makefile.am, common/common.c, drivers/usb-common.c, include/common.h: common.{c,h}: move here general REGEX helper methods from drivers/usb-common.{c,h} [#1369]
  • configure.ac, drivers/Makefile.am, m4/nut_check_libregex.m4, m4/nut_check_libusb.m4: m4/nut_check_libregex.m4: move detection from m4/nut_check_libusb.m4; adapt configure.ac and */Makefile.am accordingly
  • NEWS.adoc, clients/cgilib.c, clients/upsclient.c, clients/upslog.c, clients/upsmon.c, clients/upsset.c, common/common.c, drivers/adelsystem_cbi.c, drivers/al175.c, drivers/bcmxcp.c, drivers/bcmxcp_ser.c, drivers/bestuferrups.c, drivers/blazer_usb.c, drivers/dstate.c, drivers/eaton-pdu-marlin-mib.c, drivers/ever-hid.c, drivers/generic_modbus.c, drivers/hidparser.c, drivers/hpe-pdu-mib.c, drivers/libusb0.c, drivers/mge-hid.c, drivers/mge-utalk.c, drivers/mge-xml.c, drivers/netxml-ups.c, drivers/nut-libfreeipmi.c, drivers/nutdrv_atcl_usb.c, drivers/nutdrv_qx.c, drivers/nutdrv_qx_ablerex.c, drivers/nutdrv_qx_bestups.c, drivers/nutdrv_qx_masterguard.c, drivers/nutdrv_siemens_sitop.c, drivers/phoenixcontact_modbus.c, drivers/pijuice.c, drivers/richcomm_usb.c, drivers/riello.c, drivers/riello_ser.c, drivers/riello_usb.c, drivers/snmp-ups.c, drivers/socomec_jbus.c, drivers/solis.c, drivers/tripplite.c, drivers/tripplite_usb.c, drivers/tripplitesu.c, drivers/upsdrvctl.c, drivers/upsdrvquery.c, server/netssl.c, server/upsd.c, tests/getvaluetest.c, tests/nuttimetest.c, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-device.c, tools/nut-scanner/nutscan-init.c, tools/nut-scanner/nutscan-ip.c, tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_usb.c, tools/nut-scanner/scan_xml_http.c: Fightwarn: numerous complaints from clang-15 [#823] Surprised that so many of these were not found sooner. Almost all fall into a few simple categories: * method(void) declared without a "void" * declarations after code NUT_UNUSED_VARIABLE() is code scoping in switch() cases * a few smartly detected unused variables ⇒ added reasonable use-cases (logging or better)
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: detect USB drivers by "busport" among config options [#2043]
  • scripts/augeas/nutupsmonconf.aug.in: update for new notification types [#2044 and before]

2.394. 2023-09-16 Jim Klimov <jimklimov+nut@gmail.com>

  • conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt, docs/man/upsmon.txt, docs/nut.dict: upsmon(.conf) docs and samples

    • update for new notification types [#2044 and before]
  • NEWS.adoc: upsmon now handles OFF and BYPASS states [#2044]
  • clients/upsmon.c, clients/upsmon.h: clients/upsmon.{c,h}: enhance with support of OFF and BYPASS state reporting (entry/exit) [#2044]
  • clients/upsmon.c, clients/upsmon.h: upsmon: add support for administrative "OFF" state [#2044] Based on patch by "Bomorav" posted at https://github.com/networkupstools/nut/issues/2044#issuecomment-1720752199
  • drivers/usbhid-ups.c: initialize BusPort where used [#2043]
  • drivers/libshut.h: update with formal support of "busport" (no-op for serial mode) [#2043]
  • tools/nut-scanner/scan_usb.c: add support for "busport" discovery where possible [#2043]
  • drivers/blazer_usb.c, drivers/libshut.c, drivers/libusb0.c, drivers/libusb1.c, drivers/nutdrv_qx.c, drivers/riello_usb.c, drivers/tripplite_usb.c, drivers/usb-common.c, drivers/usb-common.h, drivers/usbhid-ups.c: USB driver: adjust to WITH_USB_BUSPORT normally being always defined, just not always active [#2043]
  • m4/nut_check_libusb.m4: detect if we can support "busport" USB matching value [#2043]
  • docs/man/nut_usb_addvars.txt: fix markup for a NOTE about "device" value
  • docs/man/nut_usb_addvars.txt: add "busport" info [#2043]
  • docs/man/nut_usb_addvars.txt: fix typo about Linux path to usb device info
  • NEWS.adoc, docs/nut.dict: NEWS.adoc: document the addition of "busport" config option [#2043]
  • drivers/libusb0.c: use logging for bus port consistent with other USB-related libs [#2043]
  • drivers/libshut.c: avoid potential small memory leak
  • drivers/libshut.c: update with formal support of "busport" (no-op for serial mode) [#2043]
  • drivers/usb-common.c: constrain regex_matcher_data_t array size to USBMATCHER_REGEXP_ARRAY_LIMIT too (not a hardcoded number like before) [#2043]
  • drivers/blazer_usb.c, drivers/libusb0.c, drivers/libusb1.c, drivers/nutdrv_qx.c, drivers/riello_usb.c, drivers/tripplite_usb.c, drivers/usbhid-ups.c: USB drivers: bump versions due to new "busport" config option support; free the variables in order of definition (ease maintenance) [#2043]
  • drivers/blazer_usb.c, drivers/nutdrv_qx.c, drivers/riello_usb.c, drivers/usbhid-ups.c: USB drivers: warn if "busport" is configured but will be ignored by current build [#2043]
  • drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c: allow configuring "busport" in ups.conf always, just note it may be ignored in certain builds [#2043]
  • drivers/libusb1.c: allow configuring "busport" always, just note it may be ignored in certain builds [#2043]
  • drivers/libusb0.c: log a notice that BusPort==0 for libusb0 [#2043]
  • drivers/blazer_usb.c, drivers/libusb1.c, drivers/nutdrv_qx.c: Revise "ifdef" indentations
  • drivers/blazer_usb.c, drivers/nutdrv_qx.c, drivers/riello_usb.c, drivers/tripplite_usb.c, drivers/usb-common.c, drivers/usb-common.h, drivers/usbhid-ups.c: Rename REGEXP_ARRAY_LIMIT⇒USBMATCHER_REGEXP_ARRAY_LIMIT [#2043]
  • common/common.c: extend xstrdup() definition to return NULL if input was NULL (and log it) [#2052]
  • common/common.c: Revert "common/common.c: extend xbasename(), xstrdup() and xrealloc() definition to return NULL if input was NULL (and log it) [#2052]" This reverts commit 05610d1564c9ea75d7e10780e2c0f8973e5795ab. Seems to cause segfaults on its own, maybe something relied on older behavior (non-NULLs returned in case of bad inputs?) To investigate separately later…

2.395. 2023-09-15 fa <wavebvg@gmail.com>

  • drivers/blazer_usb.c, drivers/libusb0.c, drivers/libusb1.c, drivers/nutdrv_qx.c, drivers/riello_usb.c, drivers/tripplite_usb.c, drivers/usb-common.c, drivers/usb-common.h, drivers/usbhid-ups.c: Update blazer_usb.c, libusb0.c, and 7 more files…

2.396. 2023-09-14 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upsclient.c: upscli_splitname(): add explicit checks for empty upsname and/or hostname[:port] parts, to report problems as such [#2052]
  • NEWS.adoc: update for issue #2052 fix
  • clients/upsclient.c: fix strdup()⇒xstrdup() to not segfault with bad inputs [#2052]
  • common/common.c: extend xbasename(), xstrdup() and xrealloc() definition to return NULL if input was NULL (and log it) [#2052]
  • docs/developers.txt: update links for SVN to Git migrations Thanks for Tomas Laurinavicius <tomas@saas.group> for the suggestion.

2.397. 2023-09-13 Jim Klimov <jimklimov@gmail.com>

  • UPGRADING.adoc: Update UPGRADING.adoc

2.398. 2023-09-13 Jim Klimov <jimklimov+nut@gmail.com>

  • Makefile.am, docs/Makefile.am: ensure clean-up of (now-)generated README file
  • UPGRADING.adoc: highlight changes to documentation source and delivered filenames [#1953]
  • README.adoc: Update NUT documentation sources with current docs/asciidoc-vars.conf: 7c5e90132 (2023-09-13)
  • docs/asciidoc-vars.conf: fence against re-definitions of website-url and (top_)(src\|build)dir attributes
  • docs/asciidoc-vars.conf: fence against duplicate includes
  • README.adoc: Update NUT documentation sources with current docs/asciidoc-vars.conf: 36f4f0334 (2023-09-13)
  • docs/asciidoc-vars.conf: update maintenance and reasoning comments
  • README.adoc: fix xref values for user-manual generation
  • .gitignore: GitIgnore /.vscode
  • configure.ac: revert AM_INIT_AUTOMAKE foreign option (may disable "portability checks" per GNU docs)
  • README.adoc, docs/Makefile.am, docs/asciidoc-vars.conf, docs/nut.dict: docs/nut.dict: update for new docs/asciidoc-vars.conf contents
  • README.adoc: Update NUT documentation sources with current docs/asciidoc-vars.conf: 234b70422 (2023-09-13)
  • README.adoc, docs/asciidoc-vars.conf: docs/asciidoc-vars.conf: finish the file with newline
  • docs/asciidoc-vars.conf: refer to make maintainer-asciidocs
  • README.adoc: mangle with "make maintainer-asciidocs"
  • .gitignore, Makefile.am, docs/.gitignore: Makefile.am: introduce "make maintainer-asciidocs" recipe
  • docs/asciidoc-vars.conf: prepare for GH_MARKUP_1095 workarounds
  • README.adoc: prepare for GH_MARKUP_1095 workarounds
  • docs/asciidoc-vars.conf: Revert "docs/asciidoc-vars.conf: define our attributes in a different syntactic fashion" This reverts commit 300942904bef0921bba382103c9c4b96cc1c5f04.
  • docs/asciidoc-vars.conf: Revert "docs/asciidoc-vars.conf: add a debug NOTE" This reverts commit 07a39b950b40857c8d8e5c806551e1c40278d3bb.
  • README.adoc: refer to top_srcdir first, it WILL be defined after the include
  • docs/asciidoc-vars.conf: add a debug NOTE
  • docs/asciidoc-vars.conf: define our attributes in a different syntactic fashion
  • README.adoc: avoid a blank line between document header and include::docs/asciidoc-vars.conf
  • docs/asciidoc-vars.conf: reshuffle and make it a single block of markup as far as asciidoc is concerned
  • README.adoc: move renderer-dependent attribute definitions into includable docs/asciidoc-vars.conf
  • docs/asciidoc-vars.conf: add an includable asciidoc file with renderer-dependent attribute definitions
  • docs/ChangeLog.txt, docs/Makefile.am, docs/man/Makefile.am, docs/man/index.txt, docs/man/nutupsdrv.txt, docs/man/upsd.txt, docs/release-notes.txt, docs/user-manual.txt: docs: in asciidoc markup (and relevant Makefile rules) require that the trailing slash is part of (top_)srcdir and (top_)builddir attributes, so empty values are non-toxic
  • Makefile.am: separate EXTRA_DIST for *.adoc and other filename patterns [#1953]
  • docs/history.txt: add "Backwards and Forwards Compatibility" chapter evicted from README.adoc

2.399. 2023-09-12 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: add (Eaton) IPM
  • docs/Makefile.am: adjust for BSD make implementation
  • .gitignore: GitIgnore .adoc.tmp leftovers, if present [#1953] Probably meaning a broken build, though…
  • .gitignore: GitIgnore old NEWS file by name [#1953]
  • NEWS.adoc, UPGRADING.adoc, docs/Makefile.am, docs/release-notes.txt: docs/release-notes.txt: include UPGRADING as a chapter - it is also release-related info [#1953]

2.400. 2023-09-11 Jim Klimov <jimklimov@gmail.com>

  • NEWS.adoc: change asciidoc link tag
  • docs/nut.dict: Update nut.dict

2.401. 2023-09-11 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS.adoc: revise asciidoc markup for old-release entries [#1953]
  • NEWS.adoc: highlight documentation/recipe changes per #1953
  • docs/Makefile.am: specify "builddir" path to generated docinfo.xml, and just ship a copy [follow-up from #2046 and probably before]
  • docs/Makefile.am: do not refer to generatable "../*.adoc-parsed" files via hardcoded ".."
  • .gitignore, NEWS.adoc, docs/ChangeLog.txt, docs/Makefile.am, docs/documentation.txt, docs/release-notes.txt, docs/user-manual.txt: Introduce buildable (HTML/PDF) release-notes and ChangeLog documents [#1953]
  • .gitignore, Makefile.am, NEWS.adoc, docs/Makefile.am, docs/user-manual.txt: Use *.adoc-parsed extension for post-processed asciidoc files used in rendering to HTML/PDF artifacts [#1953]
  • Makefile.am, NEWS ⇒ NEWS.adoc, autogen.sh, docs/Makefile.am: Convert NEWS ⇒ NEWS.adoc (basic section structure) and render it as release-notes (HTML, PDF) [#1953]
  • docs/Makefile.am: implement DOCBUILD_FILTER_GITHUB_LINKS [#1953]
  • .editorconfig, .gitignore, INSTALL.nut ⇒ INSTALL.nut.adoc, Makefile.am, TODO ⇒ TODO.adoc, UPGRADING ⇒ UPGRADING.adoc, docs/Makefile.am, docs/developer-guide.txt, docs/nut.dict, docs/security.txt, docs/user-manual.txt, lib/.gitignore, lib/Makefile.am, lib/{README ⇒ README.adoc}, scripts/Makefile.am, scripts/augeas/.gitignore, scripts/augeas/Makefile.am, scripts/augeas/{README ⇒ README.adoc}, scripts/ufw/.gitignore, scripts/ufw/Makefile.am, scripts/ufw/{README ⇒ README.adoc}, tools/nut-scanner/.gitignore, tools/nut-scanner/Makefile.am, tools/nut-scanner/{README ⇒ README.adoc}: Rename asciidoc-ready documentation sources to *.adoc [#1953 et al] Follows up from #226, #669 and facilitates #1953
  • UPGRADING: suggest --enable-option-checking=fatal for packagers
  • docs/docinfo.xml.in: populate remaining "refremark" fields up to (prospective) NUT v2.8.1 release [#2046]
  • docs/docinfo.xml.in, docs/docinfo.xml.sh: Revert "docs/docinfo.xml.sh: reference the NEWS file (GitHub URL for interactive PDFs) [#2046]" This reverts commit fa8721d98ee3031daed234d50643074e65a9c3a1 and changes for docinfo.xml.in applying it. Referencing the NEWS files for each release proved problematic: the revremark tag does not expect nested tags (like <a href> or even <p>).
  • docs/docinfo.xml.in: populate "refremark" fields [#2046]
  • docs/docinfo.xml.sh: reference the NEWS file (GitHub URL for interactive PDFs) [#2046]

2.402. 2023-09-10 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/docinfo.xml.in: update to list releases 2.6.1-2.8.0 missed before [#2046] First use of docinfo.xml.sh - looks decent
  • docs/.gitignore, docs/Makefile.am, docs/docinfo.xml.in, docs/docinfo.xml.sh, docs/maintainer-guide.txt: Introduce docs/docinfo.xml.sh to help maintain docinfo.xml.in (currently limited to ensuring presence of existing tags) [#2046]
  • tools/gitlog2changelog.py.in: bump ©
  • configure.ac, docs/docinfo.xml.in: use current NUT_SOURCE_GITREV for doc revision history if available
  • configure.ac: update comments
  • docs/docinfo.xml.in: update "current version (snapshot)" comment
  • docs/developer-guide.txt: update author list
  • docs/maintainer-guide.txt: update release procedure
  • docs/developers.txt, docs/nut.dict: docs/developers.txt: fix section-level warning, and add AppVeyor CI and CircleCI sections
  • docs/new-drivers.txt: cosmetix fix (indent)
  • docs/hid-subdrivers.txt, docs/nut.dict: docs/hid-subdrivers.txt: add a "screenshot" of rexx usage

2.403. 2023-09-07 Jim Klimov <jim@jimklimov.com>

  • drivers/cyberpower-mib.c: Update cyberpower-mib.c Bump version after #2041

2.404. 2023-09-06 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/cyberpower-mib.c: restore upsAdvanceControlUpsSleep as "shutdown.return" [follow-up from #2029]

2.405. 2023-09-05 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c: comment why we do not solve VAR_SENSITIVE for override/default right now [#1891]
  • NEWS: formatting fix
  • drivers/snmp-ups.c, NEWS: clearer messages for skipped mib2nut mappings New message example: 0.001836 [D2] load_mib2nut: skip the "tripplite" entry from the mapping table which is not "ietf" (and which in turn is not "auto")
  • drivers/snmp-ups.c: add a TODO for multi-MIB approach [#2036]
  • drivers/blazer.c: fix typo in comment

2.406. 2023-09-04 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/nutdrv_qx.c: dial back down the batt.volt.high guesstimation to 130/120 of the nominal (back from experimental 150/120) [#1652]

2.407. 2023-09-02 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/blazer_ser.c, drivers/blazer_usb.c, drivers/nutdrv_qx.c: drivers/blazer_{ser,usb}.c, drivers/nutdrv_qx.c: re-bump driver versions since master versions moved while the PR #1652 was queued

2.408. 2023-09-01 Jim Klimov <jimklimov+nut@gmail.com>

  • data/driver.list.in: Add APC SmartUPS 750 (SMT750I) reports [#1261]

2.409. 2023-08-31 Jim Klimov <jimklimov+nut@gmail.com>

  • data/driver.list.in: Add APC SmartUPS X 750 (USB) reports [#1261]
  • data/driver.list.in: Add APC SmartUPS SUA1000 (SNMP) reports [#1740]
  • data/driver.list.in: Add UltraMax 1000SC reports [nut#1634]
  • data/driver.list.in: Update PowerCool 1200 report nuances [#1539]
  • data/driver.list.in: Add UPSonic IRT-3K 2U [#441]
  • data/driver.list.in: Add Ippon Smart Power Pro II 1200/1600/… series [#701]

2.410. 2023-08-30 Ross Williams <ross@ross-williams.net>

  • drivers/cyberpower-mib.c: Revert "cyberpower-mib: fix instant command declarations" This reverts commit 8bcf255b624e6ba6c89a2a3eeab37658d9cb8cb4. Cyberpower snmp_info_t got updated to conform with pre 5d97d07 instant commands layout, but got merged after it. Reverting 8bcf255 so that command values are correctly in su_info_t->dfl.

2.411. 2023-08-30 Jim Klimov <jimklimov@gmail.com>

  • NEWS: fix for cyberpower-mib instcmd definitions [#2029]

2.412. 2023-08-30 Jim Klimov <jimklimov+nut@gmail.com>

  • data/driver.list.in: Update Riello SNMP HCL names (no vendor in model name usually)
  • data/driver.list.in: Update Riello SER/USB/SNMP HCL per vendor report [#1878]
  • data/driver.list.in: Add FSP Fortron UPS Champ 1000VA, 2000VA and 3000VA Towers [nut-ddl#22, nut#1691, nut#1741, nut#1872] Closes: #1691 Closes: #1741 Closes: #1872
  • data/driver.list.in: Add APC Smart-UPS 3000 [nut-ddl#24]

2.413. 2023-08-25 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/libshut.c: libshut_open(): calculate desc→wDescriptorLength differently (closer to what libusbX.c do and NUT v2.7.4 did); bump driver version [#2022]
  • drivers/libshut.c: libshut_open(): populate curDevice→Device to be on par with USB drivers (remember a copy of arg_device_path here)
  • drivers/libshut.c: libshut_open(): be sure that arg_device_path is not null
  • NEWS: fix for MGE SHUT broken by changes in 2.8.0 [#2022]
  • drivers/usbhid-ups.c: upsdrv_initups(): only report "Initializing an USB-connected UPS with library…" when not in SHUT_MODE [#2022]
  • drivers/libhid.c: HIDGetEvents(): be sure to not overflow sizeof(buf)
  • drivers/hidparser.h, drivers/libhid.c, drivers/libhid.h, drivers/mge-hid.c, drivers/usbhid-ups.c: Reword "#if(n)def SHUT_MODE" clauses, comment their "#else/#endif" parts [#2022]
  • drivers/hidparser.c, drivers/mge-hid.c, drivers/usbhid-ups.c: A few cosmetic fixes (typos, indents…)

2.414. 2023-08-17 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nutdrv_qx-subdrivers.txt, docs/nut.dict: fix some typos and update the dictionary [#2005]

2.415. 2023-08-14 Jim Klimov <jimklimov+nut@gmail.com>

  • server/upsd.c: setuptcp(): when informing about possible IPv6/IPv4 "ANY" address listener conflict, consult actual state in "canhaveAnyV6" and not the possibility via "serverAnyV6!=null" [#2013]
  • server/upsd.c: setuptcp(): update big comment about "LISTEN *" nuances to match current logic; drop GitHub reference [#2013 review for #2012]
  • configure.ac: explicitly check for inet_ntop() support along with both AF_INET and AF_INET6 (we have IPv4 and IPv6 capability everywhere, right?) [#2012]
  • NEWS, UPGRADING: finish full sentences with a period [#2012]
  • server/upsd.c: setuptcp(): drop the trickery to get IPv4 first just to see if we can, then release it, then get IPv6 and then IPv4 again [#2013 review for #2012]
  • server/upsd.c: setuptcp(): drop commented-away optional sleep() [#2012]
  • server/upsd.c: simplify LISTEN * handling to not fiddle with optionality of require_IPV6_V6ONLY for one use-case [#2013 review, #2012]

2.416. 2023-08-13 Tomasz Fortuna <bla@thera.be>

  • NEWS, docs/nut.dict, docs/nutdrv_qx-subdrivers.txt: drivers/nutdrv_qx.c: Add documentation file. Document various possible transmissions. Might be required to construct testcases one day - adding new UPS shouldn’t cause regressions in older ones.

2.417. 2023-08-13 Jim Klimov <jimklimov@gmail.com>

  • NEWS: cyberpower-mib.c supports more data points now [#1982]
  • drivers/cyberpower-mib.c: bump version for new entries

2.418. 2023-08-13 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS, UPGRADING, conf/upsd.conf.sample, docs/config-notes.txt, docs/man/upsd.conf.txt, docs/security.txt, scripts/augeas/nutupsdconf.aug.in: Revise doc changes about LISTEN
  • support per PR #2013 discussion Notably: * move from "would" to "will" verbiage; * specify IPv6 listening first, IPv4 next, as it goes in code; * lean towards trying to listen on two sockets separately always (unless the OS refuses to avoid IPv4-mapped IPv6 addressing).

2.419. 2023-08-12 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS, drivers/apcsmart-old.c, drivers/apcsmart.c: drivers/apcsmart(-old).c: do not abort on bad caps, skip them like before [#2015] Closes: #2015

2.420. 2023-08-08 Tomasz bla Fortuna <bla@thera.be>

  • drivers/nutdrv_qx.c: Support a quirk in Vultech V2000 UPS. This UPS seems to use null bytes within status bits. This might mean "unsupported". We will treat them as zeroes.

2.421. 2023-08-06 Craig Holyoak <craig@helmsdeep.org>

  • drivers/cyberpower-mib.c: Moved additional ups.status to ups.alarm

2.422. 2023-08-05 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS, UPGRADING, conf/upsd.conf.sample, docs/config-notes.txt, docs/man/upsd.conf.txt, docs/security.txt, scripts/augeas/nutupsdconf.aug.in, server/upsd.c: server/upsd.c and docs/config examples: handle "LISTEN *" deterministically (for both IPv4 and IPv6 if we can) [#2012]
  • server/upsd.c, NEWS, UPGRADING: setuptcp(): when asked to LISTEN on IPv6 addresses, try to disable IPv4-mapping support [#2012]
  • server/upsd.c: refactor server_free() with a new stype_free() [#2012]
  • server/upsd.c: setuptcp(): warn if we bound to one address for a name and end the loop while there seem to be more resolved addresses for it [#2012]
  • server/upsd.c: server_load(): log if defaulting to localhost (IPv4/IPv6) due to lack of LISTEN directive [#2012]
  • NEWS: typo fix
  • server/upsd.c, NEWS, UPGRADING: listen_add(): firstaddr should remain first [#2012]
  • drivers/nutdrv_qx.c: convert to ARMAC_READ_SIZE as a macro

2.423. 2023-08-04 Jim Klimov <jimklimov+nut@gmail.com>

  • common/state.c: in state_delinfo_olderthan() do upsdebugx(6,…) that we are deleting an entry because it is too old [#2007]
  • common/state.c: update comment for st_tree_node_compare_timestamp() [#2007]
  • drivers/apcupsd-ups.c: fix use of INVALID_FD_SOCK() macro over complex expression [#2007]
  • docs/Makefile.am: spellcheck LICENSE-DCO file [#1995 follow-up]
  • NEWS: move apcupsd fixes mis-placed into 2.8.0 notes block [#2007]
  • NEWS: announce support for state entry timestamping [#2010]
  • tests/.gitignore, tests/Makefile.am, tests/nuttimetest.c: Introduce nuttimetest (sanity-check difftime*() methods, etc.) [#2007, #1777]
  • configure.ac: fix broken test for clock_gettime(CLOCK_MONOTONIC,ts) [#1777 follow-up]
  • common/common.c: fix build scope for calls to timespec_load() and use of got_monoclock in upsnotify() [#1777 follow-up]
  • drivers/nutdrv_qx.c: cast signed/unsigned int comparison

2.424. 2023-08-03 Jim Klimov <jimklimov@gmail.com>

  • drivers/nutdrv_qx.c: Update drivers/nutdrv_qx.c Fix debug printout

2.425. 2023-08-03 Jim Klimov <jimklimov+nut@gmail.com>

  • common/state.c: initialize "lastset" in "state_setinfo()" when adding a new value
  • NEWS: use dstate_delinfo_olderthan() to clean up obsoleted readings AFTER refreshing data from apcupsd daemon [#2007]
  • drivers/apcupsd-ups.c: use dstate_delinfo_olderthan() to clean up obsoleted readings AFTER refreshing data from apcupsd daemon [#2007]
  • drivers/dstate.c, drivers/dstate.h: drivers/dstate.{c,h}: introduce dstate_delinfo_olderthan()
  • drivers/apcupsd-ups.c: refactor getdata() return code paths [#2007]
  • common/state.c, include/state.h: introduce state_delinfo_olderthan()
  • common/state.c, include/state.h: introduce st_tree_timespec_t and state_get_timestamp() and st_tree_node_compare_timestamp() to track age of state entries
  • common/common.c, include/common.h: introduce difftimespec() for completeness
  • common/common.c: clarify "nsec" as "numsec" (not "nanosec") in difftimeval()
  • NEWS: fix check for POLL_INTERVAL_MIN [#2007, #797 fallout]
  • NEWS: fix markup for "new devices" in 2.7.4
  • drivers/apcupsd-ups.c: fix check for POLL_INTERVAL_MIN [#2007, #797 fallout]
  • tools/nut-ddl-dump.sh: suggest posting the file to nut-ddl repo
  • tools/nut-ddl-dump.sh: update generated markup

2.426. 2023-08-02 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-ddl-dump.sh: generate the report with use of DEVICE:COMMENT: and DEVICE:COMMENT-BLOCK:FIXME:(UPSRW\|UPSCMD): sections (and place them after upsc dump) Related-to: https://github.com/networkupstools/nut-ddl/issues/32
  • tools/nut-ddl-dump.sh: update scripting style (quotes, comments, etc)

2.427. 2023-07-31 Tomasz Fortuna <bla@thera.be>

  • NEWS, data/driver.list.in, drivers/nutdrv_qx.c: drivers/nutdrv_qx.c: improve Armac subdriver Based on a debug output from a newer device (*/PF1) we’ve improved understanding on how: - those devices encode the length of a chunk of data. - how the end of transmission can be marked / detected. Changed: - Empty buffer before sending command to clear any residual data. - Detect end of message by end of line character \r (0x0d). - Refactor "6" into a READ_SIZE constant. - Limit bytes_available nibble to available READ_SIZE.

2.428. 2023-07-31 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS, drivers/cyberpower-mib.c, drivers/cyberpower-mib.h, drivers/snmp-ups.c: drivers/cyberpower-mib.c, NEWS: extend support to devices which report the shorter Vendor OID as their sysOID [#1997] Closes: #1997

2.429. 2023-07-30 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/features.txt: update notes about networked devices and about Windows builds
  • docs/user-manual.txt, docs/features.txt: bump manufacturer count
  • docs/nut.dict: nut.dict: bump for nut-website changes
  • docs/nut.dict: nut.dict: bump for nut-website changes
  • docs/nut.dict: nut.dict: bump for nut-website changes

2.430. 2023-07-30 Jim Klimov <jim@jimklimov.com>

  • COPYING: Update COPYING about LICENSE-DCO file Follow-up to #1995

2.431. 2023-07-18 Jim Klimov <jimklimov+nut@gmail.com>

  • .github/pull_request_template.md, docs/developers.txt, docs/nut.dict: docs/developers.txt: add a chapter on DCO (Signed-Off-By) [#1994]
  • LICENSE-DCO: Introduce LICENSE-DCO into the source codebase [#1994]

2.432. 2023-07-09 Jim Klimov <jimklimov+nut@gmail.com>

2.433. 2023-07-07 Craig Holyoak <cholyoak@redlands.qld.edu.au>

  • drivers/cyberpower-mib.c: Added more variables from the CyberPower MIB

2.434. 2023-07-03 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/security.txt: fix ASCIIDOC markup [#1976]
  • docs/download.txt: chunked-HTML chapter for "security.txt" moved due to daisychain years ago
  • scripts/python/Makefile.am: no need to (re)define Makefile variable MSGFMT - already handled by autotools [#1977]

2.435. 2023-07-02 Jim Klimov <jimklimov@gmail.com>

  • scripts/python/Makefile.am: refactor gettext translations to grep up source (text) file instead the output
  • scripts/python/Makefile.am: refactor gettext translations
  • scripts/python/Makefile.am: avoid POT-Creation-Date in gettext translations

2.436. 2023-07-02 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/Makefile.am: be sure target dirs for MSGFMT exist - regardless of ABS paths
  • scripts/python/Makefile.am: be sure target dirs for MSGFMT exist
  • docs/config-prereqs.txt: be sure to use pip3 for python3 examples
  • scripts/python/Makefile.am: fix msgfmt call syntax for non-GNU makes

2.437. 2023-07-01 Jim Klimov <jimklimov+nut@gmail.com>

  • …/python/app/locale/fr/LC_MESSAGES/NUT-Monitor.mo, scripts/python/app/locale/fr/fr.po: scripts/python/app/locale/fr/*: set custom Project-Id-Version same as in other translations
  • …/python/app/locale/fr/LC_MESSAGES/NUT-Monitor.mo, …/python/app/locale/it/LC_MESSAGES/NUT-Monitor.mo, …/python/app/locale/ru/LC_MESSAGES/NUT-Monitor.mo: scripts/python/app/locale/*/LC_MESSAGES/NUT-Monitor.mo: update binary translation files
  • configure.ac, docs/config-prereqs.txt, docs/nut.dict, scripts/python/Makefile.am: scripts/python/Makefile.am, configure.ac, docs/config-prereqs.txt: use gettext msgfmt to compile binary translation files

2.438. 2023-06-30 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/security.txt, docs/nut.dict: add a chapter on checksum file verification [#1963]
  • docs/security.txt: add maintainer notes on updating nut-key.gpg [#1963]
  • docs/security.txt, docs/nut.dict: update "verifySourceSig" chapter with new GPG key set for "Jim Klimov …" DE0184DA7043DCF7 [#1963]
  • docs/security.txt: clarify that GPG tool output varied over eons
  • AUTHORS, NEWS, README, data/html/header.html.in, data/html/index.html, docs/FAQ.txt, docs/asciidoc.conf, docs/documentation.txt, docs/download.txt, docs/features.txt, docs/hid-subdrivers.txt, docs/history.txt, docs/man/adelsystem_cbi.txt, docs/man/al175.txt, docs/man/apcsmart-old.txt, docs/man/apcsmart.txt, docs/man/apcupsd-ups.txt, docs/man/asem.txt, docs/man/bcmxcp.txt, docs/man/bcmxcp_usb.txt, docs/man/belkin.txt, docs/man/belkinunv.txt, docs/man/bestfcom.txt, docs/man/bestfortress.txt, docs/man/bestuferrups.txt, docs/man/bestups.txt, docs/man/blazer-common.txt, docs/man/clone.txt, docs/man/dummy-ups.txt, docs/man/etapro.txt, docs/man/everups.txt, docs/man/gamatronic.txt, docs/man/generic_gpio.txt, docs/man/generic_modbus.txt, docs/man/genericups.txt, docs/man/hosts.conf.txt, docs/man/huawei-ups2000.txt, docs/man/isbmex.txt, docs/man/ivtscd.txt, docs/man/libupsclient-config.txt, docs/man/liebert-esp2.txt, docs/man/liebert.txt, docs/man/macosx-ups.txt, docs/man/masterguard.txt, docs/man/metasys.txt, docs/man/mge-shut.txt, docs/man/mge-utalk.txt, docs/man/microdowell.txt, docs/man/microsol-apc.txt, docs/man/netxml-ups.txt, docs/man/nut-driver-enumerator.txt, docs/man/nut-ipmipsu.txt, docs/man/nut-recorder.txt, docs/man/nut-scanner.txt, docs/man/nut.conf.txt, docs/man/nutdrv_atcl_usb.txt, docs/man/nutdrv_qx.txt, docs/man/nutdrv_siemens_sitop.txt, docs/man/nutupsdrv.txt, docs/man/oneac.txt, docs/man/optiups.txt, docs/man/phoenixcontact_modbus.txt, docs/man/pijuice.txt, docs/man/powercom.txt, docs/man/powerman-pdu.txt, docs/man/powerpanel.txt, docs/man/rhino.txt, docs/man/richcomm_usb.txt, docs/man/riello_ser.txt, docs/man/riello_usb.txt, docs/man/safenet.txt, docs/man/skel.txt, docs/man/snmp-ups.txt, docs/man/sockdebug.txt, docs/man/socomec_jbus.txt, docs/man/solis.txt, docs/man/tripplite.txt, docs/man/tripplite_usb.txt, docs/man/tripplitesu.txt, docs/man/ups.conf.txt, docs/man/upsc.txt, docs/man/upscmd.txt, docs/man/upscode2.txt, docs/man/upsd.conf.txt, docs/man/upsd.txt, docs/man/upsd.users.txt, docs/man/upsdrvctl.txt, docs/man/upsdrvsvcctl.txt, docs/man/upsimage.cgi.txt, docs/man/upslog.txt, docs/man/upsmon.conf.txt, docs/man/upsmon.txt, docs/man/upsrw.txt, docs/man/upssched.conf.txt, docs/man/upssched.txt, docs/man/upsset.cgi.txt, docs/man/upsset.conf.txt, docs/man/upsstats.cgi.txt, docs/man/upsstats.html.txt, docs/man/usbhid-ups.txt, docs/man/victronups.txt, docs/new-clients.txt, docs/nut-names.txt, docs/security.txt, docs/snmp.txt, docs/support.txt, docs/user-manual.txt, drivers/apcsmart.c, drivers/blazer.c, drivers/blazer.h, drivers/blazer_ser.c, drivers/blazer_usb.c, drivers/delta_ups-mib.c, drivers/eaton-pdu-marlin-mib.c, drivers/hpe-pdu-mib.c, drivers/libhid.c, drivers/libusb0.c, drivers/libusb1.c, drivers/nut_libusb.h, drivers/optiups.c, drivers/riello.c, drivers/riello.h, drivers/riello_ser.c, drivers/riello_usb.c, indent.sh, scripts/Aix/nut-aix.spec.in, scripts/Solaris/pkginfo.in, scripts/Windows/build-mingw-nut.sh, scripts/perl/Nut.pm, scripts/python/app/locale/NUT-Monitor.pot, …/app/locale/fr/LC_MESSAGES/NUT-Monitor.mo, scripts/python/app/locale/fr/fr.po, …/app/locale/it/LC_MESSAGES/NUT-Monitor.mo, scripts/python/app/locale/it/it.po, …/app/locale/ru/LC_MESSAGES/NUT-Monitor.mo, scripts/python/app/locale/ru/ru.po, scripts/python/app/ui/aboutdialog1.ui, scripts/python/app/ui/gui-1.3.glade, scripts/python/app/ui/gui-1.3.glade.h, server/netget.c, server/netmisc.c, tools/nut-ddl-dump.sh, tools/nut-usbinfo.pl: Wholesale update of website URL to "https://www.networkupstools.org"
  • drivers/generic_gpio_common.h, drivers/generic_gpio_libgpiod.h: drivers/generic_gpio*.h: style (whitespace) fixes
  • drivers/apcsmart.c, drivers/apcsmart.h, drivers/generic_gpio_libgpiod.c, drivers/generic_gpio_libgpiod.h: drivers/generic_gpio_libgpiod.{c,h}, drivers/apcsmart.{c,h}: move DRIVER_NAME and DRIVER_VERSION from header to C source file as in other drivers
  • drivers/adelsystem_cbi.c, drivers/al175.c, drivers/apcsmart-old.c, drivers/apcsmart.h, drivers/apcupsd-ups.c, drivers/asem.c, drivers/bcmxcp.c, drivers/bcmxcp_ser.c, drivers/belkin.c, drivers/belkinunv.c, drivers/bestfcom.c, drivers/bestfortress.c, drivers/bestuferrups.c, drivers/bestups.c, drivers/blazer_ser.c, drivers/blazer_usb.c, drivers/clone-outlet.c, drivers/clone.c, drivers/dummy-ups.c, drivers/etapro.c, drivers/everups.c, drivers/gamatronic.c, drivers/generic_gpio_libgpiod.h, drivers/generic_modbus.c, drivers/genericups.c, drivers/huawei-ups2000.c, drivers/isbmex.c, drivers/ivtscd.c, drivers/liebert-esp2.c, drivers/liebert.c, drivers/macosx-ups.c, drivers/masterguard.c, drivers/metasys.c, drivers/mge-utalk.c, drivers/microdowell.c, drivers/microsol-apc.c, drivers/netxml-ups.c, drivers/nut-ipmipsu.c, drivers/nutdrv_atcl_usb.c, drivers/nutdrv_qx.c, drivers/nutdrv_siemens_sitop.c, drivers/oneac.c, drivers/optiups.c, drivers/phoenixcontact_modbus.c, drivers/pijuice.c, drivers/powercom.c, drivers/powerman-pdu.c, drivers/powerpanel.c, drivers/rhino.c, drivers/richcomm_usb.c, drivers/riello_ser.c, drivers/riello_usb.c, drivers/safenet.c, drivers/skel.c, drivers/snmp-ups.c, drivers/socomec_jbus.c, drivers/solis.c, drivers/tripplite.c, drivers/tripplite_usb.c, drivers/tripplitesu.c, drivers/upscode2.c, drivers/usbhid-ups.c, drivers/victronups.c: Bump all driver versions before NUT v2.8.1 release [#1951] Follow-up after core driver changes (main.c etc.) with driver.state #1767, driver reload command #1903, driver inter-instance communications via socket #1922 and others. Also convert remaining single-digit X.Y versions to X.<Y\+1>0 double-digits.

2.439. 2023-06-29 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/nut-scanner.txt, docs/man/snmp-ups.txt: clarify that secLevel is required to use non-trivial authentication [#734]

2.440. 2023-06-26 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/maintainer-guide.txt: stress the release git tag rituals [#1971]

2.441. 2023-06-18 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut-names.txt: reference docs/new-drivers.txt by name for device status data definitions

2.442. 2023-06-17 Blaz Zakrajsek <zakrajsek.blaz@gmail.com>

  • drivers/liebert-hid.c: Apply code review fixes - Replace non-standard variable names for Full charge capacity and Design capacity - Prefix with experimental

2.443. 2023-06-16 Blaz Zakrajsek <zakrajsek.blaz@gmail.com>

  • drivers/liebert-hid.c: Improve liebert-hid driver - Add additional properties by analyzing the HID descriptor of the PowerWalker VI 1200 SHL - Existing properties were kept as they are to avoid breakage with other devices using the same driver

2.444. 2023-06-14 Jim Klimov <jimklimov@gmail.com>

  • clients/upssched.c: add enter/exit log tracing of sock_read() [#1964]

2.445. 2023-06-13 Jim Klimov <jimklimov@gmail.com>

  • NEWS: upssched CPU burn fixed [#1965, #1964]
  • NEWS, docs/man/upssched.txt, clients/upssched.c: warn that enabled debug remains noisy for daemon part too [#1965]
  • clients/upssched.c: start_daemon() loop (POSIX builds): generally throttle in case we have empty sock_read()s [#1964]
  • clients/upssched.c: if we consistently get read()==0, abort eventually (even if no formal errors are reported) [#1964]
  • clients/upssched.c: do not close STDERR of the daemon (to re-open as /dev/null) when nut_debug_level!=0 (follow-up from [#1879, #1889])
  • clients/upssched.c: log-trace when the process (daemon or CLI) exits

2.446. 2023-06-13 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upssched.c: improve logging of client connection life cycle
  • tests/NIT/nit.sh: typo fix

2.447. 2023-06-08 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/download.txt: update references to NUT client for VMWare ESXi

  • docs/download.txt: update references to NUT client for VMWare ESXi

    • fix asciidoc markup [#1961]
  • NEWS: update with reference to NUT client for VMware ESXi" project on GitHub [#1961]
  • docs/download.txt: update references to NUT client for VMware ESXi And link to NUT Wiki for further setup suggestions

2.448. 2023-06-05 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/new-drivers.txt, docs/nut-names.txt: no need for custom anchor for _status_data, change link style instead [#1957]
  • docs/man/upslog.txt: refer to documentation on supported variable names [#1957]
  • docs/new-drivers.txt: add anchor for _status_data [#1957]

2.449. 2023-06-02 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS, UPGRADING: make note that ChangeLog file markup will differ from that in older NUT releases [#1955]
  • tools/gitlog2changelog.py.in: update TextWrapper settings to not break up file paths Follows up from #1945

2.450. 2023-06-01 Xavier Delaruelle <xavier.delaruelle@cea.fr>

  • tools/gitlog2changelog.py.in: tools/gitlog2changelog.py: fix bitwise AND into regular AND Several if conditions where using bitwise AND whereas the intent was to do a regular AND test.

2.451. 2023-06-01 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: update with OpenPGP [#1410]
  • NEWS, docs/nut.dict: NEWS: published new maintainer GPG key DE0184DA7043DCF7 [#1410]
  • configure.ac, include/Makefile.am: constrain use of "git describe" to release tags [#1949, nut-website#35, nut-website#34]

2.452. 2023-05-26 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/documentation.txt: refer to NUT GitHub Wiki
  • docs/documentation.txt: refer to HCL from near DDL
  • docs/developers.txt: reword a bit about IDE support

2.453. 2023-05-24 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: bump for IntelliJ

2.454. 2023-05-23 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/developers.txt: typo fix
  • docs/developers.txt: add a mention of IntelliJ IDEA
  • docs/developers.txt: fix asciidoc table markup; update a few comments for Windows development environments
  • Jenkinsfile-dynamatrix: withEnvOptional() was refactored from "infra" to a standalone step

2.455. 2023-05-19 Xavier Delaruelle <xavier.delaruelle@cea.fr>

  • tools/gitlog2changelog.py.in: tools/gitlog2changelog.py: apply Flake8 suggestions Apply on gitlog2changelog.py most code change suggestions from Flake8 Python style guide enforcement tool.
  • tools/gitlog2changelog.py.in: tools/gitlog2changelog.py: apply Black suggestions Apply on gitlog2changelog.py code change suggestions from Black Python code formatter.
  • tools/gitlog2changelog.py.in: tools/gitlog2changelog.py: fix expected git log format Update gitlog2changelog.py script to ensure git log format is not influenced by user git configuration.

2.456. 2023-05-19 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/developers.txt, docs/nut.dict: docs/developers.txt: chapter on VSCode setup
  • docs/developers.txt: update notes for IDE setup for debug symbols
  • docs/nut.dict: docs/developers.txt: update notes for IDE (specifically NetBeans on Windows) setup
  • docs/developers.txt: update notes for IDE (specifically NetBeans on Windows) setup

2.457. 2023-05-13 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/Makefile.am: typo fix to not override man8_MANS definition

2.458. 2023-05-12 Jim Klimov <jim@jimklimov.com>

  • docs/man/sockdebug.txt: Update sockdebug.txt Fix markup (and a progname mention), add original code authors.

2.459. 2023-05-11 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/sockdebug.txt: fix formatting; clarify standard state path handling (POSIX builds) [#1936]
  • docs/man/index.txt: mention new sockdebug[8] man page
  • clients/upssched.c: start_daemon(): transplant STDIN_FILENO/STDOUT_FILENO/STDERR_FILENO handling instead of hardcoded numbers, from common.c [#1879, #1881]
  • drivers/upsdrvquery.c: upsdrvquery_read_timeout(): only log subsequent sleep-time diffs if we retried a sleep
  • drivers/upsdrvquery.c: upsdrvquery_read_timeout(): fix retry-delays to 0.1sec (100msec, 100000usec)
  • drivers/upsdrvquery.c: clearer parentheses and markup
  • drivers/upsdrvquery.c: upsdrvquery_prepare(): fix time subtraction
  • drivers/upsdrvquery.c: upsdrvquery_oneshot(): bump the sleep for upsdrvquery_read_timeout() PING/PONG
  • drivers/upsdrvquery.c: upsdrvquery_read_timeout(): more tracing of time tracking
  • drivers/upsdrvquery.c: use difftimeval() and better-precision struct timeval
  • common/common.c, include/common.h: introduce a difftimeval()
  • drivers/upsdrvquery.c: fix multipliers around tv_usec (10e6 not 10e3)
  • drivers/upsdrvquery.c: upsdrvquery_read_timeout(): accept shorter delays, Windows does not guarantee a minimum sleep it seems
  • drivers/upsdrvquery.c: fix whitespace
  • server/sockdebug.c: address clang warnings

2.460. 2023-05-10 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/upsdrvquery.c: fix whitespace
  • drivers/upsdrvquery.c: upsdrvquery_prepare(): fix finishing quickly after a PONG
  • drivers/upsdrvquery.c: enable a timeout and PING/PONG when preparing the connection
  • docs/man/sockdebug.txt: update for unified ability to "make sockdebug" and no longer required fully-qualified path to socket in POSIX builds
  • docs/sock-protocol.txt: update for unified ability to "make sockdebug" and no longer required fully-qualified path to socket in POSIX builds
  • drivers/upsdrvquery.c: use PING after NOBROADCAST to minimize delays while playing safe [#1928]
  • drivers/upsdrvquery.c: whitespace fixes
  • server/sockdebug.c: fall back to dflt_statepath() when not using a full path to socket
  • server/Makefile.am, NEWS, UPGRADING: install sockdebug if configured --with-dev
  • docs/man/Makefile.am, docs/man/sockdebug.txt, docs/nut.dict: Introduce docs/man/sockdebug.txt
  • Makefile.am: add a way to "make sockdebug" regardless of target platform

2.461. 2023-04-24 Jim Klimov <jimklimov+nut@gmail.com>

  • conf/upsset.conf.sample, docs/man/upsset.conf.txt, docs/nut.dict: docs/man/upsset.conf.txt, conf/upsset.conf.sample: document CGI securing syntax for modern Apache Thanks to Phil Stracchino <phils at caerllewys.net> for suggestions: https://alioth-lists.debian.net/pipermail/nut-upsuser/2023-April/013262.html
  • drivers/upsdrvctl.c: when starting to send_all_drivers() or send_one_driver(), reset exec_error to 0 [#1927]
  • drivers/main.c, drivers/upsdrvctl.c: drivers/upsdrvctl.c, drivers.main.c: use upsdrvquery_oneshot() caller-provided timeouts [#1929] Closes: #1929
  • drivers/upsdrvquery.c, drivers/upsdrvquery.h: drivers/upsdrvquery.c: upsdrvquery_oneshot(): support optional caller-provided timeouts [#1929]
  • drivers/upsdrvquery.c: upsdrvquery_request(): report how long we wait (and support indefinite waits) [#1914]
  • docs/new-drivers.txt, docs/nut.dict: docs/new-drivers.txt: upsdrv_shutdown() must not exit() anymore [#1923]
  • drivers/dummy-ups.c: do not ignore return of getcwd() [#1921]
  • NEWS: Update about reload ability [#1903, #1914, #1924] and new use of driver.killpower instcmd [#1917, #1923]
  • drivers/upsdrvquery.c: typo fix
  • drivers/dummy-ups.c: handle "-x port=./path" or "C:\somepath" (WIN32) [#1921] Closes: #1921
  • drivers/main.c: try to do_forceshutdown via socket protocol with a running driver first [#1923] Closes: #1923
  • drivers/al175.c, drivers/apcupsd-ups.c, drivers/asem.c, drivers/bcmxcp.c, drivers/blazer.c, drivers/clone-outlet.c, drivers/clone.c, drivers/dummy-ups.c, drivers/generic_gpio_common.c, drivers/generic_modbus.c, drivers/genericups.c, drivers/huawei-ups2000.c, drivers/isbmex.c, drivers/ivtscd.c, drivers/liebert.c, drivers/macosx-ups.c, drivers/main.c, drivers/netxml-ups.c, drivers/nut-ipmipsu.c, drivers/nutdrv_qx.c, drivers/phoenixcontact_modbus.c, drivers/powercom.c, drivers/powerman-pdu.c, drivers/riello_ser.c, drivers/riello_usb.c, drivers/safenet.c, drivers/skel.c, drivers/snmp-ups.c, drivers/socomec_jbus.c, drivers/usbhid-ups.c: drivers/*: Avoid exit() and fatalx() in upsdrv_shutdown() handlers; set_exit_flag() instead [#1923]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: clarify in logged messages that we are reloading or restarting daemons
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: avoid re-definition of the driver if we can just reload it [#1924] Closes: #1924
  • drivers/upsdrvquery.c: upsdrvquery_request(): drop received unrecognized queued replies [#1914]
  • drivers/upsdrvquery.c, drivers/upsdrvquery.h: drivers/upsdrvquery.{c,h}: add a way to request new ReadFile() operation on WIN32 [#1914]
  • drivers/upsdrvquery.c: update messages [#1914]
  • drivers/upsdrvquery.c: rectify timeout processing precision [#1914]

2.462. 2023-04-23 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/upsdrvquery.c: upsdrvquery_oneshot(): do not wait for NOBROADCAST to flush, we now support not-bailing on unexpected lines [#1920]
  • drivers/upsdrvquery.c: upsdrvquery_read_timeout(): support zeroed-out "tv" as disable of wait
  • drivers/upsdrvquery.c: upsdrvquery_prepare(): support zeroed-out "tv" as disable of wait
  • drivers/upsdrvctl.c: enable "-c reload-or-error" on WIN32 [#1914, #1903]
  • drivers/upsdrvquery.c, drivers/upsdrvquery.h: drivers/upsdrvquery.{c,h}: refactor to pass udq_pipe_conn_t around, and complete WIN32 fixes [#1914]
  • docs/developers.txt: expand with a few IDE notes on Windows
  • drivers/upsdrvquery.c: fix upsdrvquery_read_timeout() for WIN32 builds [#1903, #1914]
  • ci_build.sh: suggest follow-up to poor maintainer-clean handling in autotools
  • include/upsconf.h, common/upsconf.c, server/conf.c, server/upsd.c, drivers/main.c, drivers/upsdrvctl.c: change read_upsconf() API so it is not always fatal [#1903]
  • drivers/main.c, drivers/main.h: drivers/main.c: enable SIGCMD_RELOAD_OR_ERROR handling for WIN32 [#1914, #1903]
  • drivers/main.c: address compiler style warning
  • drivers/upsdrvquery.c: upsdrvquery_connect(): copy-paste fixes for WIN32 part [#1903, #1914]
  • drivers/main.c: address compiler style warning

2.463. 2023-04-22 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/nutupsdrv.txt, docs/man/upsdrvctl.txt, drivers/main.c, drivers/main.h, drivers/upsdrvctl.c: drivers/main.{c,h}, upsdrvctl sources and docs: add "reload-or-error" CLI handling [#1903, #1914] Handle SIGCMD_RELOAD_OR_ERROR commands to running drivers via upsdrvquery_oneshot()y
  • drivers/Makefile.am, drivers/upsdrvquery.c, drivers/upsdrvquery.h: drivers/upsdrvquery.{c,h}, drivers/Makefile.am: Introduce a socket protocol client for quickshot commands [#1903, #1914]
  • docs/man/nutupsdrv.txt: add placeholder for "-c reload-or-restart" CLI argument [#1903]
  • drivers/main.c: main_instcmd(): add placeholder for "driver.reload-or-restart" support [#1903, #1914]
  • drivers/main.c: main_instcmd(): set_reload_flag() by SIGCMD_* macros, not numbers [#1903, #1914]
  • drivers/main.c: add socket-protocol handling for "driver.reload-or-error" INSTCMD [#1903, #1914]

2.464. 2023-04-21 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c: main(): register "driver.reload(-or-exit)" commands so upsd would accept them and upscmd can request them [#1903]
  • drivers/dstate.c: sock_arg(): if shared main_instcmd()/main_setvar() did recognize and somehow process the request, honour TRACKING if present [#1903, #1920]
  • drivers/main.c: un-hide nut_debug_level_args for mock-driver builds aka DRIVERS_MAIN_WITHOUT_MAIN now that it is referenced in main_setvar()⇒assign_debug_level() [#1903, #1285]
  • server/pipedebug.c: seems WIN32 needs fflush(stdout)
  • docs/sock-protocol.txt: clarify use of sockdebug in WIN32 builds
  • common/common.c: vupslog(): only print timestamps to stderr if xbit_test(upslog_flags, UPSLOG_STDERR) at all, not just that the debug is enabled; also mark upslog_start when we first call the method, even if debu is not currently verbose (may change at run time) [#1903]
  • common/common.c: vupslog(), nut_report_config_flags(): seems WIN32 needs fflush(stderr)
  • drivers/dstate.c: sock_arg() (NO)BROADCAST handling ⇒ POSIX/WIN32 preparation of string: satisfy platforms where snprintf is a macro [#1914]
  • drivers/main.c: main_instcmd()/main_setvar() POSIX/WIN32 preparation of string: satisfy platforms where snprintf is a macro [#1914]
  • drivers/main.c: un-hide assign_debug_level() for mock-driver builds aka DRIVERS_MAIN_WITHOUT_MAIN now that it is referenced in main_setvar() [#1903, #1285]
  • drivers/main.c: set_reload_flag (and SIGUSR1) are currently only for non-WIN32 builds [#1903, #1916]
  • server/pipedebug.c: whitespace fixes (indentations et al)
  • server/sockdebug.c, server/pipedebug.c: support -h/--help on CLI
  • docs/sock-protocol.txt: suggest also server/sockdebug for dev/testing
  • server/sockdebug.c: check return of fgets()
  • server/sockdebug.c: #include "nut_stdint.h" for PRI* macros

2.465. 2023-04-20 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c: driver/main.c: main_instcmd() with basic "driver.reload" and "driver.reload-or-exit" support [#1903, #1914]
  • drivers/dstate.c, drivers/dstate.h, drivers/main.c, drivers/main.h: driver/(main|dstate).(c\|h): extend main_instcmd()/main_setvar() with knowledge of conn_t involved [#1914]\
  • NEWS, docs/nut.dict, docs/sock-protocol.txt, drivers/dstate.c, drivers/dstate.h: docs/sock-protocol.txt, drivers/dstate.{c,h}: extend driver-server socket protocol with (NO)BROADCAST option [#1914]
  • docs/man/nutupsdrv.txt, docs/man/upsdrvctl.txt, docs/man/upsmon.txt, docs/man/upssched.txt: docs: update about NUT_*PATH envvars support
  • docs/man/upssched.txt: mention UPSNAME and NOTIFYTYPE among supported envvars
  • clients/upssched.c: comment how checkconf() is the processing loop
  • clients/upssched.c: debugging does not impact backgrounding (update help text)
  • NEWS, clients/upsmon.c, clients/upssched.c, docs/man/nutupsdrv.txt, docs/man/upsd.txt, docs/man/upsdrvctl.txt, docs/man/upsmon.txt, docs/man/upssched.txt, drivers/main.c, drivers/upsdrvctl.c, server/upsd.c: upsd, upsdrvctl, drivers, upsmon, upssched progs and docs, NEWS: introduce NUT_DEBUG_LEVEL envvar support (if no "-D" option(s) among CLI args) [#1915] Closes: #1915
  • NEWS, docs/man/ups.conf.txt, drivers/main.c: drivers/main.c, NEWS: constrain INSTCMD "driver.killpower" by "driver.flag.allow_killpower" setting [#1917] Closes: #1917
  • drivers/dstate.c: if main_setvar()/main_instcmd() return STAT_*_INVALID, do not proceed to driver handler [#1914]
  • NEWS, drivers/main.c: drivers/main.c: add support for INSTCMD "driver.killpower" [#1917]
  • NEWS, drivers/main.c: drivers/main.c: introduce a way to show and set "driver.debug" level via socket protocol (upsrw etc.) [#1285] Closes: #1285
  • drivers/main.c: debug-trace (and so use) args to main_instcmd() and main_setvar() handlers [#1285, #1914]
  • drivers/dstate.c, drivers/main.c, drivers/main.h: drivers/main.{c,h}, drivers/dstate.c: introduce and handle shared main_instcmd() and main_setvar() handlers [#1285, #1914]
  • docs/sock-protocol.txt: update with some clarifications
  • tests/NIT/nit.sh: report test case names at start of ther methods, to find error reports in log more easily

2.466. 2023-04-20 Clappier Eric <ericclappier@eaton.com>

  • drivers/snmp-ups.c: Acquisition failed with daisychain epdu G3 with sensors (#1911) * Hot fix for infinite loop during discovery daisychain epdu G3 with sensors * Change log message in guesstimate_template_count function

2.467. 2023-04-19 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/upsdrvctl.c: buildability for WIN32 (unused code warnings) [#1903]
  • drivers/upsdrvctl.c: fix main loop buildability for WIN32 [#1903]
  • drivers/upsdrvctl.c: set_signal_flag(): relax const-ness to save the signal
  • drivers/upsdrvctl.c: fix builds for WIN32 [#1903]
  • NEWS: clarify nut-driver-enumerator vs. debug_min edits [#1903]
  • scripts/systemd/nut-driver@.service.in: exec upsdrvctl to avoid another extra fork
  • scripts/Solaris/nut-driver.xml.in: fix refresh to send SIGUSR1 now [#1903]
  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: use systemd ExecReload for drivers now [#1903]
  • scripts/systemd/nut-driver@.service.in: fix ExecReload to send SIGUSR1 now [#1903]
  • configure.ac: set SYSTEMD_DAEMON_ARGS_DRIVER="-FF" to avoid excess forking (thanks to #1903)
  • drivers/main.c: fix WIN32 buildability
  • drivers/upsdrvctl.c: help() exits here, so leave just fatalx() with diagnosis
  • drivers/upsdrvctl.c: avoid name shadowing after including main.h (for #1903)
  • drivers/main.c: main(): rectify handling of "foreground" variants, fix a typo [#1903]
  • NEWS, docs/nut.dict: NEWS: update for signal support with drivers and upsdrvctl [#1903]
  • drivers/upsdrvctl.c: recycle drivers that aborted due to SIGCMD_RELOAD_OR_EXIT [#1903]
  • drivers/main.c: reload-or-exit: exit with 128\+SIGNUM on POSIX systems [#1903]
  • drivers/upsdrvctl.c: actually forward supported signals accumulated by a running upsdrvctl [#1903]
  • drivers/upsdrvctl.c: refactor reset_signal_flag() [#1903]
  • docs/man/upsdrvctl.txt: update for new signal-sending support [#1903]
  • drivers/main.c: handle_reload_flag(): log for which device (help mass-mgmt via upsdrvctl) [#1903]
  • drivers/upsdrvctl.c: error out for dangling CLI arguments
  • drivers/upsdrvctl.c: implement signal handling and "-c COMMAND" to pass on to drivers [#1903]
  • drivers/main.c, drivers/main.h: drivers/main.{c,h}: move SIGCMD_* definitions to header for re-use [#1903]
  • server/upsd.c, clients/upsmon.c: optargs: check other command options only if we did not have a hit earlier
  • drivers/main.c: do not need a "port=…" to handle a command/signal option (with -s TMPUPSNAME) [#1903]
  • drivers/main.c: optargs: only accept command/signal option once [#1903]
  • drivers/main.c: optargs: check other command options only if we did not have a hit earlier [#1903] In particular, avoid finding "reload" again in longer command names
  • drivers/main.c: set_reload_flag(), optargs: log the command signal posted/received [#1903]
  • drivers/main.c: set_reload_flag(): rearrange comments and log messages [#1903]
  • docs/man/upsdrvctl.txt, drivers/upsdrvctl.c: drivers/upsdrvctl.c: add "-FF" mode to match driver abilities [#1299]
  • docs/man/nutupsdrv.txt, drivers/main.c: drivers/main.c: refactor "background_flag" ⇒ "foreground" and add "-FF" mode to match upsd/upsmon [#1299]
  • docs/man/nutupsdrv.txt, drivers/main.c: drivers/main.c: add support for command-line "reload", "reload-or-exit" (reserved "reload-or-restart" not implemented/offered yet), and -P OLDPID options [#1903]
  • drivers/main.c: use macros to define SIGCMD_DATA_DUMP (moved from SIGUSR2 to SIGURG/SIGWINCH by default), SIGCMD_RELOAD, SIGCMD_RELOAD_OR_EXIT (and clarify difference from reserved SIGCMD_RELOAD_OR_RESTART) [#1903]
  • drivers/main.c: rename temporary "buffer" to "pidfnbuf" for a bit of readability
  • server/conf.c: parse_upsd_conf_args(): only warn about ignoring STATEPATH in favor of NUT_STATEPATH if the two strings are not equal [#1908]

2.468. 2023-04-18 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c: hide nut_debug_level_args as for DRIVERS_MAIN_WITHOUT_MAIN [#1903]
  • docs/man/generic_gpio.txt: do not suggest non-standard "description", use "desc" instead [#1892]
  • drivers/generic_gpio_common.c, drivers/generic_gpio_libgpiod.c: fix "upsdebugx(LOG_DEBUG,…)" calls We debug with somewhat arbitrarily assigned verbosity numbers. The LOG_* definitions are from syslog (and equivalents for WIN32 event log).
  • drivers/main.c: log that a VAR_SENSITIVE value is not saved (and comment that override/default bypasses this) [#1892]
  • drivers/generic_gpio_common.c, tests/generic_gpio_utest.c: mfr/model vars are not "sensitive" and "desc(ription)" are not handled via addvar() at all [#1892]
  • drivers/main.c, NEWS: support SIGUSR2 to immediately dstate_dump() and move on [#1907]
  • server/conf.c: parse_upsd_conf_args(): prefer NUT_STATEPATH envvar to STATEPATH from file [#1908]
  • server/upsd.c: trace-log the statepath actually used [#1908]
  • server/sstate.c: sstate_connect(): trace-log the paths involved if failed to connect() to a driver pipe [#1908]
  • drivers/main.c: testvar_reloadable(): fix logic botched by refactoring [#1903]
  • drivers/main.c: test*_reloadable(): trace-log the verdict in all cases [#1903]
  • drivers/main.c: move reload_flag support in main loop to be more reactive and refactor as handle_reload_flag() [#1903]
  • drivers/main.c: refactor reload_flag support for existing flags (log that skipped) [#1903]
  • drivers/main.c: support SIGUSR1 ⇒ reload_flag=2 ⇒ driver may exit() if changed configs that can not be applied on the fly [#1903]
  • drivers/main.c: cover assign_debug_level() under DRIVERS_MAIN_WITHOUT_MAIN [#1903]
  • common/common.c: #if ⇒ #ifdef\+if [#1903]

2.469. 2023-04-17 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: AM_COND_IF macro supported since aclocal-1.11; fall back to raw vars for older tools
  • scripts/Solaris/nut-driver.xml.in: define basic SMF "refresh" support to send SIGHUP to a driver [#1903]
  • NEWS: Implemented basic support for ups.conf reloading in NUT drivers [#1903]
  • configure.ac: do fail checks due to unknown tokens with SYSTEMD_ANALYZE_PROGRAM [#1903, #1590]
  • configure.ac: do not make noise with SYSTEMD_ANALYZE_PROGRAM [#1903, #1590]
  • configure.ac: fix "end-user" square brackets for M4 markup [#1903]
  • configure.ac: for common.c::upsnotify(): detect actual support for systemd Type=notify for good measure [#1903, #1590]
  • configure.ac: for common.c::upsnotify(): detect support for systemd Type=notify-reload and enable it for nut-driver@.service if applicable [#1903]
  • configure.ac: for common.c::upsnotify(): detect support for HAVE_CLOCK_GETTIME and HAVE_CLOCK_MONOTONIC [#1903]
  • common/common.c: upsnotify(): support posting MONOTONIC_USEC when RELOADING/READY [#1903]
  • scripts/systemd/nut-driver@.service.in: typo fix in comment
  • scripts/systemd/nut-driver@.service.in: support ExecReload via "kill -SIGHUP" [#1903]
  • drivers/main.c: assign_debug_level(): update messages and comments, report if nut_debug_level_args overrides smaller/unset nut_debug_level_upsconf
  • drivers/main.c: fix do_global_args() and main_arg() to not ignore unmodified settings during reload [#1903]
  • drivers/main.c: actually read_upsconf() to handle reload (SIGHUP) [#1903]
  • drivers/main.c: always setup_signals() if we are not a one-shot run (fore- or back-ground)
  • drivers/main.c: upsdebugx() raising the flags due to signals (exit, reload) [#1903]
  • drivers/main.c: do_upsconf_args(): fix handling of "driver" value [#1903]
  • drivers/main.c: pepper test*_reloadable() and do_upsconf_args() with upsdebugx() [#1903]
  • drivers/main.c: testvar_reloadable(): handle known flags conservatively [#1903]
  • drivers/main.c: introduce (and honour) nut_debug_level_args [#1903]
  • drivers/main.c: refactor assign_debug_level()
  • drivers/main.c: do_global_args(), main_arg(): respect reload_flag [#1903]
  • drivers/main.c: move pollinterval handling from do_upsconf_args() to main_arg()
  • drivers/main.c: testvar_reloadable(), testval_reloadable(): clarify if the driver must be restarted to apply a value change [#1903]
  • drivers/main.c, drivers/main.h: drivers/main.{c,h}: make testvar_reloadable(), testval_reloadable(), testinfo_reloadable() a public API in case drivers would need to know [#1903]
  • drivers/main.c: add skeleton handling for reload_flag [#1903]
  • drivers/main.c, drivers/main.h: driver/main.{c,h}: extend internal API with addvar_reloadable() and vartab_t→reloadable field [#1903]

2.470. 2023-04-12 Jim Klimov <jimklimov@gmail.com>

  • scripts/usb_resetter/README.md: Update README.md Some more formatting/wording fixes
  • scripts/usb_resetter/README.md: Update README.md Reformatted line widths and code examples, incorporated PR discussion notes

2.471. 2023-04-04 Jim Klimov <jimklimov@gmail.com>

  • drivers/salicru-hid.c: Update salicru-hid.c Whitespace and alphabetic fixes, subdriver version bump

2.472. 2023-04-04 David Martinez <dmartinez.martin@atsistemas.com>

  • data/driver.list.in, drivers/salicru-hid.c, scripts/upower/95-upower-hid.hwdb: feat: Added support for Salicru SPS 3000 ADV RT2

2.473. 2023-04-01 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: adapt to newer website preparations

2.474. 2023-04-01 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/nutdrv_qx_voltronic.c: cover another path to "battery.voltage" with qx_multiply_battvolt()

2.475. 2023-03-31 Orsiris de Jong <ozy@netpower.fr>

  • scripts/usb_resetter/README.md: usb_resetter: add --list-hubs command example
  • docs/FAQ.txt: Add driver disconnected usb_resetter entry
  • scripts/usb_resetter/nut-driver.service: Add usb_resetter enabled nut-driver systemd service
  • scripts/usb_resetter/README.md: Add usb_resetter instructions

2.476. 2023-03-31 Jim Klimov <jimklimov@gmail.com>

  • NEWS: integration with usb_resetter documented [#1887]
  • docs/nut.dict: Update nut.dict

2.477. 2023-03-31 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/nutdrv_qx.c: should we not use correct battery_voltage_reports_one_pack_considered every loop?
  • Makefile.am: MAINTAINERCLEANFILES\+=ar-lib
  • common/common.c: background(): use STDIN_FILENO/STDOUT_FILENO/STDERR_FILENO macros instead of hard-coded FD 0-1-2 numbers [#1879, #1881] Closes: #1879 Closes: #1881
  • include/common.h: define STDIN_FILENO/STDOUT_FILENO/STDERR_FILENO if absent on the platform
  • configure.ac: detect support of dup() and/or dup2() on the platform
  • .gitignore: GitIgnore ar-lib tool, if added by automake (see AM_PROG_AR in configure.ac)
  • configure.ac: use m4_ifdef for optional AM_SILENT_RULES support
  • configure.ac: use AM_PROG_AR if available (quiesce autoreconf portability warning) Inspired by https://github.com/vlm/asn1c/pull/63/files
  • autogen.sh: add "-v" or "export (CI_)DEBUG=true" support

2.478. 2023-03-30 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: test C\+\+11 nuances that NUT uses and which fail with older gcc-4.x with intermediate levels of support
  • configure.ac: typo fix for "have_cxx11=no," verdict
  • clients/nutclient.cpp, clients/nutclient.h: clients/nutclient.h: declare NutException&Co destructors as "noexcept" to match some system headers std::except
  • autogen.sh: suggest what to do in case of m4 "ifdef" errors
  • docs/config-prereqs.txt: typo and markup fixes
  • docs/ci-farm-lxc-setup.txt: split container installation and setup into visible sub-chapters
  • docs/ci-farm-lxc-setup.txt, docs/nut.dict: docs/ci-farm-lxc-setup.txt: clarify use of expired keys for ancient Debian releases

2.479. 2023-03-23 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS, drivers/baytech-mib.c: drivers/baytech-mib.c: update baytech_outlet_status_info[] valid values [#1871]

2.480. 2023-03-22 Evgeny Klimov <jimklimov+nut@gmail.com>

  • drivers/upsdrvctl.c: avoid another warning (WIN32 builds)

2.481. 2023-03-21 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/upsdrvctl.c: fix build warnings
  • drivers/upsdrvctl.c: only check for child process PIDs on POSIX platforms
  • drivers/upsdrvctl.c: track if any of launched foreground-mode drivers exited, and then abort the whole bundle (so it can be consistently restarted)
  • drivers/upsdrvctl.c: fix some WIN32 code style
  • drivers/upsdrvctl.c: track started foregrounded driver PID(s) to stop when exiting on signal
  • drivers/upsdrvctl.c: fix logged message markup and TODO comments for foregrounded mode
  • docs/man/upsdrvctl.txt, NEWS: update info about upsdrvctl foregrounding mode support
  • drivers/upsdrvctl.c: update logged messages about foregrounding mode
  • drivers/upsdrvctl.c: do not exit the tool if foregrounding was requested
  • drivers/upsdrvctl.c: log when the tool is exiting
  • drivers/upsdrvctl.c: count the UPSes we would command; foregrounding behavior depends on that number
  • drivers/upsdrvctl.c: complete the fix for upsdrvctl explicit fore-/back-grounding mode [#1806 follow-up]
  • tests/NIT/nit.sh: double-quote the driverpath value so it is properly parsed

2.482. 2023-03-14 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: fixup! NEWS: libdummy_mockdrv.la added [#1855]

2.483. 2023-03-13 Jim Klimov <jimklimov@gmail.com>

  • tests/Makefile.am: simplify recipe for gpiotest
  • NEWS: libdummy_mockdrv.la added [#1855]
  • drivers/generic_gpio_common.c, drivers/generic_gpio_common.h, tests/Makefile.am, tests/generic_gpio_utest.c: tests/generic_gpio_utest.c, tests/Makefile.am: avoid "include generic_gpio_common.c generic_gpio_liblocal.c generic_gpio_libgpiod.c" in test code
  • tests/generic_gpio_utest.c, tests/Makefile.am: avoid sourcing "main.c" and "dstate.c" right into test code
  • drivers/Makefile.am, drivers/main.c, drivers/main.h: drivers/main.{c,h} drivers/Makefile.am: introduce libdummy_mockdrv.la (and DRIVERS_MAIN_WITHOUT_MAIN)
  • tests/generic_gpio_utest.c, tests/Makefile.am: EXTRA_DIST and use for out-of-tree builds the generic_gpio_test.txt resource file
  • tests/Makefile.am: refer to "tests/" as include-dir for gpiotest
  • tests/generic_gpio_utest.c: add a declaration of ignore() to override the original main() from included main.c
  • drivers/dstate.c: sock_fail(): rename "struct passwd *user" to avoid clash with global varname in main.c (due to tests/generic_gpio_utest.c construction)
  • drivers/generic_gpio_common.h, tests/generic_gpio_liblocal.c, tests/generic_gpio_utest.c: Define NUT_GPIO_SUBTYPEBUF and NUT_GPIO_CHIPNAMEBUF for consistency, avoid local/global varname clashes for chipName
  • drivers/generic_gpio_libgpiod.c: rename "num_lines" to avoid global varname clash (in tests)
  • tests/Makefile.am, tests/generic_gpio_liblocal.c, tests/generic_gpio_utest.c, tests/generic_gpio_utest.h: Introduce tests/generic_gpio_utest.h
  • tests/Makefile.am: drivers/Makefile.am: relocate "endif" lines so sources of tests are always redistributed
  • drivers/generic_gpio_libgpiod.c: rename "(gpio)upsfd" method arguments to avoid shadowing global varnames
  • drivers/generic_gpio_common.c: rename "(gpio)upsfd" method arguments to avoid shadowing global varnames
  • drivers/generic_gpio_common.c, drivers/generic_gpio_common.h, drivers/generic_gpio_libgpiod.h: drivers/generic_gpio*.h: move "extern struct gpioups_t *gpioupsfd" to generic_gpio_common.h
  • tests/.gitignore: GitIgnore tests/gpiotest* artifacts

2.484. 2023-03-13 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/Makefile.am: clean away symlinked gpiotest sources
  • tests/Makefile.am, tests/.gitignore: refer to generic_gpio_libgpiod.c/generic_gpio_common.c differently for portability
  • tests/Makefile.am: relocate "endif" lines back, with a different way for sources of tests are always redistributed
  • drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c: suggest Zadig tool to handle UPS with WinUSB (for WIN32 builds)

2.485. 2023-03-11 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: do not require --with-gpio=yes for builds --with-all even on Linux: only the newer distros support the tech
  • NEWS, UPGRADING, docs/configure.txt: clarify that libgpiod is for Linux released after \~2018
  • docs/config-prereqs.txt: add installation of (lib)gpio(d)-dev(el) where feasible
  • docs/configure.txt: update prereq note for GPIO drivers
  • configure.ac, m4/nut_check_libgpiod.m4: fix actual --with-gpio handling
  • drivers/Makefile.am: add generic_gpio*.h to dist_noinst_HEADERS
  • configure.ac: relocate all "NUT_ARG_WITH(build and install GPIO driver)" to other drivers, so they are nearby in configure --help
  • m4/nut_check_pkgconfig.m4: fix AS_HELP_STRING (program name; not optional)
  • configure.ac: relocate all "NUT_ARG_WITH(build and install … driver)" together, so they are nearby in configure --help
  • NEWS, UPGRADING, docs/configure.txt, docs/packager-guide.txt: mention new category of GPIO drivers
  • configure.ac: currently --with-gpio defaults are platform-dependent

2.486. 2023-03-07 modrisb <modrisb@apollo.lv>

  • drivers/generic_gpio_libgpiod.c: fixed debug print in common
  • tests/Makefile.am, tests/generic_gpio_liblocal.c, tests/generic_gpio_test.txt, tests/generic_gpio_utest.c: added tests for gpio
  • drivers/generic_gpio_libgpiod.c: libgpiod formatting
  • drivers/generic_gpio_libgpiod.c, m4/nut_check_libgpiod.m4: adding 2 missed commits

2.487. 2023-03-07 Jim Klimov <jimklimov+nut@gmail.com>

  • ci_build.sh: add rudimentary support for "./ci_build.sh spellcheck-interactive"
  • docs/developers.txt, docs/nut.dict: docs/developers.txt: add a chapter on IDEs

2.488. 2023-03-06 modrisb <modrisb@apollo.lv>

  • drivers/generic_gpio_common.c: 2n round of refactoring after test

2.489. 2023-03-06 Jim Klimov <jimklimov@gmail.com>

  • tools/nut-scanner/scan_xml_http.c: Update scan_xml_http.c

2.490. 2023-03-06 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_usb.c, tools/nut-scanner/scan_xml_http.c: nut-scanner: reformat "Cannot load … library" reports, fix varname for libneon

2.491. 2023-03-05 modrisb <modrisb@apollo.lv>

  • drivers/generic_gpio_common.c: fixes after extensive rules& states calc tests

2.492. 2023-03-05 Jim Klimov <jimklimov@gmail.com>

  • drivers/libusb1.c: Update libusb1.c Change to conventional error-message format

2.493. 2023-03-05 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: become_user(): "pw" is not NUT_UNUSED_VARIABLE() anymore
  • drivers/libusb1.c: report text of libusb_error when libusb_kernel_driver_active() fails
  • ci_build.sh: try to ensure a TMPDIR

2.494. 2023-03-04 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: become_user(): fix behavior with NULL arg
  • tools/nut-scanner/nutscan-init.c: pepper with upsdebugx(1,…) to track overview progress of library loading (or not)
  • tools/nut-scanner/nutscan-init.c: first search for contemporary libupsclient DLL on Windows
  • tools/nut-scanner/nutscan-init.c: fix searching for libneon and libnetsnmp on Windows
  • common/common.c: fix checking for DLLs in "../lib" relative to EXE location
  • common/common.c: be sure to check for DLLs in EXE location (even if it is not "." workdir)
  • drivers/main.c: use common nut_report_config_flags() to debug-log details of the driver build
  • common/common.c: reword stderr printout as upsdebugx(1,…) pattern
  • common/common.c: externalize (and rename) struct timeval upslog_start so other methods can use the same accounting

2.495. 2023-03-02 modrisb <modrisb@apollo.lv>

  • drivers/generic_gpio_common.c, drivers/generic_gpio_libgpiod.c: removed test code and finalized styling

2.496. 2023-03-01 modrisb <modrisb@apollo.lv>

  • drivers/generic_gpio_libgpiod.c: removed define for debug

2.497. 2023-03-01 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/scheduling.txt: align example timeouts in different paragraphs
  • configure.ac: extend search for RUN_AS_USER in upsmon.conf [#1859]
  • configure.ac: reshuffle for --enable-inplace-runtime=reenter support; detect sysconfdir/user/group in one place where we care for "inplace" mode [#1859]
  • configure.ac: fix re-entry of the script when handling --enable-inplace-runtime [#1859]
  • configure.ac: comment that in some systems, the upsd in PATH is a shell wrapper [#1859] e.g. in Debian packaging where it is tied into "MODE" of nut.conf

2.498. 2023-02-28 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/developers.txt: update coding style guide about braces after if/while/for/… even for a single line
  • clients/upssched.c: parse_at(): add upsdebugx() tracing [#1858]
  • clients/upsc.c, clients/upscmd.c, clients/upslog.c, clients/upsmon.c, clients/upsrw.c, server/upsd.c, tools/nut-scanner/nut-scanner.c: Fix help()/usage() in many programs to suggest "-h" and/or "-V" options
  • clients/upssched.c: enable command-line argument handling [#1863] Closes: #1863
  • clients/upssched.c: Revert "clients/upssched.c: main(): find use for argc" This reverts commit dca2315fa8fb9a80528726cbc235310f19aa948f. Not needed anymore, and actually added a bug (prog not remembered).
  • m4/ax_realpath.m4: comment about recursion involved [#1859]
  • configure.ac: disable UNITTEST_AX_REALPATH and the exit afterwards [#1859]
  • m4/ax_realpath.m4: AX_REALPATH(): quote reported pathnames consistently [#1859]
  • m4/ax_realpath.m4: AX_REALPATH(): report if resolved pathname differs from input value [#1859]
  • m4/ax_realpath.m4: AX_REALPATH(): try AX_REALPATH_SHELL_RECURSIVE even if file is not found initially; fix how we decide it is not found [#1859]
  • m4/ax_realpath.m4: AX_REALPATH_SHELL_RECURSIVE() AX_REALPATH_SHELL_ONELEVEL(): drop support for LVL (shell vars misbehave here so not interesting) [#1859]
  • m4/ax_realpath.m4: split AX_REALPATH_SHELL_RECURSIVE() into a loop and its called method [#1859]
  • m4/ax_realpath.m4: UNITTEST_AX_REALPATH(): relocate shell logic into AX_REALPATH_SHELL_RECURSIVE() [#1859]
  • m4/ax_realpath.m4: UNITTEST_AX_REALPATH(): reword a test description [#1859]
  • m4/ax_realpath.m4: UNITTEST_AX_REALPATH(): avoid using /tmp directly if possible [#1859]
  • m4/ax_realpath.m4: format messages in UNITTEST_AX_REALPATH() and UNITTEST_AX_REALPATH_EXPECT() in a friendlier fashion [#1859]
  • m4/ax_realpath.m4: refactor UNITTEST_AX_REALPATH() with UNITTEST_AX_REALPATH_EXPECT() helper [#1859]
  • configure.ac: TEMPORARY: add call to UNITTEST_AX_REALPATH and exit after it [#1859]
  • m4/ax_realpath.m4: introduce UNITTEST_AX_REALPATH [#1859]

2.499. 2023-02-27 modrisb <modrisb@apollo.lv>

  • m4/nut_check_libgpiod.m4: naming change for PKG_CONFIG - dev version
  • configure.ac, drivers/Makefile.am, m4/nut_check_libgpiod.m4: added m4 file for driver

2.500. 2023-02-27 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: Update docs/nut.dict

2.501. 2023-02-27 Jim Klimov <jimklimov+nut@gmail.com>

  • m4/ax_realpath.m4: add some error-checking for unresolved paths [#1859]
  • configure.ac, m4/ax_realpath.m4: configure.ac: refactor realpath_m4() into m4/ax_realpath.m4 [#1859]
  • configure.ac: introduce realpath_m4() [#1859]

2.502. 2023-02-26 modrisb <modrisb@apollo.lv>

  • docs/man/Makefile.am, docs/man/{gpio.txt ⇒ generic_gpio.txt}, drivers/Makefile.am, drivers/generic_gpio_common.c, drivers/generic_gpio_common.h, drivers/generic_gpio_libgpiod.c, drivers/generic_gpio_libgpiod.h: PR review #1 (no m4)

2.503. 2023-02-26 Jim Klimov <jimklimov@gmail.com>

  • INSTALL.nut: update instructions for parallel make all \+ check

2.504. 2023-02-25 modrisb <modrisb@apollo.lv>

  • docs/man/gpio.txt, drivers/Makefile.am, drivers/{gpio.c ⇒ generic_gpio_common.c}, drivers/{gpio.h ⇒ generic_gpio_common.h}, drivers/generic_gpio_libgpiod.c, drivers/generic_gpio_libgpiod.h: renamed source code files

2.505. 2023-02-23 modrisb <modrisb@apollo.lv>

  • drivers/gpio.c, drivers/gpio.h: refactored to better split generic code from gpio library specific code
  • docs/man/gpio.txt, docs/nut.dict: man page spellcheck fixes

2.506. 2023-02-22 modrisb <modrisb@apollo.lv>

  • drivers/gpio.c: removed local test define
  • docs/man/Makefile.am, docs/man/gpio.txt, drivers/gpio.c: PR preparation fixes
  • drivers/gpio.h: .h updates
  • docs/man/gpio.txt, drivers/gpio.c: preparing for PR
  • docs/man/gpio.txt: added draft man page

2.507. 2023-02-22 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: nut_report_config_flags(): avoid warnings about unreachable code
  • common/common.c: nut_report_config_flags(): make it clear (and safe for in-place mode) when no CONFIG_FLAGS were customized for a NUT build
  • m4/nut_report_feature.m4: fix NUT_REPORT_TARGET() for multi-token values of CC_VERSION etc.
  • configure.ac: fixup! configure.ac: report CC_VERSION (also into config.h)
  • m4/nut_report_feature.m4: fix printf() reporting of potentially "funny" strings
  • common/common.c: nut_report_config_flags(): report CC_VERSION if available
  • configure.ac: report CC_VERSION (also into config.h)
  • configure.ac, m4/nut_compiler_family.m4: minimize executions of "CC --version" etc, make it LANG-agnostic, cache as CC_VERSION etc.
  • common/common.c, configure.ac: configure.ac: actually, we should not forcefully export NUT_SOURCE_GITREV into config.h
  • common/common.c, configure.ac: configure.ac, common/common.c nut_report_config_flags(): track and report NUT_SOURCE_GITREV if available (even where nut_version.h imposes strict version)

2.508. 2023-02-20 modrisb <modrisb@apollo.lv>

  • drivers/gpio.h: initial for GPIO(2)
  • configure.ac, drivers/Makefile.am, drivers/gpio.c: initial for gpio driver support

2.509. 2023-02-13 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c: options -a id and -s id are mutually exclusive and single-use only
  • configure.ac: --enable-inplace-runtime should not disregard sysconfdir which the build user may not read

2.510. 2023-02-12 Jon Gilmore <jon@gilmore.cloud>

  • drivers/tripplite-hid.c, scripts/upower/95-upower-hid.hwdb: add support for minuteman device a0a0

2.511. 2023-02-12 Jim Klimov <jimklimov@gmail.com>

  • drivers/tripplite-hid.c: Update tripplite-hid.c Update subdriver version along with content bump

2.512. 2023-02-11 Yifeng Li <tomli@tomli.me>

  • drivers/huawei-ups2000.c: huawei-ups2000: fix broken timeout recovery behavior in Issue #1846. Occasionally, the UPS takes longer than 1 second to respond and finish transmitting a message. This causes a timeout in modbus_read_registers(), and the driver is supposed to retry the request and recover from the failure. Unfortunately, when the driver retries, instead of getting the result of the current request, the leftover bytes from the previous read is received from the serial buffer, creating invalid messages. It causes all following reads to also fail, often with an "Invalid CRC" error, and the driver can never recovery from the failure. This commit fixes the bug by flushing the buffer using function modbus_flush() before invoking modbus_read_registers(). The libmodbus timeout value is also bumped to 2 seconds to avoid unnecessary timeouts and subsequent retries. Finally, the version number is also bumped to reflect the existence of this fix.

2.513. 2023-02-07 Jim Klimov <jimklimov+nut@gmail.com>

  • INSTALL.nut: fix link to Config Prereqs in generated HTML version

2.514. 2023-02-05 Jim Klimov <jimklimov+nut@gmail.com>

  • INSTALL.nut, docs/nut.dict: INSTALL.nut: update with "in-place" rebuilds chapter [#1826]

2.515. 2023-02-03 Jim Klimov <jimklimov+nut@gmail.com>

  • .github/FUNDING.yml: Introduce .github/FUNDING.yml metadata

2.516. 2023-02-02 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: add OSC and opencollective

2.517. 2023-02-01 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: rearrange progress message for "whether to build binaries with tighter systemd integration support"
  • configure.ac: quiesce python checks for modules

2.518. 2023-01-28 Jim Klimov <jimklimov@gmail.com>

  • docs/man/riello_usb.txt: Update riello_usb.txt
  • NEWS: Update NEWS
  • docs/man/riello_usb.txt: Update riello_usb.txt

2.519. 2023-01-26 Jim Klimov <jimklimov+nut@gmail.com>

  • appveyor.yml: avoid redirect to /dev/null on Windows
  • appveyor.yml: bolt ccache location to avoid wasting space on Appveyor for older vs newer layouts
  • appveyor.yml: avoid amperesand in YAML
  • ci_build.sh: in the end, query ccache compression stats if supported
  • appveyor.yml: stash another possible ccache location
  • appveyor.yml: in the end, query ccache compression stats if supported
  • appveyor.yml: set ccache config options
  • tests/NIT/nit.sh: have a sense of time in the log_*() messages When tests fail on CI farm, this should help see timeouts due to farm under too much stress vs. "real" reasonable problems.
  • ci_build.sh: separate [build] and [check] failures (and successes) in BUILD_TYPE=default-all-errors reports

2.520. 2023-01-24 Jim Klimov <jimklimov@gmail.com>

  • NEWS: bestfortress shutdown timeout fixed [#1820]

2.521. 2023-01-23 Jim Klimov <jimklimov+nut@gmail.com>

  • ci_build.sh: suggest CI_REQUIRE_GOOD_GITIGNORE="false" in error message
  • ci_build.sh: fix condition and shorten the printed lines for install-sh warning
  • configure.ac: fix condition and shorten the printed lines for install-sh warning
  • ci_build.sh: try workarounds for old and broken install-sh [#1831]
  • configure.ac: suggest workarounds for old and broken install-sh, visibly just before the end [#1831]

2.522. 2023-01-22 Jim Klimov <jimklimov@gmail.com>

  • drivers/bestfortress.c: Update bestfortress.c Fix prints of (s)size_t variables

2.523. 2023-01-22 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/Makefile.am: give delivery of GENERATED_USB_OS_FILES more chances to succeed
  • docs/Makefile.am, docs/man/Makefile.am, scripts/Solaris/Makefile.am: */Makefile.am: replace "mkdir -p" by MKDIR_P autotools macro
  • tools/Makefile.am: do not fail (just warn) if any of GENERATED_USB_OS_FILES are missing or empty [#1831]
  • autogen.sh: ensure that nut-usbinfo.pl runs if any of its products are missing, not just a few (and comment how to keep the list updated) [#1831]
  • tools/Makefile.am: streamline "rebuilds" of GENERATED_USB_OS_FILES if needed [#1831] An alternative solution to #1832
  • tools/Makefile.am: comment GENERATED_SNMP_FILES\+GENERATED_USB_FILES vs. GENERATED_USB_OS_FILES lifecycles [#1831]
  • scripts/augeas/Makefile.am: fix EXTRA_DIST for nutupsconf.aug.in [#1831]
  • scripts/Makefile.am, tools/Makefile.am: scripts/Makefile.am: fix EXTRA_DIST for upower/95-upower-hid.hwdb [#1831]
  • scripts/devd/Makefile.am: fix EXTRA_DIST for nut-usb.conf.in [#1831]
  • scripts/udev/Makefile.am: fix EXTRA_DIST for nut-usbups.rules.in [#1831]
  • scripts/hotplug/Makefile.am: fix EXTRA_DIST for libhid.usermap [#1831]
  • ci_build.sh: help find end of NUT_x_VARIANT=… failed build (before cleanup noise) in CI logs
  • docs/config-prereqs.txt, docs/nut.dict: docs/config-prereqs.txt: suggest MKDIRPROG hack for installing on NetBSD [#1834]
  • configure.ac, m4/nut_report_feature.m4: move KEEP_NUT_REPORT definition to before AC_OUTPUT [#1826]
  • UPGRADING: document --enable-keep_nut_report_feature and that the file can be installed [#1826, #1708]
  • docs/configure.txt: debug-report of CONFIG_FLAGS is now shorter
  • docs/configure.txt: document --enable-keep_nut_report_feature and that the file can be installed [#1826]
  • configure.ac: NUT_REPORT() the PACKAGE_VERSION (and GITREV if any) valid at the time of configure run [#1826]
  • configure.ac: report GITREV (if any) valid at the time of configure run
  • m4/nut_report_feature.m4, Makefile.am: install config.nut_report_feature.log if kept [#1826]
  • m4/nut_report_feature.m4: standardize indentation, more M4 AS_IFs [#1826]
  • drivers/richcomm_usb.c, drivers/nutdrv_atcl_usb.c, drivers/bcmxcp_usb.c: sync naming changes with drivers/libusb1.c [#1819, #1763, #1764]
  • drivers/libusb1.c: bump version for libusb_get_device_address() vs. libusb_get_port_number() [#1819]
  • tools/nut-scanner/scan_usb.c: sync naming and method changes with drivers/libusb1.c [#1819]
  • drivers/libusb1.c: align device_addr/devnum printing (back) with their int types [#1819]

2.524. 2023-01-21 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: fix systemd-tmpfiles detection from AC_CHECK_PROGS to AC_PATH_PROG for full pathname [#1822]
  • configure.ac: set --prefix, --sbindir or --bindir into CONFIG_FLAGS according to older binaries found (if not provided otherwise) [#1826, #1709]
  • configure.ac: do not pollute "SBINDIR" variable with tests for nut_enable_inplace_runtime, try PATH beside PREFIX, and generalize to try upsc if upsd is not found [#1826]
  • configure.ac: typo fix for CONFIG_FLAGS [#1826]
  • configure.ac: report determining CONFIG_FLAGS [#1709, #1826]
  • configure.ac: track NUT_VERSION_DEPLOYED which we inherit from with --enable-inplace-runtime [#1826]
  • configure.ac: update comments for systemd/nut-common-tmpfiles.conf.in
  • common/common.c: refactor nut_report_config_flags() to allow for longer option lists for purposes of "configure --enable-inplace-runtime" [#1826]
  • clients/Makefile.am, tools/nut-scanner/Makefile.am: Refactor nut_report_config_flags() from many programs into common.c [#1826, #1709] - bump libs version-info
  • clients/upsc.c, clients/upscmd.c, clients/upslog.c, clients/upsmon.c, clients/upsrw.c, common/common.c, drivers/main.c, include/common.h, server/upsd.c, tools/nut-scanner/nut-scanner.c: Refactor nut_report_config_flags() from many programs into common.c [#1826, #1709]
  • configure.ac: do not track in CONFIG_FLAGS that we --disable-runtime-support, and only track once that we --enable-runtime-support [#1826]
  • lib/libupsclient-config.in: comment that NUT_VERSION_MACRO in binaries may differ from PACKAGE_VERSION in the script [#1826]

2.525. 2023-01-20 Neil Romig <neilromig@gmail.com>

  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: Update nut-driver-enumerator.sh.in Remove backslash from grep expression at line 836 to avoid grep warning of stray backslash.

2.526. 2023-01-20 Greg Troxel <gdt@lexort.com>

  • drivers/bestfortress.c: bestfortress: Switch logging to func Add a few comments about needed future work, but no code changes. Adjust to (surprising to me) non-POSIX file descriptor types.

2.527. 2023-01-19 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: prepare nut-common-tmpfiles.conf.in subdir for @STATEPATH@/upssched, and update comments

2.528. 2023-01-18 Jim Klimov <jimklimov+nut@gmail.com>

  • autogen.sh, configure.ac, docs/config-prereqs.txt: Bump commented suggestions to automake-1.13 or newer Follow-up to #1821
  • scripts/python/module/PyNUT.py.in: update for dual Py2/Py3 citizenship
  • scripts/python/app/NUT-Monitor-py2gtk2.in, scripts/python/app/NUT-Monitor-py3qt5.in, scripts/python/module/PyNUT.py.in, scripts/python/module/README, scripts/python/module/test_nutclient.py.in: scripts/python/*: import definition and use-case of CheckUPSAvailable() from Fedora packaging patches Py2: https://src.fedoraproject.org/rpms/nut/blob/3c9fea3a359db592e3c7d25ff5c8050325b21dfe/f/nut-2.6.5-unreachable.patch Py3: https://src.fedoraproject.org/rpms/nut/blob/48685366900985696be8371d8deea6494ae36c43/f/nut-2.6.5-unreachable.patch by Michal Hlavinka
  • configure.ac, scripts/systemd/nut-driver-enumerator.service.in, scripts/systemd/nut-driver@.service.in, scripts/systemd/nut-monitor.service.in, scripts/systemd/nut-server.service.in: scripts/systemd/*.service.in: parameterize systemd-tmpfiles program location
  • scripts/systemd/nut-driver-enumerator.service.in, scripts/systemd/nut-driver@.service.in, scripts/systemd/nut-monitor.service.in, scripts/systemd/nut-server.service.in: scripts/systemd/*.service.in: ExecStartPre systemd-tmpfiles to facilitate install/upgrade with less fuss Inspired by Fedora Rawhide patches at https://src.fedoraproject.org/rpms/nut/blob/0a29e563e374f274f801270bce8eaab9159c7d16/f/nut-2.6.3-tmpfiles.patch
  • ci_build.sh: shuffle quotes in NUT_*_VARIANT=… reports for easier search in logs
  • ci_build.sh: make maintainer-clean less noisy in CI if V=0 (automake clean.m4 echoes unconditionally)
  • Makefile.am, clients/Makefile.am, common/Makefile.am, docs/Makefile.am, docs/man/Makefile.am, drivers/Makefile.am, include/Makefile.am, scripts/python/Makefile.am, server/Makefile.am, tests/Makefile.am, tests/NIT/Makefile.am, tools/nut-scanner/Makefile.am: */Makefile.am: use AM_V_at for optionally-quieter cleanup
  • ci_build.sh: for developer builds, disable silent rules to see all problems better
  • ci_build.sh: make cleanup less noisy
  • ci_build.sh: make verbose builds actually verbose
  • configure.ac: default to automake-"silent" rules for builds

2.529. 2023-01-17 Edgar Fuß <ef@math.uni-bonn.de>

  • drivers/libusb1.c: Use libusb_get_device_address(), not libusb_get_port_number() In USB device enumeration, when setting curDevice→Device, use libusb_get_device_address(), not libusb_get_port_number(). While there, rename bus to bus_num to avoid ambiguity. When printf()ing devnum (a size_t), use %zd, which is POSIX, not PRIuSIZE, which is not.

2.530. 2023-01-16 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/app/nut-monitor.appdata.xml: nut-monitor.appdata.xml: add launchable=nut-monitor.desktop Inspired by https://salsa.debian.org/debian/nut/-/blob/a009ca10a327d7db383f5d7726091050ceb4d60f/debian/patches/appdata-launchable.patch from @bigon but adjusted for general version-agnostic dispatcher (py2 or py3, whatever is installed for this end-user deployment)
  • tools/nut-scanner/scan_nut.c: simplify check for "port" similar to scan_avahi.c [#1815]
  • tools/nut-scanner/scan_avahi.c: comments similar to scan_nut.c
  • tests/NIT/nit.sh: verify that port number is suffixed by nut-scanner when needed [#1815]
  • tools/nut-scanner/scan_nut.c: comment about "nutclient" driver value
  • tools/nut-scanner/scan_nut.c: suffix non-standard port numbers to "port" in config [#1815]
  • tools/nut-scanner/scan_nut.c: use uint16_t port to align with upsclient.c [#1815]
  • tests/NIT/nit.sh: fix LD_LIBRARY_PATH for testcase_sandbox_nutscanner_list()
  • tests/NIT/nit.sh: simplify bail-out pattern for nut-scanner to match on more OSes
  • configure.ac: CONFIG_FLAGS: older ksh dislikes doublequotes inside backticks, all doublequoted outside ⇒ use $(…)

2.531. 2023-01-15 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: fix support for CONFIG_FLAGS with spaces
  • configure.ac: log the CLI options for restarted run when nut_enable_inplace_runtime
  • tests/NIT/nit.sh: testcase_sandbox_nutscanner_list(): excuse lack of libupsclient.so/dll in path
  • configure.ac, docs/configure.txt: configure.ac: consult CONFIG_FLAGS_DEPLOYED and CONFIG_FLAGS when --enable-inplace-runtime mode is used
  • drivers/main.c: report CONFIG_FLAGS always when debugging [#1789]
  • clients/upsc.c, clients/upscmd.c, clients/upslog.c, clients/upsmon.c, clients/upsrw.c, docs/configure.txt, drivers/main.c, server/upsd.c, tools/nut-scanner/nut-scanner.c: NUT programs should report CONFIG_FLAGS for help/version requests with debug enabled Related-to: #1789
  • configure.ac: lib/libupsclient-config is a SCRIPTFILE
  • lib/libupsclient-config.in: report CONFIG_FLAGS
  • lib/libupsclient-config.in: double-quote shell expansions
  • tools/nut-scanner/scan_avahi.c: when bailing out of Avahi scan, do so comprehensibly for readers of error messages
  • tests/NIT/nit.sh: add rudimentary nut-scanner tests
  • tools/nut-scanner/nutscan-display.c: weave nutdevX numbering for different scan types when generating ups.conf with sanity-check warnings with a global var [#1810]

2.532. 2023-01-15 Greg Troxel <gdt@lexort.com>

  • drivers/bestfortress.c: driver/bestfortress: Fix serious shutdown bug and improve shutdown code - Move setting "ups.shutdown.delay" earlier so that it is available for upsdrvctl shutdown. This results in using that delay, instead of 1s. - Change shutdown delay to 20s from 10s, because that seems more common, and 10s feels too tight. - Add logging about shutdown. When run with -k, ups.delay.shutdown has apparently not been initialized. Fall back to 20, rather than 1, and log better.
  • drivers/bestfortress.c: drivers/bestfortress: Rationalize and improve debugging - Define a debug logging plan - Add debug log calls - Adjust several existing calls This commit does not intend to modify behavior other than logging.

2.533. 2023-01-14 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-scanner/nutscan-display.c: nutscan_display_sanity_check_serial(): fix failsafe condition [#1810]
  • tools/nut-scanner/nutscan-display.c: nutscan_display_sanity_check_serial(): if not null, one device entry exists [#1810]
  • tools/nut-scanner/nutscan-display.c: nutscan_display_sanity_check_serial(): trace progress through logic [#1810]
  • tools/nut-scanner/nutscan-display.c: trace entry into the display methods [#1810]
  • NEWS, UPGRADING, docs/man/Makefile.am, docs/man/nut-scanner.txt, docs/man/nutscan.txt, docs/man/nutscan_add_option_to_device.txt, docs/man/nutscan_cidr_to_ip.txt, docs/man/nutscan_display_parsable.txt, docs/man/nutscan_display_sanity_check.txt, docs/man/nutscan_display_sanity_check_serial.txt, docs/man/nutscan_display_ups_conf.txt, …/nutscan_display_ups_conf_with_sanity_check.txt, docs/man/nutscan_free_device.txt, docs/man/nutscan_get_serial_ports_list.txt, docs/man/nutscan_init.txt, docs/man/nutscan_new_device.txt, docs/man/nutscan_scan_avahi.txt, docs/man/nutscan_scan_eaton_serial.txt, docs/man/nutscan_scan_ipmi.txt, docs/man/nutscan_scan_nut.txt, docs/man/nutscan_scan_snmp.txt, docs/man/nutscan_scan_usb.txt, docs/man/nutscan_scan_xml_http_range.txt, tools/nut-scanner/nut-scan.h, tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-display.c: nut-scanner: report bogus and duplicate serial numbers [#1810]
  • NEWS, docs/config-prereqs.txt, docs/nut.dict: docs/config-prereqs.txt: document notes about a build for Solaris 8 [#1736, #1738]
  • NEWS: mention instructions for CentOS 6 native NUT 2.8.x builds [#1804]

2.534. 2023-01-12 Jim Klimov <jimklimov+nut@gmail.com>

  • .editorconfig: Revert ".editorconfig: try to neuter additional IntelliJ IDEA formatter [#894]" This reverts commit f9b195a4650766ef81cc4daa35f2d6cee932c87a.
  • .editorconfig, AUTHORS, INSTALL.nut, NEWS, README, TODO, UPGRADING, docs/.editorconfig, docs/acknowledgements.txt, docs/cables/apc.txt, docs/cables/ge-imv-victron.txt, docs/cables/mgeups.txt, docs/cables/powerware.txt, docs/cables/repotec.txt, docs/config-prereqs.txt, docs/maintainer-guide.txt, docs/man/.editorconfig, docs/man/apcsmart.txt, docs/man/apcupsd-ups.txt, docs/man/asem.txt, docs/man/bcmxcp.txt, docs/man/bcmxcp_usb.txt, docs/man/belkinunv.txt, docs/man/bestfortress.txt, docs/man/blazer-common.txt, docs/man/blazer_usb.txt, docs/man/generic_modbus.txt, docs/man/liebert-esp2.txt, docs/man/macosx-ups.txt, docs/man/nut-ipmipsu.txt, docs/man/nut-scanner.txt, docs/man/nut_usb_addvars.txt, docs/man/nutdrv_qx.txt, docs/man/nutdrv_siemens_sitop.txt, docs/man/powerman-pdu.txt, docs/man/socomec_jbus.txt, docs/man/tripplite_usb.txt, docs/man/ups.conf.txt, docs/man/upsclient.txt, docs/man/upslog.txt, docs/nut.dict, docs/snmp-subdrivers.txt, docs/solaris-usb.txt, scripts/RedHat/README, scripts/Windows/DriverInstaller/README.txt, scripts/Windows/README, scripts/augeas/README, scripts/devd/README, scripts/hotplug/README, scripts/python/README, scripts/systemd/README, scripts/udev/README, scripts/ufw/README, tests/NIT/README, tools/nut-scanner/README: Apply .editorconfig driven cleanup to docs [#894]
  • docs/man/nut_usb_addvars.txt: update comment for allow_duplicates [#1756]
  • docs/man/nut_usb_addvars.txt: update comment for nut-scanner [#1790]
  • .editorconfig: exempt itself from trailing whitespace (possibly needed for block-comment definitions) [#894]
  • .editorconfig: try to neuter additional IntelliJ IDEA formatter [#894]
  • docs/developers.txt, docs/nut.dict: docs/developers.txt: mention editorconfig [#894]
  • .editorconfig: Elaborate on .editorconfig some more [#894]
  • .editorconfig: Elaborate on .editorconfig [#894]
  • .editorconfig: Introduce a basic .editorconfig file [#894]
  • configure.ac: drop double-quotes from NUT_REPORT*() args [#1708]
  • NEWS, docs/man/upsdrvctl.txt, drivers/upsdrvctl.c: drivers/upsdrvctl.c: add "-F"/"-B" args for drivers to be fore/back-grounded explicitly [#1759]
  • drivers/upsdrvctl.c: whitespace fix in usage()
  • docs/config-prereqs.txt: clarify lack of libusb-1.0 in CentOS 6
  • autogen.sh: ensure quieter perl on system with invalid locale

2.535. 2023-01-11 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac, m4/ax_check_compile_flag.m4: relax minimum autoconf to 2.63 (checked on CentOS6)
  • docs/config-prereqs.txt, docs/nut.dict: docs/config-prereqs.txt: update for CentOS6
  • scripts/systemd/nut-driver@.service.in, scripts/systemd/nut-monitor.service.in, scripts/systemd/nut-server.service.in: network-online.target dependency [#749]
  • UPGRADING, docs/nut.dict: UPGRADING: clarify improvements for "duplicate" USB device handling in NUT 2.8.1 [#1763, #1766, #1756, #1790]
  • drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c: clarify expected/got byte amounts (fix typo) [#1797]
  • configure.ac: evaluate pkgconfigdir into a real pathname Have an needs further evaluation
  • configure.ac: report enabling SMF support (consistent vs. reporting systemd already) [#1708]
  • configure.ac: report installation paths for optional third-party integrations [#1708, #1668]
  • configure.ac: simplify reporting of Python site-packages location [#1787, #1708]
  • configure.ac: rearrange Python interpreter and path reporting [#1787, #1708]
  • m4/nut_report_feature.m4: introduce NUT_REPORT_PATH_INTEGRATIONS and NUT_REPORT_SETTING_PATH_INTEGRATIONS chapter [#1708]
  • m4/nut_check_python.m4: fix copy-paste typo in autoconf m4 markup [#1787]
  • m4/nut_check_python.m4: use stricter conditions to check if PYTHONx values are invalid [#1787]
  • drivers/apc-hid.c: comment 0xff86007c as "APCDelayBeforeReboot" vs "APCForceShutdown" uncertainty [#1796]
  • data/driver.list.in: update for APC CS500 (from 2004) [#1776]

2.536. 2023-01-10 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: report Python choices (if installing anything of it) [#1787]
  • m4/nut_check_python.m4: if resolved versioned interpreter filename is not a strict expected pattern, fall back to search [#1787]
  • m4/nut_check_python.m4: warn if using "PYTHON" via "/usr/bin/env" and not exact path [#1787]
  • m4/nut_check_python.m4: if major version is known and expected, try to resolve the versioned interpreter starting from any initial name (check sanity afterwards, not before) [#1787]
  • m4/nut_check_python.m4: add python 3.10 to searching list [#1787]
  • m4/nut_check_python.m4: use pythonX-config if available to find the interpreter path [#1787]
  • m4/nut_check_python.m4: add comments (and warning) about interpreter names without an exact version (2.* or 3.*) [#1787]
  • docs/configure.txt: warn about delivering for both Pythons if two are present [#1787]
  • ci_build.sh: copy-paste typo fix for CANBUILD_NIT_TESTS handling
  • NEWS, drivers/libusb0.c, drivers/libusb1.c, tools/nut-scanner/scan_usb.c: nut-scanner: report same USB matching values as seeked by libusb{0,1}.c [#1790]
  • NEWS, drivers/powercom.c: powercom driver should try harder to refresh data from device [#356]
  • drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c: bump version for allow_duplicates [#1756]

2.537. 2023-01-09 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/configure.txt: warn about naming "relaxed" python interpreter versions [#1787]
  • m4/nut_check_python.m4: for args like --with-python=python3 try to find build environment dictated pathname first, fall back to "env" second [#1787] Note: this does not apply to --with-python="prog args" as a bit too complex for now
  • m4/nut_check_python.m4, docs/configure.txt: detect not-specified PYTHON2/PYTHON3 from PYTHON first (if version is suitable) [#1787]
  • m4/nut_check_python.m4: if --with-python2/3 are not specified, use exact path from --with-python (if available) to match its site-packages [#1787]
  • docs/configure.txt: clarify that autogen.sh and configure may default to different PYTHON versions [#1787]
  • m4/nut_check_python.m4: actually fail if a Python version was required but not found [#1787]
  • configure.ac, m4/nut_check_python.m4: refactor with NUT_CHECK_PYTHON_DEFAULT [#1518]
  • docs/configure.txt: current configure script does not use "PYTHON{,2,3}" envvars [#1787]
  • docs/configure.txt: document python, pynut and nut_monitor related options and autogen.sh fuss about it [#1787]
  • docs/configure.txt: whitespace fixes
  • docs/configure.txt: hint for builds of git checkouts [#1750]

2.538. 2023-01-08 Greg Troxel <gdt@lexort.com>

  • conf/upsd.conf.sample: upsd.conf.sample: Clarify LISTEN/firewall comments

2.539. 2023-01-07 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: fix if/ifdef for configure-detected methods [#1590, #1739]
  • NEWS, clients/upsclient.h, clients/upsmon.c, clients/upsmon.h, conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt, docs/man/upsmon.txt, docs/nut.dict: upsmon: Introduce POLLFAIL_LOG_THROTTLE_MAX [#506]
  • clients/upsmon.c: cosmetic fixes
  • NEWS, docs/FAQ.txt, docs/config-notes.txt, docs/man/upsd.txt: fixup! scripts/systemd/nut-server.service.in, scripts/systemd/nut-monitor.service.in: provide an Alias for convenience (upsd, upsmon)
  • docs/configure.txt: document --with-libsystemd related options [#1590]
  • common/common.c: optionally define DEBUG_SYSTEMD_WATCHDOG to ignore upsnotify_reported_watchdog_systemd hush-flag when troubleshooting [#1590]
  • common/common.c: set WATCHDOG_PID along with MAINPID and re-enable not-posting the pings if expected PID is not ours [#1590]
  • common/common.c, m4/nut_check_libsystemd.m4: use sd_notify_barrier() if available after reporting MAINPID to systemd [#1590]
  • configure.ac, docs/man/upsd.txt: configure.ac: run systemd/nut-server.service both with a PID file and without forking [#1781]
  • scripts/systemd/nut-server.service.in, scripts/systemd/nut-monitor.service.in: use Restart=on-failure so that clean intentional exit (e.g. by signal handling) does not revive it [#1781]

2.540. 2023-01-06 Yifeng Li <tomli@tomli.me>

  • drivers/huawei-ups2000.c: huawei-ups2000.c: log error code/string for Modbus failures Currently, failures in modbus_read_registers() or modbus_write_registers() do not show any error code or message in the log, making it difficult to debug. This commit logs the error code, errno, and modbus_strerror() if an error occurs. Furthermore, the log level of a fatal warning has been changed from LOG_WARNING to LOG_ERR (LOG_WARNING was previously used due to an oversight).

2.541. 2023-01-06 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: upsnotify(): opportunistically post sd_notify() even if "WATCHDOG_PID" mismatches [#1590]
  • common/common.c: upsnotify(): log checking "WATCHDOG_USEC" and "WATCHDOG_PID" (once) [#1590]
  • common/common.c: upsnotify(): log setting MAINPID [#1590]
  • common/common.c: upsnotify(): hush watchdog-related logging further [#1590]
  • configure.ac, scripts/systemd/nut-driver@.service.in, scripts/systemd/nut-monitor.service.in, scripts/systemd/nut-server.service.in: Suggest default systemd NotifyAccess settings for upsd, upsmon and drivers [#1590]
  • common/common.c: upsnotify(): revise "snprintf needed more than…" messages [#1590]
  • configure.ac: comment a TODO: consider calling "systemd-notify" if have no sd_notify() [#1590]
  • configure.ac, scripts/systemd/nut-driver@.service.in, scripts/systemd/nut-monitor.service.in, scripts/systemd/nut-server.service.in: Suggest default systemd watchdog settings for upsd, upsmon and drivers [#1590]
  • NEWS, UPGRADING, docs/nut.dict: NEWS, UPGRADING: added libsystemd notification support [#1590]
  • NEWS, UPGRADING: cosmetic fixes
  • configure.ac, scripts/systemd/nut-driver@.service.in, scripts/systemd/nut-monitor.service.in, scripts/systemd/nut-server.service.in: configure.ac, scripts/systemd/*.in: optionally support Type=notify for upsd, upsmon and drivers [#1590]
  • scripts/systemd/nut-server.service.in, scripts/systemd/nut-monitor.service.in: provide an Alias for convenience (upsd, upsmon)
  • drivers/main.c: make use of new upsnotify() [#1590]
  • server/upsd.c: make use of new upsnotify() [#1590]
  • clients/upslog.c: make use of new upsnotify() [#1590]
  • clients/upsmon.c: make use of new upsnotify() [#1590]
  • common/common.c: parsepid(): handle NULL input reasonably on all platforms [#1590]
  • drivers/libusb1.c: handle non-zero libusb port numbers as valid [#1774]

2.542. 2023-01-06 Greg Troxel <gdt@lexort.com>

  • docs/man/upsmon.txt: Explain POWERDOWNFLAG Document that it is removed at successful startup

2.543. 2023-01-05 Jim Klimov <jimklimov+nut@gmail.com>

  • common/Makefile.am, common/common.c, include/common.h: common/common.c: add upsnotify() method into libcommon.la (but not libcommonclient) [#1590]
  • configure.ac, drivers/Makefile.am: use LIBI2C_LIBS to avoid pulling -li2c everywhere
  • configure.ac, docs/config-prereqs.txt, m4/nut_check_libsystemd.m4: m4/nut_check_libsystemd.m4, configure.ac: On systemd aware OSes, optionally integrate with sd_notify() [#1590]
  • NEWS: mention update of NUT COPYING file [#1758]
  • NEWS, docs/man/nut_usb_addvars.txt, drivers/libusb0.c, drivers/libusb1.c: Introduce an allow_duplicates flag for common USB matching options [#1756]
  • drivers/libusb0.c, drivers/libusb1.c, drivers/usb-common.c: drivers/libusb{0,1}.c, drivers/usb-common.c: update comments in device matcher code
  • drivers/usb-common.h: update amount of supported possibly unique fields to try for device matching
  • drivers/libusb0.c, drivers/libusb1.c, drivers/usb-common.c: drivers/libusb{0,1}.c, drivers/usb-common.c: update comments in device matcher code

2.544. 2023-01-05 Greg Troxel <gdt@lexort.com>

  • docs/man/upsdrvctl.txt: docs/man: Clarify upsdrvctl shutdown
  • docs/man/bestfcom.txt, docs/man/bestfortress.txt, docs/man/bestups.txt: docs/man: Clarify Best driver support for Fortress LI660
  • MAINTAINERS: add pkgsrc

2.545. 2023-01-05 Edgar Fuß <ef@math.uni-bonn.de>

  • drivers/libusb1.c: Set curDevice→Device during USB enumeration During USB enumeration, set curDevice→Device. Try to use libusb1’s port number obtained by libusb_get_port_number(), but that seems useless at least on NetBSD. So, use devnum (the enumeration loop variable), which at least makes two identically looking USB UPSen distinguishable again. Maybe we want to add a Port property set to what libusb_get_port_number() reports? Previously missed during refactoring to libusb1.
  • drivers/nutdrv_qx_masterguard.c: Add experimental prefix missed in 7ef2874e81 drivers/nutdrv_qx_masterguard.c: Add "experimental." prefix in masterguard_claim(). Needed because that prefix had been added (in 7ef2874e81952fac532014a8840a217cf1d636b6) to the variable names in the masterguard_qx2nut[] table.

2.546. 2023-01-04 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS: announce new "driver.state" feature [#1767]
  • docs/nut-names.txt, drivers/adelsystem_cbi.c, drivers/bcmxcp_usb.c, drivers/blazer_usb.c, drivers/generic_modbus.c, drivers/main.c, drivers/nutdrv_qx.c, drivers/powerman-pdu.c, drivers/richcomm_usb.c, drivers/riello_usb.c, drivers/tripplite_usb.c, drivers/usbhid-ups.c: driver/*.c: report reconnection attempts as a "driver.state" [#1767]
  • drivers/main.c: report where driver.state changes from init.* to just before regular work [#1767]
  • docs/nut-names.txt, docs/nut.dict, drivers/main.c: drivers/main.c, docs/nut-names.txt: introduce "driver.state" tracking [#1767]
  • docs/nut-names.txt: update with final RFC 9271 reference
  • docs/nut-names.txt: update WITH_UNMAPPED_DATA_POINTS [#1699, #1742]
  • drivers/richcomm_usb.c: hide from help() the USB matching settings that are not currently handled by the driver [#1768]
  • docs/man/richcomm_usb.txt: hide from docs the USB matching settings that are not currently handled by the driver [#1768]
  • docs/man/nut_usb_addvars.txt: document usb_set_altinterface setting (from libusb{0,1}.c)
  • NEWS: man pages refactored for USB matching options description [#1766]
  • docs/man/usbhid-ups.txt: refactor to include nut_usb_addvars.txt
  • docs/man/nut_usb_addvars.txt: update with reasoning for nut_usb_addvars settings from usbhid-ups.txt
  • docs/man/tripplite_usb.txt: refactor to include nut_usb_addvars.txt
  • docs/man/nut_usb_addvars.txt: update with references to lsusb and regex from tripplite_usb.txt
  • docs/man/richcomm_usb.txt, docs/man/riello_usb.txt: refactor to include nut_usb_addvars.txt [#1763]
  • docs/man/nutdrv_qx.txt: refactor to include nut_usb_addvars.txt
  • docs/man/nut_usb_addvars.txt: pick up "port" mention from nutdrv_qx.txt and expand on it
  • drivers/nutdrv_atcl_usb.c: report device_match_func() failure and refer to nutdrv_qx more prominently
  • docs/man/nutdrv_atcl_usb.txt: this driver uses a very custom device-matcher with only a vendor string
  • NEWS, drivers/Makefile.am, drivers/nutdrv_atcl_usb.c: Revert "drivers/nutdrv_atcl_usb.c: upsdrv_makevartable(): refer to nut_usb_addvars() [#1754]" This reverts commit 3b1b921669da9ca7f360cbcfa9645fa6816f66ed. This driver uses a very custom device-matcher.
  • docs/man/bcmxcp_usb.txt: mention lack of support for common nut_usb_addvars [#1764]
  • docs/man/Makefile.am, docs/man/blazer-common.txt, docs/man/nut_usb_addvars.txt, docs/nut.dict: Introduce docs/man/nut_usb_addvars.txt (initial content from blazer-common.txt with updated formatting)
  • NEWS: mention the fix for USB matching options fix for some drivers
  • drivers/riello_usb.c: upsdrv_makevartable(): refer to nut_usb_addvars() [#1754]
  • drivers/Makefile.am, drivers/richcomm_usb.c: drivers/richcomm_usb.c: upsdrv_makevartable(): refer to nut_usb_addvars() [#1754]
  • drivers/Makefile.am, drivers/nutdrv_atcl_usb.c: drivers/nutdrv_atcl_usb.c: upsdrv_makevartable(): refer to nut_usb_addvars() [#1754]
  • drivers/blazer_usb.c, drivers/nutdrv_qx.c: upsdrv_makevartable(): cosmetic fixes
  • drivers/bcmxcp.h: fix include-fencing macros
  • configure.ac: make default POWERDOWNFLAG configurable [#529] - escape more for autotools
  • configure.ac, scripts/Makefile.am, scripts/RedHat/.gitignore, scripts/RedHat/ups, scripts/RedHat/ups.in, scripts/RedHat/upsd, scripts/RedHat/upsd.in, scripts/RedHat/upsmon, scripts/RedHat/upsmon.in: scripts/Redhat/*: drop older scripts with hardcoding, modernize .in templates for POWERDOWNFLAG and similar config options
  • configure.ac: revise configuration of NUT path location variables and their substitutions

2.547. 2023-01-03 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/man/belkinunv.txt: modernize about "upsmon -K" and POWERDOWNFLAG or explicit /etc/killpower [#529]
  • docs/FAQ.txt: modernize about "upsmon -K" and POWERDOWNFLAG or explicit /etc/killpower [#529]
  • NEWS, conf/upsmon.conf.sample.in, configure.ac, docs/configure.txt, docs/nut.dict: configure.ac and many others: make default POWERDOWNFLAG configurable [#529] Closes: #529
  • server/conf.c, server/conf.h, server/upsd.c: server/upsd.c, server/conf.c: remember debug level specified in command line args, may be useful in reload [#1761] Closes: #1761
  • clients/upsmon.c: do not report initial debug level twice
  • clients/upsmon.c: remember debug level specified in command line args, may be useful in reload [#1761]
  • clients/upsmon.c: "upsmon -K" should not die if daemon is running [#1680] Closes: #1680
  • clients/upsmon.c: debug-trace notification activity [#1760]

2.548. 2023-01-02 Jim Klimov <jimklimov+nut@gmail.com>

  • COPYING, docs/nut.dict: COPYING: update to acknowledge codebase picked up from BSD, curl and CC BY-SA sources over time
  • docs/man/ups.conf.txt, docs/man/upsdrvctl.txt, docs/man/upsdrvsvcctl.txt, drivers/upsdrvctl.c, scripts/systemd/nut-driver@.service.in: drivers/upsdrvctl.c, scripts/systemd/nut-driver@.service.in: add support for NUT_IGNORE_NOWAIT [#1753]
  • UPGRADING: highlight nut-common.tmpfiles(.in) ⇒ nut-common-tmpfiles.conf(.in) rename and other changes since NUT v2.8.0 release
  • autogen.sh, configure.ac, scripts/systemd/.gitignore, scripts/systemd/Makefile.am: Rename generated nut-common.tmpfiles(.in) ⇒ nut-common-tmpfiles.conf(.in) to install a *.conf pattern [#1754] Follow-up for #1030, #1037, #1117 May be related to #1712
  • NEWS, docs/nut.dict: NEWS: reference arcane installation know-how for Solaris 8 [#1736]
  • NEWS: Clarified documentation in codebase according to end-user feedback for NUT v2.8.1 release
  • INSTALL.nut: clarify that the instruction is for tarballs (hint for builds of git checkouts) [#1750]
  • docs/man/upsmon.txt: clarify that FSD latches until upsd is restarted [#1721]
  • docs/man/upsmon.txt: rearrange paragraphs with related content [#1721]
  • tools/nut-scanner/nutscan-init.c: adjust WIN32 shared library detection for SNMP and NEON [#1735] At least as of Appveyor CI builds and their DLL naming both on MSYS2 MinGW "semi-native" builds, and linux mingw (libneon).
  • tools/nut-scanner/nutscan-init.c: annotate blocks for shared library detection

2.549. 2022-12-28 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/NIT/nit.sh: testcase_upsd_allow_no_device(): give VERY laggy systems (e.g. build farm swapping) another chance
  • ci_build.sh: apply CCACHE PATH discovery to mingw builds
  • ci_build.sh: cosmetic fix
  • ci_build.sh: report PATH and CCACHE decisions in build host settings

2.550. 2022-12-26 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/augeas/Makefile.am: clean away nutupsconf.aug.in.AUTOGEN_WITHOUT if it appears
  • configure.ac: if default "python" was not found, use py2 or py3; avoid keeping "no" as an answer [#1736]
  • m4/nut_check_python.m4: recognize python-3.6 too
  • include/common.h: size_t
  • tests/NIT/nit.sh: avoid "sed -i" - safer approach [#1736]

2.551. 2022-12-25 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/gitlog2changelog.py.in: tools/gitlog2changelog.py: avoid prefixing file list to messages whose commit comment starts with equivalent list
  • tools/gitlog2changelog.py.in: tools/gitlog2changelog.py: support Python 3.6 (and older 3.x) regarding UTF-8 content of git changelog
  • drivers/belkin-hid.c, drivers/cps-hid.c, drivers/ever-hid.c, drivers/idowell-hid.c, drivers/liebert-hid.c, drivers/powercom-hid.c, drivers/tripplite-hid.c: drivers/*-hid.c: fence WITH_UNMAPPED_DATA_POINTS [#1699]
  • drivers/apc-ats-mib.c, drivers/apc-epdu-mib.c, drivers/apc-mib.c, drivers/apc-pdu-mib.c, drivers/compaq-mib.c, drivers/delta_ups-mib.c, drivers/eaton-ats16-nm2-mib.c, drivers/eaton-ats16-nmc-mib.c, drivers/eaton-ats30-mib.c, drivers/eaton-pdu-marlin-mib.c, drivers/eaton-pdu-nlogic-mib.c, drivers/emerson-avocent-pdu-mib.c, drivers/hpe-pdu-mib.c, drivers/hpe-pdu3-cis-mib.c, drivers/huawei-mib.c, drivers/raritan-px2-mib.c: drivers/*-mib.c: fence WITH_UNMAPPED_DATA_POINTS [#1699]
  • NEWS, configure.ac, docs/configure.txt, docs/hid-subdrivers.txt, docs/snmp-subdrivers.txt, scripts/subdriver/gen-snmp-subdriver.sh, scripts/subdriver/gen-usbhid-subdriver.sh: configure.ac, scripts/subdriver/gen-*.sh: introduce WITH_UNMAPPED_DATA_POINTS flag [#1699]
  • tools/gitlog2changelog.py.in: tools/gitlog2changelog.py: avoid prefixing file list to messages whose commit comment starts with equivalent list
  • tools/gitlog2changelog.py.in: tools/gitlog2changelog.py: support Python 3.6 (and older 3.x) regarding UTF-8 content of git changelog

2.552. 2022-12-22 Jim Klimov <jimklimov@gmail.com>

  • common/common.c, common/snprintf.c, configure.ac, drivers/mge-hid.c: configure.ac: fix AC_CHECK_FUNCS ⇒ AC_CHECK_DECLS where we care for includes [#1738]

2.553. 2022-12-22 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac, tests/.gitignore, tests/Makefile.am: configure.ac, tests/Makefile.am: introduce and check for REQUIRE_NUT_STRARG flag [#1736, #1737]
  • tests/nutlogtest.c: reword message so we see it even if libc printf("%s", NULL) does a null-dereference [#1736]
  • tests/NIT/nit.sh: avoid PYTHON=no [#1736]
  • tests/NIT/nit.sh: avoid "sed -i" [#1736]
  • tests/NIT/nit.sh: dumb down shell syntax for older Solaris interpreter [#1736]
  • tools/nut-usbinfo.pl: old typo fix (overlaid file variable and file name)
  • configure.ac, tools/nut-scanner/Makefile.am: if we HAVE_SEMAPHORE, some systems may need additional SEMLIBS [#1736]
  • tools/Makefile.am: avoid spurious error messages when PYTHON=no [#1736]
  • scripts/augeas/Makefile.am: avoid spurious error messages when PYTHON=no [#1736]
  • drivers/mge-hid.c: provide a fallback round() [#1736]
  • tests/getvaluetest.c: do not directly include stdint.h (not ubiquitous) [#1736]
  • drivers/pijuice.c: do not directly include stdint.h (not ubiquitous) [#1736]
  • drivers/eaton-pdu-marlin-helpers.c: do not directly include stdint.h (not ubiquitous) [#1736]
  • drivers/adelsystem_cbi.h: drivers/adelsystem_cbi.c: do not directly include stdint.h (not ubiquitous) [#1736]
  • common/strptime.c: do not always directly include stdint.h (not ubiquitous) [#1736]
  • drivers/riello.c, drivers/riello.h, drivers/riello_ser.c, drivers/riello_usb.c: drivers/riello*.{c,h}: do not directly include stdint.h (not ubiquitous) [#1736]
  • common/strnlen.c: untie from freeBSD specifics [#1736]
  • common/Makefile.am, common/strnlen.c, configure.ac: configure.ac, common/strnlen.c: Detect and provide a fallback strnlen() if needed [#1736]
  • common/common.c: fix pragmas for systems without a UINTPTR_MAX defined [#1736]
  • NEWS: autogen.sh support for CONFIG_SHELL [#1736]
  • autogen.sh: support CONFIG_SHELL envvar to embed into generated configure script (and syntax-check with it) [#1736]

2.554. 2022-12-21 Jim Klimov <jimklimov+nut@gmail.com>

  • autogen.sh: enhance report of failed syntax checks [#1736]
  • autogen.sh: dumb syntax down for xpg/ksh88 or older [#1736]
  • tools/nut-usbinfo.pl: dumb syntax down for perl 5.005 (Solaris 8 compat) [#1736]

2.555. 2022-12-20 Clappier, Eric <EricClappier@eaton.com>

  • drivers/eaton-pdu-nlogic-mib.c: Fix discovery issue with Eaton pdu nlogic

2.556. 2022-12-08 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/nut.dict: update dict

2.557. 2022-12-02 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upsmon.c: refactor probing/signaling old instance into one handling/reporting codebase [#1721]
  • server/upsd.c: refactor probing/signaling old instance into one handling/reporting codebase [#1721]
  • clients/upsmon.c: generic report if we "Failed to signal the currently running daemon" [#1721]
  • server/upsd.c: generic report if we "Failed to signal the currently running daemon" [#1721]

2.558. 2022-12-01 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: clarify inability to find OS user info (vs. NUT user) [#1721]
  • docs/FAQ.txt, docs/config-notes.txt, docs/man/upsd.txt: docs/*.txt: clarify "upsd -c reload" vs. PID file (and systemd) [#1721]
  • conf/upsmon.conf.sample.in: clarify RUN_AS_USER as OS-defined account for upsmon [#1721]
  • conf/ups.conf.sample, conf/upsd.users.sample, conf/upsmon.conf.sample.in: conf/*.sample: standardize on "monuser" as example NUT-defined account for upsmon [#1721]
  • clients/upsmon.c: consider HAVE_SYSTEMD to report if PID file was missing [#1721]
  • server/upsd.c: consider HAVE_SYSTEMD to report if PID file was missing [#1721]
  • configure.ac: refactor definition of HAVE_SYSTEMD so we can use it in C code [#1721]
  • scripts/systemd/nut-server.service.in: re-document use of PID file, for reloads to work [#1721]
  • common/common.c: become_user(): cosmetic/messaging: discern starting as not-root vs. already the requested user [#1718] Closes: #1718
  • NEWS, UPGRADING: reference GitHub PR numbers for snmp-ups updates [#1715, #1716]

2.559. 2022-12-01 Jim Klimov <jim@jimklimov.com>

2.560. 2022-11-28 Tiph <titi__13@hotmail.com>

  • drivers/mge-hid.c: Update mge-hid.c fixed conversion issue

2.561. 2022-11-27 Florian Weimer <fweimer@redhat.com>

  • m4/ax_c_pragmas.m4: Fix several issues with the AX_C_PRINTF_STRING_NULL check Adjust quoting in the AX_C_PRINTF_STRING_NULL definition. Switch to strstr and include <string.h> instead of <strings.h>. Add missing braces and parentheses. Use double-quote for string literals. The test now reports success on glibc, as expected.
  • m4/ax_c_attribute.m4: Fix AX_C_ATTRIBUTE configure check to call the right function The function foo is defined in the C fragment, but the func function is undeclared. This avoids relying on an implicit function declaration, a C language feature that was removed in 1999.

2.562. 2022-11-25 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: comment about nut_inplace_user detection from *.pc files [#1714]
  • configure.ac: fix inplace sysconfdir detection [#1714]
  • configure.ac: clarify "checking requested X" ⇒ default/specified vs "checking setting X" ⇒ final value [#1714]
  • configure.ac: try to detect nut_inplace_group and nut_inplace_user from existing configs [#1714]
  • configure.ac: avoid changing permissions of */tmp and /dev/shm with nut-common.tmpfiles
  • configure.ac: use PIDPATH="/run" if it is so on the build system
  • NEWS, UPGRADING: document @ALTPIDPATH@ vs. @PIDPATH@ (and removal of @PIDPATH@/nut ambiguity) [#1712]
  • scripts/Aix/nut.init.in, scripts/HP-UX/postinstall.in, scripts/Solaris/nut-server.xml.in, scripts/Solaris/postinstall.in, scripts/Solaris/postremove.in, scripts/Solaris/svc-nut-monitor.in, scripts/Solaris/svc-nut-server.in: Reference init-script and packaging templates: eradicate "@PIDPATH@/nut" ambiguity in favor of "@ALTPIDPATH@" (and explicitly ensure "@PIDPATH@" where applicable) [#1712]
  • configure.ac: AC_SUBST(ALTPIDPATH)
  • configure.ac: report "$prefix"
  • m4/nut_report_feature.m4: fix detection of chapter "1" and other nuances
  • m4/nut_report_feature.m4: align reports with tabulation
  • configure.ac: use NUT_REPORT_TARGET [#1708]
  • m4/nut_report_feature.m4: add NUT_REPORT_TARGET [#1708]
  • m4/nut_report_feature.m4: fix comments
  • m4/nut_report_feature.m4: refactor NUT_REPORT_FILE() for second-level headings and less file-openings
  • configure.ac, docs/configure.txt: configure.ac: clarify that PIDPATH is for NUT directly (privileged daemons) [#123, #1712]
  • configure.ac: refactor to use NUT_REPORT_SETTING_PATH() to summarize separately from other toggles [#1708 follow-up]
  • m4/nut_report_feature.m4: add separate chapter for NUT_REPORT_PATH() and NUT_REPORT_SETTING_PATH() to populate it
  • .gitignore, Makefile.am, m4/nut_report_feature.m4: m4/nut_report_feature.m4: refactor to hold and append different summary chapters in different files [#1708 follow-up]
  • m4/nut_report_feature.m4: change markup of usage() comments to avoid m4 surprises
  • ci_build.sh: in case of success for default build, remind the chosen config.nut_report_feature.log settings
  • Makefile.am: install-win-bundle-thirdparty: fix indentations
  • configure.ac: use NUT_REPORT_SETTING() for various path tunables
  • configure.ac: fix generation of systemd/nut-common.tmpfiles Should have no "nut" subdir for STATEPATH and ALTPIDPATH Follow-up for #1030, #1037, #1117 May be related to #1712
  • configure.ac: NUT_REPORT_SETTING() for RUN_AS_USER and RUN_AS_GROUP
  • configure.ac: change AS_HELP_STRINGs and some other comments/messages for STATEPATH and PIDPATH to clarify
  • m4/nut_report_feature.m4: introduce NUT_REPORT_SETTING() …and comment arguments for NUT_REPORT_FEATURE()
  • NEWS, ci_build.sh: NEWS: add ./ci_build.sh inplace operation shortcut [#1714]
  • ci_build.sh: add support for INPLACE_RUNTIME=true
  • configure.ac: move checking for better default user/group based on current system circumstances down, to just before we use them
  • configure.ac: report if checking for better sysconfdir/user/group and how it went
  • NEWS: update for configure --enable-inplace-runtime [#1714]
  • docs/configure.txt, docs/nut.dict: docs/configure.txt: update for --enable-inplace-runtime [#1714]
  • configure.ac: impact default sysconfdir by --enable-inplace-runtime
  • configure.ac: change AS_HELP_STRINGs for hotplugdir, udevdir and devddir to report current defaults (not arbitrary suggestions)
  • configure.ac: introduce --enable-inplace-runtime and impact default RUN_AS_USER and RUN_AS_GROUP by that
  • configure.ac: move final processing of --with-user and --with-group to end of script
  • configure.ac: comment initial settings for RUN_AS_* and PIDPATH

2.563. 2022-11-25 Arnaud Quette <ArnaudQuette@eaton.com>

  • NEWS, drivers/snmp-ups.c: snmp-ups: fix "Warning: excessive poll failures" Fix that long standing issue, which was tied to non-existent OIDs, not well handled in some part of the driver Closes: #743

2.564. 2022-11-24 Arnaud Quette <ArnaudQuette@eaton.com>

  • docs/nut.dict: Spelling dictionnary completion
  • NEWS, UPGRADING, docs/man/snmp-ups.txt, drivers/Makefile.am, drivers/{powerware-mib.c ⇒ eaton-ups-pwnm2-mib.c}, drivers/eaton-ups-pwnm2-mib.h, drivers/eaton-ups-pxg-mib.c, drivers/{powerware-mib.h ⇒ eaton-ups-pxg-mib.h}, drivers/snmp-ups.c: snmp-ups: split Eaton pw and pxgx_ups implementation To better manage the slight nuances (especially in ups.status), between Eaton UPSs, implementation file was split in 2 files, and mib name were renamed from pw to eaton_pw_nm2, and from pxgx_ups to eaton_pxg_ups Thanks to Quentin Renard (Eaton) for discovering the bug

2.565. 2022-11-22 Jim Klimov <jimklimov@gmail.com>

  • NEWS: added "hpe-pdu3-cis-mib" snmp-ups subdriver [#1713]

2.566. 2022-11-22 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/hpe-pdu3-cis-mib.c: fix reference to WITH_UNMAPPED_DATA_POINTS This feature was only proposed, not yet implemented in main codebase
  • docs/nut.dict: update for #1713

2.567. 2022-11-22 Arnaud Quette <ArnaudQuette@eaton.com>

  • data/driver.list.in, drivers/Makefile.am, drivers/hpe-pdu3-cis-mib.c, drivers/hpe-pdu3-cis-mib.h, drivers/snmp-ups.c: snmp-ups: add support for HPE G2 Metered & Switched PDU This support is unitary (no daisychain support yet). Also note that, due to SNMP v1 implementation limitations on this device, you should prefer SNMP v3 to get both read and write rights

2.568. 2022-11-21 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS: update for snmp-ups fix with wrong sysOID responses [#1710]

2.569. 2022-11-21 Arnaud Quette <ArnaudQuette@eaton.com>

  • drivers/snmp-ups.c: Fix sysOID retrieval on non-compliant device Some SNMP agent (device) wrongly return the sysOID value as a string instead of an OID. This breaks the initial sysOID matching system of the driver

2.570. 2022-11-16 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac, m4/nut_report_feature.m4: m4/nut_report_feature.m4: report configure invocation args
  • NEWS, docs/nut.dict: NEWS: snmp-ups added "eaton-pdu-nlogic-mib" subdriver [#1698]

2.571. 2022-11-15 Jim Klimov <jimklimov@gmail.com>

  • Makefile.am: Update Makefile.am maintainer-clean the config.nut_report_feature.log

2.572. 2022-11-15 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/eaton-pdu-nlogic-mib.c: provide default (NULL) for "device.part"
  • appveyor.yml: publish config.nut_report_feature.log artifact
  • m4/nut_report_feature.m4: NUT_REPORT_COMPILERS: separate cosmetic colon from reported values
  • scripts/Windows/build-mingw-nut.sh: parameterize ARCH_PREFIX
  • scripts/Windows/build-mingw-nut.sh, ci_build.sh: --enable-keep_nut_report_feature in CI builds
  • ci_build.sh: --enable-keep_nut_report_feature in CI builds
  • m4/nut_report_feature.m4: make config.nut_report_feature.log contents more asciidoc-friendly
  • m4/nut_report_feature.m4: start config.nut_report_feature.log with title, not empty line
  • m4/nut_report_feature.m4, configure.ac: introduce --enable-keep_nut_report_feature
  • m4/nut_report_feature.m4, configure.ac: separate NUT_REPORT_COMPILERS from NUT_PRINT_FEATURE_REPORT
  • m4/nut_report_feature.m4: update headings in generated config.nut_report_feature.log sections
  • configure.ac: fix behavior for customized paths in systemdsystemunitdir/systemdshutdowndir/systemdtmpfilesdir
  • configure.ac: fix mis-diagnosed "--with-systemdsystemunitdir=yes was requested, but PKG_CONFIG…" when it was not requested in fact
  • .gitignore, m4/nut_report_feature.m4: m4/nut_report_feature.m4: Rename conf_nut_report_feature artifact to config.nut_report_feature.log
  • m4/nut_report_feature.m4: save compiler settings into "conf_nut_report_feature" too
  • docs/nut.dict: update for nut-website::projects.txt
  • docs/nut.dict: update dict
  • docs/nut.dict: update for nut-website::projects.txt

2.573. 2022-11-15 Arnaud Quette <arnaud.quette@gmail.com>

  • drivers/eaton-pdu-nlogic-mib.c: Update eaton-pdu-nlogic-mib.c Fix a typo in data flags

2.574. 2022-11-12 Jim Klimov <jimklimov+nut@gmail.com>

  • appveyor.yml: disable required forced rebuilds of netsnmp (and debug of build-mingw-prereqs.sh) [#1475]

2.575. 2022-11-11 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/Windows/build-mingw-prereqs.sh: use curl if wget fails from sourceforge [#1475]
  • appveyor.yml: temporarily force rebuild of netsnmp
  • scripts/Windows/build-mingw-prereqs.sh: handle possibly missing SUDO differently [#1475]
  • appveyor.yml: use scripts/Windows/build-mingw-prereqs.sh [#1475]
  • scripts/Windows/build-mingw-prereqs.sh: Add scripts/Windows/build-mingw-prereqs.sh [#1475]
  • appveyor.yml: fix typo
  • appveyor.yml: fix comment for config.log artifact
  • appveyor.yml: try to ensure presence of net-snmp in MSYS2 MinGW builds [#1475]
  • scripts/Windows/README: update DLDIR and WSDIR definitions
  • scripts/Windows/README: update sudo suggestions for Windows MSYS2 builds [#1475]
  • scripts/Windows/README: update envvar setting suggestions for Windows MSYS2 builds [#1475]

2.576. 2022-11-10 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/Windows/README, docs/config-prereqs.txt: document missing bits for net-snmp in MSYS2 [#1475]
  • scripts/Windows/README: do not hardcode /usr/$ARCH when we have $PREFIX
  • docs/nut-names.txt: clarify "unmapped.x.y" not-quite-namespace

2.577. 2022-11-09 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/augeas/gen-nutupsconf-aug.py.in: skip a false-positive from Augeas driver options

2.578. 2022-11-09 Clappier, Eric <EricClappier@eaton.com>

  • data/driver.list.in: Add eaton (nLogic) pdu in driver.list
  • drivers/Makefile.am, drivers/eaton-pdu-nlogic-mib.c, drivers/eaton-pdu-nlogic-mib.h, drivers/snmp-ups.c: Integrate nLogic pdu (snmp)

2.579. 2022-11-06 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/config-prereqs.txt, docs/nut.dict: docs/config-prereqs.txt: update freeipmi -largp install for OpenBSD (6.4 \+ 6.5 checked)

2.580. 2022-11-03 Jim Klimov <jimklimov@gmail.com>

  • drivers/riello_usb.c: Update riello_usb.c Log that guesstimation will be used instead of device readings (if any)
  • docs/man/riello_usb.txt: Update riello_usb.txt Use "guesstimate" as common NUT term for future searches
  • docs/nut.dict: Update nut.dict
  • NEWS: Update NEWS

2.581. 2022-11-03 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/riello_usb.c: testvar("localcalculation") only once, use cached int in the loop [#1692]
  • drivers/riello_usb.c: do not set bogus "ups.temperature" as 0, log low-prio message instead [#1692]
  • drivers/riello_usb.c: only log once about possibly missing battery.charge and battery.runtime [#1692]
  • NEWS, docs/man/riello_usb.txt: fix "docs/man/riello_usb.txt" description [#1692]
  • drivers/riello_usb.c: deduplicate message about possibly missing battery.charge and battery.runtime [#1692]
  • drivers/riello_usb.c: fix indentation [#1692]

2.582. 2022-11-02 Jim Klimov <jimklimov@gmail.com>

  • NEWS: we log uid/gid/chroot changes since 2.8.1 [#1694]

2.583. 2022-11-01 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/NIT/nit.sh: expand permissions for NUT_CONFPATH/*.conf if started as root (tested daemons cannot read them otherwise)
  • common/common.c: chroot_start(): log entering chroot jail (or inability to do so)
  • common/common.c: become_user(): log change of UID/GID (or inability to do so)

2.584. 2022-10-31 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: Update nut.dict
  • docs/nut.dict: Update nut.dict
  • docs/man/riello_usb.txt: Update riello_usb.txt Added localcalculation flag description
  • NEWS: added localcalculation flag for riello_usb

2.585. 2022-10-30 amikot <3470285+amikot@users.noreply.github.com>

  • drivers/riello_usb.c: Update riello_usb.c Added driver setting flag localcalculation. When enabled, driver will calculate values of battery.runtime and battery.load locally. This is for some Riello models (iPlug and iDialog series) that provides incorrect values. Local calculation is done according to nominal battery capacity, nominal battery voltage, actual battery charge, maximum and actual UPS load. Added condition to filter off situation when battery temperature variable is incorrectly set to variable type maximum (255) - which is typical issue of some Riello models (iPlug and iDialog series). If incorrect value is detected temperature is set to 0.

2.586. 2022-10-21 Yifeng Li <tomli@tomli.me>

  • docs/man/huawei-ups2000.txt: huawei-ups2000.txt: document another UPS2000-G-1KRTS. This is another newer "UPS2000-G" variant encountered by a user in the wild and reported [1] to me. [1] Personal communication, thanks for reporting.
  • docs/man/huawei-ups2000.txt: huawei-ups2000.txt: document another UPS2000-A-1KTTS. This commit adds UPS2000-A-1KTTS with another firmware version (V2R1C1SPC50) to the list of tested UPS models. Thanks @ultinous-dancsa for reporting it [1]. [1] https://github.com/networkupstools/nut/issues/1017#issuecomment-1020013055

2.587. 2022-10-21 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: fix more "egrep" ⇒ "grep -E" cases in the older branch

2.588. 2022-10-20 Jim Klimov <jimklimov+nut@gmail.com>

  • m4/nut_check_python.m4: clarify message for "Version reported … not suitable""
  • NEWS: fix for snmp-ups type error handling [#1682]
  • drivers/snmp-ups.c: apply comments from PR review to make code better understandable [#1682]

2.589. 2022-10-18 Clappier, Eric <EricClappier@eaton.com>

  • drivers/snmp-ups.c: Fix walk issue with snmpv3 ( add type error execption )

2.590. 2022-10-14 Jim Klimov <jimklimov@gmail.com>

  • drivers/snmp-ups.c: Update snmp-ups.c Avoid potential NULL pointer dereference in a debug printout

2.591. 2022-10-13 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: Update nut.dict
  • AUTHORS: Update AUTHORS

2.592. 2022-10-13 Clappier, Eric <EricClappier@eaton.com>

  • drivers/apc-epdu-mib.c: Fix bad traduction in code
  • drivers/apc-epdu-mib.c: Fix outlets display Add global current
  • drivers/snmp-ups.c: Fix index computed issue when OID is absent

2.593. 2022-10-12 zakx <zakx@users.noreply.github.com>

  • AUTHORS, data/driver.list.in, docs/man/snmp-ups.txt: Documentation update regarding Network-M2 card The Eaton Gigabit Network Card (Network-M2) is already well-supported by the powerware driver. This patch updates the documentation to reflect this.

2.594. 2022-10-12 Jim Klimov <jimklimov@gmail.com>

  • NEWS: apc-epdu-mib added for NUT v2.8.1

2.595. 2022-10-10 Clappier, Eric <EricClappier@eaton.com>

  • drivers/Makefile.am, drivers/apc-epdu-mib.c, drivers/apc-epdu-mib.h, drivers/snmp-ups.c: Add SNMP apc easy pdu support

2.596. 2022-10-05 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/Windows/README: update mingw libneon build instructions

2.597. 2022-09-25 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/nutdrv_qx.c: qx_initbattery(): adjust initially known "battery.voltage" right away, if we know the batt.packs and that battery_voltage_reports_one_pack [#1279]
  • tests/NIT/nit.sh: make use of NUT_QUIET_INIT_SSL
  • NEWS, clients/upsclient.c, docs/man/upscli_init.txt: clients/upsclient.c, docs, NEWS: support NUT_QUIET_INIT_SSL envvar to hide "Init SSL without certificate database" message [#1662]
  • clients/upsclient.c: fix typo in message

2.598. 2022-09-22 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/nutdrv_qx.c: qx_multiply_battvolt(): init temporary "s" to 0 (so if sscanf() somehow fails/skips, we have a non-toxic outcome)
  • drivers/nutdrv_qx.c: fix getval("battery_voltage_reports_one_pack") for the driver option flag [#1279]

2.599. 2022-09-21 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/nutdrv_qx.c, drivers/nutdrv_qx.h, drivers/nutdrv_qx_bestups.c, drivers/nutdrv_qx_hunnox.c, drivers/nutdrv_qx_mecer.c, drivers/nutdrv_qx_megatec-old.c, drivers/nutdrv_qx_megatec.c, drivers/nutdrv_qx_mustek.c, drivers/nutdrv_qx_q1.c, drivers/nutdrv_qx_voltronic-qs.c, drivers/nutdrv_qx_voltronic.c, drivers/nutdrv_qx_zinto.c: drivers/nutdrv_qx*: rename multiply_battvolt() to qx_multiply_battvolt() to remain specific about the code source

2.600. 2022-09-19 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS: reflect extended default ranges for max battery voltage when guessing [#1279]
  • drivers/blazer_ser.c, drivers/blazer_usb.c: drivers/blazer_{usb,ser}.c: bump DRIVER_VERSION due to changes in blazer.c [#1279]
  • drivers/nutdrv_qx.c: qx_initbattery(): extend default batt.volt.high range when guessing battery.packs count [#1279]
  • drivers/blazer.c: blazer_packs(): extend default batt.volt.high range when guessing battery.packs count [#1279]
  • drivers/nutdrv_qx.c: qx_initbattery(): report if we autodetected number of battery packs [#1279]
  • drivers/nutdrv_qx.c: qx_initbattery(): extend default batt.volt.high range [#1279]
  • NEWS, docs/man/nutdrv_qx.txt, docs/nut.dict, drivers/nutdrv_qx.c, drivers/nutdrv_qx.h, drivers/nutdrv_qx_bestups.c, drivers/nutdrv_qx_hunnox.c, drivers/nutdrv_qx_mecer.c, drivers/nutdrv_qx_megatec-old.c, drivers/nutdrv_qx_megatec.c, drivers/nutdrv_qx_mustek.c, drivers/nutdrv_qx_q1.c, drivers/nutdrv_qx_voltronic-qs.c, drivers/nutdrv_qx_voltronic.c, drivers/nutdrv_qx_zinto.c: nutdrv_qx: introduce a "battery_voltage_reports_one_pack" driver option [#1279]
  • drivers/nutdrv_qx.c: bump DRIVER_VERSION for issue #1279 changes
  • drivers/eaton-pdu-pulizzi-mib.c: standardize on "guesstimate", "guesstimation" spelling
  • drivers/snmp-ups.c: standardize on "guesstimate", "guesstimation" spelling
  • drivers/blazer.c: standardize on "guesstimate", "guesstimation" spelling
  • docs/man/upscode2.txt, docs/nut.dict: docs/man/upscode2.txt, nut.dict: standardize on "guesstimate", "guesstimation" spelling

2.601. 2022-09-14 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: comment that _GNU_SOURCE may be needed for strptime() detection
  • configure.ac: comment that _GNU_SOURCE may be needed for strptime() detection
  • ci_build.sh, docs/Makefile.am, docs/man/Makefile.am, indent.sh, scripts/subdriver/gen-snmp-subdriver.sh, scripts/subdriver/gen-usbhid-subdriver.sh, scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in, tools/nut-scanner/scan_snmp.c: Replace "egrep" by "grep -E" in shell code - modern systems frown on the former
  • configure.ac: move detection of TIME_WITH_SYS_TIME to before we use it This should help find strptime() in particular on systems that have both time.h and sys/time.h files, and one does not include the other (e.g. Arch Linux).
  • docs/config-prereqs.txt, docs/nut.dict: docs/config-prereqs.txt: detail Arch Linux package installation for a build agent
  • docs/ci-farm-lxc-setup.txt, docs/nut.dict: docs/ci-farm-lxc-setup.txt: detail getting "pacman" and related tools on a Debian Linux host
  • tests/NIT/nit.sh: add a BASH way to check port availability
  • tests/NIT/nit.sh: typo fix looking in /proc/net/tcp
  • tests/NIT/nit.sh: cosmetic: fix indentations botched by IDEs

2.602. 2022-09-12 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/documentation.txt: refer to NUT Configuration Examples book
  • docs/nut.dict: update for nut-website::projects.txt refresh
  • NEWS, drivers/apc-hid.c, scripts/upower/95-upower-hid.hwdb: drivers/apc-hid.c, NEWS, 95-upower-hid.hwdb: Support VID:PID = 0x051d:0x0004 [#1429]

2.603. 2022-09-08 Jim Klimov <jimklimov+nut@gmail.com>

2.604. 2022-09-06 Jim Klimov <jimklimov+nut@gmail.com>

  • drivers/main.c: retain "driver.parameter.override.XXX" (and ".default.XXX") for troubleshooting [#1279]
  • drivers/libhid.c: log if we hit the "paranoia check" with inconsistent Max vs Min [#1512]
  • drivers/nutdrv_qx.c: qx_initbattery(): initialize battery.packs and battery.voltage.low/high/nom if known always (not just if battery.charge or battery.runtime are not served) [#1279]
  • drivers/main.c: retain "driver.parameter.override.XXX" (and ".default.XXX") for troubleshooting [#1279]
  • drivers/libhid.c: log if we hit the "paranoia check" with inconsistent Max vs Min [#1512]

2.605. 2022-09-03 Jim Klimov <jim@jimklimov.com>

  • Jenkinsfile-dynamatrix: enable linux\+mingw cross builds as part of NUT baseline

2.606. 2022-09-02 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS, drivers/powercom-hid.c: drivers/powercom-hid.c: fix UPS.Battery.ManufacturerDate to map to battery.mfr.date …(not battery.date which is the maintenance/replacement date) Closes: #1644
  • drivers/cps-hid.c: prefer mapping battery.mfr.date from UPS.Battery.ManufacturerDate if available [#437]
  • drivers/usbhid-ups.c: date_conversion_fun(): comment the PDC standard formula for reference
  • common/Makefile.am, common/strsep.c, configure.ac, include/str.h: Add fallback strsep() implementation (for Windows mingw builds) after PR #1639
  • include/Makefile.am: fix merge error (duplicate code)

2.607. 2022-09-01 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/upslog.c: adjust to Windows branch after PR #1639

2.608. 2022-08-31 Jim Klimov <jimklimov+nut@gmail.com>

  • UPGRADING: refer to collectd PR about int/size_t/time_t adaptation for NUT API consumers
  • tools/nut-scanner/nut-scan.h: ensure useconds_t is defined
  • NEWS, UPGRADING: note public API header revision for NUT v2.8.1
  • include/parseconf.h: ensure size_t is defined
  • clients/upsclient.h: ensure time_t is defined
  • clients/Makefile.am, include/Makefile.am, tools/nut-scanner/Makefile.am: {tools/nut-scanner,include,clients}/Makefile.am: comment include_HEADERS as "Optionally deliverable as part of NUT public API"

2.609. 2022-08-29 Jim Klimov <jimklimov@gmail.com>

  • drivers/usb-common.h: Update usb-common.h Detect configure script error: Neither HAVE_USB_H nor HAVE_LUSB0_USB_H is set for the WITH_LIBUSB_0_1 build
  • tools/nut-usbinfo.pl: Update nut-usbinfo.pl Detect configure script error: Neither HAVE_USB_H nor HAVE_LUSB0_USB_H is set for the WITH_LIBUSB_0_1 build
  • tools/nut-usbinfo.pl: Update nut-usbinfo.pl Typo fix for ifdef HAVE_USB_H (libusb-0.1 header)
  • drivers/usb-common.h: Update usb-common.h Typo fix for ifdef HAVE_USB_H (libusb-0.1 header)
  • scripts/subdriver/gen-usbhid-subdriver.sh: Update gen-usbhid-subdriver.sh Old -x generic suggestion apparently became -x explore later in this timeline (also -d1 to dump and exit after one data collection loop, without requiring a valid NUT_STATEPATH).

2.610. 2022-08-29 Jim Klimov <jimklimov+nut@gmail.com>

  • docs/hid-subdrivers.txt: remind about wire byte order vs. computer multi-byte word layout
  • docs/hid-subdrivers.txt: document USB HID report descrptor troubleshooting [#1618] Great thanks to @nbriggs for putting this together and practicing many times!
  • docs/hid-subdrivers.txt: mention disable_fix_report_desc troubleshooting [#1566]
  • docs/hid-subdrivers.txt: add chapter on "Updating a subdriver"
  • docs/hid-subdrivers.txt: update chapter on gen-usbhid-subdriver.sh
  • docs/nut.dict: Update nut.dict for hid-subdrivers.txt

2.611. 2022-08-29 Cy Schubert <cy@FreeBSD.org>

  • clients/upslog.c: upslog: Messages should go to syslog Messages to stderr are unreliable when output to the console and mesg is n (0600). For example, the following will disallow console output to UID uucp. # mesg < /dev/console is n # mesg < /dev/ttyv0 is n # ls -l /dev/console /dev/ttyv0 crw------- 1 root wheel 0x7 Aug 29 14:03 /dev/console crw------- 1 root wheel 0x46 Aug 29 12:32 /dev/ttyv0 #

2.612. 2022-08-28 Jim Klimov <jimklimov+nut@gmail.com>

  • tools/nut-usbinfo.pl: build against mingw-w64-x86_64-libusb-win32 as libusb-0.1 variant
  • drivers/usb-common.h: build against mingw-w64-x86_64-libusb-win32 as libusb-0.1 variant
  • m4/nut_check_libusb.m4: detect mingw-w64-x86_64-libusb-win32 as libusb-0.1 variant
  • scripts/subdriver/gen-usbhid-subdriver.sh: only ask for VENDORID and PRODUCTID interactively if not provided via CLI args
  • scripts/subdriver/gen-usbhid-subdriver.sh: update instructions
  • docs/nut.dict: add "sstate"
  • m4/nut_check_libusb.m4: when on Windows, prefer libusb-0.1 [#1507]
  • configure.ac, drivers/libusb0.c: fix detection of strlwr() and fallback strcasestr() implem
  • NEWS: sstate should always PING a driver (even if last known as stale) [#1626]
  • server/sstate.c: sstate_dead(): always PING a driver (even if last known as stale) [#1626]

2.613. 2022-08-27 Jim Klimov <jimklimov+nut@gmail.com>

  • common/common.c: get_libname_in_dir(): check for exact filename match (not just common start of string)
  • drivers/usbhid-ups.c: cosmetic fixes
  • drivers/usbhid-ups.c: account interrupt_pipe_EIO_count for suggestions when reconnecting [#1295]
  • drivers/usbhid-ups.c: if reconnecting with use_interrupt_pipe mode, suggest to use pollonly [#1295]
  • drivers/usbhid-ups.c: only report "Closing comm_driver previous handle" when we do so, and invalidate it too [#1627]
  • drivers/dstate.c, server/sstate.c: server/sstate.c: log DATAOK/DATASTALE processing

2.614. 2022-08-25 Jim Klimov <jimklimov@gmail.com>

  • docs/nut.dict: Update with key words from NUT for Windows effort for nut-website

2.615. 2022-08-25 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/Windows/README: document building shared "libnetsnmp-40.dll" Thanks to Denis Serov for the hints posted at https://alioth-lists.debian.net/pipermail/nut-upsdev/2016-April/007171.html
  • tests/NIT/nit.sh: do not fail "make check-NIT" started by root just because daemons drop privileges [#1568]
  • docs/config-prereqs.txt: update to OpenBSD 6.5 due to JDK 11\+ for Jenkins agents, and update other OS instructions

2.616. 2022-08-24 Jim Klimov <jimklimov@gmail.com>

  • scripts/python/module/PyNUT.py.in: Update PyNUT.py.in Add a note on PyNUTError("Always a string") to file-heading changelog

2.617. 2022-08-24 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/module/test_nutclient.py.in: allow testing against UPSD on a remote host
  • scripts/python/module/test_nutclient.py.in: fail if we could RunUPSCommand/SetUPSVar/DeviceLogin when we should not have [#1589]
  • scripts/python/module/README: typo fixes
  • scripts/python/module/PyNUT.py.in, scripts/python/module/README: scripts/python/module/PyNUT.py.in: raise PyNUTError() from strings not byte arrays [#1589]

2.618. 2022-08-24 Jim Klimov <jim@jimklimov.com>

  • NEWS: RFC 9271 published 2022-08-10

2.619. 2022-08-23 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/module/test_nutclient.py.in: ListClients-dummy-after: check b"dummy" (not a string) as dict key [#1589]
  • scripts/python/module/test_nutclient.py.in: thanks to "ex = str(sys.exc_info()[1])" we should check strings, not byte arrays [#1589]
  • scripts/python/module/test_nutclient.py.in: account unexpected failures to detect actual errors [#1589]
  • scripts/python/module/PyNUT.py.in: raise PyNUTError() with standard protocol strings; leave layman text to debug printouts [#1589]
  • scripts/python/module/PyNUT.py.in: raise PyNUTError() with standard protocol strings; leave layman text to debug printouts [#1589]
  • tools/nut-scanner/nut-scan.h: avoid including private "timehead.h" in public header [#1593]
  • tools/nut-scanner/nut-scan.h: prefer co-located "nutscan-*.h" in public header [#1593]
  • tools/nut-scanner/nut-scan.h, tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c: tools/nut-scanner/nut-scan.h: avoid including private "nut_stdint.h" in public header [#1593]
  • scripts/Windows/build-mingw-nut.sh: report completion of configure/build/install phases
  • include/Makefile.am, clients/Makefile.am: rectify distributon of parseconf.h [#1593]
  • tools/nut-scanner/nut-scan.h: avoid including private "config.h" in public header [#1593] In-tree consumers of this file include "common.h" first which in turn includes "config.h" first.
  • tools/nut-scanner/nutscan-ip.c, tools/nut-scanner/nutscan-ip.h: tools/nut-scanner/nutscan-ip.{c,h}: avoid including private "common.h" in public header [#1593]
  • docs/new-drivers.txt, docs/nut.dict: docs/new-drivers.txt: update documentation for TYPE_FD_SER [#1593]
  • tools/nut-scanner/nut-scan.h: avoid including private "timehead.h" in public header [#1593]
  • tools/nut-scanner/nut-scan.h: prefer co-located "nutscan-*.h" in public header [#1593]
  • tools/nut-scanner/nut-scan.h, tools/nut-scanner/scan_eaton_serial.c, tools/nut-scanner/scan_nut.c, tools/nut-scanner/scan_snmp.c: tools/nut-scanner/nut-scan.h: avoid including private "nut_stdint.h" in public header [#1593]
  • include/Makefile.am, clients/Makefile.am: rectify distributon of parseconf.h [#1593]
  • tools/nut-scanner/nut-scan.h: avoid including private "config.h" in public header [#1593] In-tree consumers of this file include "common.h" first which in turn includes "config.h" first.
  • tools/nut-scanner/nutscan-ip.c: tools/nut-scanner/nutscan-ip.{c,h}: avoid including private "common.h" in public header [#1593]
  • clients/nutclientmem.cpp: include config.h first
  • drivers/serial.c, drivers/serial.h: drivers/serial.{h,c}: relocate ser_flush_io() to ser_flush_in() to match logical relation and documentation ordering [#1593]
  • clients/nutclientmem.cpp: include config.h first

2.620. 2022-08-22 Jim Klimov <jimklimov@gmail.com>

  • clients/nutclient.cpp: Update nutclient.cpp include "config.h" first

2.621. 2022-08-21 Jim Klimov <jimklimov+nut@gmail.com>

  • clients/Makefile.am: separate delivery of C+\+ headers - do it only if we deliver the libs [#1598]
  • tests/NIT/nit.sh: warn to have prepared a listening NUT_PORT before asking for individual test cases
  • ci_build.sh: refactor with autogen_get_CONFIGURE_SCRIPT and configure_CI_BUILDDIR for better out-of-tree builds
  • appveyor.yml: shorter lines in install proto area report
  • scripts/Windows/dllldd.sh: less ominous warning message
  • appveyor.yml: fix shell syntax for YAML transport
  • scripts/Windows/dllldd.sh: consult COMPILER_PATHS for C+\+ libs [#1603]
  • m4/nut_check_libnetsnmp.m4, tools/nut-scanner/Makefile.am: tools/nut-scanner/Makefile.am: fix referencing of libnetsmp (static) build flags, so shared libnutscan.dll can be built [#1603]
  • ci_build.sh: pass PARMAKE_FLAGS to build-mingw-nut.sh
  • ci_build.sh: require successful autogen for cross-mingw builds
  • ci_build.sh: refactor with autogen_get_CONFIGURE_SCRIPT and configure_CI_BUILDDIR for better out-of-tree builds
  • tools/nut-scanner/Makefile.am: enable shared DLL builds for C+\+ libraries [#1603]
  • clients/Makefile.am: enable shared DLL builds for C+\+ libraries [#1603]
  • Jenkinsfile-dynamatrix: failure is no longer an option in linux\+mingw Windows cross-builds
  • appveyor.yml: "find" all filenames we would archive to 7z artifact from the install proto area
  • scripts/Windows/build-mingw-nut.sh: use different CXXFLAGS from CFLAGS (append vs external settings)
  • appveyor.yml: archive any NUT-for-Windows*.7z tarballs
  • clients/Makefile.am: separate delivery of C+\+ headers - do it only if we deliver the libs [#1598]
  • common/snprintf.c: added a FIXME for dopr("%p") on some platforms
  • include/timehead.h: fence with "extern C"
  • clients/nutclientmem.cpp: avoid (mingw) conflict for C+\+ builds with fallback gmtime_r() etc that C\+ code does not even use [#1594]
  • clients/nutclient.cpp: avoid (mingw) conflict for C+\+ builds with fallback gmtime_r() etc that C\+ code does not even use [#1594]
  • clients/Makefile.am: add libnutclient.la to lib_LTLIBRARIES also on Windows now so it gets installed [#1594, #1598] Closes: #1598
  • clients/Makefile.am: bump semver of libnutclient due to added TcpClient::setDebugConnect(bool) [#1594]
  • clients/nutclient.cpp, clients/nutclient.h: clients/nutclient.cpp: internal::Socket::connect(): make debug noise optional
  • tests/NIT/nit.sh: warn to have prepared a listening NUT_PORT before asking for individual test cases

2.622. 2022-08-21 Cy Schubert <cy@FreeBSD.org>

  • NEWS, clients/upslog.c, docs/man/upslog.txt: upslog: Add support for multiple UPSs upslog is a utility that logs UPS status at regular intervals, specified by the -i option. Unfortunately upslog supports only one UPS. For sites that need to monitor multiple UPSs the options are to cobble an rc script for each or doctor up the nut_upslog.in script to support cloning of the script. Unfortunately an rc script capable of being cloned would become the source of more PRs and would require significanly more tehcnical documentation that by itself might become confusing for the average system administrator. Therefore a new -m option is added to support multiple UPSs using the same invocation of upslog. The patch parses a -m option, polling each ups listed.

2.623. 2022-08-20 Jim Klimov <jimklimov+nut@gmail.com>

  • tests/NIT/Makefile.am: check-NIT-devel: become EXEEXT-aware
  • tests/NIT/nit.sh: report if skipping cppnit because absent
  • clients/nutclient.cpp: Socket::connect(): add debug
  • tests/NIT/Makefile.am: check-NIT-devel: become EXEEXT-aware
  • tests/NIT/nit.sh: report if skipping cppnit because absent
  • tests/Makefile.am: Revert "tests/Makefile.am: make POSIX style short names aliases for HAVE_WINDOWS .exe targets" This reverts commit b3d36d9a81f42ca6e2cae15e04e54f5ce6ec80f6.
  • tests/Makefile.am: make POSIX style short names aliases for HAVE_WINDOWS .exe targets
  • clients/nutclient.cpp: Socket::connect(): add debug
  • clients/nutclient.cpp: port W32_NETWORK_CALL_OVERRIDE code from upsclient.c

2.624. 2022-08-19 Kubisz Mariusz <mmzk987@gmail.com>

  • drivers/blazer.c: Blazer: Accept the value of "idleload" equal to zero It allows setting the "idleload" parameter equal to zero

2.625. 2022-08-19 Jim Klimov <jimklimov@gmail.com>

  • appveyor.yml: Update appveyor.yml Add mingw-w64-x86_64-cppunit to check cppnit et al

2.626. 2022-08-19 Jim Klimov <jimklimov+nut@gmail.com>

  • configure.ac: NUT_REPORT_FEATURE the HAVE_CXX11 and HAVE_CPPUNIT aspects
  • clients/nutclient.cpp: port connect() WIN32 code from upsclient.c
  • docs/config-prereqs.txt: document how to get cppunit in Windows MSYS2 [#1594]
  • appveyor.yml: tarball built NUT binaries marked as x86_64 (maybe do i686 later?)
  • configure.ac: NUT_REPORT_FEATURE the HAVE_CXX11 and HAVE_CPPUNIT aspects
  • configure.ac, m4/nut_check_libnetsnmp.m4, tools/nut-scanner/Makefile.am: introduce WITH_SNMP_STATIC flag
  • drivers/riello_ser.c: fix whitespace in WIN32 codepath
  • server/conf.c: pedantically handle a case of VALID_FD
  • server/conf.c: pedantically handle a case of ERROR_FD
  • drivers/netxml-ups.c: pedantically handle a case of ERROR_FD
  • drivers/dstate.c: no need to cast sockfd to int anymore, we adhere to TYPE_FD (or fail build if not)
  • clients/nutclient.cpp: err on the safe side, check "ifdef" before we "define" WINAPI-compatibility macros
  • clients/nutclient.cpp: err on the safe side, check "ifdef" before we "define" WINAPI-compatibility macros
  • drivers/apcupsd-ups.c: convert to use of TYPE_FD_SOCK and its macros
  • common/Makefile.am: only add wincompat.{c,h} to libcommon* if HAVE_WINDOWS in the build
  • clients/upssched.c: try_connect(): further reduce discrepancy of WIN/non-WIN codepaths
  • clients/upsmon.h: clients/upsmon.{c,h}: rename ST_CONNECTED to ST_CLICONNECTED - WIN32 cleanup
  • clients/upsmon.c, clients/upsmon.h: clients/upsmon.{c,h}: rename ST_CONNECTED to ST_CLICONNECTED ST_CONNECTED is defined for WIN32 DDE (Dynamic Data Exchange) in ddeml.h Renaming avoids the conflict in easiest manner
  • clients/upsmon.c, clients/upsmon.h: clients/upsmon.{c,h}: rename ST_CONNECTED to ST_CLICONNECTED ST_CONNECTED is defined for WIN32 DDE (Dynamic Data Exchange) in ddeml.h Renaming avoids the conflict in easiest manner
  • NEWS: group "NUT for Windows" bullet points

2.627. 2022-08-18 Jim Klimov <jimklimov@gmail.com>

  • appveyor.yml: Update appveyor.yml Hush back down the bundle-install
  • Makefile.am: Update Makefile.am Fix detection of cgiexecdir; comments on dirs involved here.
  • appveyor.yml: Update appveyor.yml
  • appveyor.yml: Update appveyor.yml archive config.log pass filename version differently

2.628. 2022-08-18 Jim Klimov <jimklimov+nut@gmail.com>

  • ci_build.sh: restructure error-catching in default BUILD_TYPE="" case
  • drivers/snmp-ups.c: err on the safe side with "long" value and "int" arg of nut_snmp_walk()
  • scripts/Windows/dllldd.sh: ignore zero-sized files under DESTDIR (bad copies etc)
  • scripts/Windows/dllldd.sh: one hit under DESTDIR suffices
  • scripts/Windows/build-mingw-nut.sh: tell DESTDIR to dllldd() search code
  • scripts/Windows/dllldd.sh: ignore some more known system DLLs
  • Makefile.am: tell scripts/Windows/dllldd.sh to check under DESTDIR [#1492]
  • Makefile.am: Revert "Makefile.am: install freshly built libups*.dll libnut*.dll into non-binary dirs from the bin [#1492]" This reverts commit b39e3a3d2d1652ef23e82bee2c2dc4d638751b5a.
  • scripts/Windows/dllldd.sh: rearrange to probe for each file in all possible locations; check under DESTDIR if provided
  • scripts/Windows/dllldd.sh: comment about not-searching for our own build products
  • m4/nut_check_python.m4: inform if python version was not suitable [#1583]
  • m4/nut_check_python.m4: take "no" for an answer [#1583]
  • m4/nut_check_python.m4: simplify PYTHON*_VERSION_REPORT to avoid brackets from m4 code [#1583]
  • m4/nut_check_python.m4: constrain python{,2,3} versions - check that what is found is in range [#1583]
  • scripts/Windows/dllldd.sh: typo fix
  • scripts/Windows/build-mingw-nut.sh: handle cgi-bin dir too
  • appveyor.yml: typo fix
  • Makefile.am: install freshly built libups*.dll libnut*.dll into non-binary dirs from the bin [#1492]
  • m4/nut_check_python.m4: inform if python version was not suitable [#1583]
  • m4/nut_check_python.m4: take "no" for an answer [#1583]
  • m4/nut_check_python.m4: simplify PYTHON*_VERSION_REPORT to avoid brackets from m4 code [#1583]
  • m4/nut_check_python.m4: try to fix Windows MSYS2 "buggy" path for python{,2,3} site-packages [#1584]
  • m4/nut_check_python.m4: comment about Windows MSYS2 "buggy" path for python{,2,3} site-packages [#1584]
  • m4/nut_check_python.m4: constrain python{,2,3} versions - check that what is found is in range [#1583]
  • Makefile.am: install-win-bundle-thirdparty: fix again detection of presence of cgiexecdir [#1492]
  • appveyor.yml: archive installed artifacts with 7z (zip format does not do sym/hard-links)
  • INSTALL.nut: update notes of NUT for Windows building/installing - that CI would publish at least archives
  • appveyor.yml: reword install step so cmd⇒bash likes it
  • INSTALL.nut: update notes of NUT for Windows building/installing - current state of the art
  • ci_build.sh, scripts/Windows/build-mingw-nut.sh: ci_build.sh \+ scripts/Windows/build-mingw-nut.sh: suggest use of INSTALL_WIN_BUNDLE to call "make install-win-bundle"
  • ci_build.sh: suggest use of "make install-win-bundle" in default BUILD_TYPE="" case
  • ci_build.sh: restructure error-catching in default BUILD_TYPE="" case
  • appveyor.yml: build meaningful base dirname into downloadable zip bundle

2.629. 2022-08-18 Jim Klimov <jim@jimklimov.com>

  • appveyor.yml: Update appveyor.yml Display ccache stats after tarballing, to see them better. And still after build in case tests fail. (TODO: on any outcome - postprocessing tag?) Do not shell-trace tarballing routine.

2.630. 2022-08-18 Arnaud Quette <ArnaudQuette@eaton.com>

  • drivers/snmp-ups.c: snmp-ups: fix alarm processing only walk the number of present alarms, instead of INT_MAX, to avoid potential blocking

2.631. 2022-08-17 Jim Klimov <jimklimov@gmail.com>

  • appveyor.yml: no time! No time: it outputs /\^sys/ - fatal for powershell (or appveyor?) console scanner
  • appveyor.yml: try harder to avoid AppVeyor/Powershell induced faults
  • appveyor.yml: try to avoid AppVeyor/PowerShell complaints about presence of stderr output

2.632. 2022-08-17 Jim Klimov <jimklimov+nut@gmail.com>

  • ci_build.sh: introduce CI_SKIP_CHECK support to help split CI jobs into stages
  • ci_build.sh: comment away DMF-specific check_gitignore() calls for now - they refer to BUILD_TGT not (yet) defined in this codepath
  • ci_build.sh: clarify report of "Using ccache via PATH…"
  • Makefile.am: install-win-bundle-thirdparty: cgiexecdir may be not installed (others too technically… but unlikely a valid situation) [#1492]
  • scripts/Windows/dllldd.sh: drop diff markup chars
  • Makefile.am: install-win-bundle-thirdparty: mute the big logic block [#1492]
  • Makefile.am: install-win-bundle-thirdparty: handle cgiexecdir if present [#1492]
  • Makefile.am: force-hardlink installed DLLs into secondary dirs (overwrite if older link/copy exists)
  • scripts/Windows/dllldd.sh: cripts/Windows/dllldd.sh: optimize by filtering away more well-known Windows-provided DLLs
  • scripts/Windows/dllldd.sh: refactor dllldddir() to only look at any DLL once (MSYS2 has a huge inter-dependency tree)
  • scripts/Windows/dllldd.sh: optimize to check if base dir for planned listing exists
  • scripts/Windows/dllldd.sh: not all shells seen auto-expand "{bin,lib}" notation
  • scripts/Windows/dllldd.sh: prefer objdump over ldd as more reliable (especially when many files are queried and one hit suffices for script logic)
  • scripts/Windows/dllldd.sh: optimize by feeding many PE files to same ldd/objdump command (where supported)
  • scripts/Windows/dllldd.sh: optimize by filtering away well-known Windows-provided DLLs
  • scripts/Windows/dllldd.sh: subshell dllldd() with C locale [#1492]
  • scripts/Windows/dllldd.sh: refactor dllldddir() [#1492]
  • appveyor.yml: make check and install quieter
  • appveyor.yml: "make install-win-bundle" and save artifacts with Bundle of binary files and FOSS dependencies of NUT for Windows [#1492, #1552]
  • scripts/Windows/build-mingw-nut.sh: refactor to "make install-win-bundle" target recipe [#1492]
  • Makefile.am: define "make install-win-bundle" target recipe [#1492]
  • scripts/Windows/build-mingw-nut.sh, scripts/Windows/dllldd.sh: scripts/Windows/dllldd.sh: transplant dllldddir() from build-mingw-nut.sh [#1492]
  • scripts/Windows/dllldd.sh: fallback support for MSYS2 path search [#1492]
  • scripts/Windows/build-mingw-nut.sh, scripts/Windows/dllldd.sh: Split scripts/Windows/dllldd.sh as a separately usable shell tool or lib [#1492]
  • appveyor.yml: introduce CI_SKIP_CHECK support to help split CI jobs into stages
  • ci_build.sh: introduce CI_SKIP_CHECK support to help split CI jobs into stages
  • ci_build.sh: comment away DMF-specific check_gitignore() calls for now - they refer to BUILD_TGT not (yet) defined in this codepath
  • appveyor.yml: try harder to save ccache for next builds
  • appveyor.yml: add after_build stage to report ccache stats
  • NEWS, docs/nut.dict: NEWS: Proclaim AppVeyor CI tests of NUT for Windows [#1552]
  • ci_build.sh: clarify report of "Using ccache via PATH…"
  • appveyor.yml: Assorted stats: "du" just the MSYS tree, without looking in other filesystems like /proc
  • appveyor.yml: dispose of "ps" in favor of "cmd" to invoke MSYS2 shell scripts (too much hassle with wording on stderr)
  • appveyor.yml: pre-create /var/cache/pacman/pkg on newly made workers [#1552]
  • appveyor.yml: Only cache packages with appveyor.yml [#1552]
  • appveyor.yml: Introduce appveyor.yml to automate NUT for Windows builds [#1552]

2.633. 2022-08-16 Jim Klimov <jimklimov+nut@gmail.com>

  • NEWS: fall back to /usr/local/… if libltdl was not found by default [#1577]
  • m4/nut_check_libltdl.m4: fall back to /usr/local/… if no custom CFLAGS were specified and libltdl was not found by default [#1577]
  • scripts/python/module/README: typo fix
  • scripts/python/module/README: document GetUPSNames() [#746, #549]
  • scripts/python/module/README: clarify about "str" vs "byte" strings (hassle of Python 3) [#746]

2.634. 2022-08-15 Jim Klimov <jimklimov+nut@gmail.com>

  • scripts/python/module/PyNUT.py.in: refactor with GetUPSNames() for py2/py3 compatibility [#549, #746]
  • scripts/python/module/PyNUT.py.in: fix exception in SetRWVar(): strip EOL
  • tests/NIT/nit.sh: rearrange handling (and messaging) for DEBUG_SLEEP

2.635. 2022-08-14 Jim Klimov <jimklimov@gmail.com>

  • NEWS: snmp-ups updated for invalid negative values [#1558]

2.636. 2022-08-14 Jim Klimov <jimklimov+nut@gmail.com>

  • ci_build.sh: consider --with-nut-scanner option [#1560]
  • docs/packager-guide.txt: add suggestions for nut-scanner [#1560]
  • UPGRADING: recommend packagers to "configure --with-all" by default
  • NEWS, UPGRADING: announce "configure --with-nut-scanner" [#1560]
  • configure.ac, tools/nut-scanner/Makefile.am: configure.ac: add --with-nut-scanner (also as part of --with-all) Closes: #1560
  • m4/nut_arg_with.m4: escape dashes into underscores for valid shell var names
  • configure.ac: clarify --with-all help message
  • docs/config-prereqs.txt: mention that "MinGW UCRT x64" environment seems to also work for NUT builds
  • docs/man/usbhid-ups.txt: update with known illumos support
  • docs/man/usbhid-ups.txt: add a toggle to disable_fix_report_desc [#1566]
  • drivers/apc-hid.c, drivers/cps-hid.c, drivers/usbhid-ups.c, drivers/usbhid-ups.h: usbhid-ups, cps-hid, apc-hid: add a toggle to disable_fix_report_desc [#1566]
  • NEWS: openssl-3.0.x supported with openssl-1.1.0 support code from NUT v2.8.0 [#1547]
  • include/common.h: update comments to document TYPE_FD* macros [#1556]
  • drivers/dstate.c: whitespace and typo fixes (cosmetic) [#1556]
  • UPGRADING: document changes for TYPE_FD* in headers (Windows branch) [#1556]
  • clients/upssched.c: start_daemon(): firther refactor to simplify code [#1556]
  • INSTALL.nut: refer to GitHub project regarding NUT for Windows [#5]

2.637. 2022-08-14 Jim Klimov <jim@jimklimov.com>

  • scripts/python/app/NUT-Monitor-py3qt5.in: fix __find_icon_file()… …to look also for package-installed icons (in OS location) Thanks to @Perlovka for noticing and proposing a fix, and to @lukejr for confirming it as correct. Closes: #1567
  • scripts/Solaris/nut-driver.xml.in, scripts/S