UPTIME CLIENT 5 BETA HISTORY

5.0b8CVS
 o New Features and Changes:
   - Quiet mode is now the default by popular demand. For
     compatibility, the -q switch will continue to be recognised but
     will just be silently ignored up until the final 5.0 release. Use
     the -v switch if you want the previous default logging behaviour
     where all transmissions were recorded to the syslog.
   - NetBSD: also look in /usr/pkg/etc when config file not found.

 o Bugfixes:
   - Bugfixes to avoid potential buffer overflows when reading config
     file and when parsing command-line options from getopt (Thanks to
     Gino Thomas).
   - Added include for FreeBSD 5 (Thanks to Marc G. Fournier).
   - Sync with latest FreeBSD upclient.sh init script.
   - Start of adjustments to #includes to allow building on NetBSD.
   - Start of adjustments to #includes to allow building on Mac OS X
     10.1. Sorry, 10.1 was broken when the new mach code was added in
     version 5.0b6 due to system header differences between 10.2 &
     10.1.
   - Minor update for BeOS.

5.0b7
 o New Features and Changes:
   - make install now allows destdir= to make packaging easier,
     mandir now defaults to ${prefix}/share/man in accordance with
     FHS 2.2 <http://www.pathname.com/fhs/>.
   - Renamed <your_authkey> to your_authkey to prevent config file
     confusion (should not enclose actual authkey within < >)
     i.e. "ERROR: AuthKey is not 32 bytes long!"
     * This change affects freebsd & debian scripts.

 o Bugfixes:
   - Fixed typo in CP_IDLE constant which prevented build on BSD.
   - Fixed code omission which prevented CPU usage & idle from working
     properly on Linux, it was only being calculated once at start
     instead of each reporting interval.
   - More Makefile changes, bsdmake is supported again.
   - Makefile now installs all locale files.
   - Fixed stupid typos and typecasting which prevented build on
     Solaris and probably Irix.
   - Moved Solaris 7-specific code into a separate file.

 o Cosmetic:
   - Log only one decimal place for usage % in syslog.
   - Some english rewording.
   - Removed some leftover debugging code (Solaris).
   - Reformatted this file.

