 |
Index for Section 3 |
|
 |
Alphabetical listing for G |
|
getprlpnam(3)
NAME
getprlpnam, putprlpnam - Manipulate printer control database entry
(Enhanced Security)
LIBRARY
Security Library - libsecurity.a
SYNOPSIS
#include <sys/types.h>
#include <sys/security.h>
#include <prot.h>
struct pr_lp *getprlpnam (
char *name );
int putprlpnam (
char *name,
struct pr_lp *pr );
PARAMETERS
name Specifies a printer control database entry name.
pr Specifies a printer control database entry structure.
DESCRIPTION
The getprlpnam() function returns a pointer to an object with the following
structure containing the broken-out fields of a line in the printer control
database. Each line in the database contains a pr_lp structure, declared
in the prot.h header file as follows:
/* Printer Control Database Entry */
struct l_field {
char fd_name[15]; /* holds printer name */
char fd_initseq[256];/* initial sequence */
char fd_termseq[256];/* termination sequence */
char fd_emph[256]; /* emphasize sequence */
char fd_deemph[256]; /* de-emphasize sequence */
char fd_chrs[130]; /* characters to filter */
ushort fd_chrslen; /* length of string of illegal chars */
char fd_escs[256]; /* escape sequences */
ushort fd_escslen; /* length of string: illegal escapes */
int fd_linelen; /* length of a line in characters */
int fd_pagelen; /* length of a page in lines */
char fd_truncline; /* printer truncates long lines? */
};
struct l_flag {
unsigned short
fg_name:1, /* Is fd_name set? */
fg_initseq:1, /* Is fd_initseq set? */
fg_termseq:1, /* Is fd_termseq set? */
fg_emph:1, /* Is fd_emph set? */
fg_deemph:1, /* Is fd_deemph set? */
fg_chrs:1, /* Is fd_chrs set? */
fg_chrslen:1, /* Is fd_chrslen set? */
fg_escs:1, /* Is fd_escs set? */
fg_escslen:1, /* Is fd_escslen set? */
fg_linelen:1, /* Is fd_linelen set? */
fg_pagelen:1, /* Is fd_pagelen set? */
fg_truncline:1 /* Is fd_truncline set? */
;
};
struct pr_lp {
struct l_field ufld;
struct l_flag uflg;
struct l_field sfld;
struct l_flag sflg;
};
The getprlpnam() function searches from the beginning of the database until
a printer name matching name is found, and returns a pointer to the
particular structure in which it was found. If an end-of-file or an error
is encountered on reading, the function returns a null pointer.
The putprlpnam() function puts a new or replaced printer control entry pr
with key name into the database. If the uflg.fg_name field is 0, the
requested entry is deleted from the printer control database. The
putprlpnam() function locks the database for all update operations, and
performs a endprlpent() after the update or failed attempt.
For ASCII printers, the fields in the printer control database contain the
characteristics of the printer so the trusted line printer subsystem can
apply labels to the top and bottom of printed pages.
The ufld.fd_name field matches the printer model, supplied by the line
printer scheduler to the lprcat program to access the appropriate entry in
this database. The ufld.fd_initseq field is a null-terminated string
containing the initialization sequence for the printer; it is sent by line
printer software at the start of each job.
Similarly, ufld.fd_termseq contains a null-terminated string, which is sent
to the printer when each job is complete. The size of the printed page is
specified in ufld.fd_linelen (width) and ufld.fd_pagelen (height). These
values are expressed in characters for dot matrix printers, and points
(1/72 inch) for laser printers. Other values are used for character
filtering (supported only on dot matrix printers).
The ufld.fd_emph field is a null-terminated character string that causes
the printer to begin emphasizing characters printed. Similarly,
ufld.fd_deemph is a null-terminated character string that resumes normal
printing. The ufld.fd_chrs array is a list of characters that is
automatically filtered out by the line printer software because it causes
carriage motion that would cause the line printer software to lose its
place on the page. The length of this array is ufld.fd_chrslen.
The ufld.fd_escs string contains characters that cause carriage motion
after an escape character (ASCII \033). The ufld.fd_truncline Boolean
indicator specifies whether the printer truncates lines when they are too
long. This allows the printer software to keep track of the logical line
printed.
NOTES
All information is contained in a static area, so it must be copied if it
is to be saved. Specifically, specifying a buffer returned to putprlpnam()
does not perform the intended action.
Programs using this functions must be compiled with -lsecurity.
RETURN VALUES
A null pointer is returned on EOF or error.
FILES
/etc/auth/system/lps.*
Line printer subsystem configuration file.
/usr/include/prot.h
General security databases file.
RELATED INFORMATION
Functions: getprpwent(3), getprtcent(3), getprdfent(3)
Security