###########################################################################
# 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.7 1997/02/02 15:44:39 papowell Exp papowell $
########################################################################## 

Release LPRng 3-1-3

  New Functionality - Kerberos authentication uses encryption
	 Send encrypted and authenticated information by default.
	   (Greateful thanks to: Ken Hornstein <kenh@cmf.nrl.navy.mil>)

  Bug Fixes:
	Fix_str(): missing null pointer check
      (Reported by: Christian Kuehnke" <Christian.Kuehnke@arbi.Informatik.Uni-Oldenburg.DE>)

	

Release LPRng 3-1-2

  New Functionality - glob matches for printer names:

    At USENIX97,  somebody mentioned that they wanted to have a 'wildcard'
    entry that would allow them to 'trap' all sorts of printers, and then
    do formatting based on the printer name.  I puzzled over this, until
    I realized that the combination of the :qq: (put queue name in job)
    and a wildcard match would do exactly what this person wanted.
    The more I thought about it,  more functionality seemed to be
    provided by this - you could match various arcane printer names
    against patterns, etc.

    Now when a job arrives and the LPD server is searching for the queue
    name, the search is done using a glob match.  Note that you
    cannot have a primary printer name with a GLOB character,  but it
    is allowed to have an alias with one. For example:

        pr1|pr*|all printers which start with pr
            :lp=pr1@host
            :qq
        pr2|*|wildcard match
            :lp=pr2@host
            :qq

  New Functionality - munging control files:

    There is now a 'control_filter' option that will cause the control
    file to be passed through a filter.  This takes place only when a job
    is transferred to a remote printer.  It was intended to be used by
    bounce queues whose destination required extremely whacko formats
    for their control files.  See README.bouncequeues for details.

  New Functionality - generating banner pages for remote printers:
	The :generate_banner: printcap option will now generate a banner
    page for remote print jobs and/or when using LPR and :lpr_bounce:
    is set.  The banner is generated by the banner printer specified
	by :bp: or the default banner printer.  If the :hl: (header or
    banner last) flag is set, it will be the last part of the job printed.

  New Functionality - spreading job numbers to avoid collisions:

    Some users have been encountering job number collisions when using the
    routing facility and making multiple copies.  The "spread_jobs" printcap
    and configuration variable now allows you to spread out job numbers
    by the indicated factor.  The job number is based on the process id;
        jobnumber = processid * spread_jobs;
    Under heavy use,  this value should be set to the expected maximum
    number of jobs copies that will be made.

  Fixes and Extensions:
    fixcontrol.c - badly formatted DEBUG message.
        (Reported by: Reinhard Zierke <zierke@informatik.uni-hamburg.de>)
    configure - cray-unicos is now just unicos in the system targets.
	   In addition, HAVE_SYS_SIGLIST botches have been fixed.
	fix_create_dir() segment faulted
		(Reported by: Reinhard Zierke <zierke@informatik.uni-hamburg.de>)
	LINUX has undocumented (and in my opinion broken) gethostbyname()
		and gethostbyaddr() interactions.  The code that does lookup
		now performs extremely picky checks, copies, etc., to avoid
		problems with this.
		(Reported by: just about every LINUX user...)
	Makefile: install was missing a value.
		(Reported by: Doug White <dwhite@gdi.uoregon.edu>)
	:bk: (Backwards compatible) now forces short job names and
		short job numbers as well.
	LPC - lpq command now takes the last printer specified as its default.
		(Suggested by: Jeff Bacon <bacon@twinight.org>)
	IRIX and UNICOS compilation mods.
		(Suggested by: Paul Burry <rpburry@magi.com>)
	Aborted LPR caused 0 length files to be left in spool directory
	Multiple copies and routing interact
		(Andrew Leahy <A.Leahy@st.nepean.uws.edu.au>)
	config.sub now recognizes i686 as a proper machine type.
		(Reported by: Michel Robitaille <robitail@IRO.UMontreal.CA>)

Release LPRng 3-1-1

  New Functionality:

    Support for client to server and server to server authentication. 
    See README.authentication and lpd(8) man page, as well as
    README.pgp_authentication.  Currently, pgp is supported for
    client to server and server to server authentication; Kerberos
    is supported for client to server authentication.

    Printcap entries can contain the following:
       %a  - architecture
       %H  - fully qualified domain name of host
       %h  - shost host name
       %P  - printer (when in printcap entry)
       %R  - remote printer (when in printcap entry)
       %M  - remote host (when in printcap entry)
    This is the same as for the configuration information.  Note
    that these keys are marked by %; keys marked with $ such as $P
    are expanded only when used by filters.  Currently only the
    :sd: (spool directory),  :server_user:,  and :remote_user: (for
    authentication) are expanded.

    Support for lp(1) simulation (Solaris SystemV R4) print facilities
    now built in.  This is done by checking the name that the program
    is invoked with:
      lpr invoked as lp - simulates lp operation 
      lpq invoked as lpstat - simulates lpstat operation 
      lprm invoked as cancel - simulates cancel operation 
    Note that this is not full functionality,  but it will provide
    a usable interface for programs that need lp, lpstat, and clean.

    man pages updated and rewritten to reflect latest changes.

    IPV6 awareness is being planned for.  The permissions checking is
    now done assuming that information returned by gethostbyname()
    and/or gethostbyaddr() may be for IPV6.  Host names checking
    is done not only on the cannonical (main) host name, but also
    for aliases;  the IFIP permissions check has been added to allow
    access to the IP address reported by the accept() system call
    that reported a connection.  See README.lpd.perms for details.

    A new printcap flag, :direct_write: now passes a file descriptor
    to print filters.  This is backwards compatible with the old BSD
    filters,  but you lose the ability to monitor the printing
    process.  In addition,  you are stuck with 'send_timeout'
    seconds for printing a job,  which may not be suitable if a job
    hangs up on a printer.

    Makefiles compatible with the BSD make are now provided;  these
    are generated from the basic Makefiles using a simple conversion
    script.  Of course, the Makefiles were redone in order to make this
    feasible...

    LPR now can do filtering if the :lpr_bounce: flag is set.

  LPR Protocol Extensions:

    REQ_SECURE: an authenticated transfer of job and control information.
     See the details in the README.authenticate and lpd.8 man page.

    REQ_VERBOSE: provides a hideously detailed set of information about
     the print queues and their status.  This is of interest to persons
     who are trying to provide tracking for jobs and other information
     and need more than the status provided by the high level LPQ
     dumps.  The LPQ -v format now will generate this.

  LPQ and Status Generation
     LPQ now prints each queue status once.  In addition,  when getting
     status, LPD makes a valiant effort to avoid forking and creating
     processes.  This makes things much more easy on the system load.

  Source Code Reorganization:
    A major source code reorganization was done in order to support
    configuration management tools in a more effective way.

  System configuration and printcap initialization is now done by
    the values in the lpd.conf file,  which can contain printcap
    flags as well as configuration information.  This allows
    defaults to be set in a much simpler manner.

  Beta Testers:
    Pseudo Anonymous, <pseudo@erehwon.org>
    Bertrand Decouty-INRIA Rennes-France <Bertrand.Decouty@irisa.fr>
    Dirk Nitschke <nitschke@math.uni-hamburg.de>
    Paul Burry <rpburry@magi.com>
    Thierry.Besancon@lps.ens.fr (Thierry BESANCON)

  Fixes and Extensions:
    configure and Makefile support for CRAY (by Paul Burry <rpburry@magi.com>)
    using the lpc class facilities now prevents held class jobs from being
      printed.
      (Reported by: Chao-Wen Young <kiki@eng.dowjones.com>)
    gethostbyname() has a possible problem.  Added checks for
      parameters. 
      (Reported by: Jens Thiel <thielj@uran.informatik.uni-bonn.de>)
    printcap '@' operator did not set clear entries.
      (Reported by: Park Jae-hyon <jhpark@entropy.kaist.ac.kr>)
    filter error code 'JFAIL' now causes job removal.
      (Reported by: Norman R. McBride <N.R.McBride@city.ac.uk)
    SAMEUSER permission check was not working correctly.
      (Reported by: Carsten Benecke <benecke@informatik.uni-hamburg.de>)
    LPD now checks for the number of servers it has active;  Max_servers_active
      configuration variable sets this.  In addition,  uses the getrlimit()
      to determine real value if available.  This should throttle back
      problems when a lot of LPR connections are being made and the server
      proceeds to die or lose jobs.
    getconnection() now tries to open a connection with different
      originating ports.  This solves a problem with some systems that
      did not like LPRng originating connections from the same reserved
      ports.  Users encountering this difficulty might have to use
      a wider port range;  this can be done now by modifying the printcap
      entry for the printer.
    checkpc now has Is_server set to 1, so it should do the full
      server compatibility checks.
    Queuename not being set correctly.
      (Reported by: Thierry.Besancon <Thierry.Besancon@lps.ens.fr>)
    LPC now calls 'lpq' via a bombproofed system() call
      (Suggested by Paul Burry <rpburry@magi.com>).
    LPR now generates correct job names for more than 26 files.
      (Reported by: Guy Geens <ggeens@elis.rug.ac.be>)

Release LPRng 2-4-3
  New Functionality:
    Printcap Files
      The printcap reading and configuration file reading code
      now supports the following:
      1. you can have multiple :tc=name: references.
      2. printcap entries whose main name starts with a punctuation character
          is not used as a printer.  However,  it can be referenced by
          :tc=: entries.  For example,  the following shows how to
          use this facility.
  
      @filter:if=/bin/whatever:of=/bin/whatever
      @banner:sh:sb
      @spool:sd=/var/spool/%P
      p1:tc=@filter:tc=@banner:@spool
  
      In addition,  the following printcap entries have %P (printer),
      %h (short host name), and %H (Fully qualfied domain name of
      host) replaced by the current values before jobs are processed;
      other values are ignored and replaced by which space.  A %% is
      replaced by a single '%'.  The variables which are expanded are
      controlled by the flags value of the src/printcap.c/Pc_var_list[]
      array;  currently the following are expanded:
        :sd=: (spool directory)
    Device Locking:
      This code was originally put in place for systems where you might
      have multiple people trying to use a printing device.  The 'lk'
      flag now controls if you want to lock the IO device.  Default
      is no locking.

  Portability Fixes:
    Quicksort is not a stable sorting algorithm - if two entries are
    identical, then their position can be reversed.  The order of entries
    is important and needs to be preserved when reading information,
    so mergesort() is now used.

    The organization of the include files was causing problems with
    testing packages.  There is now one include file for each major
    functional component.  Global variables are now in a single file,
    and are the same for all packages.  The difference in size of
    the executables was minor.

  Bug Fixes:
    Printcap reading code: now handles forward references correctly.
     (Reported by:
       Klaus Steinberger <Klaus.Steinberger@Physik.Uni-Muenchen.DE>)
    Ruthless purging of metacharacters passed to filters.  This includes
      quotes, backslashes,  and all other even vaugely funny characters.
      (Reported by:Bertrand Decouty-INRIA Rennes-France
        <Bertrand.Decouty@irisa.fr>)

Release LPRng 2-4-2
    Missing REMOTEGROUP check in permissions.c
      (Reported: Michel Robitaille <robitail@IRO.UMontreal.CA>)
    configure.in: Added more robust check for undefined functions
      on various systems,  added checks in source code for various
      variants: termclear.c, gethostinfo.c
      (Reported by: Doug White <dwhite@gdi.uoregon.edu>,
        Sven Rudolph <sr1@inf.tu-dresden.de>)
    LPQ: status line now too long, truncated it to 79 chars.
    LPD: time of day format changed to YY/MM/DD/HH:MM:SS
    LPC: autohold and noautohold command changed to 'holdall'
      and 'noholdall';  LPQ: autohold and holdall status reporting
      added.
    lockfile.c: Added #if !defined(LOCKDEV) code to not do locking
      on serial devices. 
      (Reported by: bennett@nomolog.nagoya-u.ac.jp (Bennett))
    Printcap printer names: primary printer names starting with
      punctuation are now treated as simply entries and not valid names.
      This means that they can be referenced as tc=@name, i.e.
        @name:if=/whatever
        prname:tc=@name
    Multiple Server Queues: ss/sv code reworked again - got rid of several
      race conditions,  lost files.
    Routing filters: added code to handle dropped jobs better.

Release LPRng 2-4-1
  minor problems with Makefiles, portability fixes.
   (Reported by: Michel Robitaille <robitail@IRO.UMontreal.CA>)
  malloclist.c error message format wrong.
   (Reported by: Jens Thiel <thielj@uran.informatik.uni-bonn.de>)

Release LPRng 2-3-14
  New Functionality:
    Jobs are now sorted by priority.
      (Reported by: syl@ecmwf.int (Lennart Sorth))
    LPC CLASS option added.  Classes of jobs can now be held and/or
      released.  lpc class printer A,B,C would release jobs with
      classes A,B,C; lpc class printer J=*form1*  would release jobs
      whose job name contained the form1 string.
      (Requested by: garyc@eng.dowjones.com (Gary Cender))
    Printcap and Configuration :send_failure_action:
      when a job fails to be printed or transferred, it is automatically
      retried :rt: (:send_try: or configuration send_try) times. A 0
      :rt: means infinite retries.  It may be desirable under various
      circumstances to have a method of dynmaically deciding if an error
      threshold is exceeded or some other action is needed.  The
      :send_failure_action: printcap and/or configuration variable specifies
      the default action when :rt: is exceeded.  It can have the following
      form:
        1. The string "success", "abort", "retry", "ignore", "hold"
           which will cause the job/spooler to treat as successful,
           abort, retry, ignore, or hold the job respectively.
        2. A filter of the form: |/filtername.  The filter is executed
           with the default set of filter options,  and the number of attempts
           is printed to its standard input.  It can print error messages
           to standard error, which are placed in the spool error log.
           The exit codes JSUCC (0), JFAIL (1 or 32), JABORT (2 or 33),
           and JREMOVE (3 or 34), JIGNORE (5 or 36), etc. will force
           removal as if successful, retry, etc. as for the text form.
    README.nis: new script for creating NIS (YP) databases.
      (Contributed by: Sven Rudolph <sr1@inf.tu-dresden.de>)
    LPF: modified the -T option, added -D (debug level option)
      (Contributed by: Sven Rudolph <sr1@inf.tu-dresden.de>)
    LPD cannot be started from inetd.  This functionality
      puts a very heavy load on the system and trying to make
      it function correctly was very difficult.
    Makefile: PREFIX variable defined, to allow overriding default
      prefix value.
      (Suggested by: Sven Rudolph <sr1@inf.tu-dresden.de>)
  Major Fixes:
    File Locking:
      The code for dealing with file locking and job name collision was not
      sufficient to handle the case where multiple jobs were being submitted
      simultaneously.  The new code uses the hold file for locking jobs,
      in addition to locking the control file.  When a job is submitted via
      LPR or forwarding,  the hold file is created, written with the
      receiving process PID,  and is then released.  When other processes
      try to submit a job,  they will lock the hold file, check for the running
      process, and then try anther job if the process is still delivering
      the job files.  When all of the job files are delivered,  the process
      will then write the hold file with -1, i.e. - a signal that all files
      have been delivered.  If a job is submitted by other means, i.e.-
      copied directly to the spool directory,  there is no guarantee that
      collisions can be avoided.  Note that sometimes hold files will
      be left in the spool queue, but these can be clean up periodically
      by using checkpc for example.
  Bug Fixes and/or Deficiencies:
    Added Hold_all variable that is controlled by LPC command -
      :ah: printcap entry cannot be overridden now.
      (Reported by: garyc@eng.dowjones.com (Gary Cender))
    LPD/lpd_control.c: STOP was killing off server;  now it prevents
      next job from being started.
    common/printjob.c/Fix_string() - missing check for 0 length string.
      (Zygo Blaxell <zblaxell@myrus.com>)
    Printing filter exit codes 1->5 are translated to JFAIL->JABORT
      This makes vintage filters compatible with LPRng.
    Find_key() can return a 0 value under extreme circumstances - 0 check
      added. (Reported by: Ron Roskens <roskens@cs.umn.edu>)
    lpr -l or lpr -b did not get IF filter invoked with -c option.
      (Reported by:Bertrand Decouty-INRIA Rennes-France <Bertrand.Decouty@irisa.fr>)
    trailers are not sent to printers; caused by premature close of output.
      (Reported and Fix by: Helmut Jarausch <jarausch@igpm.rwth-aachen.de>)
    permissions checking once again has a problem - if no match is found
      incorrect use of defaults.
      (Reported by: QingLong <qinglong@Bolizm.ihep.su>)
    LPQ: queue status not reported correctly.  Caused by a memory leak,
      and also incorrect buffer length specified to allocation routine.
      (Reported by: Bertrand Decouty-INRIA Rennes-France <Bertrand.Decouty@irisa.fr>)

Release LPRng 2-3-13
    Linux has inconsistent ncurses (curses.h) and termlib (termlib.h)
     definitions for tgetent().  Use only one.
      (Reported by Elliot Lee <sopwith@cuc.edu>)
    The 'printed 10% of 1000 bytes" message gets scambled when
      processed by other systems where the % is interpreted as a
      format character by printf.  Changed to 'percent' instead.
      (From: Bertrand Decouty-INRIA Rennes-France <Bertrand.Decouty@irisa.fr>)

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.