5.0b6
 o New Features and Changes:
   - Updated load reporting transmission format to a number from 1-100
     to match change on server.
   - The upclient.conf file is currently in flux. There are only a few
     changes so far but there might be a few more, and unfortunately
     this means upclient 5.0b6+ will be incompatible with the old conf
     file.
   - New functions for reliable load percent and idle percent
     reporting in Linux, using values from /proc/stat. Tested on
     MkLinux & Debian 3.0.
   - New functions for detailed cpu info in Linux, using values from
     /proc/cpuinfo. Tested on MkLinux & Debian 3.0.
   - Brand new functions for reliable idle-time reporting in mach
     kernel, including Darwin. Values now show up the same as in
     'top'. This means upclient no longer has to be run as root on
     systems with a Mach or Mach-derived kernel such as Darwin
     (others?).
   - When starting up, now reads pidfile and checks whether process is
     already running, then quits if appropriate (not foolproof yet).
   - Added Load-average reporting for Solaris 7, user should disable
     it in the config file for older versions of SunOS. (Currently not
     supported by wonko's uptime server anyway)
   - Option to compile with Gettext internationalization. German and
     Dutch translations and some French included.
   - Added quiet command-line switch to prevent transmission logging;
     startup, shutdown and errors are still logged.
   - Added verbose command-line switch.
   - Updated to latest FreeBSD init script upclient.sh from:
     <http://www.freebsd.org/cgi/cvsweb.cgi/ports/misc/upclient/files/>.

 o Bugfixes:
   - Fix for daemon quitting immediately after execution on [x86]
     Linux 2.4 (Redhat 7.3): fork a second time to avoid premature
     death. This also corrects the unexpected quit when upclient
     receives a HUP signal on MkLinux DR3.
   - When upclient.conf cannot be found at the compiled-in path, the
     code for trying harder now really does try to find one in a
     couple other locations, and logs which config file is being used
     instead. (Broken since an early beta 5 version.)
     * Known problem: If there are errors in the "alternate" config
       file upclient will report the name and path of the compiled-in
       config file instead of the one found.

 o Optimizations:
   - Darwin / Mac OS X now builds a prebound executable using the
     '-prebind' compiler flag. (Prebinding not possible yet when
     building with gettext in fink).
   - Minor variable storage adjustments so upclient uses a few bytes
     less memory.
   - BSD, Linux & Solaris Code optimizations: calculate boottime, cpu,
     and os only once instead of recalculating at each
     interval. (Thanks to Cyrille Lefevre for the BSD patch).
   - Refactored some daemon code in main().
   - Eliminated redundant code in options.h. (Thanks to Cyrille
     Lefevre).

 o Build Changes:
   - Allow parallel builds (i.e. make -j8).
   - Put intermediate build files (.o) into subdir.
     * Note: This means bsd make is no longer supported, use gnu make
       instead.
   - Eliminated compiler warnings by changing rcsid used for what(1)
     to "static const char rcsid".
   - Cleaned up many compiler -Wall warnings.

 o Internal Changes:
   - Converted c++ style comments to c style. Minor code reformatting.
   - Extract version string from version.h during compile.

 o Cosmetic changes:
   - Parent process now sleeps a couple seconds before dying after
     spawning the daemon-child, to prevent any outstanding stderr
     messages from clobbering the shell prompt.
   - Adjustments to logging and debugging error messages.

5.0b5
 - Changed SI_MACHINE in stats-sol.c to SI_PLATFORM, thanks to
   Robert-Jan Oosterloo. This gives more meaningful output like
   "SUNW,Ultra-5_10" instead of just "sun4u", which just describes all
   Suns since the Ultra 1.
 - New feature: re-read config file when receiving a 'kill -HUP'
   signal. Added additional checking for a valid timer interval when
   re-reading the config.
 - New: An invalid timer interval in the config is no longer
   considered a fatal error. Instead, a default value of 300s is used
   (or the previous interval if the config file was re-read due to
   signal HUP).
 - Fixed problem transmitting data with Solaris. The client would
   compile and run normally but no data would ever be sent and no
   transmission attempts were recorded in syslog. Thanks to Paul
   Theodoropoulos for reporting this and was instrumental in helping
   me track it down.
   * If you believe this problem is happening on your system email me
     so I can adjust the code to apply the same fix for your OS.
     (upclient.c: use pause() not sleep(cfg_interval).)
 - Cleaned up some syslog reporting. When the idle time and/or load
   are not sent due to the configuration set in upclient.conf, they
   are no longer logged as being sent instead of recording -1 or some
   other bogus value.
 - More informative error message when opening an UDP socket fails.
 - Now installs config file for Solaris/SunOS with defaults set to not
   transmit load and idle time (same as IRIX).

5.0b4
 - No new features since 5.0b2.
 - Test-build on several machines and cleaned up some dumb mistakes
   in the code which prevented building. Thanks to SourceForge who
   provides a compile-farm with eight different machines.

    Processor         OS                     Build Command Build Result
    ----------------- ---------------------- ------------- -----------------
    [PPC Dual-G4]     Mac OS X 10.2 & 10.2.1 make darwin   ok
                       (Darwin v6 & 6.1)
    [PPC G4]          Mac OS X 10.1 SERVER   make darwin   ok but with
                       (Darwin 5.5)                        compiler warnings
    [PPC 601]         MkLinux DR3 (2.033)    make linux    ok
    [x86]             Linux 2.4 (Debian 2.2) make linux    ok
    [x86]             Linux 2.4 (Redhat 7.3) make linux    ok
    [x86]             FreeBSD (4.7-RC)       make bsd      ok
    [PPC RS/6000]     Linux 2.4 (Debian 3.0) make linux    ok
    [Sparc R220]      Sun Solaris (8)        make solaris  ok
    [CerfCube SA1110] Linux 2.4 (Debian 3.0) make linux    ok
    [Alpha]           Linux 2.4 (Debian 3.0) make linux    fails, probably
                                                           compiler flags
    ----------------- ---------------------- ------------- -----------------
    To add your machine to this list email <carstenklapp@users.sf.net>.
    Send me your patch if you manage to compile on any of the above
    non-working systems or any unsupported system.

    Successful builds of 5.0b1/5.0b2 were previously reported on:
     * FreeBSD 4.6.2
     * IRIX 6.5.16

 o Internal changes:
   - Fixed 'static' compiler errors on FreeBSD (problem introduced in
     5.0b3).
   - Fixed typo in stats-sol.c which prevented building on Solaris
     (broken since 5.0b2).
   - Fix build problem in uplog.c & uplog.h for FreeBSD, include
     <stdio.h> (broken for some BSD systems in 5.0b2).
   - Tinkered with documentation and man file.
   - Some Makefile fixes and improvements.

5.0b3
 - Updated Makefile's config-file path for WinNT and INSTALL
   instructions for WinNT.
 - Reorganise Makefile to allow for installation of custom
   upclient.conf depending on OS (So far only SendIdleTime = 0 and
   SendLoadAvg = 0 for IRIX, there will probably need to be others
   added).
 - Added rcs strings for what(1) identification.
 - More descriptive error reporting and use syslog on Irix/Solaris.
 - Addressed build problem on Irix 6.5.16 `EX_OSFILE' undeclared.
   (#include <sysexits.h>).
 - Addressed build problem on FreeBSD `pid' undeclared.
   (move declarations to top of main). The fix is unconfirmed but this
   looks like the same problem as the Linux build has (see below).
 - Addressed build problem on Linux `pid' undeclared.
   (move declarations to top of main), released a patch to fix 5.0b2.
 - Minor corrections to copyright notices.

5.0b2
 - Updated INSTALL doc.
 - Added uninstall target to Makefile.
 - Provide startup status messages to stderr when manually started.
 - Rudimentary command-line arg parsing added (-h for usage and -V for
   version).
 - Morebetter syslog reporting (notably BSD & Darwin).
   * daemon PID shows in syslog (use LOG_PID for all syslog() calls)
 - syslog(3) wrapper/emulation function for WinNT (untested).
 o Internal changes and improvements:
   - base64_encode() now calculated before connecting to server to
     slightly decrease http connection duration (protocol 4.2).
   - base64_encode() result cached (static), so it is only calculated
     once per execution instead of every time a connection is made
     (protocol 4.2).
   - Removed trailing newline from end of transmitted data (protocol 5).
   - Use sigsuspend(2) with itimer instead of obsolete pause(3)
     function.
   - #ifdef changes for simpler Makefile (and to encourage
     portability).
   - Debugging messages now use syslog (to allow debugging when
     fork()ed).
   - all exit() calls now use <sysexits.h> constants instead of
     arbitrary integers.
   - use "compat/sysexits.h" for WinNT & BeOS (is this still required
     for Be?).
   - More functionality "available" when compiled in paranoid+debug
     mode.
   - Source code reformatting.

5.0b1
 - Updated to use new protocol 5 via UDP.
 - Added Darwin 6+ / OS X 10.2 compatibility patch from fink.
 - Added man file and Protocol 5 doc.
 - Client now sends feedback to stderr when successfully started in
   background.
 - Some enhancement to syslog messages when starting and stopping.
 - Executable now installs into $prefix/sbin by default instead of
   $prefix/bin.
 - New Makefile with 'install' target (goal)
   * Makefile automatically uses pid & config file paths during build.
   * Makefile automatically inserts server name and pid file path into
     config file.
   * Makefile inserts stuff into the man file to reflect local build
     settings.
 o Internal changes and improvements:
   - Minor code cleanup.
   - Added new strings for UDP errors, so all error code numbers have
     changed.
   - Started migrating exit() codes to use <sysexits.h> constants,
     added "compat/sysexits.h" for those who have none.
   - More daemon-like behaviour (I hope).
     * program now cleans up pidfile when quitting.
     * now detaches from terminal (request new session job control
       when forking with setsid()).
     * now ignores SIGINT and SIGHUP.
       This should make it easier to add other code to check whether
       another instance of the program is already running and then
       take appropriate action (i.e. die, without clobbering pidfile).

 $Id: HISTORY-BETA,v 1.40 2003/05/26 21:34:35 carstenklapp Exp $

-- 
 There are two major products that come out of Berkeley: LSD and BSD UNIX.
 We don't believe this to be a coincidence.
