background image
X Version 11
Release 6.4
X Print Service Extension Library
23
2.2.10 Getting Printer Lists
Use
XpGetPrinterList to retrieve a list of all printers supported on an X Print Server.
XPPrinterList XpGetPrinterList (display, printer_name, list_count_return)
Display *display;
char *printer_name;
int *list_count_return;
display
Specifies a pointer to the Display structure; returned from XOpenDisplay.
printer_name
Specifies the name of the printer for which information is desired. If
NULL, then
information is returned for all printers associated with the server.
list_count_return Returns the number of printers in the list.
XpGetPrinterList returns a list of printer records where each record describes a printer supported by the X
Print Server,
or
NULL if any errors occur.
If printer_name is
NULL, then a list of all printers supported is returned. If printer_name is non-NULL, only
print records matching printer_name are returned, and if no records match printer_name, then
NULL is
returned.
printer_name is a COMPOUND_TEXT string, and the name and desc fields in the returned list will be in
COMPOUND_TEXT (note, ISO 8859-1 (Latin-1) is a proper subset of COMPOUND_TEXT, so can be
used directly). If printer_name is in a code-set that the X Print Server cannot convert (into its operating code-
set), then the X Print Server may fail to locate the requested printer. If printer_name is
NULL, then all printer
names, regardless of their code-set, can be returned, leaving the task of specific printer recognition up to the
caller.
When
XpGetPrinterList is called, the caller's locale (see XpSetLocaleHinter) is included in the request as a
"hint" to the X Print Server. If supported by the implementation, the X Print Server will use the hint to locate
a localized description for each printer in the list. If the X Print Server cannot understand the hint, the X
Print Server
will choose a default.
The returned printer list can be freed by calling
XpFreePrinterList.
The XPPrinterList structure defined in <X11/extensions/Print.h> contains:
typedef struct {
char *name; /* name */
char *desc; /* localized description */
} XPPrinterRec, *XPPrinterList;
XpGetPrinterList can generate a BadAlloc error.
XpFreePrinterList should be used to free a printer list.
void XpFreePrinterList (printer_list)
XPPrinterList printer_list;
printer_list
A list of printer records returned by
XpGetPrinterList.
XpFreePrinterList frees the list of printer records returned by XpGetPrinterList.
Use
XpRehashPrinterList to recompute the list of available printers.
void XpRehashPrinterList (display)