PLP version 4.1.2:         (Jun 21 1998)
-----------------
* lpq used with the -a option shows all the printers sorted
  alphabetically. 

* Changing of the protocol definitions: 
  See the comments at the beginning of the file
  plp-4.1.2/src/LPD/servicereq.c for these changes.
  
* Added a new printcap flag: op. This flag holds the options for the "pr"
  program. Fixed a small bug in reoteprinter.c (only one banner page
  when rb parameter is set and more than one job was in the
  queue). Update of LaTeX-documentation.

* lpc: if all printers are selected in control operations, the output
  will be sorted. Added the function "listforms" for listing the forms 
  mounted/available on a printer. Fixed a bug: if a job is still
  active, another one cannot be sent to the printer with the "one
  print" function, which will be checked now. Fixed a bug in utils.c
  (Remove_job): if a locallly prefiltered print job has been deleted
  and the data file transfer was not finished, a "tf..." file remains
  in the spool dir. Remove_job deletes now these files and the
  "banner"ed jobs also, in case the RB parameter has been set.

* removed some small bugs (thanks lint!), specially in copy.c and
  move.c (checking the permissions). Fixed a bug of LinuX in setuid.c
  (setup_env): if lprm was called inside from lpc the UID was set to 0 
  (root) and the EUID to the one of the user; now both will be set to
  the one of the user (LinuX should handle this correctly, why...?)

