###########################################################################
# LPRng - An Extended Print Spooler System
#
# Copyright 1988-1995 Patrick Powell, San Diego State University
#     papowell@sdsu.edu
# See LICENSE for conditions of use.
#
###########################################################################
# MODULE: Changes
# PURPOSE: Record Changes
# $Id: CHANGES,v 3.13 1996/08/25 22:20:05 papowell Exp papowell $
########################################################################## 

Release LPRng 2-3-12
    waitchild.c does not enable the SIGCHLD signal.  This was causing
      problems when a child would die during a read/write operation and
      interrupt the read/write operation.
    checkpc - now checks to see if the LPD lockfile directory exists,
      and creates it if necessary.
    getopt.c - strdup() changed.
      (Reported by  Brad Greer <brad@cac.washington.edu>)
    src/Makefile.in - LOCK_DEV_CFLAGS -> LOCK_DEVS_CFLAGS
      (Reported by Klaus Guntermann
        <guntermann@iti.informatik.th-darmstadt.de>)
    LPD, lpr -p and :pr: filtering.  Documentation claims that LPD will
      filter 'p' format jobs through :pr: filter and :if: filter.  It was
      not doing it,  and now does.  However, when using a bounce queue,
      it will not filter :pr: formats unless a :pf: filter is present.
      (Reported by Scott Sutherland <scott@math.sunysb.edu>)
    :translate_format: printcap variable, and functionality added for
      bounce queues.  A bounce queue can now also modify the job file format
      using the :translate_format: printcap entry. For example,
      :translate_format=mfpl: would change m to f and p to l format
      job files.

