$Id: README,v 1.14 1997/05/03 06:35:48 meem Exp $

This README goes with the rlpr package.  It discusses how to get going
with rlpr and does NOT discuss how to install it.  For installation
information, please read INSTALL.

For a list of changes, please see CHANGES

Please report any bugs, suggestions, etc, to meem@gnu.ai.mit.edu
Copyright (c) 1996, 1997 meem, meem@gnu.ai.mit.edu

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.


USAGE INSTRUCTIONS FOR A NON-PROXY CONFIGURATION
================================================

Without any configuration, you should be able to print to your local
lpd from the machine you wish to print from with the following:

% who | rlpr -Hyour_host -Pyour_printer 

This should print the output of the who(1) command to your
printer.  Make sure you use the right case when specifying the
printer because the name is case sensitive.

Obviously, it is a hassle to constantly specify the host and printer
on the command line, so rlpr offers you a few choices:

  1. You can set these with environment variables when you log in.
     The environment variables RLPR_PRINTHOST and PRINTER control
     what host and printer to use by default.  This is probably good
     enough for most configurations.

  2. You can use the `printer@hostname' syntax for the PRINTER or
     LPDEST variables, as documented in rlpr(1), to specify both
     components in one variable.  This works well for many setups
     too.

  3. If you tend to print to many different printers, you may want to
     look into making an .rlprrc file to simplify things. Check the
     rlprrc(5) manpage for more details on this.

USAGE INSTRUCTIONS FOR A PROXY CONFIGURATION
============================================

Without any configuration, you should be able to print to your local
lpd from the machine you wish to print from with the following:

% who | rlpr -Hyour_host -Pyour_printer -Xyour_proxy

This should print the output of the who(1) command to your printer,
using your_proxy as a proxyhost.  Make sure you use the right case
when specifying the printer because the name is case sensitive.

Note that you of course need a machine running the rlprd proxy before
the above command will succeed.  To do this, first find a machine you
can install rlprd setuid root on.  Often, this will be the same as the
machine you want to print to, but it need not be.  Compile rlprd on
that machine, and start it by just typing `rlprd' on that machine.
You will probably want rlprd to be running all the time -- to do this,
put `rlprd' into one of the configuration scripts that are run when
the machine boots.

Obviously, it is a hassle to constantly specify the host and printer
on the command line, so rlpr offers you a few choices:

  1. You can set these with environment variables when you log in.
     The environment variables RLPR_PRINTHOST and PRINTER control
     what host and printer to use by default.  It may be more
     convenient to use the PRINTER variable's `printer@hostname'
     syntax instead of setting RLPR_PRINTHOST.  The environment
     variable RLPR_PROXYHOST controls what proxyhost to use by default.
     This is probably good enough for most configurations.

     Note that older versions of rlpr used RLPR_PROXY.  This is still
     supported, although RLPR_PROXYHOST will be consulted first.

  2. If you tend to print to many different printers, you may want to
     look into making an .rlprrc file to simplify things. Check the
     rlprrc(5) manpage for more details on this.

  3. In the odd chance you might need a system-wide configuration
     file, you can make a systemwide /etc/rlprrc. See rlprrc(5)
     for more details.

