0.42.0-pre1:

Sat Oct 23 18:18:15 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: Fixed a bug where writeinfo would choke during the SHM
   pointer storage phase on BSD/OS

 * If anyone knows why the Opti-UPS units wait 20 seconds (!) to reply
   to a query, I'd love to hear about it.  The driver provided in this
   tree is worthless without gutting the delay functions in upscommon
   and upsd due to this enormous turnaround time.

   Such are the dangers of hacking your own driver without protocol docs...

 - cgilib.o: cleaned up the old and ugly extractcgiargs() routine

 - clients/: dumped the common CGI routines into cgilib.o

 - upsd: Having state files on the command line has been removed.  It
   was previously depreciated code.  All users must now switch to the
   UPS myups /var/state/ups/... style in the upsd.conf.

   Also added an error to catch people who start upsd without any 
   state files defined.

 - upsset.cgi: New CGI program to handle setting of variables and so forth.
   Currently read-only.

 - upsct2: New client program for debugging and testing the RW variable 
   code.  It's closely related to upsset.cgi, and is read-only for now too.

Sat Oct 23 13:52:59 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: made do_sendhelp use netcmds[] rather than a hardcoded string

 - docs/: Updated documentation to keep it in sync with the source

Sat Oct 23 13:16:07 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: ripped out the MASTER priv-setting code

 - upsd: ripped out the old MASTER/SHUTDOWNDELAY code

Sun Oct 17 17:20:47 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: cleaned up some of the syslog notices

 - apcsmart: now reads the ^Z capability string for the ENUM values

Sun Oct 17 15:29:01 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: changed the upsport/portname use around to hopefully
   fix a LCK..(null) problem that was popping up on FreeBSD systems

Sun Oct 17 14:52:08 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - This package now has a real name that doesn't have anything to do with
   APC: Network UPS Tools, or NUT.  This makes the tarballs nice and short
   too.  Credit for the name goes to Kern Sibbald <kern@sibbald.com> ...

   It'll take a little while to shake out all the references to the old
   name, but they'll eventually be replaced.

Sun Oct 17 14:48:14 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - ups-trust425-625: rolled the upscommon-addon stuff back into this
   model's source files, since those functions aren't common at all.

   Note to module authors: upscommon should contain functions that get
   used by more than one module to save on code bloat among other things.

Sun Oct 17 14:27:23 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - apcsmart: new model for combined support of all APC models that use
   their "smart signalling" protocol.  This replaces the earlier "smartups"
   and "backupspro" drivers.  This driver should also handle higher 
   models such as the Matrix-UPS, but it has not been tested on them.

Fri Oct 15 20:08:36 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsstats: "UPS Output", not "UPS Input"... spotted by Daniel Roesen.

 - upscommon: Hopefully fixed another compile problem with the uu_lock() 
   code...

 - genericups: Added Centralion CL-750 support (type 5) with info 
   provided by Neil Muller <neil@zeta.mth.uct.ac.za>

 * Back after far too long.  Never mix a move, a vacation, and software
   development unless you like annoying people.

Mon Sep 13 23:08:54 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - genericups: Updated Upsonic entry for cable power and shutdown flags

Sun Sep 12 01:56:46 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: new protocol commands: LISTRW, VARTYPE, VARDESC, ENUM

 - upscommon: addinfo changed to accomodate read/write variable details

 - smartups: r/w variable modifications - LOWXFER, HIGHXFER, UPSIDENT

Sat Sep 11 19:53:25 MDT 1999 / Russell Kroll <rkroll@exploits.org>
 
 - fentonups: Now uses fentonups.h file for model definitions

   Also added boost/trim detection for European voltage levels

Sat Sep 11 19:11:29 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - genericups: Added UPSONIC LAN Saver 600 as type 0, removed upsonic.c

 - genericups: Cleaned up, now gets UPS definitions from genericups.h

Sat Sep 11 18:15:05 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsstats/multimon: Reworked status value parsing to use a table - 
   see clients/status.h.

   Hopefully this will make future translation efforts easier.  The use
   of green/yellow/red for status might need translation too, since assuming
   that "green is good" universally is probably a bad thing...

 - multimon: Added support for these status values:

   Replace battery, overload, voltage trim, voltage boost

 - multimon: TEMPF or TEMPC in the config file will set the default scale
   for UPSTEMP/AMBTEMP and the passthrough to upsstats.

 - upsstats: use_celsius as a CGI argument will now force that mode when
   set to nonzero, and will force degrees F when set to zero.  If it doesn't
   find a value from the arguments provided, it falls back on the compiled
   default.

Sat Sep 11 18:05:41 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - multimon: The scale for the temperature fields can now be selected in
   the config file, thus overriding the setting (--enable-celsius) in
   configure.

   This should make things a bit simpler for packagers who need to use the
   same binaries in different parts of the world...

Sat Sep 11 15:23:51 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - fentonups: Fixed battery percentage reporting caused by an off by one
   error.  Spotted by Mark Cooke.