Release LPRng 2-3-11
    MAJOR ADDITIONAL FUNCTIONALITY:
    Logger: filter error output is now written to the logger as well as
      status information.
    
    lpr -p and LPD: the pr filter support was not updated.  It now invokes the
      traditional 'pr' program correctly.
      (Reported by: K.D. Meyer" <meyer@uni-trier.de)
    LPD/lpd_control.c - reporting duplicate status line information.
      (Carl Hilton <chilton@dns2.sac.usace.army.mil>)
    LPR: exits with a nonzero error when 0 length job or invalid queue.
      (Paul Haldane)
    lpbanner.1 and lpraccnt.1 man pages created.
      (Carl Hilton <chilton@dns2.sac.usace.army.mil>)
    lpq -Pall - sendstatus() returned wrong status.

Release LPRng 2-3-10
    MAJOR ADDITIONAL FUNCTIONALITY:
    routing to multiple destinations, multiple copies, via a bounce queue
        A bounce queue can now route jobs to multiple destinations
        and/or make multiple copies of a job.  This action is controlled
        by the printcap/configuration variable router=filter.
        See README.routing and the LPD.8 manual page for details.

    Identifiers:
        The 'A' control file line is now used to store a 'unique' job
            identifier.  This follows a job through the system, and is
            used to identify a job.  It can also be used in LPRM and
            LPC messages.
        The :use_identifier: printcap and configuration variable controls
        the addition of this information to the control file.
    Job ID Wildcards:
        LPRM, LPC now take wildcard entries as well use job numbers and
        user IDs for jobs. (Updated LPRM, LPC man pages).
    Logger:
        Added code to record the actions of jobs passing through the
        system.  SetStatus messages now sent to a logger process as
        well as recorded in a status file. Added:
        printcap/configuration:
            logger_destination = host[%port][,(TCP|UDP)]
                host%port is destination host%port combination.
        configuration:
            default_logger_port = 560  - default port for logging
            default_logger_protocol = UPD  - default protocol for logging

    lpd_rcvjob.c - error message has a missing '%s' entry.
        (Brad Greer <brad@cac.washington.edu>)
    Link_read() in link_support.c - minor error - zero length read
      reported as error, not EOF condition.
    lpd: multiple copies (lpr -K option) were causing malformed job control
      files to be generated by LPD when it checked them.  Off by one problem
      with pointers fixed.
      (Reported by: Andrew Leahy <A.Leahy@st.nepean.uws.edu.au>,
        details of problem by Dirk Wrocklage <dirkw@uni-paderborn.de>)
    cleanup() - exited with erroneous error code when NOT sent a signal.
      (Reported by Ed Santiago <esm@lanl.gov>
        and Sven Rudolph <sr1@os.inf.tu-dresden.de>)
    HOST and REMOTEHOST permissions now can be netgroups, i.e. -
      HOST=@netgroup or REMOTEHOST=@netgroup will check to see
      if a host in in the netgroup.
    permissions.c - Mods by Geoff Ballinger <geoff@chemeng.ed.ac.uk>
      These modifications fixed a problem with checking for user
      permissions,  and now the permissions 'user' or 'remoteuser'
      is checked according to documentation.
    REMOTEUSER, REMOTEGROUP added to permissions checking.  Permissions
      checking now done in much more rigorous way.
    LPD/lpd_rcvjob.c - fixed up hold file removal on bad job submission.
    Setup_waitchild() - moved to Initialize(), done for all programs


Release LPRng 2-3-9
    killchild.c - minor bug on cleanup.  If cleanup called with 0
      argument, never killed off children.  Under very rare circumstances,
      this resulted in a OF filter process hanging up,  and never exiting.
    LPR: the -s option is now silently ignored.
      (Jon E. Ferguson" <jon@media.mit.edu>)
    ULTRIX has a sys/syslog.h and a syslog.h file, need to use sys/syslog.h
      (Per Foreby <perf@efd.lth.se>)
    Accounting Filters: the :as: (accounting start) filter returning JREMOVE
      did not cause the job to be removed. Fixed.
      (Reported by Panos Dimakopoulos <dimakop@cti.gr>)

Release LPRng 2-3-8
    lpr_makejob.c - not handling -w and -0 (font options) correctly.
      (Reported by Jens Thiel <thielj@athene.informatik.uni-bonn.de>)
    Comments in sendjob.c updated to reflect reality.
      (George Lindholm <lindholm@ucs.ubc.ca>)

Release LPRng 2-3-7
    lpd.conf default file - updated example configuration values
    Documentation miswordings, downright errors, and missing information
      corrections and comments added.
      (Bertrand Decouty-INRIA Rennes-France <Bertrand.Decouty@irisa.fr>)
    struct fd_set declarations changed to fd_set to make it compatible
      with POSIX.
      (Reported by Alan Shutko <ats@shep1.wustl.edu>)
    use_shorthost flag not working - fixed.
      (Bertrand Decouty-INRIA Rennes-France <Bertrand.Decouty@irisa.fr>)
    setup_filter.c - %h in an option string is now expanded to the short
      form of the host name.
    ROOT perms for filters - added the ROOT_PERMS_TO_FILTER_SECURITY_LOOPHOLE
      definition to the src/Makefile, modified common/setup_filter.c.
      Added comments to man/lpd.8. Comments by Patrick Powell, mods by
      (Jens Thiel <thielj@uran.informatik.uni-bonn.de>)

Release LPRng 2-3-6
    LPR/lpd_rcvjob.c - snprint() replaced by plp_snprintf()
    src/common/defaults.c - erroneous LD_LIBRARY_PATH= and PATH= values in
      configuration variables. 
      (Reported by Jens Thiel <thielj@athene.informatik.uni-bonn.de>)

 LPRng 2-3-5
    printcap.c - when lpd-perms array gets longer than 40kB or so,
      lpd crashes with an segmentation fault when it's getting started.
      fixed by: Dirk Wrocklage <dirkw@uni-paderborn.de>
    permissions.c, globmatch.c - updated error reporting, and added
      check for user's default group when checking GROUP permissions. 
      (Stefan Monnier" <stefan.monnier@lia.di.epfl.ch> and
      Ron Roskens <roskens@cs.umn.edu>) Also, changed strcmp to strcasecmp
      to make comparisons case insensitive.
    LPD/lpd_control.c - modified error message to better indicate failure.

    long job numbers - lpd_rcvjobs.c, cleantext.c, lpr_makejob.c, printcap.c
      added the capability to have long (6 digit) job numbers.  This is done
      by reformatting the job control file and the job file names.
      printcap :longnumber: and configuration longnumber=yes enables this.
      Note that :bk: (Backwards compatibility) overrides long numbers.
      If a queue is marked :bk: then it will attempt to shorten long numbers
      to produce a short number file.  This can be used with a bounce queue
      to produce files compatible with the older vintage systems.
      As a side effect, tightened up format checking of unlink entries,
      and other issues reported by the following folks.
      (Lennart.Sorth@ecmwf.int, Desmond Macauley <desmondm@eng.dowjones.com>)

    lprm - fixed the removal algorithm so that multiple tags select multiple
      jobs.  i.e. - lprm 1 2 3 removes jobs with numbers 1, 2, and 3.
      If you do lprm user, all jobs with the tag 'user' are deleted.
      This allows much easier job purging,  which is usually why you
      are using lprm...

    use_info_cache flag - printcap.c(Free_pc()) routine brutally wipes
      out all data now.  This will either force the reread or crash the
      process.
      (reported by Dirk Wrocklage <dirkw@uni-paderborn.de>)

    configuration variables: added default_format, default_priority
      to configuration as well as printcap variables. lpd.conf.5 and
      printcap.5 man pages have been updated.  Apparently they were never
      documented in man pages.
      (reported by Stefan Monnier <stefan.monnier@lia.di.epfl.ch>)

    common/sendjob.c:  error reporting for DATAFILE was incorrect.
      (reported Brad Greer <brad@cac.washington.edu>)

    :send_data_first: printcap and configuration variable added.
      causes data files to be sent to the destination first, before
      control files.  (Supports horrible spoolers that violates RFC1179)
      (suggested Brad Greer <brad@cac.washington.edu>)

    :connect_grace#nn: printcap and configuration variable added.
      Klaus Steingerger reports that some printers require a grace
      period between connection attempts.  This variable provides
      a suitable delay.  Also, the Clear_timeout() routine now
      restores the ORIGINAL signal handler.  This means you can
      only have one timeout pending at a time - which makes sense
      in this implementation.
      (reported and mods by Klaus Steinberger
       <Klaus.Steinberger@Physik.Uni-Muenchen.DE>)

    globmatch.c - a bug with checking for upper and lower case chars.
      (reported by Per Foreby <perf@efd.lth.se>)

Release LPRng 2-3-4
    typos in the documentation - fixed

Release LPRng 2-3-3
    getcfng.c - "use_info_cache" entry out of order.
     (Alan F Lundin <aflundi@sandia.gov>)

Release LPRng 2-3-3
    LPR and :qq: printcap entry,  use_queuename configuration information
    Added 'use_queuename = no' to the common/default.c file - the
    use_queuename will force control files to have the 'Qqueuename' entry
    placed into them.  The :bk: (backwards compatible) entry can be used
    to override this when sending to non-LPRng systems.  When receiving
    a job and use_queuename is TRUE,  then LPD will add the name of the
    spool queue to the control file.

Release LPRng 2-3-2
    common/defaults.c - removed :xt: from the printcap defaults.
    common/getcnfinfo.c - added "true", "all", "false" keywords for flags.
    common/termclear.c - for LINUX, added include <termios.h>
      (Avery Earle <ae@play.psych.mun.ca>)

Release LPRng 2-3-1
    printcap.5 :xt: entry updated
    bk, qq, and bounce queue filter interaction: printjob.c modified to
        add Queuename information for filters if :qq: option or Q entry
        in job file.

Release LPRng 2-3-0
    Minor rewording on printcap.5 man page.
    common/termclear.c - defined(solaris) changed to defined(SOLARIS)
        (Andrew Richards <physajr@phys.canterbury.ac.nz>)
    common/printcap.c, CHECKPC/checkpc.c - subtle bug when reading
        printcap information from a filter AND the 'oh=host' specified
        AND the host is not the current host.  Fixed.  In addition,
        checkpc will not create queue entries for queues not used/defined
        on the current host.
        (Dirk Wrocklage <dirkw@uni-paderborn.de>)

Release LPRng 2-2-9
    printcap.c - malformatted printcap entries ending with a \
    at the end of the file are now accepted.

Release LPRng 2-2-8
    LPR now uses a reasonable size buffer when copying files.

Release LPRng 2-2-7
    lpq:  back to the previous format!
      lpq -s - does the very short format
      lpq    - prints short form of detailed information
      lpq -llll... - each l doubles status information
    lpq.1 - man page updated.
    printcap, lpd.conf: send_failure_action - added a 'hold'
      keyword that will hold the job on error rather than deleting it.
      updated printcap.5, lpd.conf.5 man pages
    lpd_jobs.c - added checks for filter non-zero status exit.
    configure.in - printf("%s",sys_siglist[0]) added
      (<harlan.stenn@pfcs.com>)

Release LPRng 2-2-7
    lpq:  by default, a very very short format-  pr@host:(status stuff) NN jobs
        lpq -l  -  short, verbose format
        lpq -l -l or lpq -ll - longer format
    lprm: was not removing all jobs when 'lprm all' specified.
    lpr.1 man page: priority of jobs is A (highest) to Z (lowest)

Release LPRng 2-2-6
    lpr: -K option did not have ':' in getopt options string.
      (Klaus Steinberger <Klaus.Steinberger@Physik.Uni-Muenchen.DE>)
    lpr: -# has been readded, in spite of my better judgement, to be
        compatible with antique LPR systems.
    lpd: 'sending job to...' message error
      (Dwaine C. Gonyier <virtual@panthra.catt.ncsu.edu>)
    printcap.c, getcnfginfo.c - ordering of parameters not alphabetical.
      (Ron Roskens <roskens@cs.umn.edu>)
    lpr, configuration - check_for_nonprintable code got mushed,  fixed
      now; the :xt: (check text) printcap flag added as well. man page fixed.
      (Ole Benner <olb@kom.auc.dk>)
    configure.in- library check fixed, added additional library check
      (Harlan.Stenn@pfcs.com)
    lpc - the 'lpc lpd xx' operation set the current printer to xx. Fixed.
      (Jos Backus <jos@oce.nl>)

Release LPRng 2-2-5
    ** changed the bqfilter flag to bq=destination_queue
        This now forces all input to be passed through the filter.
        Changes in the bq filter information as well.
    Bounce_filter: removes temporary bounce queue file on exit unless
        debugging is high level.  bounce queue file name is bfAnnnHost,
        i.e.- has same format as a job file.  This makes job related
        processing easier to debug.
    lpc - Updated queue status display
      lpc status now shows autohold status
      lpc noautohold now restarts printer on 'NOAUTOHOLD' command
    lprm with no options removes first removable job in queue
      This is compatible with BSD lprm functionality
    configure - GCC version checks moved to start of configuration
        added checks for sys/utsname.h, utsname.h
    common/gethostinfo.c - uses sys/utsname.h
        configure.in has check added for utsname.h
    lpd - printjob now checks for exit status of filters - should
        terminate now if filter has bad exit status.
        (Note: this may not be bombproof in all situations.)
    printcap and configuration - connect_retry was defined as connect_try
        documentation fixed as well.
    CHECKPC- checkpc -r -A nD now removes all job related files older than
          n Days.  This can be put into crontab and run periodically.
    printcap :ah: (autohold) now operational.  Note that LPC will
        override printcap default.  lpc status now indicates if autohold
        is on.

Release LPRng 2-2-4
    :bk: (backwards compatible) flag now causes removal of non-BSD compatible
        control file entries as well as modifying the order.
    :qq: (Queuename in control file) flag is now  overridden by :bk: flag.
        This will now generate Berkeley compatible job files.
    lpr - improved 'connnection failed' message format.
    accounting_server and accounting_check added for accounting.
        printcap.5, README.accounting,  and other documentation updated.

Release LPRng 2-2-3
    Once more the portability/bugfix Gods need yet another sacrifice.
        BSDI V2.1 setreuid() returns erroneous error codes - setuid.c
        fixed yet again...  I suspect other BSD derivatives to have same
        problem.  Sigh...
    cleanup() now unblocks signals before exiting.
    Print_open() - better status messages on open failure.

Release LPRng 2-2-2
    TESTSUPPORT: removed lpf generation
    Perms_check(): missing ntohl(HostIP), needed for host order of addresses.
    Lock_fd(): - saves errno error codes and returns them correctly
    Prefix_line in malloclist(): - copy now done in correct order
        fixes print queue bug.
    Accounting Filters:
        1. the filter command is not passed as an argument to the accounting
           filter.  This solves some problems with shell script filters,
           as the last filter command would have the form:
             filter -H... -a|filter |filter
        2. Accounting information now logged at start and end of job.
    GROUP Permissions: permissions.c now checks to see if a specified
        group exists first, using getgrnam(), then tries wildcard
        search next.
    Permissions: IP=host/netmask format updated- allow /n to be n bit mask
        i.e. - 130.191.163.12/16 -> 130.191.163.12/255.255.0.0

Release LPRng 2-2-1
    LPF filter: added source code to the LPRng main distribution.
        This provides a passthrough filter for most applications.
    README.printcap: updated to reflect use of lpf filter and
        banner printing
    LPRM/LPD: lpd restarts printing if the active job is removed.
    LPQ: more robust handling of bad printcap entries
    LPD: attempt to solve problems of filters which print to
        serial devices hanging because the device has pending
        output, has been sent a ^Q to stop output,  and has not
        received a ^S to restart.  Uses tcflush() to flush serial devices.
    LPR: added a 'use_shorthost' configuration and printcap variable
        to force the use of short host names for print job control and data
        files.  The code was present in LPR,  but not enabled.
        Update lpd.conf.5 and printcap.5 man pages.
    Debugging Flags: added keyword and flag capability.  For example:
        -Dthis,that@  can be used to set the 'this' flag and clear the
        that flag.  see common/parsedebug.c for details.
    NGPRINTER environment variable added. Used to override PRINTER environment
        variable.  Allows one format for PLP/LPR/Solaris, one for LPRng.
        (marty leisner@sdsp.mc.xerox.com)
    LPC: command of form 'status printer@host' was not formatted correctly.
        (Jarrod Douglas <jarrod@cs.curtin.edu.au>)
    man/printcat.5 - added a functional listing as well as alphabetical.
        (Sherwood Botsford <sherwood@space.ualberta.ca>)
    LPD, LPQ: added termination error messages to status output.
        Details for job failure now available.
    printcap :qq: and lpr -Q option now fully operational.
         lpr -Q or :qq: printcap field sets Qqueuename in job file;
         lpd bounce queue will add Qqueuename line to the control file.

Release LPRng 2-2-0
    Updated README files.
        README.1st     - overview
        README.install - much more complete
        README.lpd.conf - explains lpd.conf
        README.lpd.perms - lpd permissions structure listed
    man/lpr.1 - missing -k information added.
    man/lprm.1 - fixed typos
    man/lpd.perms.5 - lpd.conf documented
    DOC/Tutorial - added additional information
    DOC/Install - extended to include more testing and installation
        details.
    strdup() changed to plp_strdup() to avoid problems with C library.
    configure.in - check for sys_siglist[] improved.
    src/commmon/decodestatus.c - fixed problem with Solaris 2.5
        and sys_siglist[]
    Makefile - added default target to install default lpd.conf and
        lpd.perms files;  prototype files added as well.
    man/lpd.conf.5 man page added
    src/common/permission.c: added a SERVER key, to allow restriction
        to users on the server.
    checkpc - truncation now done on log, accounting, and status files.
    LP_SIMULATION - SVR4 simulation with lp.sh and lpstat.pl scripts

Release LPRng 2-1-3
    waitchild.c - race condition with malloc() in the SIGCHLD handler
      would result in rare, very very rare problems.  Data structures
      are now pre-allocated.
    LPD/lpd_jobs.c - WIFSTOPPED and WIFSIGNAL checks done improperly.
      Shows up in OSF1 based systems.  The test is now done correctly.
    AIX portability - added sys/select.h to include list
    LPQ status display modified to be consistent-
      Filter status:  -> Filter_status:
      Now all the comment and information lines have a : at the end
      of the first field.  This makes parsing by perl/awk, etc. simple
      Note that the Rank Owner ... line still does not have a colon
    joost@cadlab.de - minor fixes for Apollo DN4500 and portability
      TESTSUPPORT/Makefile.in, as well as minor fixes in portable.h


Release LPRng 2-1-2
    STATVFS typeo corrected in in configure.in, portable.h, freespace.c 
      (curt@ltpmail.gsfc.nasa.gov (Curt Tilmes))
    Missing VARARGS declaration for setstatus() in lp.h
      (Marc Baudoin <Marc.Baudoin@hsc.fr.net>)
    Makefile.in (in general) - fixed realclean mostlyclean targets
      (Paul Eggert <eggert@twinsun.com>)
    setproctitle() - check made in configure, and if not present
      the proctitle.c code is used. (Marc Baudoin <Marc.Baudoin@hsc.fr.net>)
    Makefiles - realclean and distclean targets did not remove Makefile
        (Paul Eggert <eggert@twinsun.com>)
    Missing read permissions on various files
        (Paul Eggert <eggert@twinsun.com>)
    configure.in (CFLAGS): Use a more accurate test to decide
      whether we are using GCC version 2.4.5 or earlier.  The old
      test didn't handle GCC snapshots correctly.
      (Paul Eggert <eggert@twinsun.com>)


Release LPRng 2-1-1
    CHECKPC- added test for the printcap 'ps' - printer status file
      - fixed up test for printer device, now ignores remote and filters
      - added 'checkpc -s' option to not create/check printer status file
    common/sendjob.c - Bounce Queue Filters are only invoked by the server;
        added a check for Interactive and printcap :bqfilter: flag BOTH
        set before invoking filter.  This prevents clients from invoking
        filters.

Release LPRng 2-1-0
    Added 'rs' (time between spool queue rescans) printcap entry
    Added 'oh' (option for host) printcap entry
    Added check for NULL printcap pointers.  Printcap files entirely
        consisting of comments and empty lines are now handled
        correctly.
    Added ntohl() and htonl() calls to fix IP addresses for permissions
        checking.  This showed up on X86 systems.

Release LPRng 2-0-9
    Patch to make sigsetjmp() work correctly on Solaris.  Sigh...

Release LPRng 2-0-8
    Solaris 2.5 requires sigsetjmp() and siglongjmp() for alarms and
        timeouts to work reliably.  Note that GCC now does not put out
        warnings about 'variables may not be restored after longjmp'
        C'est la vie, c`est le guerre...
    Documented getting permission database with a filters, allowing
        dynamic checking of a database.


Release LPRng 2-0-7
    Fixed up the setuid() code yet again - portablility issues on
        BSDI and FreeBSD - need to do a setuid() operation first.

Release LPRng 2-0-6
    Removed default non-blocking open() operations;
        added printcap 'nb' (Nonblocking_open) variable to allow
        nonblocking open for specific devices
    Updated man pages and DOC files to reflect new open() capabilities

Release LPRng 2-0-5
    getuserinfo() was not using the original RUID value.
    Fixed device locking again,  this time to do a fallback to
        fcntl() based locking if TIOCEXCL is not functioning
    Removed MFLAGS from Makefiles, also put in cleaner test for GNU Make
    The sleep() implementation on linux is defective; replaced
        by a plp_sleep() using select().

Release LPRng 2-0-4
    src/cleantext.c - Check_format() was too strict in checking
        hostnames - now allow '-' as well as . and _ in name.
    configure.in - SGI IRIX configuration needs SVR4 definition forced.
    added more specifics for solaris

Release LPRng 2-0-3
    - mostly portability fixes
    man/Makefile.in - removed $(FILES) targets
        did updates in a 'sane' manner
    Fixed missing declarations of functions for fussy compilers.
    Fixed CHECKPC/checkpc_port.c - SunOS4.1.4 has two versions of
        stty - /bin/stty and /usr/5bin/stty
        forced use of /bin/stty
    configure.in - added gcc version check,  fixed up CFLAGS
    HPUX portability kludges -
        1. O_NDELAY and O_NONBLOCK interact - removed one of them
        2. Need to use fcntl() after open to fix the non-blocking
            read operation.
    device locking now works on Solaris 5.4
    checkpc- added a couple of sanity check functions for internal
        tables - Check_pc_list() and Check_config_list()
        discovered a couple of entries in wrong order (bp was one)
        that prevented use of banner printing.

Release LPRng 2-0-2
    Modified configure to use config.guess; fixed config.guess as well.
        - config.guess did not recognized BSDI systems,  and exited
            with an error.
    Fixed configure.in to force library order if necessary.
    Ripped out several SVR4 dependencies; src/killchild.c
    Filters + Bounce Queues - added filtering capability
     printcap variables - bqfilter (flag)
     If a bounce queue (one that sends files to a remote printer/host)
     has filters speicified, and the :pqfilter: printcap flag is set,
     the data files will be passed through a filter,  if there is a
     filter for that format.  Updated printcap.5, lpd.8 documentation,
     as well as DOC/Intro.

Release LPRng 2-0-1
    configure.in -
        WARNING ** gcc version 2.4.5 and below
        The -O option produces erroneous code several places.
        configure.in has been modified to remove the -O option.
    configure.in - added explicit check for elf.h - now defines
        SVR4 if the file is present (see autoconf documentation
        for test).  Compatibilty check.  Updated CFLAGS with define
        for HPUX and uses the @CFLAGS@ edit in Makefiles.  This
        solves a problem when configure sets CFLAGS and the
        default GNU Make .o.c rule set needs to be used.
    LPRM: If a user has LPC CONTROL permissions, he can now remove
        jobs from a queue.
    Makefile.in, Makefile - Added various GNU compatible targets
        such as clean, dist, reallyclean, etc.
    Fixed the man/Makefile to better update the man pages when
        installing them.
    checkpc -T line : fixed up the STTY reporting to be more robust
        should work with SVR4 better.
    LPR: added locale initialization; printable checks now use
        8 bit characters if the locale has been enabled.
    O_NONBLOCK|O_NBLOCK - these both must be set on a SVR4 system to
        do a non-blocking open.  This might be considered a documentation
        feature in some circles.
    FreeBSD defines: various files have had #ifdefs for FreeBSD added.
    Accounting: modified the default accounting string to add the
        control file name;  allowed the accounting filter to exit
        with error status and write an error message.

Release LPRng 2-0-0
    Baseline Release Version

Release LPRng 1-2-6
    PERMISSIONS: permissions checking was defective- correct values now
     used.
    LPC: usage message updated
    Error reporting: connection permission errors reported to connecting
     system now.
    LPR: now reports server error msgs to user on STDERR.

Release LPRng 1-2-5
    PERMISSIONS: lpc operations split, 'C' are control, 'S' are status
     this allows 'lpc status' command to be used by non-privileged users
     Updated documentation to reflect this change as well.
    Updated lpq, lpc, lprm -V option to be less verbose
     by default;  -V -V will show copyright information.
     ("Marty Leisner" <leisner@sdsp.mc.xerox.com>)
    Control file format: allowed first 'N' line to appear before
     data file information, and stuck in middle of control file.
     This makes it compatible with other LPR implementations.  Sigh.
    If a filter is not available,  this is logged in status and the
     job is discarded.  This prevents a job with bad format information
     locking up the printer queue.
    Filter program lookup in printcap entry has been fixed to be a little
     more effective.
    Fixed checkpc and setproctitle() to work with FreeBSD
     (Richard Letts  R.J.Letts@salford.ac.uk University of Salford)

Release LPRng 1-2-4
    Harlan Stenn <Harlan.Stenn@pfcs.com>
    termclear.c - there is an interesting problem with termcap.h, curses.h,
      terminfo.h.  On some systems you do not want to include curses.h,
      but not terminfo.h and termcap.h.  I recommend putting guards in the
      terminfo.h include file so you can include it multiple times without
      redefinition problems.
    curt@ltpmail.gsfc.nasa.gov (Curt Tilmes)
      - removed O_NDELAY from various open statements
    Makefile.in - removed ${SRC}/src, etc. to allow compilation
      in separate directories.

Release LPRng 1-2-3
    Fixed lprm -a flag;  documentation error as well
    common/jobcontrol.c - erroneous error field update
    miscellaneous errors reported by users.
    SVR4 - added sys/systeminfo.h, sysinfo() call replace gethostinfo()
    printcap - added 'qq' (save queue name in job file)

Release LPRng 1-2-2
    This sounds ridiculous,  but there is yet ANOTHER problem with
    implementing portable file locking.  It turns out that some systems
    allow file locking only if the files are opened R/W, no APPEND.
    This is only a problem in pr_support.c;  the permutations and
    combinations of files, devices, etc., are too much to deal with
    algorithmically.  An new printcap flag 'lk' (lock LP device) is
    introduced to handle this.  By default, no file or device locking
    is done.

Release LPRng 1-2-1
    Martin Forssen: maf@dtek.chalmers.se or maf@math.chalmers.se
     - fixed an erroneous test in checkremote.c - missing data
     initialization in LPD/lpd_jobs.c, LPD/lpd_status.c
     - common/getqueue.c off by one error - LPD/lpd_remove.c - cfpp
     uninitialized in Get_queue_remove()
    hagberg@mail.med.cornell.edu (Eric Hagberg) A/UX portability
     fixes in portable.h Fixed lpr, lprm MAN pages;  fixed usage
    messages.  Added CONTROL permission checking for LPRM operation;
    i.e. - if you have CONTROL permission you also can remove files.

Release LPRng 1-2-0
    Documentation - DOC/Intro and DOC/Install 
    Filters: CTI-ifhp-1.1.1 lp-pipe-1.0.0  lp-support-1.0.0 psfilter-1.0.2
    Fixed a minor bug in LPD/lpd.c - geteuid() missing

   
Release LPRng 1-1-2

    Documentation (Introduction, and Installation) added
    psfilter-1.0.1 added to FILTERS
    Added test for signal.h to configure.in.
    reported by Martin Forssen <maf@math.chalmers.se>
      fixed missing bounds check in common/printcap.c,  put install-sh in
      directories needed (autoconf does not fix up $(INSTALL) correctly)
      lookup loop for remote hosts in common/checkremote.c
      Link_listened(void) missing in include/lp.h
    
Release LPRng 1-1-1

    Added lp,lpsched, lp-pipes support
    Fixed a bug in the job renumbering code in lpd_rcvjob.c; always started
    with 0, instead of next job in sequence.
    Fixed a bug in lpd_rcvjob.c, additional 0 ACKS being sent.
    Fixed a bug with the filter options;  added $0, $-, $'
    Fixed the default filter parameter list - accounting file at end

Release LPRng 1-1-0

    Cleaned up all sorts of minor problems with duplicate variables
        being declared in two places.
    Hopefully cleaned up the problems with Errormsg() not getting
     sys_nerr; sigh.
    Fixed accounting. Again. Sigh.
    Added (fixed) support for host%port
    Added install/test documentation.

    Added even more portability tests to checkpc. - device locking,
        stty, file locking.

Release LPRng 1Alpha9

    Accounting has been added.

    Fixed up a very very very rare problem with file locking by
    redoing some tests.

    Added the checkpc -T serial_line option 
    This performs a whole series of portability tests, all of which
    need to pass.

    Include file problems strick again: fixed up the right set.

Release LPRng 1Alpha8

    Sun Aug  6 11:07:51 PDT 1995 Patrick Powell

    Renamed files with pathnames greater than 14 chars to shorter ones;
    Antique file systems strike again.

    Added 'form' and 'hold queue' capability; modified the control and
    job files; Renamed the release name to be consistent with GNU standards.
    Fixed problem with compatibility between SUN and other systems.
    Added LPR -Q flag, LPR -k flag to make it work.

    Sun Jul 30 09:09:49 PDT 1995 Patrick Powell

    Discovered some problems with the job printing code in LPD/lpd_jobs.c,
    re-editted it and put in some stronger checks.

    Modified the spool control file format slightly.
    This did not work as well as I thought it would in the overall design;
    now the spool control file can have any number of different types
    of entries for future expansion, i.e.
    printing_disabled   1
    redirect            printer@host

    Several rather silly coding errors in various places that turned up
    when a code checkout program was run: if/then not being executed,
    etc. etc.

    Fixed up the configure.in file to use the old dnl, socket, etc. libraries.

    man/Makefile and src/Makefile modified to use INCLUDE=.. so that configure
    can be run from another directory.  This is very very strange autoconf 
    dependency,  but who cares, as long as it works.

    Fixed up a whole minor mess of writes and timeout interactions.  Who would
    have guessed at this interaction?  Created a couple of utility functions
    (Write_fd_str(), Write_fd_len()),  and timeout (Set_timeout(), Clear_timeout())
    routines.  These assume that writes will be done with timeouts;  all places
    where writes are done have been surrounded by Set_timeout, Clear_timeout.

Release LPRng 1Alpha7
Mon Jul 24 09:29:15 PDT 1995 Patrick Powell

    Changed the Makefile 'TARGET' name to avoid conflicts with other
    Makefiles... sigh...

    In link_support.c/Link_send(),  the original code was using
    several writes to send a line;  this has been modified to use
    a single write where possible.  Apparently some implementations
    of LPD code expect the command lines to be sent as a single
    TCP write operation, and do not look for the \n terminator.

    Removed the 'lorder/tsort' from Makefile, and hardcoded the
    library file order.  This provides a simple form of portability,
    but will require updates to the Makefile if a new library file
    is added.

    Added better tests for sys_errlist and sys_siglist definitions.

    Moved all of the configuration information to the root level;
    this fixes a bug with the autoconf code that cannot handle
    more than one level of directory structure.  You can now
    compile the LPRng software in another directory by using:
    cd LPRng.<version>; SRC=`pwd`; \
    cp configure $DEST; cd $DEST; configure --srcdir=$SRC; \
    make all

    Modified the top level Makefile to use the GNU Make -C directory
    capability.

    Fixed Send_job() to make it more robust in the face of protocol
    errors.  The numbers of times a job is retried is set by the
    Connection_retry value. 

    Modified the LPC status reporting to make it clearer.
    Removed a redundant error message.

Release LPRng 1Alpha6
Thu Jul 20 19:23:03 PDT 1995 Patrick Powell

    Reorganized the auto configuration code so that it is at the top
    level of the distribution.  Added top level MAKEFILE with directory
    recursion.

    Separated out default printcap and configuration initialization,
    put them in src/default.c

    Fixed up some minor 'lint' level errors.

    Update man pages.  Fix up installation so that VERSION information
      is put in the MAN page source.
    Editted MAN pages heavily in light of comments from people.

    Clean up some code in printcap.h, printcap.c, lp_config.h, getconfig.c

    Fixed a missing check for null string with STRCMP in src/getqueue.c.
    Considered using safestrcmp() for this reason; checked most places;
    safe or appear to be safe.

    Modified the format for LPQ status information,  added more detail
    about the printer status.

    Added -Pprinter option to LPD to simply start and run a spool queue
    server.  This allows debugging of filters much easier.

    Added bk-of-filter-options and bk-filter-options to provide compatibility
    with old style filters.

    Fixed up a lot of minor portability issues with Solaris2.4, using the
    SUN Soft C compiler.  Fixed fumble in gethostinfo.c - will die if
    it cannot find the local host name; this is very bad and should be
    immediately fatal instead of dying later.

    Fixup the the TESTSUPPORT/Makefile to be a little more intelligent.
    Also, put in guards to make sure that you have GNU Make.  This appears
    to be essential for sanity reasons alone.

Release LPRng 1Alpha5
Mon Jul 17 10:57:49 PDT 1995 Patrick Powell

    ********* BSDI *************
    Literally hundreds of questionable items were reviewed, fixed
    or modified.  The 'snprintf' function was renamed to 'plp_snprintf'
    in order to avoid conflict with the BSDI/GCC snprintf functions.
    Fixed up some questionable uses of snprintf, changed to sprintf.
    Discovered an incredibly vulgar behaviour in strncat(),  and
    fixed up its uses.  Strncpy will clobber all information in string;
    double checked its uses where possible.

Fri Jul 14 08:22:03 PDT 1995 Patrick Powell
    Fixed up configuration file reading. Was always using default
    values.

Fri Jul 14 08:23:06 PDT 1995 Patrick Powell
    LPD status reporting did not read the printcap 'st' status file.
    Now reads the file and reports information using short form or
    long form as needed.