IF SOMETHING GOES WRONG
=======================

  1. If you are getting errors about rlpr not being setuid root, and
     you are cannot make rlpr setuid root, you need to use the rlprd
     proxy.  Follow the instructions for setting up rlprd on a machine
     you do have root access on, and running rlpr with a proxy, which
     are provided above and in the rlpr and rlprd manpages.

  2. Turn on debugging.  For the client, you can do this by specifying
     the --debug option on the commandline.  This should give you a
     clue what's going wrong.  If you use rlprd, you can also use its
     --debug.  However, this will fill up your syslog with gobs of
     debugging information.  To avoid this, start rlprd with both
     --no-daemon and --debug, so that it won't become a daemon.

  3. Check the syslog on the machine with the lpd server and look for
     any obvious problems there.

  4. If you are using a proxy, check the syslog on the machine with
     rlprd and look for any obvious problems there.

  5. If you get something like:

     fatal: rlpr_send_job_req: lpd refused [115]: are we in its /etc/hosts.lpd?

     It is likely you either forgot to add either the proxy host or the
     host the rlpr client is running on (if you're not using a proxy) to 
     the /etc/hosts.lpd file on the host the lpd is running on.

     Remember that most lpd's will have to be restarted to force them
     to reread the /etc/hosts.lpd file.

     Lastly, make sure that the printer you specified actually exists!

  6. Check the lpd's documentation for any known limitations.

  7. Send mail to meem@gnu.ai.mit.edu with a bug report.  Please include
     the machine(s) you're running rlpr and rlprd under, and the version
     of rlpr you're using.  If you are having problems getting the
     package to compile, please include the name and version of the
     compiler and related tools.

KNOWN PROBLEMS WITH RLPR
========================

rlpr will *not* compile with the standard SunOS 4.x compiler, because
that compiler is *not* ANSI C compliant.  If you really need it, you
can cross-compile using gcc, install gcc on the offending machines, or
get someone else to build it for you.

rlpr does not currently timeout its reads and writes.  Right now, this
is considered a bug and not a feature, although there are two sides to
this issue.  Adding a facility to do this is in the works.

rlpr will not work properly on many Ultrix machines without an
elaborate process to force compilation in the "POSIX" environment.
This is because Ultrix has a non-POSIX compliant implementation of
seteuid().  I was hoping to fix this problem in this release of rlpr,
but it turned out to be more complex than expected.

rlpr does not currently work with HP JetDirect printers, even though
conventional BSD lpr does.  It is not yet known why this is the case.
If anyone with a JetDirect printer would like to work on this, please
write meem@gnu.ai.mit.edu.

rlpr currently tests for select(), vprintf() and socket(), but does
not work around them if they're not found.  this is because:

 o I know of no machines that have poll(2) and do not have select()
 o socket() failing would only be an indication that some library
   may have not been included (i.e. libsocket on SVR4)
 o vprintf() is a nightmare to implement -- plus any conforming ANSI
   C environment must have this function.

KNOWN PROBLEMS WITH LPDs
========================

Microsoft's LPD cannot handle rlpr's standard way of sending multiple
print jobs.. to get the desired result please use the --windows option
(see rlpr(1) for details).. please don't use this switch unless you
really are connecting to one of these braindamaged LPD's, because it
will tie up extra sockets.

Additionally, Windows NT 4.0 apparently requires that you pass the -l
option along with -o when printing postscript.  Thanks to Allan Wind
for reporting this.  I would enable -l with -o by default when
printing with -W, but only 4.0 seems to have this problem.

Hummingbird's NT lpd client will not print postscript correctly unless
it is configured to run in "raw" mode.  You can select this through
the lpd's preferences menu under Windows.

Many LPD's will merrily pass through postscript data unless explicitly
told it is postscript.  To get postscript documents to print right,
please use the -o option (see rlpr(1) for details).

Some LPD's no longer have any troff support.  To print documents you
might have printed using the -t option, you could use:

  % groff -Tps filename | rlpr -o

WHERE TO GET THE LATEST VERSION
===============================

The latest stable version of rlpr can always be obtained from:
  ftp://sherilyn.wustl.edu/pub/rlpr-x.xx.tar.gz

The latest beta version of rlpr can always be obtained from:
  ftp://sherilyn.wustl.edu/pub/beta/rlpr-x.xxbx.tar.gz

** PLEASE NOTE that sherilyn.wustl.edu will be down from 5/8/97 - 8/20/97 **

Please do not use a beta version unless you have a good reason.  They
may contain flaws and inconsistencies which can lead to security holes.

Daniel Schepler graciously put together a Red Hat package for rlpr
1.50, which I will update with each release of rlpr.  The most recent
binary version for the Intel x86 family can always be found at:
  ftp://ftp.redhat.com/pub/contrib/RPMS/rlpr-x.xx-x.i386.rpm

and the corresponding source RPM can be always be found at:
  ftp://ftp.redhat.com/pub/contrib/SRPMS/rlpr-x.xx-x.src.rpm

The Debian Project has also graciously put together an rlpr package.
The latest version can always be found at:
  ftp://www.debian.org/pub/debian/{stable,unstable}/{binary-i386,source}/net

Please note that stable and unstable does not refer to the rlpr
package itself, but whether or not the Debian Distribution it is
included with has been released.  

If you have questions or comments that relate directly to the Debian
package, please send mail to debian-user@lists.debian.org for
assistance.  This is a mailing list one can join to by sending mail to
debian-user-REQUEST@lists.debian.org with the word "subscribe" in the
subject.

IDEAS, COMMENTS, SUGGESTIONS
============================

I am always looking for ways to improve rlpr.  If you have
suggestions, bugfixes or just general comments, please send mail to
meem@gnu.ai.mit.edu.