Thu Sep  9 00:06:05 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - conf/upsmon.conf, docs/shutdown.txt: Oops, it's POWERDOWNFLAG instead of
   POWERDOWNFILE which was listed in a few places.  This one was spotted 
   by Klaus Schallhorn.

0.41.4:

Sun Sep  5 23:05:20 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Created CREDITS file.  Don't be shy... send in those patches and get 
   listed.  Source contributors, distribution packagers, port maintainers,
   equipment suppliers, etc.  Consume a few bytes and make yourself known.

 - Applied FreeBSD fixes from Dan Nelson <dnelson@emsphone.com> ...

   This should finally kill the relentless uu_lock demon.  Be happy.

   Also, this patch apparently makes life better for people compiling this 
   code via the ports collection by allowing gd's includes to exist in a
   subdirectory.  

0.41.4-pre6:

Sun Sep  5 18:08:09 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - fentonups: Using information from the company, the driver has been
   updated to implement the "return from shutdown" command properly.
   Yet another benefit from having a vendor "on board" with this project...
   Thanks again, guys.

 - genericups: Added type #3 - PowerTech Comp1000 UPS support with info
   provided by bart@vianet.net.au.

0.41.4-pre5:

Thu Sep  2 02:06:15 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - configure.in: changed the tests for -lnsl and -lsocket so they don't
   get used strictly if they exist.  Now you have to have a missing
   connect() function before it will do the tests.  This should keep it
   linking properly on Solaris while skipping it on other systems that
   don't really need it.

   This was noticed on a system running a development version of Slackware
   5.0, so other people with glibc2 may benefit from this as well.

 - upscommon/upsd: cleaned up the message passing code to remove a few
   warnings even though it isn't doing anything right at the moment...

 - upsfetch: cleaned up upsconnect() so you don't have a ton of sockets
   lingering in CLOSE when the TCP connection fails.

Thu Sep  2 01:12:21 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - fentonups: The UPS doesn't seem to return online after a commanded
   shutdown.  I'm tracking this down with the help of the company, so
   a fix shouldn't be far off.  In the meantime, be aware that using -k
   will probably leave your computer powered off until you can walk over
   to the UPS and manually power cycle it.

Tue Aug 31 20:48:43 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/: New generic-ups.txt document describing how to use that driver 
   with various types of "contact closure" UPSes like the APC Back-UPS 
   models.

 - smartups/backupspro: Changed shutdown command to "@000" from
   "Z (pause) Z" so the UPS will actually power itself back on when the
   power comes back.  If you have a poweron delay set, expect a really  
   nifty light show on the front panel while the UPS ticks off the time.

 - genericups: Fixed 940-0020B detection flag

Mon Aug 30 13:23:15 MET DST 1999 / Lars Balker Rasmussen <lbr@mjolner.dk>
 
 - models/ & upscommon.h: fixed future conflict with several upsh variables.

0.41.4-pre4:

Sun Aug 29 18:59:29 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 * More discussion on how the shutdowns work ...

   Jozef Hitzinger asked me some pointy questions about how it was going
   to work (namely, upsd tells the model to shutdown) and got me to realize
   that it wasn't the best way to do things.  So, rather than have an 
   inferior shutdown method that is different for all the models, I have
   settled on a common scheme.

   It is now the responsibility of the system's shutdown script to check
   for the flag file (as set in upsmon.conf) and call $MODEL -k /dev/whatever
   if it exists.  The message passing stuff that has been developed during
   the 0.41.x line will not be used for this coordinated shutdown.  It still
   exists in the code, and will be used again later for more interesting 
   things.

   There's a file called shutdown.txt in the docs directory that goes
   into this in more detail.

   I've just finished subjecting my production systems to the coordinated
   shutdown code of this version, and feel it is good enough to be released
   as a prerelease test.  Please give this a workout and see if it holds
   up out there as well.

Sun Aug 29 15:04:04 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - fentonups: getopt, help/usage, -k for shutdown

Sat Aug 28 19:46:36 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - models/: backups.c replaced with genericups.c - support for any UPS
   that does basic contact closure on the serial port.  At present it 
   knows about the APC 940-0095A/B/C and 940-0020B cables.  Other models
   using this kind of signaling will be rolled into this module at some
   point.

   If you were using backups before, you must have had a 940-0020B cable,
   so you need to change your scripts to do the following instead:

   genericups -t 2 /dev/whatever 

   Note the -t 2 to indicate the cable/UPS type.

 - smartups/backupspro: Added getopt, help/usage info, -k for shutdown

Tue Aug 24 10:44:37 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/: updated documentation to reflect current code

Tue Aug 24 09:39:42 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: config file option: POWERDOWNFILE - this file will be created
   when running in master mode to allow tests in the system shutdown
   scripts.  The idea is to test for this file and then call the driver's
   kill mode to force the power down right then.

   This is only really useful for people with models that don't implement
   a delay between the command and actually powering down the load.  One
   example is APC's Back-UPS line.

   See docs/simple-shutdown.txt for more information.

