Flashnux

GNU/Linux man pages

Livre :
Expressions régulières,
Syntaxe et mise en oeuvre :

ISBN : 978-2-7460-9712-4
EAN : 9782746097124
(Editions ENI)

GNU/Linux

CentOS 2.1AS

(Slurm)

printcap(5)


PRINTCAP

PRINTCAP

NAME
SYNOPSIS
DESCRIPTION
USER AND SYSTEM PRINTCAP FILES
CAPABILITIES
ENTRIES BY ALPHABETICAL ORDER
ENTRIES BY FUNCTION
FILTERS
SPOOL QUEUES
LOCAL PRINTERS
STTY OPTIONS
INITIALIZATION
ALL PRINTERS
ACCOUNTING
BOUNCE QUEUES AND PRINT FORMATS
KERBEROS, PGP, AND OTHER AUTHENTICATION METHODS
FILES
SEE ALSO
DIAGNOSTICS
HISTORY
AUTHOR

NAME

printcap − printer capability data base

SYNOPSIS

/etc/printcap database

DESCRIPTION

The format of the LPNng printcap database was based on the termcap(5) data base file format. Entries in the printcap Each entry in the data base is used to define various options and values to control the printing and spooling of print jobs.

USER AND SYSTEM PRINTCAP FILES

The system printcap file is usually in /etc/printcap, and contains information common to all users and the LPRng printing system. User printcap files are usually in ${HOME}/.printcap, and contain user configurable information for printer information.

The user printcap file is used only by client programs such as lpr , lprm , lpq , and lpq . The information in the user printcap file overrides the information in the system printcap file.

CAPABILITIES

