$Id: CHANGES,v 1.7 1997/01/16 23:27:25 meem Exp meem $

CHANGES
=======

1.50 --> 1.51   (02-may-97)
-------------
config: fixed the rlpr macros in aclocal.m4 to cache correctly
all:    fixed some infelicities in options processing
all:    use vsnprintf() if possible, just for extra safety
rlpq:   fixed behavior under --silent to be sensical
rlpq:   don't use read_fd_to_fd()
rlpq:   STDIN_FILENO and STDOUT_FILENO switched
rlpq:   (int *) cast should be (char *)
all:    used field width specifiers for %s's in some "risky" sprintf()'s
all:    use ssize_t, check for it in ./configure

1.43 --> 1.50   (27-feb-97)
-------------
config: fixed makefile to work around a bug in ultrix sh
config: added check for broken syslog()
rlpq:   new command
all:    program infrastructure completely remodeled
rlpr:   become root before issuing socket() call.  this is required for
        svr4 based machines to allow bind()'s to privileged ports
rlpr:   new --no-bind command which allows more than 11 jobs to be sent 
        per 2MSL when the lpd permits connections from ports outside of
        the RFC spec
rlpr:   improved debugging information
rlpr:   only pass along width information when filetype is one of the 
        ones specified in the RFC

1.42 --> 1.43   (16-jan-97)
-------------
many:   updated copyright, brace style
rlpr:   fixed some small bugs (mostly portability issues)
rlpr:   added support for HP/UX setresuid() and other HP/UX fixes...
rlprd:  fixed a pernicious bug related to sigaction()

1.41 --> 1.42   (28-dec-96)
-------------
rlpr:   memset() bug in init_sockaddr()

1.40 --> 1.41   (20-dec-96)
-------------
rlpr:   'L' command (to send username to remote lpd) is now done after
        'C' and 'J' commands, as specified in RFC
rlpr:   several `berkeley' compatibilities
rlpr:   a few small bugfixes

1.35 --> 1.40   (18-nov-96)
-------------
all:    now compiles/runs under BSDI
rlpr:   added --debug
rlprd:  added --debug
rlpr:   added RLPR_PROXYHOST as synonym for RLPR_PROXY for symmetry
rlpr:   added checks against malicious user arguments.  these would
        never affect rlpr, but might affect a poorly coded lpd
all:    added a general messaging facility rlpr_msg().  removed
        rlpr_fatal() and rlpr_warn() since they are special cases
        of the rlpr_msg() framework.
all:    cleaned/refactored a lot of code. the design is *much*
        cleaner now.
config: added check to find out if MAXHOSTNAMELEN is in <netdb.h>

1.30 --> 1.35   (02-nov-96)
-------------
all:    rlpr and rlprd now use either POSIX saved-setuid or BSD
        setreuid() to bracket setuid code.  now, rlpr and rlprd
        run as root only for the operations that require it, and
        otherwise run as the real user.  this tightens rlpr
        and rlprd up against chance of buffer overflows and all
        that grizzly stuff
all:    now compiles/runs on SINIX/Z. thanks to robert sailer for this.
rlpr:   when invoked as "lpr", is quiet by default. added --verbose
        switch which restores the traditional rlpr verbosity.
rlpr:   cleaned some code. rlprd is still too ratty for my tastes

1.21 --> 1.30   (11-oct-96)
-------------
all:    gnu autoconf support.  it's only been tested under linux 2.0.22 and
        solaris 2.4.  additionally, there are a few checks which don't do
        anything yet.. however, some of the more obnoxious unix
        incompatibilities have been solved.. also, installation should
        be easier now. see INSTALL for details.
all:    gnu getopt_long() supported on all architectures, not just linux
rlprd:  now supprts commandline options
rlprd:  reimplemented signal handling using sigaction()
rlprd:  fixed a bug in forgetting in initialize the third parameter
        to accept. this was making the gethostbyaddr() call fail
        under new libc's (>= 5.4.7)
rlprd:  daemon can now run on an arbitrary port
rlprd:  can now run non-daemon mode
rlprd:  fixed a bug that would make rlprd fail on machines with multiple
        network interfaces.
rlpr:   added switches for specifying an alternate port and alternate
        temporary directory.
rlpr:   fixed problems with short reads and writes.
rlpr:   added support for a system-wide rlprrc

1.20 --> 1.21   (04-aug-96)
-------------
rlpr:   largely compatibility fixes for compiling under sparc
        most importantly, getopt_long is disabled when compiling
        under a machine which "doesn't have it" but right now
        that means either __linux__ or not. (how silly)
rlpr:   when i use autoconf (real soon now!) this will be smooth


1.13 --> 1.20   (29-jul-96)
-------------
rlpr:   added support for long options, thank god!
rlpr:   fixed many memory leaks (ack! how embarrassing!)
rlpr:   fixed malloc() to always check for NULL
rlpr:   added support for TMPDIR like gnu utils
rlpr:   changed assorted constants to symbolic values
rlpr:   common error messages much more intuitive :-)
rlpr:   updated manpage to reflect changes
       
1.12 --> 1.13   (30-jun-96)
-------------

rlprd: now reports an error if user tries to start it without euid
       or uid of root. before it would silently fail
rlprd: signal handling has been slightly improved.. if someone can
       tell me how to implement reliable signals under linux (do
       i need to use sigaction()?) i'd be happy to do it. actually,
       i'm hoping to re-implement the whole puppy using pthreads.
       ha! if i only had so much free time :-)
rlpr:  fixed bug(s) in filesz(). thanks to weule@uni-duesseldorf.de
       added <getopt.h> so it will compile under linux 2.0.0
misc:  fixed formatting and spelling mistakes in the man pages. some
       other assorted stuff i've forgotten :-)