Mon Aug 23 18:09:51 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - fentonups: added a throwaway query at startup to hopefully fix some
   of the "need to start the driver twice" problems out there...

 - fentonups: added shutdown support

 - upscommon: HAVE_UU_LOCK and HAVE_FLOCK nested so that people with 
   uu_lock (FreeBSD, others?) don't try to call flock() on serial fds.
   A passing of the rubber chicken over this by the FreeBSD users would
   be appreciated.

Mon Aug 23 17:49:07 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 * Clarification on NUMLOGINS:

 - upsd: The command to check the number of logins on a given UPS is
   "REQ NUMLOGINS" - just like checking any other variable.  This one
   happens to be internal, but it works the same way.

   Doing it this way lets programs use the existing getupsvar/getupsvarfd
   function calls and keeps the size of upsfetch/upsd down somewhat.
   So, forget about "NUMLOGINS" below.  It only lasted about an hour in
   the source before common sense caught up with me.

0.41.4-pre3:

Mon Aug 23 17:18:01 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 * Here's the scoop on shutdowns:

   Two drivers support it: backupspro and smartups.  I tried hacking it
   into the backups driver and got a nasty surprise when it powered down
   *IMMEDIATELY* upon having that signal set.  Poor gearbox ... in any 
   event, that driver will not support shutdowns by default in the future.
   If you have one of those things and need reliable shutdowns, toss it.

   upsmon will run in master mode by default.  Specify "slave" on the
   command line to make it bail out immediately when the low battery hits.
   If you have more than one master, things will get very interesting.
   So, don't do it.  The master upsmon is the one running on the host
   that actually is hooked to the UPS.  It has to shutdown LAST, or else
   the slaves lose their upsmon connection too early.

   So, to reiterate:

   - Single system on one UPS: use master mode (upsmon foo master)

   - Multiple systems on one UPS:

      - On the one running upsd: use master mode (upsmon foo master)
  
      - On every other host that cares: slave mode (upsmon foo slave)

   Be sure to edit your upsd.conf!  "login" is only sufficient for 
   slaves.  Master upsmons *must* have "master" access or they will not
   be able to power down the attached load through upsd!

 - smartups/shared.h: added support for dry contact reading from the
   Measure-UPS II board as contributed by Jason L Tibbitts III
   <tibbs@uh.edu> ...

 - New model: upsonic.c - from Jason Thomas <jason@topic.com.au>

Sun Aug 22 18:30:13 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - New model: optiups.c - by me - tested on an Opti-UPS PowerES 280es model.
   This driver is being a pain on some of my systems, so it's been
   branded EXPERIMENTAL.  It's so tempermental that it isn't even listed
   on the local multimon page yet.  Ugh.

 - upsmon: fixed echo / wall interaction in the final shutdown stages

Sun Aug 22 01:34:03 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: slave mode now starts the shutdown right away and master
   waits around for every other login to clear out.

 - upsd: new protocol command: SHUTDOWNDELAY [<host>] - initiates a
   shutdown after some delay which determined by the UPS and is usually
   set by the user.  This shutdown occurs no matter what the power status 
   happens to be.

   This ensures that attached systems reboot once they shut down, even
   if power returns after they halt and before the UPS can power off.

   This will fail if the UPS support program does not implement this 
   command or message passing.

Wed Aug 18 07:19:23 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: new protocol command: NUMLOGINS [<@host>] - show the number
   of clients that have done a LOGIN for a given ups.  upsmon uses this
   number to find out when all the slaves have disconnected.

 - upsd: new protocol command: MASTER [<@host>]- simple test to see if 
   the commands that come with that level of access have been granted 
   to a client.  If this fails, things like the shutdown command (not
   implemented yet) will also fail.

   clients can access this via getprivs() in upscommon.

Tue Aug 17 15:24:25 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: fixed an off-by-one in the OK reply when processing "LOGIN"

 - upsmon: adding "slave" or "master" (the default) to the command line
   will set the mode of operation used during shutdowns.

   slave systems shut down immediately at low battery.  master systems will
   hang around for a bit to let all the slaves shut down before initiating
   the ups poweroff.  So far upsmon will only log in as one or the other
   but it still behaves like a slave in all situations.

Tue Aug 17 15:07:47 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon/upsd: message sending from upsd to models works

Tue Aug 17 13:45:26 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: ups_handler struct added - functions for parsing msgs
   These should be set _after_ the createmsgq() call...

Mon Aug 16 12:07:42 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsstats: fixed unit error in alt tag for utility

 - fentonups: cleaned up detection for L425 string

0.41.4-pre2:

Thu Aug 12 10:32:38 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: applied poll freq alert patch from Bill Carlson <wcarlson@vh.org>

   This adds "POLLFREQALERT" to the upsmon.conf and breaks things up so
   that you can make upsmon wait longer between queries when everything is
   normal.

 - upscommon: lockport() routine for unified port locking by all modules

 - configure.in: uu_lock test changed (can you tell this is hard to test?)

 - upscommon: uu_lock tweaked some more, uu_unlock called at shutdown