* Fixed some problems with Tk-Lpc (selecting multiple jobs using the
  "one print" and "requeue" function.


PLP version 4.1.1:         (Mar 12 1998)
-----------------
* lpstat is now hard linked with lpq. The output is conformed to the
  "lpstat" output of Solaris 2.5.1 and works with the dtprintinfo
  program of the CDE software. Added a shell script "cancel" as a
  replacement for the cancel program of the lpsched suite.

* Fixed small bugs in setup_filter.c (Terminate command string to
  avoid junk on end), remoteprinter.c (fix backwards compatibility
  problem (final ACK), startprinter.c (fix infinite loop on lpc abort
  command) and others. Thanks to Dave Atkin (dla1@york.ac.uk).

* Two new printcap parameter have been introduced: bb and sr. The bb parameter
  suppresses the banners between jobs; a banner will only be printed
  when the user changes. Default for this parameter is false (not
  set). The sr parameter sets the default format for the queue (useful 
  for printing with Windows NT printservers, which expect f for
  formatted and l for unformatted output). Update of LaTeX
  documentation. 


PLP version 4.1:           (Jan 30 1998)
---------------
* Begin to adopt the existing programs for proper use with CDE.
  Added the progrmas lpstat, cancel, lp, reject for nearly maximum
  conformance with the SYSV lp-subsystem. This means that PLP can now
  be used together with e.g. dtprintinfo. Changed the output format of
  the lpc "status" command; it's behaviour is like the "status"
  command of the BSD lpc status; the command "lstatus" (long status)
  shows the status of the queues in PLP format.

* Fixed some small bugs in control_ops.c and displayq.c with the
  history function.


PLP version 4.0.9:         (Aug 11 1997)
-----------------
* Added the directive "sort-size" in plp.conf. If set to yes, the
  smaller jobs will be printed first, because generally smaller jobs
  will be printed faster than bigger ones. This may be useful if you
  have a printer with a lot of output.

* Added the option -h to the lpq command for displaying the history of
  printed jobs in a queue. Also the lpq command shows now multiple
  copies of submitted jobs.

* New function "history". This function mades entries in the file
  ".history", which is located in the spool directory. So if your site
  has a lot of printing, it's easy to examine if a job has been
  printed or not. These function will be handled by lpd in the sense,
  that lpd creates the history entries ans updates them.


PLP version 4.0.8:         (Jun 22 1997)
-----------------

* Added the function "one_print" which prints exactly one job of a
  queue when this queue has the status "no printing". Useful for
  printing transparent foils or testpages etc.

* printers: the list of the printers is now alphabetically sorted.


PLP version 4.0.7:         (Mar 26 1997)
------------------

* lpc: Added the check if a printer is attached to another printer. 
  If the printer is attached to another printer, issue a message
  that the control operations must be performed on the "real"
  printer. 

* sendmail.c: It adds now the real name of the user to the mail; when
  a file has been printed, the size of the file(s) will be mailed to
  the user too.

* lpr: Added the attachment of a printer. If a printer is attached to
  another printer, lpr will send the job to the "real" printer.

* lprm: send a mail to the user if her/his job has been deleted.

* Added the graphical user interface "Tk-Lpc" for the administration
  of the printers to this package (contributed by Stefan Schulz).


PLP version 4.0.6:         (June 26 1996)
------------------

* lpc: The output of the stat command is "pageable", alphabetically
  sorted and gives information about the printers if they are default,
  local, remote or a save-queue. Implemented the terse parameter for
  the status function as mentioned in the man page.

* pac: The output of the pac command is also alphabetically
  sorted. Using the -b option pac will generate bills for the users;
  these are stored in /tmp under the name PLP_bill.<username> and are
  directly printable. 

* New princap-flag SA: this flag indicates if a queue is used as a
  save area. 


PLP version 4.0.5:         (January 16 1996)
------------------

* The lpr command issues now a message that the job has been spooled and
  gives the user the information about the rank and the job number.

* Enabled the TR and LD facility for remote printers using the RB
  flag.

* Changed "localprinter.c" so to submit a mail to a user when she/he
  has no permissions to print on a remote printer. The same for move.c:
  move () sends a mail to the user to inform him/her that the job(s) has
  been moved.

* Fixed a bug in localprinter.c which hasn't send the TR and LD string
  to the printer.

* Crude implementation of the preprint function in lpc (not yet
  finished!) 


PLP version 4.0.4:            (December 5 1995)
------------------

* Complete documentation rewritten in LaTeX2e

* New function "copy" in lpc. This function copies one or all jobs
  from one spool directory to another. Useful for people which want to
  have the same file printed more than once. Fixed a bug in localprinter.c:
  if more than 3 jobs were pending in the queue, no further printing
  without an explicit restart of the queue was possible (grrrr...)

* New option for lpr: -S. When using this option, a copy of the
  control-file and the data-file(s) were submitted to the "save"-area,
  from where they can be copied, moved etc.

* New configuration parameter in the configuration-file plp.conf:
  "save-copy-area". This variable holds the vaule of the "save"-area
  for copying submitted jobs. Default is "save". 


PLP version 4.0.3:            (August 29 1995)
------------------

* Introduced two new printcap flags:
  "RB": for remote banners. If you have an AXIS printerserver, the
  lpd-software on this server is very "crude". With the RB flag the
  whole printjob will be constructed on the local machine (including
  banners, prefiltering, etc.) and then be sent to this
  printerserver. The default value for RB is FALSE.

* "NB": this flag may be used if you want only the banner page and no
  end banner page. This is only relevant if you dont't have the SH
  flag set. The default for NB is FALSE.

* (off_t == long long) caused FreeBSD client to fail to xfer files to
  server. Thanks to Anders Pedersen for spotting this. A quick browse
  around the code reveals other longs without strict casting, which
  are now cleared up -- hopefully this won't cause any more probs.

* Security problem, on SunOS at least, where syslog() uses internal
  buffers (duh!!!). PLP now uses a reasonably-sized buffer and copies
  the message into this using strncpy(), expanding %s before it is
  sent to syslog. %m is not used.

* Mark Riley spotted bug in setup_filter.c, where NULL in args was
  being referenced when it should have been ignored.

* recvfiles: XU printer_perms file wasn't being checked. Fixed by
  Baba Z Buehler.

* Fixed bug with VMS jobs refused due to short hostname in one file
  and long hostname in the other. (reported by <biel@lts.sel.alcatel.de>)

* made PLP test-suites compatible between PLP 4.0 and 4.1, by changing
  name of create_pc_cache and create_perm_cache to createPcapCache
  and createPermsCache respectively.

* Fixed minor bug in sendmail.c: thanks to Stefano Ianigro.

* Fixed problem with "lpr -#n" with remote-printers. Thanks to 
  Ken Lalonde.



PLP version 4.0.2:		(July 12 1995)
------------------
* changes in control_ops.c: a message can be issued when closing or
  disabling a printer. This message must have a "#" preceeding.

* partial writes were failing because PLP didn't know when to continue
  them.

* statustool.c: logic was incorrect; || instead of &&.

* localprinter.c: using C ctrlfile entry for hostname when it really
  shouldn't have been used as such.

PLP version 4.0.1:		(Jun 15 1995)
------------------

* configure checks for Solaris 2 /usr/ucb/cc without a license.

* checkpc was chowning lp devices to "root" -- can't do this anymore.
  It now uses "iona-lp".

* Fixed permissions problem with Linux' NFS -- can't write to daemon-owned
  file as user, even if it was opened as daemon.

* checkpc and lpd's automatic perms fixing now set the spool dir's
  permissions to 42755 instead of just 755 -- 42755 is drwxr-sr-x,
  which causes any files in the spool dir to inherit the spool dir's
  group id.

* fixed a bug in PLP's RFC-1179 handling, with a spurious confirm that
  shouldn't have been there, at the end of a transaction. Caused transfers
  between PLP and Berkeley LPD to hang after one job.

* problem with pipelines to lpr causing stdio to return spurious EINTR
  errors (on HPUX at least). Caused by earlier stages in the pipeline
  sending SIGCHLD (from Rein Tollevik).

* removed return from lp-pipes cleanup() code, as it breaks on IRIX6
  (signal return type is void) -- Helmut Jarausch.

* Extra patches to support new q_data struct format for localprinter.c
  and sendmail.c; cosmetic patch for "lpc status" (remove empty line
  between each printer and indents the status messages); cosmetic change
  for default printer selection if no printer is specified.

PLP version 4.0:		(May 19 1995)
----------------

* PRINTCAP FORMAT CHANGE:
  replaced qualified printcap name "printer/host" with the "oh" parameter.
  replaced the "no SD" criteria for invalid printers with the "nu" param.

* checkpc sets device files to 644: changed this to 600 (idea from
  Michael Haardt).

* changed format of Warnmsg and Diemsg output so it fits in a little
  better with the user interface of other UNIX utilities.

* more fixes to pac.

* Jan Barte provided some fixes for dodgy NIS/Hesiod code dating
  back to around the time EUCS-PLP was merged in.

* fixed Baba Z Buehler's problem with job title set to '' causing
  queue server to crash.

* fixed some BSD-compatibility stuff in localprinter.c re: H/C lines.

* Edited Rein Tollevik's changes (below), to an acceptable compromise
  in terms of lpq/lpc status output.

* fixes and changes from Rein Tollevik: MANINSTCMD changed to
  INSTALL_MAN, as @MANINSTCMD@ was not defined by configure. Also,
  added support for _sys_siglist and _sys_nsig. Check for <termcap.h>
  for lpq. Don't use -lsocket and -lnsl on IRIX 5 -- they break NIS.
  Check for sys_errlist even if strerror() exists. Define TERMINFO if
  -lcurses is found, and TERMCAP if -ltermcap. Added new configuration
  option "use-first-printer" to specify whether the first printer in
  printcap should be used if none is given with -P or the PRINTER
  environment variable, and the "lp" printer is not defined.  The
  default of yes gives the old behavior. Sleep 5 seconds before
  retrying a failed job. Use the Local_*, not Remote_*, unspooling
  functions if a queue handler has been defined (qh printcap entry).
  Fix to set the default Delay if no delay is specified with "lpq +".
  Include "lp.h" or "lpr.h" before any system header files.  Needed on
  (at least) HP-UX to get the defintition of _HPUX_SOURCE.  Don't add
  anything after "," from pw_gecos to BNRNAME.  Added support for HP-UX
  executable files in LPR/lpr_canprint.c Fixes to test for printable
  iso-8859.1 files (isascii() should be false for iso-8859.1 8-bit
  characters). Substitute AUTOMOUNT_STR with AUTOMOUNT_SUBST if the
  latter is defined.  Don't need AUTOMOUNT_LEN, uses
  sizeof(AUTOMOUNT_STR) - 1 instead.  Always stat the file in Full_path
  from LPR/lpr_job.c.  Needed for the AUTOMOUNT_STR hack to work.
  Removed Print_comment_rm() from common/rmjob.c, use Print_comment()
  instead.  Moved Print_comment() from from common/displayq.c to
  library/utils.c.  Fixes for netgroups to work in the printer_perms
  file.  Set errno to ETIMEDOUT if remote connection is interrupted
  with an alarm, to show the user a more meaningful message.  Fixes to
  the library/printcap* files to compile and work with -DNIS.  Changed
  the q_data entry in struct plp_queue to be a struct q_file with
  filename, size and number of copies to print.  Changed the queue
  display.  I removed the -s option and implemented -l instead to
  better match the remote queue display defined by rfc1179.

* kernel bugs in SunOS 4.1.2 and SunOS 4.1.4 were tickled by PLP;
  added kludgy workaround for the 4.1.2 bug, detection in configure,
  and note in HINTS file.

* fixed to allow removing an active job AND killing off the daemon and
  its queue servers, by using killpg() for lprm, and a list of queue
  servers for daemon-killing - based on stuff by Edwin Allum.

* changed fatal() to log() in startserver.c to avoid removing spooled
  files when the server is dead.
  
* Fixed bug in !-handling in perms checking -- thanks to Greg Wohletz
  for finding it.

* Bill Viggers: porting stuff for OSF1/v3.

* Marty Leisner: porting stuff for Linux.

* fixed bug with NW spool directories -- a daemon DID need to be running
  on the local host.

* Edwin Allum: fixed termio bug with VMIN/VTIME handling.

* Stefano Ianigro: Added more parameters in setup_filter.c for banner
  pages. Modified the code in pac.c so that the price will be
  considered; a total of all costs will be printed. if setuid mode is
  off, the UserUID is set to getuid().

* hostcmp() couldn't grok "localhost".

* Stopped Print_close() sending two SIGCONTs to the output filter.

* Fixed minor syntax error in pac.

PLP version 4.0delta:		(Mar 21 1995)
---------------------

* Introduced the "fb" printcap parameter, to force BSD-style
  output filter semantics.

* fixed coredump when "allow-anonymous-jobs" was used.

* fixed problems with short banner, of and if which caused the lprps
  filter set to fail.

* uninitialised tv_usec member of select timeval caused fatal
  error on some systems.

PLP version 4.0gamma:		(Mar 13 1995)
---------------------

* %-escapes now supported in filter entries, eg. %h for hostname, etc.

* Fixed recvfiles.c code so it supports 0-length datafile xfers 
  (ie. xfer until connection close) -- this is permitted by the
  RFC.

* reduced the number of setuid switches in the suite, in
  preperation for supporting minimised-permission mode. Notably,
  the LP device file is no longer opened as root.

* integrated patches from dimakop@cti.gr - new args for filters:
  -Y (matching line in perms file), -N (name of current file),
  -S (verbose description of current printer).

* fixed i14y bug in recvfiles -- Validate_cf didn't like a blank
  line.

* bug in retry code in startprinter: rt#-1 didn't work. Spotted
  by Hendrik Klompmaker.

* Olaf Grossman: lpr -C with an invalid value wasn't working
  correctly. Also, checkperm's hostname matching didn't check all
  hostname aliases (only one and it's substrings ;).

* Jan Barte -- fixed printcap.5 -- spaces instead of tabs in the
  table, and updated the date.

* errno was being scribbled on in places in the plp_waitpid() 
  code, causing ECHILD to go unnoticed, and resulting, notably,
  in the lpd initial server-starting process hanging around
  when it should have exited. Thanks to Eric Hagberg for noticing
  this behaviour on A/UX.

* minor bug in the "lpstat" script -- one of the invocations of
  lpq didn't include the PLP_DIR variable. (by Dave Alden)

* oops! checkperm was permitting jobs that shouldn't have been
  allowed -- changing "deny by default" to "allow by default".
  This affected the checkperms test in lpr and lpd (local printers).

* fixed sys_siglist, sys_nerr not being declared on SunOS -- patch
  by Baba Z Buehler.

* SIGCHLD handling now does not get initiated in checkpc, due to
  portability problems with the fix from 4.0beta.

PLP version 4.0beta:		(3 Feb 1995)
--------------------

* IP addresses are now fully handled in permissions lookups -- if
  a host is represented by its IP address, but the perms file contains
  a domain name, or vice versa, it'll be resolved appropriately.

* checkpc: now turns off SIGCHLD handling as it broke system().

* removed daemon_to_user() in fopen_path(), which caused not-setuid
  executables to fail, such as "printers".

* fixed a bug in inetd mode -- "setsid failed".

* Improved BSD-compatibility by rewriting control file in recvfiles.c;
  patch by Baba Z Beuhler, more changes by jmason.

* lpd lockfile was recording the wrong pid.

* small debugging patch for find_executable submitted by Helmut
  Jarausch.

* lpr with multiple files now puts all the filenames into the job
  title.

* banner will chop long lines (ones that run over "pw").

* prefilter with "lpr -r" wasn't entirely doing the Right Thing.

* fixed bug in plp_waitpid() where the wrong process status
  was being returned.

* fixed coredump due to no default-printcap.

* Fixed BSD-compatibility and old-PLP-compat problems.

* Fixed "lpr -s" to avoid permissions problems.

PLP version 4.0alpha:		(25 Jan 95)
---------------------

* lpq now supports a -O option to support programs like Samba that
  expect the output to be in BSD format.

* ShortHost is now fully qualified as well as Host, on machines that
  have a fully-qualified system hostname.

* Changed Gets() so it strips comments, skips blank lines, and removes
  leading and trailing whitespace.

* Incorporated the EUCS stuff into the default build.

* made BK mode more compatible with BSD lpds; class name and banner
  name fields in the control file are now used for the same purpose as
  they are in BSD lpd, as opposed to the purpose they're used for in
  PLP (note that neither PLP nor BSD are contravening the RFC in this
  way).

* Olaf Grossmann pointed out that Is_printable doesn't check for
  ISO-8859-1 characters -- it does now. Also, removed the check
  for the validity of the argument to the 'U' flag -- PLP doesn't
  use it, and apparently it causes problems with Framemaker.

* changed long banner format so it'll work if it's used on paper
  with < 66 lines.

* changed the output format of checkpc so it's a little less noisy.

* Got rid of spurious error messages, where EPIPEs and EBADFs
  were being logged when a remote LPD process exited too quickly.

* Helmut Jarausch: LD and TR were not being output at the right
  time.

* Ed Santiago and Helmut Jarausch sent pretty similar cosmetic
  patches for printers.c, so the "cm" field would be printed if it
  was valid. I implemented this idea myself, using my own idea of
  what it should look like, just to be obnoxious. ;)

* Added the "hl" printcap parameter, as suggested by "lprps". It
  causes the banner to be printed after the job instead of before it.

* changed the default page width to be 80 characters instead of 132;
  most printers (ie. not just line-printers) tend to default to 80
  these days.

* Fixed the filter-argument-building and exec-argument-parsing routines
  so they parse embedded quote and backslash-quote characters correctly
  (bug report from Baba Z. Buehler).

* added some more diagnostic warning messages for the printcap in
  case of common errors, such as using = for numeric values, etc.

* fixed the priority of "default-printcap" and :tc=: included printcaps
  compared to the "real" printcap entry.

* fixed the :tc=: printcap inclusion mechanism (for the last time ;)

* reduced the number of checkperm calls when printing (speedup).

* Bertrand Wallrich -- "lprm -" changed to "lprm -a"; it didn't
  work and was counter-intuitive.

* E. Hagberg -- fixed missing banner page bug; also, BP is used if
  set, instead of being used as well as the normal banner program.

* PLP test suite implemented and lots of bugs spotted and fixed,
  including: a prefilter bug, an unspool bug, no formfeed between banner
  and job, printcap caching with includes, incorrect logic when matching
  groups on machines without getgrent() -- a whole slew of other minor
  bugs and portability problems fixed.

* rewrote the wait calls to use a new wrapper function -- plp_waitpid.
  On systems without a real waitpid, this tries to emulate it. Parts
  nicked from Tcl sources, in turn nicked from BSD.

* lpd wasn't using daemon privileges properly.

* mixing :cl: with filters and lp-pipes caused a static buffer to
  be overwritten -- spotted and fixed by Ed Santiago.

* filters with :cl: to local printers weren't doing :cl: properly.
  Ed Santiago spotted this (and fixed the fcntl detection broken by
  Michael Joosten ;)

* spurious error "Failed to send SIGCONT to of filter" -- E. Hagberg.

* Baba Z. Beuhler fixed a bug with domain-name not being set, causing
  coredumps.

* Stefano Ianigro: changed the format for the banner pages: the
  sequence number of the job will be printed on the banner (short and
  long); made it workable with the lprps package. Rechanged
  the output format for lpq because it was too long for 80x24
  terminals. Added the functionality to ask the status for multiple
  servers in a single queue: the corresponding printer entry with all
  the servers will be displayed now and the status of each of the
  servers also. Added the statement "close (ctrl_fd)" in recvfiles
  (line 310) because this file was still opened and locked.

* Wildcards (username, hostname or *) are now possible when using
  control operations (downq, topq, move chprio, hold, release) within
  lpc. Changed the using of requeue function so that is only allowed
  for active jobs. Generation of sequence numbers changed: when in a
  queue the seq-number is 999, the next one coming is 1 not 0. Additonal 
  checking is done when moving or holding or changing priority of
  active jobs: this is no longer possible.

* Added the target "distclean" in Makefile.in.

PLP version 3.4.13:		(6 Dec 1994)
-------------------

* Error mails: the "mail-from-address" address is now Cc'ed for
  error mails.

* lpr -s now sanitises the path for the symbolic link if the file
  resides on an automounted filesystem (ie. prefixed with "/tmp_mnt/")
  and exists on the same path without the /tmp_mnt. It also checks
  the inodes in order to avoid security violations using this method.
  This avoids a possible problem with filesystems becoming unmounted
  between spooling and printing.

* Rick Martin: bug in contrib/old-filters/lpf.c fixed; embedded
  formfeeds caused the printer to go nuts, printing one line per
  page, due to a flag not being reset.

* HUGE portability patch from Michael Joosten (he's a porting
  machine! ;)... wrote cast for all SIG_IGN, etc.; rewrote the
  plp_signal() prototype with a typedef (the Pyramid compiler was a bit
  overstrained); rewrote __STDC__ in stdarg cases to HAVE_STDARGS,
  since the cc 6.7 of Domain/OS claims to be ANSI, but has no stdargs.h
  (well, not always...); Domain/OS has also two universes, but a single
  library for both. So, the existence of a function alone does not
  indicate if it is actually usable, since the proper include files may
  be missing. Thus: HAVE_FCNTL_LOCK; some more functions/include files
  conditionalized; made an heroic attempt to make the setuid() web
  working for BSD-based systems; old BSDs need a errno declaration.
  (whew!!)

* Multiple-printer fixes: lpq output for multi-printer queues is
  now much neater; lpd doesn't block the other printer by retrying.

* Cross-domain printing should now work again, without needing PLP
  clients on all client domains. If an unqualified name is passed
  to Checkperms, and a domain name is used in the perms file, a
  hostname lookup is done using that domain name. If it works,
  the hostname portions are checked, otherwise access is refused.
  This also removes the need for "domain-name" (most of the time).

* Solaris 2 lp system (ugh!) clients can now print to a PLP printer.

* lp-pipes README file has moved to doc/README.lp-pipes.

* lp-pipes are now made from the compile directory, not from
  a subdirectory thereof; ie. they don't have their own makefile.
  (thanks to Dorab Patel for pointing out that this didn't work!)

* checkperm's hostname matching is now case-insensitive.

* recvfiles completely rewritten -- much more robust now.  It also
  supports Windows NT 3.5 (Daytona)'s TCP/IP printing option, and
  as such is _beyond_ RFC-compliant. ;)

* More ANSI stuff from Michael Haardt. Also, a ref'd-before-inited
  bug spotted by same.

* control-file hostname is now fq'd for the check in localprinter.c:
  BSD lprs don't fq it, and this causes *.domain.com perms matches
  to fail.

* added ip-address support for lp-pipes -- printers aren't always
  guaranteed to have a DNS record, and there's no need to require it.
  A bug in this was fixed by <dimakop@cti.gr>.

* problem with inetd mode: lpd's fd 2 pointed back to client socket,
  so debug messages screwed about with ack bytes, causing inexplicably
  stopped printers.

* fixed perm caching -- it still opened files when it didn't need to.

* changed configure script to avoid 'gcc -traditional' if possible:
  the fix in 3.4.12 still didn't completely fix the problem. I hate
  varargs!

* Re-ported to Ultrix 4.3.

* Fixed infinite loop in All_printers().

* the #ifdef's in setproctitle.c were incorrect; if you undef'd
  SETPROCTITLE in Makefile, lpd failed to compile. 

PLP version 3.4.12:	(15 Nov 1994)
-------------------

* Fixed varargs/stdargs code so it works with gcc -traditional on
  SunOS (probably others, too).

* Made printcap caching more efficient; also added permsfile caching.

* setup_close_on_exec () added, due to bug in IRIX 5.1.1 NIS code,
  which refuses to allow getpwuid() calls if the NIS socket is closed.

* bug in printcap: if a printcap entry with an lp-pipe and only one
  name exists, the name|alias|alias:pcap parsing code got it wrong.
  Ed Santiago <esm@lanl.gov>, extended by jmason.

* checkperm: XU pcap param wasn't working -- fixed.

* Updated setproctitle() code from sendmail 8.6.9.

* Michael Haardt: Linux portable.h entry, ANSIfication patches:
  "fixes some usual problems, such as undefined return values or
  elimination of unused variables and comparing "char_var==(void*)0"
  which is not portable".

* Chaged IP-address matching, copying funcs to use IP_ADDRESS_LEN
  from lp.h -- this can be changed if IP:ng changes it.

* Stefano: changed the "C_clean" function in control_ops.c: a server
  for the queue to be cleaned will be killed first; fixed type of
  Checkactive (in utils.c): was int, is now pid_t.

* displayq.c: fixed so it now only reports the remote end of "nw" spool
  queues, like it should do; also, active jobs appear first in queue
  (even if a later job has a higher priority) -- implemented by both
  Stefano and jmason (j got there first ;)

* bugfix: fixed lockfile.c to check fcntl ret status for EACCES as well
  as EAGAIN; EACCES is used by BSD machines; generally tweaked with the
  lockfile code: made "unguessable" lockfile name much harder to
  guess using getrusage(), times().

* documented setstatus(8), fixed doc bug in printcap(5): lp=port@host
  syntax is now obsolete.

* added Stefano's HINTS entry for Convex/OS and Linux (partly in the
  HINTS file and partly in portable.h), and some of his strerror()
  patch.

* added Tcl 7.1's strtoul() replacement.

* E. Hagberg: bsd-compat.c: strdup() was declared static.

PLP version 3.4.11:	(3 Nov 1994)
-------------------

* updated docs to reflect Stefano's requeue change.

* fixed "no RP specified for RM ((null))" glitch in startserver when
  the NW flag was set.

* Added the requeue function by Stefano Ianigro (stef@unibw-hamburg.de):
  When the printer gets garbled or malfunctions during the printing
  of a job, the operator can do a "requeue" of this job. The
  controlfile (which has to be unlocked first with "unlockcf") and the 
  data file will be copied with a new sequence number and prioritized 
  to A, the server will be killed and the queue goes to "no printing". 
  After the maintenance or whatever on the printer is done, the operator 
  starts that printer with the start command from lpc and the job will 
  be reprinted.

* Stefano again: Added the "M" flag for the printer_perms database.
  This means that a user can move his own job(s) (not others) to that
  printer. Changed the move function to secure this.

* Stefano: Fixed a file creating problem with the "copy_file" function in
  utils.c; changed the ouput format of "lprm" for better readability.

* Harlan Stenn: LOCK_EX (flock constant) replaced by HAVE_FLOCK
  in lock_device.c.

* David M Clarke: bug in lp.sh script fixed.

* Serious security hole fixed, involving unimplemented symbolic
  link security checking. Any file on the system could be printed
  using this hole.

* AF should not have been set by default.

* Eric C Hagberg: strdup() added for A/UX; order of includes
  changed in checkpc.c.
  
PLP version 3.4.10:	(12 Oct 1994)
-------------------

* memory leak, possible cause of coredumping fixed in
  hostcmp()/free_haddr_list().

* Lots more ANSIfying; Michael Haardt and myself. Also, lots of
  linting and other heinous code-hammering.

* Fixed 2-level varargs-function calling, which is illegal, causing
  garbage log messages and possible coredumps.

* Added SNI Targon/35 (!!) support, courtesy of Lothar Butsch;
  also added the "HINTS" file (his idea). Also, lint target in
  Makefile; int->pid_t in C_forms(); contents of src/xref for
  constructing an xref file over all the sources.

* Fixed move.c to copy the moved file and unlink the old one if
  rename() fails with a "different filesystems" error.

* George Harrach: fixed a coredump bug in library/getopt.c, where
  strncpy ran off the end of the input string (I think). 

* Stefano Ianigro: fixed a bug in lprm.c, any user can remove any jobs
  from the queue; changed autoconf stuff to check if the cc compiler
  supports the inline feature (GCC does, but Sun's unbundled does not)
  (jmason comment: configure was supposed to be able to handle that!)

* Julian Anderson: Old versions of PLP (2Apr90) refuse to print if the
  control file name and the H record do not match completely, eg both
  FQDN or both shortnames.  Enclosed is a patch to LPR/lpr_temp.c which
  makes the control-file and datafile names respect the SHORTHOSTNAME
  define. Also, a buglet in Exlockcf, which stats the supplied pathname
  to determine if it lives on an NFS mounted volume.  Of course, if the
  supplied path doesn't exist yet, then the stat fails and reports an
  error.

PLP version 3.4.9:	(15 Sep 1994)
------------------

* portions ANSIfied by <u31b3hs@POOL.Informatik.RWTH-Aachen.DE>
  (Michael Haardt); utils.c, setuid.c and lockfile.c ANSIfied by
  jmason. const and inline keywords may now be used.

* strcmp (x,y) == 0 changed to strsame(x,y) as a general case,
  just to keep it tidy.

* configure changes: assert() checked for, just in case it's not
  supported; unproto supported; shared-lib versions of libsocket,
  libnsl and libnet supported, -llib_s style.

* vfork now supported for secure_system() (even though we hardly
  use it!).

* Speed improvements in startprinter.c; hopefully, some better
  handling of removed jobs in remoteprinter.c and recvfiles.c.

* Greg Wohletz: PLP will lock any "lp" device; this isn't good
  if lp=/dev/null, so a special-case has been added for that
  file (and only that file).

* Stefano Ianigro: missing type in errormsg.c when not STDC; returning
  a void in LPD/lpd.c.; Z option is available even if you don't define
  the EUCS stuff (I guess some prefilter are dealing with the Z
  option); bug in the resolver lib. If you have an alias for a
  hostname, the gethostbyname () call will return a pointer to that
  name in form of a null-terminated string. If you don't have an alias
  you'll get a zero pointer!!; Convex OS port is ready and working (and
  tested!); small bug in test/Makefile corrected. 

* this must be _THE_ most portable (read as "takes-loads-of-bitty-oses-
  -into-account") package ever to use wait*() and WIF???(). ;)
  YAWP (yet another wait patch), this time from Michael Joosten.
  secure_system()'s return code was unportable.

* Eric Hagberg: A/UX support: sh doesn't have getopts, SETPROCTITLE
  doesn't work.

PLP version 3.4.8:	(Sep 9 1994)
------------------

* Michael Joosten: MAJOR BSD 4.2/4.3 PORTABILITY STUFF:
  BSD 4.2-compat EXTA/EXTB baud rate stuff into stty_sgtty.c. struct
  exec checked for in configure. removed TERMIOS stuff from termio
  check in configure. Fixes in bsd-compat.c: problem with static
  sigset_t oblock (yep, that was correct -- jmason).  v?printf stuff
  added for old BSD + plus check in configure (HAVE_VPRINTF). moved the
  BSD-compatibility stuff from NeXT and Ultrix together, guarded by
  #ifndefs. Check for limits.h.

* got POSIX default macros for WIFSTOPPED, etc., so we use
  them (it's the perl way!).

* waitpid() is now used when available.

* got rid of tiny memory leak from copy_haddr_list.

* overhauled pac, fixed loadsa bugs, added -m, -h options.
  pac -s still broken.

* fixed utils.c so NOFILE->getdtablesize() (more portable);
  we close all unused fds before exec()ing filters, pr, etc.

* Stefano Ianigro:
  Makefile: lp shell scripts not found; defaults.c: Maxportno
  was wrong; rename() in move and hold was not run as daemon;
  different output format for "stop", "down", "up" commands.
  Solaris unbundled cc was defining __SVR4 instead of SVR4.
  remote displayq() wasn't setting Host (for some reason).
  "lpc lpd" didn't work (killing a root process from non-root).

* but@unibw-hamburg.de (Lothar Butsch):
  AIX 3.2.5 support (compilation, anyway ;).

* Michael Joosten: statfs include files, -lsun for IRIX4,
  :bk: and short hostname, and the typical beginner's error.
  Note that on IRIX4, char is by default unsigned

* remote-printer IFs weren't getting most of the
  interesting printcap params (filename, class, etc.).

* BK wasn't using short hostnames after all.

* fixed coredump in pac when debugging was on.

* removed setuid'ing around printcap-reading code; it's
  very inefficient, and we _should_ be able to assume
  that the printcap file is readable by users.

PLP version 3.4.7:	(Sep 7 1994)
------------------

* removed plp.conf setuid directive: obsolete.

* moved troff source out of distribution to save space;
  dist just includes the postscript version of the manual
  now.

* portability notes for portable.h and configure, from
  Bjarne Steinsbo, Michael Joosten, Eric C Hagberg, and
  Greg Wohletz.

* Moved A/UX setcompat() call to setuid.c, as it's needed
  earliest by the setuid code.

* Bjarne Steinsbo: non-setuid mode was broken; also, added
  support for read/write LP-pipes and spotted a non-serious
  fd leak.

* Michael Joosten: pid_t != int, fixed.

* Eric Hagberg: security problem where hosts could bypass
  permissions checking by spoofing the control-file entries.

* Eric Hagberg: missing sys_errlist extern decl.

* Greg Wohletz: logerr_die missing first args in NIS code,
  typo in Makefile.in, configure.in not quoting properly.

PLP version 3.4.6:	(Sep 2 1994)
------------------

* autoconf -- almost all the OS-specific stuff is now
  handled by autoconf (yay!).

* Michael Joosten <joost@ori.cadlab.de>: termios fixes:
  the mc/ms debugging infos were reversed, and the
  operator precedence in the VMIN/VTIME 'if' was wrong
  (this one wins the PLP 3.4.6 "well spotted" award! ;)

* Michael Joosten: VMIN/VTIME for termio as well.

* Michael Joosten: bug with talking to old PLP (and
  possibly also old BSD) lpds: didn't realise
  host.dom.ain == host. Incorporated into the :bk: stuff.

* Michael Joosten: IRIX 4 support.

* Michael Joosten: bug with combo of prefilter + pr.

* accounting change -- new printcap param, "la". If la is
  set (which it is by default), PLP will do accounting
  on local printers (to "af"). If the user wants to do
  their own accounting, turn off "la".

* missing arg for gettimeofday -- spotted by Greg Wohletz.
  (Solaris manpage was wrong)

* portability: c  Ed Santiago <esm@lanl.gov>, extended by jmason.

* checkperm: XU pcap param wasn't working -- fixed.

* Updated setproctitle() code from sendmail 8.6.9.

* Michael Haardt: Linux portable.h entry, ANSIfication patches:
  "fixes some usual problems, such as undefined return values or
  elimination of unused variables and comparing "char_var==(void*)0"
  which is not portable".

* Chaged IP-address matching, copying funcs to use IP_ADDRESS_LEN
  from lp.h -- this can be changed if IP:ng changes it.

