UPTIME CLIENT 5 BETA HISTORY

5.0b6
    - New Features and Changes:
      o Updated load reporting transmission format to a number from 1-100 to
        match change on server.
      o 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.
      o New functions for reliable load percent and idle percent reporting
        in Linux, using values from /proc/stat. Tested on MkLinux.
      o New functions for detailed cpu info in Linux, using values from
        /proc/cpuinfo. Tested on MkLinux.
      o 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?).
      o When starting up, now reads pidfile and checks whether process is
        already running, then quits if appropriate (not foolproof yet).
      o 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)
      o Option to compile with Gettext internationalization. German and Dutch
        translations and some French included.
      o Added quiet command-line switch to prevent transmission logging;
        startup, shutdown and errors are still logged.
      o Added verbose command-line switch.
      o Updated to latest FreeBSD init script upclient.sh from:
        <http://www.freebsd.org/cgi/cvsweb.cgi/ports/misc/upclient/files/>.

    - Bugfixes:
      o 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.
      o 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.

    - Optimizations:
      o Darwin / Mac OS X now builds a prebound executable using the -prebind
        compiler flag.
      o Minor variable storage adjustments so upclient uses a few bytes less
        memory.
      o 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).
      o Refactored some daemon code in main().
      o Eliminated redundant code in options.h. (Thanks to Cyrille Lefevre).

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

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

    - Cosmetic changes:
      o 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.
      o 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:
     o FreeBSD 4.6.2
     o IRIX 6.5.16

    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).
  * 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.
  * 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).
      o program now cleans up pidfile when quitting.
      o now detaches from terminal (request new session job control when
        forking with setsid()).
      o 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.28 2002/11/30 02:27:15 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.