Thu Aug 12 09:10:43 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Makefile.in: setver target now makes the %define version without dashes

 - Makefile.in: also sets proper UID/GID for state directory

 - Makefile.in: now makes state directory during install-dirs target

 - upsmon: fixed double login problem when the ups goes stale and comes back

 - smartups: fixed segfault in SU600 hack mode

Tue Aug 10 13:47:09 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: changed the fd situation around so that things like sendmail
   actually work when called from inside the notify script.

0.41.4-pre1:

Fri Aug  6 21:14:50 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - 0.41.4-pre1 released for Fenton driver testing over the weekend

Fri Aug  6 20:47:24 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - smartups/backupspro/upscommon: removed APC specific bits from recv
   and added a "endchar" variable so it can now be used by more models
 
   Also recv now supports "ignchars" - things to discard during the
   receive sequence ... handy for tossing async update characters.

Fri Aug  6 20:39:34 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: addinfo no longer changes the info[0] value around.  That
   value should be set to the maximum size of the array and should remain
   constant from that point on.  In the event of unused entries, set their
   types to INFO_UNUSED.

Fri Aug  6 17:29:33 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - multimon: new field: UTILITY - changes colors based on transfer settings

   Any voltage beyond the low or high transfer points gets a red background
   to bring your attention to the situation.  Models without low and high
   transfer information will always be shown in green.

Fri Aug  6 17:02:16 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - smartups/backupspro: changed to report the input (line) voltage per
   the protocol in new-modules.txt

Fri Aug  6 16:11:27 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: change to add data in a more generic manner

 - New model support: Fenton Technologies PowerPal/PowerOn/PowerPure units

   Use the "fentonups" driver...

0.41.3:

Wed Aug  4 08:12:47 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Released as 0.41.3

0.41.3-pre3:

Mon Aug  2 15:32:55 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon/backups: more uu_lock #include tweaks

 - configure.in, models/Makefile.in: tweaks for FreeBSD uu_lock handling

 - backups: zero-length format string warning zapped

Sat Jul 31 21:32:54 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - multimon/upsstats: should now validate as HTML 4.0 transitional.

0.41.3-pre2:

Sat Jul 31 16:23:22 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: fixed nasty access problem where granting any level of access
   would actually grant full access to matching clients

Sat Jul 31 16:03:40 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: killed a really ugly memory leak in the REQ handler

 - backups/upscommon: fixed ifdefs: HAVE_UU_LOCK, not HAVE_UULOCK

 - upscommon: moved error reporting on opens around, and added numbers

Tue Jul 27 14:31:46 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upslog: applied typo patch from Lars Balker Rasmussen <lbr@mjolner.dk>

0.41.3-pre1:

Mon Jul 26 08:48:33 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Makefile.in: setver target added for my own sanity

Sat Jul 24 20:31:43 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon/upsd: workaround for systems without struct msgbuf

Sat Jul 24 20:22:37 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsimage.cgi: fixed coredump problem when running from the command line 

Sat Jul 24 17:07:33 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: shutdown() fd when upsd disappears - fixes lingering sockets
   that stay in the CLOSE state forever...

 - upsfetch: sanity checks in getupsvar for variable names

 - smartups/backupspro/backups: message passing support added

 - upsd/upscommon: message passing now implemented.  

   This will be used later to send shutdown commands to models so they
   can power off the UPS.  To test this, connect to a upsd manually
   with nc or telnet and send "TESTSEND".  If your model program supports 
   it and everything is functioning properly, something should show up 
   in your syslog like this:

Jul 24 17:13:12 rkpent smartups[4406]: Received a message from upsd 
Jul 24 17:13:12 rkpent upsd[4409]: Sent test message to model 

   That's all it can do now.  The point of this release will be to make
   sure everything compiles cleanly and nothing else has broken before
   the fun part happens -- parsing all these messages.

   This uses SysV IPC stuff via msgget and friends, so if you don't have
   it, this isn't going to work.  I may add a named pipe interface or
   similar if enough systems don't support this method.

Wed Jul 21 17:45:21 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Some Y2K notes are now in the FAQ for the curious...

Sat Jul 17 19:33:06 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsimage: cleaned up some duplicate image generating code

 - upsfetch: now handles bad/invalid password errors properly

 - upscommon: SHM_R/SHM_W fix for NetBSD and other systems that don't
   need such things defined since that's already the default

 - smartups/backups/backupspro: now include master version number for
   tracking bug reports and similar things

 - upsd: -h is now a valid option

 - configure.in: Sanity checking so "--with-uid 1234" forces the default
   value since the proper syntax for such things is "--with-uid=1234" ...

 - configure.in: Added -lz to the test for gdImagePng ... configure won't 
   link the test program without it. 

   For those keeping track, to make PNG images with upsimage.cgi, you must 
   have all of these programs/libraries installed:

  - gd 1.6 or above	http://www.boutell.com/gd/
  - libpng		http://www.cdrom.com/pub/png/pngcode.html
  - zlib		http://www.cdrom.com/pub/infozip/zlib/

 - Added support for PNG mode in gd1.6 and above from 
   Lars Balker Rasmussen <lbr@mjolner.dk>

