Technical notes on version 3.10.6a 30 October 2003 Kern Sibbald General: Changes submitted this submission: 30Oct03 - Integrated Alexander Schremmer's stdout fix for Windows -- keeps debug printout from being sent to the serial port. 28Oct03 - Bob Kuo found a bug that caused a seg fault, which was due to my code that walked off the end of a table in linux-usb.c 03Oct03 Released here - Move the old manual to old_documents and commit the new docbook manual to the CVS. Don't include the web html directory. 28Sep03 - Test net slave mode. It works fine. I made it behave more like a slave, so it shows the last time it contacted the master. - Add MASTER name to status output if device is a slave. - Display last master update if device is a net slave. - Add 10 sec delay before calling apcupsd --killpower it is needed for USB killpower to work right. Why???? - Save old apccontrol when installing a new one. - Replace old UPS_SET() with set_ups() in a number of places. 27Sep03 - Implement autodetect of USB port if no DEVICE given. 14Sep03 - After the upgrade to RH9 with the new autoconf, quite a few things broke. As far as I can tell, it is because autoconf set top_srcdir to ., and since apcupsd exects top_srcdir to be absolute, lots of things broke. Fixed by editing all the Makefiles and switching to topdir. - Had to disable autoheader since it wipes out config.h.in 10Sep03 - Made pthreads default -- lots of problems converting to new autoconf -- it deleted my config.h.in file! 01Sep03 - Fixed bad file descriptor in SO_KEEPALIVE for slave (reported by Derek Battams. - Added informative subject to email onbattery, ... (suggested by a user, thanks -- sorry I forgot who). - #ifdef off IP6 code in inet_pton for platforms that do not have it. 06Aug03 - Added the -s "$MSG" to each of the script files (mainsback, ...) as suggested by Nicholas Robinson. - The dependencies were not being correctly generated, so simplified the code. - Added install: to the include Makefile.in. Lack of it caused problems on OpenBSD. - Changed LINEVOLT to MAINS in apcstatus.c to fix a problem reported by David Walser of CGI reporting zero volts. - Tried to clarify the difference between the net and the master/slave drivers in the doc. 05Aug03 - Because of the complaints about the master/slave code, I finally got around to testing it, and it was seriously broken in more than one way. It seems to be working now. - Started adding new set_ups() instead of UPS_SET(). - Adding the SIGCHLD broke quite a lot of calls in the master/slave code. This will probably also show up elsewhere. 04Aug03 - Tested the net driver, it seems to work perfectly fine. I did add a grace period of 4 seconds with comm loss on batteries before the shutdown is done. - A number of changes to the manual. - Clean up the net driver to be compatible with C++ for building on Windows. - Ensure that we don't get stuck in a waitpid loop after calling apccontrol. Hopefully this will fix the 100% CPU usage on Win32 after a power condition. 18Jul03 - Reissue accept() immediately if interrupted rather than waiting. 15Jul03 - In attempting to build the .cgi files on Windows, I realized that the gd1.2 code was no longer in the distribution. Although some people were worried about the gif patent (I wasn't) it has now expired, so I see no reason why not to distribute the code as we always have. For the purists, it appears that the version you have on your system (png) will be used in preference to the local gd code. - I backed out the 12July SNMP changes since they probably only work for 3 phase and I don't have the libraries to test compile or the card to test. 12Jul03 - Modify snmp driver to use upsPhaseOutputPercentPower instead of upsAdvOutputLoad as requested by ivac@gnjilux.srk.fer.hr. 08Jul03 - As reported by Brandon Applegate, the net driver was not clearing old flags after a power failure. In fact, it was really screwed up -- it always or'ed in the new bits thus keeping any old status, and blasting out any local bits. Fixed hopefully. - Made a new set of defines for setting/clearing/testing ups Status bits that is much easier to read. - Added Sergey Vlasov's second USB kernel patch to the examples directory. The two patches can be found in: linux-2.4.20-killpower.patch linux-2.4.20-USB-reject.patch The emails are also in that directory. - As suggested by Sergey for the 2.5 kernel, I have #ifdefed out the call to HIDIOCGREPORT in the int_write routine used for killpower. 07Jul03 - Lots of updates to the document. - Fixed a slave crash in master/slave mode. It was a missing setup_device, and was diagnosed and reported by Christian Schacht -- many thanks. 30May03 - Made non-existent header files non-fatal and added #ifdef around sys/socket.h so it will compile on IRIX. - Add Scott's latest apcupsd.conf with the hid-ups program code (actually I had done this some time ago ...). - Start a ReleaseNotes file 20May03 - Fixed a typo error (mine) that prevented Scott from building rpms. Strange, it worked for me???? 19May03 - More DESTDIR cleanup for building non-root rpms. 18May03 - Add DESTDIR everywhere so we can build rpms non-root - Additional documentation - Add Scott's new apcupsd.spec 06May03 - On Hilary Jones suggestion, I fixed the ./configure message that is printed when no libgd is found to direct the user to the main source. 01May03 - Add Sergey Vlasov's kernel patch to the examples directory, and it replaces the previous patch. This patch now solves the killpower problem on Linux USB. <apcupsd-source>/examples/linux-2.4.20-alt-apc_usb_ups.patch notes are in: linux-usb-patch-email.txt 22Apr03 - Add TTY mode to apctest to communicated directly with UPS. - Apply patch to linux-usb.c in killpower supplied by Sergey Vlasov (thanks!). 19Apr03 - Eliminate pow() function in linux-usb.c so that -lm is not needed. 14Apr03 - Add automatic detection of socklen_t 11Apr03 - I received a kernel patch from Sergey Vlasov that fixes the killpower problem on CS UPSes. apcupsd can now shutdown these devices! I've removed some debug code that was in the killpower routine and is not needed or used. I have put the kernel patch in: <apcupsd-source>/examples/linux-2.4.20-alt-hidups.patch 05Apr03 - When the Win32 version starts as a service, delete the NOLOGIN and PWRFAIL files to prevent later confusion. Thanks to Allen Crawford for pointing this out. 29Mar03 - Modify all Win32 program so that only windowed programs (apcupsd, popup) have the -mwindows flags. The others do not. - Tweak apctest.c a bit -- add EEPROM programming (still a bit kludgy), but at least it can be done. 21Mar03 - Lots of clean ups for Cygwin stuff. Events now work, and exit. - Clean up a few undefined symbols in building with everything on. - Eliminate pid and serial port lock file on Win32 systems. 10Mar03 - Modify init script to use daemon so that STDIN/OUT, ... are detached from the terminal and pointed to the log file. This prevents remotely logged in users who start apcupsd from being unable to log out. 06Mar03 - Made some mindor modifications to configure.in and aclocal.m4 to make consistent use of double quotes in test statements in response to problems with make install reported by Andrew Surratt. - Thanks to Richard Schwaninger for finding and submitting a patch to the tcp-wrappers code that prevented it from working because of an invalid name. Fixed. 05Mar03 - Thanks to Andrew Reid for pointing out that the child reaping code should be clearing the pid slot if a -1 is returned. The pid table was filling up on his system due to killed children. Fixed 21Feb03 - A bug report against the Mandrake version of apcupsd indicates that apcupsd is not releasing /dev/console. I've moved the close() of STDIN so that it is always executed to prevent this possibility. 12Feb03 - Implement very crude first cut of EEPROM programming in apctest. Set battery date, set UPS name, and print EEPROM values should work.