PRINTCAP(4)                     Printing Tools                     PRINTCAP(4)


NAME
     printcap - BSD printer capability data base

SYNOPSIS
     /etc/printcap

DESCRIPTION
     Printcap is a data base used to describe line printers.  The spooling
     system accesses the printcap file every time it is used, allowing dynamic
     addition and deletion of printers.  Each entry in the data base is used
     to describe one printer.  This data base may not be substituted for,
     because it may allow accounting to be bypassed.

     The default printer is normally lp, though the environment variable
     PRINTER may be used to override this.  Each spooling utility supports an
     option, -Pprinter, to allow explicit naming of a destination printer.

CAPABILITIES
     Name   Type  Default             Description
     af     str   NULL                name of accounting file
     br     num   none                if lp is a tty, set the baud rate (ioctl call)
     cf     str   NULL                cifplot data filter
     df     str   NULL                tex data filter (DVI format)
     du     num   1                   default uid under which filters are run
     fc     num   0                   if lp is a tty, clear flag bits (see FLAG BITS below)
     ff     str   ``\f''              string to send for a form feed
     fo     bool  false               print a form feed when device is opened
     fs     num   0                   like `fc' but set bits (see FLAG BITS below)
     gf     str   NULL                graph data filter
     hl     bool  false               print the burst header page last
     ic     bool  false               driver supports (non standard) ioctl
                                      to indent printout
     if     str   NULL                name of text filter which does accounting
     lf     str   ``/dev/console''    error logging file name
     lo     str   ``lock''            name of lock file
     lp     str   ``/dev/lp''         device name to open for output
     mx     num   1000                maximum file size (in BUFSIZ blocks),
                                      zero = unlimited
     nd     str   NULL                next directory for list of queues (unimplemented)
     nf     str   NULL                ditroff data filter (device independent troff)
     of     str   NULL                name of output filtering program
     pc     num   200                 price per foot or page in hundredths of cents
     pl     num   66                  page length (in lines)
     pw     num   132                 page width (in characters)
     px     num   0                   page width in pixels (horizontal)
     py     num   0                   page length in pixels (vertical)
     rf     str   NULL                filter for printing FORTRAN style text files
     rg     str   NULL                restricted group. Only members of group
                                      allowed access
     rm     str   NULL                machine name for remote printer
     rp     str   ``lp''              remote printer name argument
     rs     bool  false               restrict remote users to those with local accounts


     rw     bool  false               open the printer device for reading and writing
     sb     bool  false               short banner (one line only)
     sc     bool  false               suppress multiple copies
     sd     str   ``/usr/spool/lpd''  spool directory
     sf     bool  false               suppress form feeds
     sh     bool  false               suppress printing of burst page header
     st     str   ``status''          status file name
     tf     str   NULL                troff data filter (cat phototypesetter)
     tr     str   NULL                trailer string to print when queue empties
     vf     str   NULL                raster image filter
     xc     num   0                   if lp is a tty, clear local mode bits (tty (4))
     xs     num   0                   like `xc' but set bits

     If the local line printer driver supports indentation, the daemon must
     understand how to invoke it.

FLAG BITS
     In order to provide compatibility with BSD-based systems, the flag bits
     supplied as part of the fc and fs printcap entries are based on
     Berkeley's sgtty structure. The following table summarizes the meanings
     of these bits (note that all values are in octal):
          ALLDELAY 0177400 Delay algorithm selection
          BSDELAY  0100000 Select backspace delays
          BS0      0       No delay
          BS1      0100000 0.10 second delay
          VTDELAY  0040000 Select form-feed and vertical-tab delays:
          FF0      0       No delay
          FF1      0040000 2.0 second delay
          CRDELAY  0030000 Select carriage-return delays:
          CR0      0       No delay
          CR1      0010000 Delay dependent on current column.
          CR2      0020000 0.10 second delay
          CR3      0030000 0.15 second delay
          TBDELAY  0006000 Select tab delays:
          TAB0     0       No delay
          TAB1     0002000 Delay dependent on current column.
          TAB2     0004000 0.10 second delay
          XTABS    0006000
          NLDELAY  0001400 Select new-line delays:
          NL0      0       No delay
          NL3      0001400 0.15 second delay
          EVENP    0000200 Even parity allowed on input
          ODDP     0000100 Odd parity allowed on input
          RAW      0000040 Raw mode: wake up on all characters, 8-bit interface
          CRMOD    0000020 Map CR into LF; output LF as CR-LF
          ECHO     0000010 Echo (full duplex)
          LCASE    0000004 Map upper case to lower on input and lower to upper on output
          CBREAK   0000002 Return each character as soon as typed
          TANDEM   0000001 Automatic flow control


FILTERS
     The lpd(1M) daemon creates a pipeline of filters to process files for
     various printer types.  The filters selected depend on the flags passed
     to lpr(1).  The pipeline set up is:

          -p   pr | if   regular text + pr(1)
          none if        regular text
          -c   cf        cifplot
          -d   df        DVI (tex)
          -g   gf        plot(3)
          -n   nf        ditroff
          -f   rf        Fortran
          -t   tf        troff
          -v   vf        raster image

     The if filter is invoked with arguments:

          if [ -c ] -wwidth -llength -iindent -n login -h host acct-file

     The -c flag is passed only if the -l flag (pass control characters
     literally) is specified to lpr.  Width and length specify the page width
     and length (from pw and pl respectively) in characters.  The -n and -h
     parameters specify the login name and host name of the owner of the job
     respectively.  Acct-file is passed from the af printcap entry.

     If no if is specified, of is used instead, with the distinction that of
     is opened only once, while if is opened for every individual job.  Thus,
     if is better suited to performing accounting.  The of is only given the
     width and length flags.

     All other filters are called as:

          filter -xwidth -ylength -n login -h host acct-file

     where width and length are represented in pixels, specified by the px and
     py entries respectively.

     All filters take stdin as the file, stdout as the printer, may log either
     to stderr or using syslog(3), and must not ignore SIGINT.

LOGGING
     Error messages generated by the line printer programs themselves (that
     is, the lp* programs) are logged by syslog(3) using the LPR facility.
     Messages printed on stderr of one of the filters are sent to the
     corresponding lf file.  The filters may, of course, use syslog
     themselves.

     Error messages sent to the console have a carriage return and a line feed
     appended to them, rather than just a line feed.


COMPATIBILITY NOTES
     In an attempt to provide compatibility with existing BSD printcap
     entries, the SGI version of the lpd spooler emulates the output bits in
     the BSD tty flag word (defined in the BSD include file <sgtty.h>) via
     IRIX termio.

SEE ALSO
     lpc(1M), lpd(1M), pac(1M), lpr(1), lpq(1), lprm(1)


                                                                        Page 4