0.41.2:

Fri Jul 16 10:21:35 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 * For automatic notification of releases (including prereleases), there
   is a new mailing list which only has announcements.  To get on, have a
   chat with majordomo@lists.exploits.org and "subscribe upsdevannounce"...

   This list is restricted posting so you will only get announcements   
   from me.  For questions and other messages, use the normal list.

 - RH6 stuff: Applied patch for spec file and script

 - multimon: Applied patch to handle backslash at end of line condition

0.41.2-pre3:

Fri Jul 16 08:05:36 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: notifycmd call to system() changed somewhat.  This may fix the
   "no args" problems that occasionally surface.

 - conf/multimon.conf: another bad example: loadpct, not upsload

 - Oh yes, back in pre2 a snprintf() bug was fixed in upscommon....

Fri Jul 16 14:23:21 MET DST 1999 / Lars Balker Rasmussen <lbr@mjolner.dk>

 - multimon: Support backslashed quotes in config file.
   Report config file errors to user via cgi.

Thu Jul 15 16:24:09 MDT 1999 / Russell Kroll <rkroll@exploits.org>
 
 - conf/multimon.conf: fixed bad example (upstemp vs. UPSTEMP)

0.41.2-pre2:

Tue Jul 13 15:21:11 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Applied RH6 compatibility patch from Bas Vermeulen <bvermeul@blackstar.nl>

0.41.2-pre1:

Tue Jul 13 08:28:00 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: POLLFREQ and ALERTTIME now config file options for tuning.

Tue Jul 13 08:06:01 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 * The Boutell gd page is gone.  Get it while you can just in case the
   Unisys people turn their attention to me next.

   http://www.exploits.org/~rkroll/smartupstools/gd/

   And remember, if anything should happen, the _old_ (before 0.40.0) releases
   of this software have ALL of gd within the tarball!  Just find one of 
   those and rip it out.

 - smartups: #define SU600_HACK to try out experimental Smart-UPS 600
   support which effectively disables polling for a few variables.

Tue Jul 13 07:59:17 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/FAQ: new file that should help people along...

Sun Jul 11 00:26:05 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/protocol.txt: updated for upsnames and login/password

Sun Jul 11 00:11:02 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/access.txt: updated for passwords

 - upsd: Now uses field 4 of the access controls as a password.  If 
   a client matches an access line and it has a password set, they must 
   have that password set or access will be denied.

   This only applies to the 'login' level of security right now.  Other
   (lower) levels do not require a password.  This may be reworked somewhat
   in the near future to be a little more obvious.

 - upsd: PASSWORD - sets a password for a client

 - upsfetch: upslogin now sets the password

Sat Jul 10 22:29:45 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/access.txt: updated for login level security

 - upsd: enabled login level security (allow logins from clients)

 - upsd: fixed a potential crash when TCP clients disconnected

Sat Jul 10 20:28:36 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - smartups: Measure-UPS II now prints detection notice at startup

 - upscommon: handler for SIGTERM so detach_shm() gets a chance to run

Sat Jul 10 20:03:28 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: now waits 10 seconds for getupsvarfd with alarm() just in case
   something goes wrong and it blocks...

Sat Jul 10 19:10:47 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/new-modules.txt: updated for AMBTEMP and AMBHUMID.

 - multimon: config file now available for specifying custom fields

   This means you no longer have to suffer if all of your systems lack
   a certain variable - just exclude it to save on horizontal space.

   Some field names are ALL CAPS and have special meanings and are parsed
   in interesting ways.  Everything else is just a variable name straight 
   from the protocol and is displayed without modification.

   This is optional ... if you don't create a configuration, the old
   layout with the standard fields will be used.

   See conf/multimon.conf for a stock file.

 - upsd: new variables: AMBTEMP and AMBHUMID.

 - smartups: Now supports the Measure-UPS II sensors for external
   temperature and humidity readings.

Sat Jul 10 13:54:58 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - multimon: now properly close table cells when no data available for a field

 - upsfetch: handle ANS <foo> UNKNOWN properly, but it's an evil hack...

0.41.1:

Fri Jul  9 21:37:06 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Prerelease testing ends, promoted to 0.41.1

0.41.1-pre3:

Thu Jul  8 10:09:47 MET DST 1999 / Lars Balker Rasmussen <lbr@mjolner.dk>

 - upsfetch/upsd: replaced bzero()/bcopy() by memset()/memcpy()

Thu Jul  8 08:45:23 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - clients/Makefile.in: Patched to get the $(NETLIBS) stuff right

0.41.1-pre2:

Wed Jul  7 22:08:45 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - configure.in: check for -lnsl and -lsocket for Solaris compiles

 - server/Makefile.in, clients/Makefile.in: pass NETLIBS to upsd/upsfetch

Wed Jul  7 10:38:01 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - server/Makefile.in: removed tab that was confusing Emacs