The database is a simplified form of the termcap (5) database. Leading whitespace on each line is discarded, and blank lines or lines which then start with a comment character (#) are discarded. A line which does not start with a colon (:) or bar (|) starts a printer entry definition. Lines ending with a backslash (\) are assumed to continue to the next line; this is for compatibility with other historical printcap file formats. Trailing blanks and tabs (whitespace) for an option value are deleted unless the last one is escaped with a backslash (’’\’’).

A printer definition starts with a primary printer name, followed by zero or more alternative printer names, followed by a set of keyword entries and values. For example:

#comment
# primary printer name
lp
#alternate names
 |lp2|lp3
 |Example of a printer
 :sd=/usr/spool/LPD/lp
 :rw:lp=/dev/lp:mx#100
include /etc/printcap/mainprintcap

The special printcap definition include will read the named file, which must have an absolute pathname, as the next set of printcap entries.

Keywords can be 1 to an indefinate number of characters long, and are case sensitive. Values for keywords can be strings (:st=string:), signed integer values using the C language notation, (:nu#12:max#-2:mask#0x1EF:), or flags (:flag: to set to 1, :flag@: to clear to 0). Integer values must be representable as 32 bit 2’s complement numbers; care should be taken with extremely large numbers.

If the primary name of a printcap entry starts with a punctuation character, then the entry may be referenced using the tc capability, but is ignored otherwise. This allows common printcap information to be placed in a single entry.

The special printcap entry oh (i.e. - only this host) may be used to select a printcap entry for use by one or more hosts. The oh entry can be a list of one or more host names or glob type of patterns. These patterns are first applied to the host’s fully qualified domain name, and then used to to a lookup of an IP address. If either the glob match or the host has a matching IP address then the printcap entry is selected for use. In addition, the server flag indicates that only the LPD server is to use this printcap entry. This allows client and server printcap information be to be segragated in a simple manner.

The following is a list of the keywords currently used by the LPRng software. Many of these keywords are used only by the LPD server, others are used by the client programs LPR, LPC, LPRM, PAC, as well as the server. In the Use column in the table below, an A stands for all programs, D stands for lpd, and R stands for the client programs such as LPR.

Some of these entries can only appear or have an effect if they are in the lpc.conf initialization file. See lpd.conf(5) for further details.

ENTRIES BY ALPHABETICAL ORDER

FL Use Type Default Description

Xf

D

str

NULL

output filter for format X (used by lpd).

’filter’ sets default filter

ab

D

bool

false

always print banner, ignore lpr -h option

achk

D

bool false

If TRUE LPD will check for a ’ACCEPT’ reply to the initial

accounting information written to a filter at the start

of a job.

ae

D

str

accounting format for end of job or a program to run

to record accounting information (see also af, la, ar

and Accounting).

af

D

str

NULL

name of accounting file or server (see also la, ar, as, ae)

If the format is host%port, a tcp socket connection will

be made to port on host. The as and ae strings

will be printed to the specified destination.

The accounting file will not be created, it must exist for

LPD to append data to it.

ah

D

bool

false

auto-hold - job held until explicitly released

all

A

str

NULL

a list of all printers; (see ALL PRINTERS)

allow_duplicate_flags

A

bool

false

allow duplicate command line flags; last overwrites earlier

allow_getenv

A

bool

(compile time)

allows LPRng software to use the LPD_CONF environment variable

to specify the location of a configuration file. This is

for testing only.

allow_user_logging

A

bool

false

if mail is requested using lpr -mhost%port,prot operations,

and the allow_user_logging flag is true, then job logging

information will be sent to host%port,prot.

allow_user_setting A str NULL

allow these users to impersonate other users with the

lpr -U user@host, lpc -U user@host, etc., options

append_z

A

str

append these options to the -Z options for the job

ar

D

bool

true

write remote transfer accounting (if af, and as/ae set)

architecture

A

str

(compile time)

architecture the software was compiled for. (Obsolete.)

as

D

str

accounting format for start of job or a program to run

to record accounting information (see also af, la, ar

and Accounting).

auth

R

str

NULL

client to server authentication type

be

D

str

banner printing program for end (overrides bp, hl)

bk

R

bool

false

Berkeley-compatible: be strictly RFC-compliant

or more exactly, BSD LPR compatible when sending jobs.

bk_filter_options

D

str

(see source code)

when bk flag set, options for non OF print filters

bk_of_filter_options

D

str

(see source code)

when bk flag set, options for OF print filters

bkf

R

bool

false

use bk_filter_options and bk_of_filter_options when

invoking print filter.

bl

D

str

banner line - sent to banner printer program

default: $-’C:$-’n Job: $-’J Date: $-’t

expands to: Class:User Job: job Date: date

This is to force compatibility with vintage print filters

that require a non-standard banner string. Usually used with

:sb: option.

bp

D

str

banner printing program (see hl)

(default: configuration variable default_banner_printer)

bq_format

D

str

l

format of output from bounce queue filters

br

D

num

none

if lp is a tty, set the baud rate (see ty)

break_classname_priority_link

A

flag

false

Do not set priority to first letter of class name

bs

D

str

banner printing program for start (overrides bp, hl)

cf

D

str

NULL

cifplot data filter

check_for_nonprintable

R

bool

false

lpr checks f and p formats for printable files

check_for_protocol_violations

R

bool false

check for RFC1179 protocol violations

chooser

D

str

load balance queue destination chooser program

chooser_interval

D

num

10

load balance queue does checks for a

destination queue available at this interval

chooser_routine

D

bool

false

use the user provided chooser routine for this queue

class_in_status

A

bool

true

show class name in lpq status rather than priority

cm

A

str

NULL

comment identifying printer (LPQ)

config_file

A

str

/etc/lpd.conf:/usr/etc/lpd.conf

location of LPRng configuration information. Compile

time option only - see allow_getenv.

connect_grace

A

num

0

time between jobs to allow printer recovery

connect_interval

A

num

10

time between open or connection attempts

connect_timeout

A

num

10

timeout value for connection or open

control_file_line_order

D

str

NULL

Put the control file lines in a specific order

control_filter

D

str

NULL

Filter for control file. Used when sending job to remote

spool queue.

create_files

D

bool

false

create log, debug, etc., files automatically

db

A

str

NULL

LPD debug options when serving this queue.

See lf (log file) entry as well.

default_format

R

str

f

default format for printing jobs

default_permission

D

str

A

default permission for operation

default_printer

A

str

lp

default printer for printing jobs

default_priority

R

str

A

default priority for printing jobs

default_remote_host

A

str

localhost

default remote host for printing operations

default_tmp_dir

A

str

/tmp

default temporary directory

destinations

D

str

NULL

names of printers that lpq/lprm should talk to

find a job that has been processed by a router

script (see README.routing)

df

D

str

NULL

tex data filter (DVI format)

exit_linger_timeout

A

num

10

socket SO_LINGER timeout value

fd

D

bool

false

if true, no forwarded jobs accepted

ff

D

str

’’\f’’

string to send for a form feed (see INITIALIZATION)

filter

D

str

NULL

default filter to use for printing file

filter_ld_path

D

str

(see source)

the LD_LIBARY_PATH environment variable value for filters

filter_options

D

str

(see source code)

when bk flag clear, options for non OF print filters

filter_path

D

str

(see source)

the PATH environment variable value for filters

filter_poll_interval

D

num

30

interval to poll OF filter

filter_stderr_to_status_file

D

bool

false

set the filter STDERR to the status file and do

no report errors in the queue status file.

fo

D

bool

false

print a form feed when device is opened

force_fqdn_hostname

A

bool

FALSE

Force a fully qualified host name in control file

force_localhost

A

bool

FALSE

Forces the clients programs (lpr, lpc, etc.)

to send all print jobs and requests to the server running

on the localhost entry for action. This flag effectively

forces BSD LPR behaviour.

force_lpq_status

D

str

NULL

Specifies a list of LPQ formats and hosts which get status

returned in this format. For example

force_lpq_status=s=pc*;l=mac* will cause hosts whose

FQDN matches pc* to get short status and those which

match mac* to get long format.

force_queuename

A

str

NULL

When :qq: flag or use_queuename configuration is enabled,

specifies the queuename to be used for control file Q

information.

ff_separator

D

bool

false

need form feeds to separate job files

fq

D

bool

false

print a form feed when device is closed

full_time

D

bool detailed time format specification in log messages

fx

A

str

NULL

valid output filter formats

i.e. ’’flp’’ would allow f, l, and p

default is to allow all formats

gf

D

str

NULL

graph data filter (plot (3X) format)

generate_banner

D

bool

false

generate a banner when forwarding job

group

D

str

daemon

LPD server group id for execution

hl

D

bool

false

print banner after job instead of before

if

D

str

NULL

filter command, run on a per-file basis

ignore_requested_user_priority

D

bool

false

Ignore the requested user priority when ordering jobs.

Prevents students... um... users from queue jumping.

ipv6

A

bool

false

Use IPV6

keepalive

A

bool

true

set socket SO_KEEPALIVE option

kerberos_keytab

D

str

/etc/lpd.keytab

Kerberos lpd server keytab file

kerberos_life

D

str

NULL

Kerberos lpd server key lifetime

kerberos_renew

D

str

NULL

Kerberos lpd server key renewal time

kerberos_server_principle

D

str

NULL

Kerberos remote lpd server principle

kerberos_service

D

str

lpr

Kerberos service used in principle requests

la

D

bool

true

write local printer accounting (if af is set)

ld

D

str

NULL

leader string printed on printer open (see INITIALIZATION)

lf

D

str

’’log’’

error and debugging log file (LPD)

lk

D

bool

false

lock the lp device to force arbitration

lockfile

D

str

/var/spool/lpd/lpd

lpd lock file (used only in lpd.conf).

The lpd_port port value is appended
to the lockfile value to provide a unique lockfile
even when different versions of LPRng are running
on the same system.

logger_destination

D

str

NULL

destination for logging information. Format is

host%port

logger_max_size

D

num

1024

logger file maximum size in K

logger_path

D

str

NULL

logger file pathname

logger_timeout

D

num

0

logger connection timeout. 0 is no timeout.

longnumber

D

bool

false

use 6 digit job numbers

lp

D

str

NULL

device name or pipe to send output to

lpd_bounce

A

bool

FALSE

Forces lpd to filter jobs and then forward them.

(See Bounce Queues)

lpd_force_poll

A

bool

FALSE

Forces lpd to periodically poll lpd queues.

lpd_poll_time

A

num

600

After this amount of idle time, lpd will poll queues

lpd_port

D

str

printer

format is [ipaddr%]port. If the ipaddr is present
then the lpd listening socket is bound to the specified
ip address and port only, otherwise it is bound to all
interfaces. If the port value is not a number then the

lpd_printcap_path

D

str

(see source)

printcap path for lpd, in addition to normal one

(configuration value only)

lpr_bounce

R

bool

true

Forces lpr to filter jobs and then send them.

(See Bounce Queues)

lpr_bsd

R

bool

false

when set, LPR -m will not take argument, but will use

$USER value for return mail address.

mail_from

D

str

NULL

specifies the user part of email From: address

mail_operator_on_error

D

str

NULL

send mail to this user when LPD encounters printing error.

max_connect_interval

A

num

60

maximum time between connection attempts

max_log_file_size

D

num

0

maximum log file size in K bytes (0 is unlimited)

spool queue log file truncated to min_log_file_size

when value is nonzero and limited exceeded.

max_servers_active

D

num

0

maximum servers that LPD will allow to be active at one

time. 0 selects the system default, which is usually

pretty small, perhaps 10. (configuration value only).

max_status_line

D

num

79

maximum number of characters on an LPQ status line

max_status_size

D

num

10

maximum size (Kbytes) of status file

mc

R

num

1

maximum copies allowed

min_log_file_size

D

num

0

minimum size (Kbytes) of log file

min_status_size

D

num

2

minimum size (Kbytes) of status file

minfree

D

str

0

minimum space (in K) for spool directory

ml

R

num

32

minimum printable characters for printable check

ms_time_resolution

D

bool

false

log time in milliseconds

mx

R

num

0

maximum job size in K, 0 = unlimited

nb

D

num

0

if non-zero, do a nonblocking open on lp device

nf

D

str

NULL

DITROFF data filter

network_connect_grace

A

num

0

time between attempts to send jobs to spooler

Useful when dealing with network printer using LPD

interface to allow a bit of time between jobs.

nline_after_file

D

bool

false

put the N (filename) after the data file information

in the control file. Use to handle systems that want

it that way.

of

D

str

NULL

output filter, run once for all output

(used for banner printing, form feeds between files)

of_filter_options

D

str

(see source code)

when bk flag clear, options for OF print filters

oh

A

str

NULL

Specific printcap entry for host;

(printcap entry ignored unless IP address of host and

entry value match. Entry is used first to do glob

style match against the host’s fully qualified domain name,

and then interpreted as a general IP address)

order_routine

D

bool

false

use a user provided routine to generate queue order

information.

originate_port

A

str

512 1023

when originating a connection, use ports in this range.

pass_env

A

str

PGPPASS,PGPPATH

if not the LPD server, sanitize and put these variables

in a filter environment variable list.

perms_path

A

str

/etc/lpd.perms:/usr/etc/lpd.perms

location of perms file (used in lpd.conf)

pl

D

num

66

page length (in lines)

pr

D

str

’’/bin/pr’’

pr program for p format

prefix_o_to_z

D

bool

false

prefix the control file O line to the control file

Z line.

prefix_z

D

str

NULL

prefix the specified options to the control file

Z line.

prefix_z_to_o

D

bool

false

prefix the control file Z line to the control file

O line.

printcap_path

A

str

/etc/printcap:/usr/etc/printcap

location of printcap file (used in lpd.conf)

ps

A

str

’’status’’

printer status file name

pw

D

num

132

page width (in characters)

px

D

num

0

page width in pixels (horizontal)

py

D

num

0

page length in pixels (vertical)

qq

A

bool

false

LPR - puts in the queue name (Q entry)

in the job control file when spooled or transferred.

LPD - when receiving or transferring a job,

if the queue name (Q entry) in the job control

file is not present, puts in the queue name.

queue_control_file

D

str

control.%P

name of the queue control file

queue_lock_file

D

str

%P

name of the queue lock file

queue_status_file

D

str

status.%P

name of the queue status file

queue_unspooler_file

D

str

unspooler.%P

name of the queue unspooler status file

remote_support

A

str

NULL

if non-null, specifies allowed operations to remote queue.

R=lpr, M=lprm, Q=lpq, V = lpq -v, C=lpc. For example,

remote_support=RM would only allow LPR and LPRM operations.

remove_z

D

str

null

remove these options from the control file Z line

report_server_as

A

str

NULL

use the str value as the name of the server when reporting

LPQ or LPC status.

retry_econnrefused

A

bool

true

if set, retry a connection to a remote system when an

ECONNREFUSED error is returned.

retry_nolink

D

bool

true

if LPD is sending a job or opening a device for

printing and the value is true, then the connection or

device open is repeated indefinately.

return_short_status

D

str

NULL

Some legacy (non-LPRng) LPQ programs expect ’short’ status

to be returned. This option allows you to specify which hosts

will get it. The value is a list of hosts and/or IPaddresses

and masks to which the LPD server will provide short status.

For example: return_short_status=192.8.0.0/16 will make LPD

return short status to all requests from hosts in subnet

192.8.0.0. (See short_status_length)

reuse_addr

A

bool

false

if set, use SO_REUSEADDR on outgoing connection ports.

This reduces the problems with exhausting port numbers.

(usually only in lpd.conf)

reverse_lpq_status

D

str

NULL

When a lpq status request arrives from one of the specified

hosts or IP addresses, then the LPQ status format is inverted.

For example, if reverse_lpq_status=host*,127.0.0.0/8,

then when a LONG status request arrives from host1 or from

ip address 127.0.0.1, the SHORT status will be returned.

reverse_priority_order

D

bool

false

Make highest priority A, lowest Z

rf

D

str

NULL

filter for printing FORTRAN style text files

rm

A

str

NULL

remote-queue machine (hostname) (with rp)

router

D

str

NULL

script that dynamically re-routes a job

(see README.routing)

rp

A

str

NULL

remote-queue printer name (with rm)

rw

D

bool

false

open the printer for reading and writing

safe_chars

D

str

NULL

additional safe characters for control file contents

save_on_error

D

bool

false

Save job when an error occurs to allow post-mortem

diagnostics or reprinting. This should only be set on

print queues. It is also a diagnostic aid.

save_when_done

D

bool

false

Save job when done (printed, transferred) to allow

retry at a later time. This should only be set on

print queues. It is also a diagnostic aid.

sb

D

bool

false

short banner (one line only)

sd

A

str

NULL

spool directory (only ONE printer per directory!)

send_block_format

A

bool

false

Use the LPRng extended ’block job’ job transmission

method to send a job to a remote site.

send_data_first

A

bool

false

send data files then control files

when sending a job to a remote host.

send_failure_action

D

str

"remove"

Action on print or transmission failure after send_try

attempts; use the following codes:

’success’ (JSUCC) - treat as successful

’abort’ (JABORT) - abort printer

’retry’ (JRETRY) - retry job

’remove’ (JREMOVE)- remove job

’hold’ (JHOLD) - hold job

If the value is "|/filter", the filter will be run and

the number of attempts can be read from standard input.

The filter should exit with one of the error codes listed

above to cause the appropriate action.

send_job_rw_timeout

A

num

6000

timeout on read/write operations when sending job to

printer or remote host (0 value is no timeout)

send_query_rw_timeout

A

num

6000

timeout on read/write operations when performin a status

operation (0 value is no timeout)

send_try

A

num

3

number of times to try sending

or printing a job. 0 is infinite.

sendmail

D

str

/usr/sbin/sendmail -oi -t

sendmail command to send mail to user. Flags must be set

so that address and other information is taken from

standard input.

server

A

bool

false

printcap entry for server only

server_auth_command

A

str

NULL

authentication command for server program

server_tmp_dir

D

str

/tmp

temporary directory for server to create files when there

is no spool directory.

server_user

D

str

daemon

server user name used in authentication operations

sf

D

bool

true

suppress form feed separators between job files

sh

D

bool

false

suppress headers and/or banner page

shell

D

str

/bin/sh

SHELL enviornment variable value for filters

short_status_length

D

num

1

If the return_short_status value is used and has a match against

a requesting address, this amount of status is set by the

short_status_length option. For most legacy systems a 1 is

suitable (1 line of status).

socket_linger

A

num

10

if nonzero, forces a SO_LINGER operation to be done

on all TCP/IP connections. This usually corrects a problem

with missing last data transmissions to remote hosts.

spool_dir_perms

D

num

042700

permissions for spool directory

spool_file_perms

D

num

0600

permissions for spool file

ss

D

str

NULL

name of queue that server serves (with sv)

stalled_time

D

num

120

Time after which to report an active job as stalled

stop_on_abort

D

bool

true

Stop processing queue when print filter aborts.

stty

D

str

NULL

stty settings for serial connected printer

suspend_of_filter

D

bool

true

suspend OF filter and restart. If false, close filter

and start new one for each activity.

sv

D

str

NULL

names of servers for queue (with ss)

syslog_device

D

str

/dev/console

name of syslog device to use if no syslog facility

tc

A

str

NULL

reference to a printcap entry to include as part of

the current entry.

tf

D

str

NULL

troff data filter (C/A/T phototypesetter)

tr

D

str

NULL

trailer string to print when queue empties

translate_format

D

str

NULL

translate job format (similar to tr(1) utility)

on outgoing jobs.

Example: translate_format=pfml

p format changed to f, m format to l

translate_incoming_format

D

str

NULL

translate job format (similar to tr(1) utility)

on incoming jobs. See translate_format.

use_date

A

bool

true add date line (’D’) to control file

use_identifier

R

bool

true

add job identifier lines (’A’) in the control file

use_info_cache

D

bool

true

cache printcap information

use_shorthost

R

bool

false

use only the hostname for job control

and data file names. Host information in job file

will still be fully qualified domain name.

user

D

str

daemon

LPD effective user (EUID) for SUID operations

wait_for_eof

D

bool

true

wait for EOF on input when readable IO device,

do not close immediately at job end.

vf

D

str

NULL

(Versatek) raster image filter

ENTRIES BY FUNCTION

See the alphabetical listing for detailed information.

Filters and Page Formats

Xf

D

str

NULL

output filter for format X (used by lpd)

’filter’ sets default filter

cf

D

str

NULL

cifplot data filter

control_filter

D

str

NULL

Filter for control file. Used when sending job to remote

spool queue.

df

D

str

NULL

tex data filter (DVI format)

direct_read

D

bool

false

if true, filters are given direct access to file.

This means no progress indication possible.

fx

A

str

NULL

valid output filter formats

i.e. ’’flp’’ would allow f, l, and p

default is to allow all formats

gf

D

str

NULL

graph data filter (plot (3X) format)

if

D

str

NULL

filter command, run on a per-file basis

lpd_bounce

R

bool

false

Forces lpd to filter jobs and then forward them.

(See Bounce Queues)

lpr_bounce

R

bool

false

Forces lpr to filter jobs and then send them.

(See Bounce Queues)

nf

D

str

NULL

DITROFF data filter

of

D

str

NULL

output filter, run once for all output

pl

D

num

66

page length (in lines)

pr

D

str

’’/bin/pr’’

pr program for p format

pw

D

num

132

page width (in characters)

px

D

num

0

page width in pixels (horizontal)

py

D

num

0

page length in pixels (vertical)

rf

D

str

NULL

filter for printing FORTRAN style text files

translate_format

D

str

NULL

translate job format (similar to tr(1) utility)

only valid when transferring to remote spool queue.

Example: translate_format=pfml

p format changed to f, m format to l

tf

D

str

NULL

troff data filter (C/A/T phototypesetter)

vf

D

str

NULL

(Versatek) raster image filter

Banners

ab

D

bool

false

always print banner, ignore lpr -h option

be

D

str

banner printing program for end (overrides bp, hl)

bp

D

str

banner printing program (use hl to print banner at end)

bs

D

str

banner printing program for start (overrides bp, hl)

hl

D

bool

false

print banner after job instead of before

sb

D

bool

false

short banner (one line only)

sh

D

bool

false

suppress headers and/or banner page, overrides ab

Accounting

ae

D

str

accounting format for end of job or a program to run

to record accounting information (see also af, la, ar

and Accounting).

af

D

str

NULL

name of accounting file (see also la, ar)

ar

D

bool

true

write remote transfer accounting (if af, and as/ae set)

as

D

str

accounting format for start of job or a program to run

to record accounting information (see also af, la, ar

and Accounting).

la

D

bool

true

write local printer accounting (if af is set)

Queue control

ah

D

bool

false

auto-hold - job held until explicitly released

bk

R

bool

false

backwards-compatible: be strictly RFC-compliant

bkf

R

bool

false

backwards-compatible filter: use Berkeley filter options

bqfilter

D

bool

false

if a bounce queue (sends jobs to remote site)

then when bqfilter true and a format filter is specified,

sends data files through format filter before transfer.

See also ’qq’.

cd

D

str

NULL

control information directory for LPD server

cm

A

str

NULL

comment identifying printer (LPQ)

fd

D

bool

false

if true, no forwarded jobs accepted

lf

D

str

’’log’’

error and debugging log file (LPD)

longnumber

D

bool

false

use 6 digit job numbers

mc

R

num

1

maximum copies allowed

ml

R

num

32

minimum printable characters for printable check

minfree

D

str

0

minimum space (Kb) to be left in spool filesystem

You can also use nnnM for nnn megabytes.

mx

R

num

0

maximum job size (1Kb blocks, 0 = unlimited)

ps

A

str

’’status’’

printer status file name

nw

A

bool

false

spool dir is on an NFS file system

(take precautions when reading/writing files)

qq

A

bool

false

place queue information in control file. See

alphabetical for details.

rm

A

str

NULL

remote-queue machine (hostname) (with rp)

rp

A

str

NULL

remote-queue printer name (with rm)

sd

A

str

NULL

spool directory (only ONE printer per directory!)

ss

D

str

NULL

name of queue that server serves (with sv)

sv

D

str

NULL

names of servers for queue (with ss)

sc

R

bool

false

suppress multiple copies

use_auth

A

str

NULL authentication to use

use_date

A

bool

true add date line (’D’) to control file

use_identifier

R

bool

true

add job identifier lines (’A’) in the control file

use_shorthost

R

bool

false

use only the hostname for job control

and data file names. Host information in job file

will still be fully qualified domain name.

Connection and Interface to Printer

db

A

num

0

debug level when using this printer

connect_interval

A

num

10

time between open or connection attempts

connect_timeout

A

num

10

timeout value for connection or open

(0 is infinite number)

ff

D

str

’’\f’’

string to send for a form feed (see INITIALIZATION)

fo

D

bool

false

print a form feed when device is opened

fq

D

bool

false

print a form feed when device is closed

ld

D

str

NULL

leader string printed on printer open (see INITIALIZATION)

lp

D

str

NULL

device name or pipe to send output to

lk

D

bool

false

lock the lp device to force arbitration

max_connect_interval

A

num

60

maximum time between connection attempts

nb

D

num

0

if non-zero, do a nonblocking open on lp device

retry_econnrefused

A

bool

true

if set, retry a connection to a remote system when an

ECONNREFUSED error is returned.

retry_nolink

D

bool

true

if LPD is sending a job or opening a device for

printing and the value is true, then the connection or

device open is repeated indefinately.

rs

D

num

300

number of seconds between spool queue status scans

rt

D

num

3

number of times to try printing (0=infinite).

rw

D

bool

false

open the printer for reading and writing

save_on_error

D

bool

false

See above.

save_when_done

D

bool

false

See above.

send_failure_action

D

str

remove

See above.

send_try

alias for rt

sf

D

bool

true

suppress form feed separators between job files

socket_linger

A

num

10

if nonzero, forces a SO_LINGER operation to be done

on all TCP/IP connections. This usually corrects a problem

with missing last data transmissions to remote hosts.

tr

D

str

NULL

trailer string to print when queue empties

Serial Line Setup

br

D

num

none

if lp is a tty, set the baud rate (see ty)

sttyy

D

str

NULL

stty commands to set output line characteristics

alias is sy, ms

xs

D

num

0

like ’xc’ but set bits (see STTY)

Miscellaneous

all

A

str

NULL

a list of all printers; (see ALL PRINTERS)

destinations

D

str

NULL

names of printers that lpq/lprm should talk to find

a job that has been processed by a router script

(see README.routing)

forward_auth

D

str

NULL

server to server authentication type, e.g. pgp, kerberos

force_localhost

A

bool

FALSE

Forces the clients programs (lpr, lpc, etc.)

to send all print jobs and requests to the server running

on the localhost entry for action. This flag effectively

forces BSD LPR behaviour.

force_queuename

A

str

NULL

See above.

logger_destination

D

str

NULL

destination for logging information. Format is

host[%port][,(TCP|UDP)]

oh

D

str

NULL

Specific printcap entry for host. See above.

remote_support

A

str

RMQC

if non-null, specifies allowed operations to remote queue.

R=lpr, M=lprm, Q=lpq, C=lpc

router

D

str

NULL

script that dynamically re-routes a job

(see README.routing)

server

A

bool

false

printcap entry for server only

server_auth_command

D

str

NULL

authentication command for server to use.

tc

A

str

NULL

reference to a printcap entry to include as part of

the current entry.

use_auth

D

str

NULL

client to server authentication type, e.g. pgp, kerberos

user_auth_command

R

str

NULL

authentication command for user (client program)

FILTERS

By convention, all output filter names have the form Xf, where X is the lower case letter corresponding to the lpr formatting option. The filter option can specify a default filter for job files.

The of filter is started for each job and is used to print the banner page and any FF separators between individual files of the job. It is sent a special stop sequence by the lpd server, and must suspend operations until sent a SIGCONT signal. A file or job filter is run separately for each file; at the end of the job the of filter is restarted and used to print the trailing banner (if any) and FF separators.

Filters are invoked with a standard set of options defined by the bk_filter_options (backwards compatible), bk_of_filter_options (backwards compatible OF filter), and filter_options configuration variables. See the lpd(8) manual page for details. If the first characters of the filter specification are -$, i.e.- Xf=-$ filter, then the command line options are not added. Currently, the options are:
bk_filter_options $P $w $l $x $y $F $c $L $i $J $C $0n $0h $-a
bk_of_filter_options $w $l $x $y
filter_options $C $F $H $J $L $P $Q $R $Z $a $c $d \
$e $f $h $i $j $k $l $n $s $w $x $y $-a

SPOOL QUEUES

Printcap entries which have a spool directory value (sd) are called spool queues. Jobs sent to a printer with a spool queue are place in the spool directory. When checking the spool queue for jobs, the server will check to see if there is a printcap file in the directory with the name printcap.host. If there is, the additional printcap information is processed and used by the server.

If the spool directory is NFS exported, then remote hosts can manipulate the spool entries directly; this can have catastrophic effects, especially in systems where the NFS implementation has defects. The printcap information is particularly vulnerable to exploitation, as well as symbolic links, jobs which cannot be removed, etc.

LOCAL PRINTERS

Local printers have an lp entry, which is the device that output should be sent to, usually a serial port tty. PLP supplements this by using the lp field to indicate a remote printer, or by allowing communication with the printer using a separate program, known as an lp-pipe, instead of a serial line. If the printcap lp entry contains a string of the form printer@host, jobs are forwarded to the specified remote printer on the host. If the printcap lp entry contains a string of the form | command args , the command command is run, with the arguments args . This can be used to communicate with printers connected to network terminal servers, some TCP/IP-capable printers, and just about anything you can hack up a communication program for. Read the PLP Manual for more details.

STTY OPTIONS

The stty printcap parameter recognises a set of stty(1) options that can be used to set serial line characteristics for the printer. However, due to the differences between implementations of UNIX, there are several sets of ty options supported. Invoke lpd(8) with the ’’-v’’ command-line option to see which set your installation is using.

Systems using the sgtty tty manipulation interface may use the following stty(1) options:

bs0

bs1

[-]cbreak

cooked

cr0

cr1

cr2

cr3

[-]decctlq

[-]echo

[-]even

ff0

ff1

[-]lcase

[-]litout

nl0

nl1

nl2

nl3

[-]nl

[-]noflsh

new

[-]nohang

old

[-]odd

[-]raw

start

stop

tab0

tab1

tab2

[-]tabs

[-]tandem

tek

ti700

[-]tilde

tn300

tty33

tty37

vt05

[-]evenp

[-]oddp

[-]pass8

Systems using termio may use the following options:

[-]ignbrk

[-]brkint

[-]ignpar

[-]parmrk

[-]inpck

[-]istrip

[-]inlcr

[-]igncr

[-]icrnl

[-]iuclc

[-]ixon

[-]ixany

[-]ixoff

[-]decctlq

[-]tandem

[-]imaxbel

[-]opost

[-]olcuc

[-]onlcr

[-]ocrnl

[-]onocr

[-]onlret

[-]ofill

[-]ofdel

[-]cstopb

[-]cread

[-]parenb

[-]parodd

[-]hupcl

[-]clocal

[-]loblk

[-]parity

[-]evenp

[-]oddp

[-]stopb

[-]hup

[-]crtscts

[-]isig

[-]noisig

[-]icanon

[-]cbreak

[-]xcase

[-]echo

[-]echoe

[-]echok

[-]crterase

[-]lfkc

[-]echonl

[-]noflsh

[-]tostop

[-]echoctl

[-]ctlecho

[-]echoprt

[-]prterase

[-]echoke

[-]crtkill

[-]lcase

[-]nl

[-]litout

[-]pass8

[-]raw

[-]sane

[-]cooked

[-]nopost

fill

nl0

nl1

cr0

cr1

cr2

cr3

tab0

tab1

tab2

tab3

bs0

bs1

vt0

vt1

ff0

ff1

cs5

cs6

cs7

cs8

nul-fill

del-fill

-tabs

And systems using termios may use the following options:

[-]ignbrk

[-]brkint

[-]ignpar

[-]parmrk

[-]inpck

[-]istrip

[-]inlcr

[-]igncr

[-]icrnl

[-]iuclc

[-]ixon

[-]ixany

[-]ixoff

[-]imaxbel

[-]pass8

[-]opost

[-]olcuc

[-]onlcr

[-]ocrnl

[-]onocr

[-]onlret

[-]ofill

[-]ofdel

[-]tabs

nl0

nl1

cr0

cr1

cr2

cr3

tab0

tab1

tab2

tab3

bs0

bs1

vt0

vt1

ff0

ff1

cs5

cs6

cs7

cs8

[-]cstopb

[-]cread

[-]parenb

[-]parodd

[-]hupcl

[-]clocal

[-]crtscts

[-]evenp

[-]parity

[-]oddp

[-]pass8

[-]isig

[-]icanon

[-]xcase

[-]echo

[-]echoe

[-]echok

[-]echonl

[-]noflsh

[-]tostop

[-]iexten

[-]echoctl

[-]ctlecho

[-]echoprt

[-]prterase

[-]echoke

[-]crtkill

[-]flusho

[-]pendin

The fc , fs , xc , and xs printcap entries are obsolete, and if present with non-zero values will abort print job processing.

INITIALIZATION

Many printers require an initialization string to be sent to them in order to configure their operation. The leader (ld) and trailer (tr) strings are sent at the start and end of job processing. These strings are interpreted using the C language conventions for character representation: \nnn is replaced with a character with the value nnn, \n with a new line, \r with a carriage return, and so forth.

ALL PRINTERS

The LPRng software has the capability to use a remote database for obtaining printcap and other information. One of the difficulties arises when a list of all printers available is needed. By convention, the special printer name all is reserved for this information; the all field is a list of printers separated by spaces or punctuation. For example:

#all printers
all:all=lp1,lp2,lp3,lp4

®

ACCOUNTING

Accounting is done by writing information to an accounting file or TCP/IP connection specified by the af printcap entry. If the af value has the form host%port then a tcp socket is opened to the specified port on the remote host and all accounting information is sent on the socket. If the achk flag is set, then after the string specified by the as field has been sent then no output or a reply of the form ACCEPT will cause the job to be printed, HOLD will hold the job, REMOVE will remove the job, and ABORT will cause printing to be aborted.

The printcap as and ae specify the format of the accounting information sent at the start and end of job printing respectively, or filters to be used to generate and/or report accounting information. If as and ae specify filters, the filters are run with STDIN set to /dev/null and the filter should write information to its STDOUT. The filters are passed the command line options specified by the filter_options configuration variable (see lpd.conf(5)), and |-$ filter will suppress adding options. The as filter should exit with 0 (JSUCC) status if successful and the job can be printed, nonzero status JABORT for abnormal queue termination, JREMOVE if the job cannot be printed, and JRETRY if the job should be retried. If the exit status is 0, then the filter’s STDOUT will be read and processed as described above. The filter’s STDERR output is logged as error messages.

BOUNCE QUEUES AND PRINT FORMATS

Bounce queues are designed to allow users to have their files preprocessed by a set of filters before being sent to the final destination. If a queue is being used as a bounce queue, then the lp printcap entry must be set to the name of the printer on the server, and the bq entry must be the destination after filtering. This will cause all jobs to be sent to the bounce queue, rather than directly to the final destination. For example, pr:lp=pr@host:bq=destpr@desthost.

An alternative method is to set the :lpd_bounce flag. This should only be done in server printcap entries.

The filters used by the bounce queue are those that would normally be used by the LPD server for printing a job. For example, the :if: entry would specify the filter for the f format. Each job file is processed individually. The lpr -p option will cause the LPD server to process job files by the program specified by the pr printcap entry (default is /bin/pr) and then pass through the if filter. However, if a bounce queue is used the format of the output data may be changed. To accomodate this action, the translate_format value can be used to reconfigure the format. The value has the form SdSdSd..., where S is the original format and d is the final format. This is similar to the format used by the UNIX tr(1) utility. For example, the value pfml would convert format specifications p to f and m to l, but only in the job information sent to a remote destination. Note that the original format would still be supplied to any filters, and that the p filter would need to provide any options and/or values to be used to do formatting.

The lpr_bounce printcap flag can be used to cause LPR to do bounce queue filtering, rather than the server. This should be used with caution, as missing filters can cause unexpected behaviour.

KERBEROS, PGP, AND OTHER AUTHENTICATION METHODS

LPRng supports built in kerberos authentication. To enable this, the LPD protocol has been extended to provide a way to transfer authenticated and/or encrypted jobs and commands. The details are covered in other LPRng documentation.

FILES

The files used by LPRng are set by values in the printer configuration file. The following are a commonly used set of default values.
/etc/lpd.conf LPRng configuration file

/etc/printcap

printer description file

/etc/lpd.perms

printer permissions

/var/spool/printer*

spool directories

/var/spool/printer*/printer

lock file for queue control

/var/spool/printer*/control.printer

queue control

/var/spool/printer*/active.printer

active job

/var/spool/printer*/log.printer

log file

SEE ALSO

lpd.conf(5), lpc(8), lpd(8), checkpc(8), lpr(1), lpq(1), lprm(1), lpd.perms(5), pr(1).

DIAGNOSTICS

Most of the diagnostics are self explanatory.
If you are puzzled over the exact cause of failure,
set the debugging level on (-D5) and run again.
The debugging information will
help you to pinpoint the exact cause of failure.

HISTORY

LPRng is a enhanced printer spooler system with functionality similar to the Berkeley LPR software. The LPRng mailing list is lprng@lprng.com; subscribe by sending mail to lprng-request@lprng.com with the word subscribe in the body. The software is available from ftp://ftp.astart.com/pub/LPRng.

AUTHOR

Patrick Powell <papowell@lprng.com>.



printcap(5)