Tue Jul  6 20:40:05 MET DST 1999 / Lars Balker Rasmussen  <lbr@mjolner.dk>

 - upscommon: create_info() now checks to see if it can write to the state file

 - upscommon: writeinfo() only takes one param now (no initial mode)

 - models/*: all calls to writeinfo(1,...) are gone.

 - upscommon: writeinfo() syslogs errors that were silent before.
       
 - multimon: replaced strsep() by strtok()

 - upsfetch: replace bzero()/bcopy() by memset()/memcpy() for Solaris
   compatibility. 

 - upsstats: renamed getdate() to my_getdate() because of name-clash.

0.41.1-pre1:

Mon Jul  5 14:48:13 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: External notifier.  See NOTIFYCMD in upsmon.conf.

   This is good for when you want to send pages when your power starts
   going crazy and people need to know about it.  Also see pager.txt in
   the docs directory for an example of how to use it.

   The idea for this feature came from Christopher Huffine but I decided
   to implement it differently.  He still deserves the credit though.   

Mon Jul  5 14:14:04 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: Now uses TCP mode for monitoring

   *** This means it can no longer monitor older versions of upsd ***

   If you need to maintain older UDP-only upsd versions, keep an old copy
   of upsmon around!

Mon Jul  5 13:02:07 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - clients/: New program: upsct - like upsc, but it uses the TCP based 
	     function calls to get the job done.

 - upsfetch: Added new functions for TCP mode

Sun Jul  4 23:50:28 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: dropped some scaffolding from the TCP addition

 - upsd: new -t argument to set TCP port... -p sets *both* TCP and UDP
         but -t will override the TCP port only.

   In other words, for UDP on 1234 and TCP on 5678, use -p 1234 -t 5678 ...

Sun Jul  4 03:39:50 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: sprintf() to snprintf()

 - multimon, upsimage, upsstats: sprintf() calls replaced with snprintf()

Sun Jul  4 03:17:33 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - docs/protocol.txt: updated for LOGOUT and TCP mode

 - upsd: fixed overflow condition in parse (off by one error)

Sun Jul  4 02:24:11 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: TCP connections.  Clients need at least "base" access from the
         ACLs or they will be dropped immediately upon connection.

   The protocol semantics are the same as before, with a new LOGOUT command
   to have the server disconnect you.  This obviously doesn't work in UDP 
   mode.

0.41.0:

Fri Jul  2 08:52:46 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - No bugs found/reported, so version number change only...

0.41.0-pre1:

Tue Jun 29 12:50:40 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsfetch: Generic ERR * responses now handled properly

   Also added specific support for "access denied" situations

Tue Jun 29 12:23:02 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: command line state file now prints depreciated behavior message

 - docs/access.txt: New documentation file for access controls

 - conf/upsd.conf: New stock config file with reasonable stock limits

Tue Jun 29 10:35:26 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: Access controls.  "ACCESS <action> <level> <aclname>"

   When <aclname> is matched for an attempt to do something that requires at
   least <level>, handle it according to <action>...

 - upsd: ACLs.  "ACL <aclname> <ipblock>" in the config file...

   This takes CIDR /nn style or the n.n.n.n format ...

   ACL localhost 127.0.0.1/32
   ACL localhost 127.0.0.1/255.255.255.255

   Those two lines are identical.

Tue Jun 29 08:42:30 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: Use "UPS <ident> <filename>" in config file to name UPSes
   Just putting them on the command line gives them dull ups-0 type names...

   This means you can just start upsd by itself now with no arguments.

 - upsd: now reads configuration file (upsd.conf)

0.40.3:

Fri Jun 25 22:37:00 CEST 1999 / Peter Bieringer <pb@bieringer.de> 
 
 - Bugfix upsd (supplied information wasn't ok)

Fri Jun 25 14:41:39 MDT 1999 / Russell Kroll <rkroll@exploits.org>
 
 - Default log facility now "daemon".  Use configure --with-faculity=... 
   to change it if this doesn't suit you.

Thu Jun 24 00:37:56 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Reminder: to use the new features like port number and ups name in
   programs that link to upsfetch, you must reinstall upsfetch and then
   relink the program.  Otherwise it will use the old library which doesn't
   know about the new features.

 - clients/Makefile.in: upsfetch.h now installed with install-misc target

 - <subdirs>: changed Makefiles around so that ./configure generates 
   them from Makefile.in so that BASEPATH gets substituted.

   In other words, "make install" works from the subdirectories now.

Thu Jun 24 00:30:13 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - smartups/backupspro: try to wake up a UPS that goes to sleep on us
   by sending GO_SMART once in awhile

Thu Jun 24 00:16:16 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: now supports changing the udp listening port on the command line.
   Do -p <portnum> to change it.

 - upsfetch: now supports <hostname>:<portnum> in the host field 

   Naturally, things like <upsname>@<hostname>:<portnum> are also supported...

Wed Jun 23 23:47:06 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: now supports multiple local UPSes.  Just add the filenames to
   the command line and it will read everything it can find.

 - upsfetch: now supports <upsname>@<hostname> in the host field for
   function calls

0.40.2:

Mon Jun 21 07:21:20 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Version number change from pre3 only.

0.40.2-pre3:

Fri Jun 18 16:49:38 MDT 1999 / Russell Kroll <rkroll@exploits.org>
 
 - upsd: some snprintf() implementations don't like having the destination
   buffer as one of the source strings.  listvars() now uses a temporary
   buffer to shove data around to avoid this problem.

 - server/Makefile: statedebug target added for easier compiling

Thu Jun 17 12:08:30 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsd: check return value of recvfrom before calling parse

0.40.2-pre2:

Tue Jun 15 19:17:49 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: changed segment deletion policy - now called in cleanup_shm
   which is part of the exit() chain since certain systems don't let you
   attach to a segment that's marked for deletion.

   This means a kill -9 will leave shared memory segments hanging around,
   so don't do that on a model support module unless absolutely necessary.

Tue Jun 15 17:28:10 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - backupspro: installinfo for UPSTEMP removed - they don't support it

 - upsd: oops... moved the sys/shm.h include down to where it should be...

 - conf/upsmon.conf: changed shutdown command to something that should
   work on more systems

 - docs/new-modules.txt: updated for shared memory support details

 - upscommon: mark shm segment for deletion in case the model module 
   blows up so we don't leave segments hanging around in memory...

 - upsd/upscommon: shmid 0 is valid, changed tests around somewhat

Tue Jun 15 21:25:00 CEST 1999 / Peter Bieringer <pb@bieringer.de> 
     
 - server/upsd.c: "UNKNOWN: UNKNOWN" answers from upsd no longer given,
     prevents confusion of users
     
 - models/ups-trust425+625.c: see Changes.trust for details

Tue Jun 15 17:16:56 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upsmon: now calls the system's wall binary to send messages.

 - upsmon: off by one error in the config file reader spotted by
   Alexander Savelyev.

0.40.2-pre1:

Mon Jun 14 00:01:29 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Applied patch from Peter Bieringer <pb@bieringer.de> 

   - upscommon/upscommon-addon: use syslog instead of printf when 
     installinfo/installinfodirect fails

Sun Jun 13 23:01:14 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - server/Makefile: clean target now removes statedebug

 - Makefile.in: "make" turned to "$(MAKE)", subdir compiles reworked

   I guess I've been spoiled by GNU utilities.  Now I understand why
   nobody uses the -C option in Makefiles even though it's so nifty.

   All subdirectories are now handled with the following form:

   cd dir; $(MAKE) target; cd ..

Sun Jun 13 22:08:34 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: "Can't open" code redone somewhat to not trash errno with
   printf - remember the old "Not a typewriter" problems from yesteryear?

 - upscommon: writeinfo doesn't write anything in initial mode now.
   The idea is to perform a check of writing to the state file before the
   process enters the background and loses the controlling tty.

   This should fix the bug where programs could pick up a bogus status
   value for a few moments after the initial writeinfo happened but before
   the first "real" (non-initial) writeinfo was called.

 - upscommon: create_info added to make the info array either from shared
   memory OR in conventional memory which then gets written to disk

   So, shm support in the model support programs should be a matter of
   calling create_info instead of declaring one locally.

   Model programs should ask the user if they want to disable shm and 
   then set shmok accordingly.  1 = allow if available, 0 = never use.

 - smartups: shared memory support (via create_info)

 - upsd: staleness interval now 15 seconds

 - upsd: staleness checks changed to be more descriptive

 - upsd: updateups completely reworked to handle shared memory mode
   and switching between shm and state files on the fly

 - upsd: big changes to the ups tracking structures 

   The arrays (iptr/statefn and so on) are now gone and are replaced with
   a linked list that should allow any number of local UPSes without
   needless memory waste.  There are hooks for multiple UPS support, but it
   is not implemented yet in the program or the protocol.

   I expect it to work like this protocol-wise:

   REQ MODEL -> gives you the model info for the first/default UPS
                which should work fine for most single-UPS users

   REQ MODEL@second-ups -> gives you the model info for a UPS called
                           "second-ups", assuming it exists

   As for the user interface, "upsc second-ups@localhost" should work.

Fri Jun 11 23:06:46 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - smartups/upscommon: info array reworked for shm compatibility

   Other modules to follow...

0.40.1:

Fri Jun 11 13:38:40 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - Remaining Makefile targets added to new autoconf Makefile.in scheme

 - QUICKSTART file added for the impatient

Tue Jun  8 04:04:26 MDT 1999 / Russell Kroll <rkroll@exploits.org>  

 - README file rewritten to remove the "crystal ball problem" where
   new users had no idea what each program did.  Things should now be
   at least as descriptive as they were in 0.34.

 - multimon, upsstats: reworked to handle Celsius a little differently

   Thanks to autoconf, you can now do ./configure --enable-celsius ...

Tue Jun  8 02:58:26 MDT 1999 / Russell Kroll <rkroll@exploits.org>  

 - GNU configure now handles all details previously set by editing
   config.h

 - All: include config.h

 - clients: moved upsfetch from common, removed common

 - Hmm, COPYING wandered off.  It's back now.

Sun Jun  6 20:53:20 MDT 1999 / Russell Kroll <rkroll@exploits.org>  

 - Source cleanups: new subdirectories: models, clients, server, common

 - Makefiles redesigned to handle new layout

 - #includes rewritten for new directories

Sat Jun  5 22:06:59 MDT 1999 / Russell Kroll <rkroll@exploits.org>   

 - GNU autoconf support begins
 
 - Source tree reorg begins - lots of include files moved around 

0.40.0:

Sat Jun  5 01:22:00 MDT 1999 / Russell Kroll <rkroll@exploits.org>   

 - Version number change, doc tweaks for release version

0.40.0-pre6:

Mon May 31 12:11:45 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - upscommon: skip the writing phase when the data is stale

   It detects this by seeing if the last data read timed out.  upsd picks
   up on this after a minute by default, so everything down the line gets
   notified.  To test it, disconnect the serial cable from your UPS and
   watch what happens about a minute later.

0.40.0-pre5:

Sun May 30 18:42:41 MDT 1999 / Russell Kroll <rkroll@exploits.org>

 - multimon/upsstats: handle new "OFF" value

 - backupspro/smartups: internal status "00" now results in "OFF" value

 - docs/new-modules.txt revised to reflect new "OFF" value for status

Sun May 30 12:05:24 CEST 1999 / Peter Bieringer <pb@bieringer.de>

 - upscommon.h: new function nolongertimeout, which should be called after each
    successful read. Triggers the "Serial port" syslog messages.

0.40.0-pre4:

Sat May 29 19:01:24 MDT 1999

 - statedebug now compiles cleanly on BSD/OS without any funny resolv.h stuff

 - timeout() now uses sigaction to restore the SIGALRM to default
   since SA_ONESHOT does not work on BSD/OS, maybe others...

Sat May 29 18:21:51 MDT 1999

 - Note: INFOMAX was supposed to be the maximum count of how many info
   members a model support program could use total.  Since this number
   can vary wildly (backupspro uses 4, smartups uses at least 12), it
   was a way to save memory and do some bounds checking at the same time.

   To keep the confusion down, I've moved the #defines for INFOMAX around
   so that it's not forced to 16 in the upscommon module.  It should be
   defined in each model's source file if they compile with upscommon.

 - TODO: Move the growing assortment of model support programs to
   models/ to keep the source tree clean as suggested in Changes.trust

 - smartups/backupspro: Fixed help info for arguments (/dev/...)

 - merged in Trust UPS support from Peter Bieringer <pb@bieringer.de>
   See Changes.trust for more details

 - upsimage.cgi now uses -lgd rather than bluntly specifying the full 
   filename to the library - this will break compiles if your system
   doesn't find the lib and header files.

Sat May 22 16:22:29 MDT 1999

 - upscommon now uses sigaction() directly for timeout checking to get
   around a problem where read() would be restarted on some systems.

Fri May 21 17:27:54 MDT 1999

 - upslog now enters the background automatically.

 - upsmon still had the bogus openlog() facility.  Fixed.

 - Forgot to mention in the pre3 notes that a fix was added for hangs
   in the upsfetch module when the target host was down/unreachable...

0.40.0-pre3:

Tue May 18 17:56:06 MDT 1999

 - The example hosts.conf wandered off somewhere since 0.34.  It's back now.
   The install-cgi target also now copies it across just in case.

 - RECVTIMEOUT condition handling added to upsstrerror() - was causing
   some bogus 'unknown error' messages when it was a known condition...

 - upsfetch: error handling for DATA-STALE added

 - upsd: staleness check now performed on the state files.  After 60 seconds
   (default) of not changing, they will be declared stale and clients will get
   an error.  This is the first of many "no contact with UPS possible" 
   conditions that will be added.

   This is a pretty evil hack right now until a cleaner method is added.

 - I had openlog() using some bogus values for the second parameter.  The
   facility is now configurable in config.h - see #define LOG_FACILITY.

 - Computer room floods due to massive rainfall in Colorado.  Development 
   lags.  Ugh.

0.40.0-pre2:

Tue Apr 27 17:34:24 MDT 1999

 - Serial locking change - compiles on FreeBSD will now use uulock() instead
   of flock() without any change to config.h.  The eventual goal is to have
   autoconf take care of this without any future #define hacking.

   This means NO_SERIAL_FLOCK from pre2 is gone.

Mon Apr 26 17:10:44 MDT 1999

 - fix: upscommon: cfsetospeed() now has a matching cfsetispeed()
   Thanks for Alexander Nedotsukov for spotting this.

 - fix: upsmon now compiles on BSD/OS - needed to include errno.h

 - The default Makefile target no longer compiles the CGI programs.
   Do "make cgi" to build them.

 - New config.h #define possibility: NO_SERIAL_FLOCK - use this on
   FreeBSD 3.0 systems if you get an "not supported operation" error.
   Recommended by Alexander Nedotsukov.

 - backups: flock() test moved down a chunk in the serial open code.
