X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=doc%2Fhelp%2Fapi-cups.html;h=7967e082addcbcfa458a3677d1cc869a21790545;hb=82f972324ddde683be8a6d302f9937532ab0cf81;hp=42ffa2d1cb9eb2fd8ec4ab8c493bc5a7308e5d75;hpb=f7faf1f5c3235dfa4f883522da7dc6446f028247;p=thirdparty%2Fcups.git diff --git a/doc/help/api-cups.html b/doc/help/api-cups.html index 42ffa2d1c..7967e082a 100644 --- a/doc/help/api-cups.html +++ b/doc/help/api-cups.html @@ -1,1413 +1,2512 @@ - + - CUPS API - - - + CUPS API + + + + +
+ + +

CUPS API

+ +
+ + + + + + + + + + + + + + + + +
Headercups/cups.h
Library-lcups
See AlsoProgramming: Introduction to CUPS Programming
+ Programming: Array API
+ Programming: File and Directory APIs
+ Programming: Filter and Backend Programming
+ Programming: HTTP and IPP APIs
+ Programming: PPD API
+ Programming: Raster API
+

Contents

+ -

Introduction

+

Overview

+ +

The CUPS API provides the convenience functions needed to support +applications, filters, printer drivers, and backends that need to interface +with the CUPS scheduler.

-

The CUPS library provides a whole collection of interfaces -needed to support the internal needs of the CUPS software as well -as the needs of applications, filters, printer drivers, and -backends.

+

Clients and Servers

-

Unlike the rest of CUPS, the CUPS API library is provided -under the GNU Library General Public License. This means that you -can use the CUPS API library in both proprietary and open-source -programs.

+

CUPS is based on the Internet Printing Protocol ("IPP"), which allows +clients (applications) to communicate with a server (the scheduler) to get a +list of printers, send print jobs, and so forth. You identify which server +you want to communicate with using a pointer to the opaque structure +http_t. All of the examples in this document use the +CUPS_HTTP_DEFAULT constant, referring to the default connection +to the scheduler. The HTTP and IPP +APIs document provides more information on server connections.

-

General Usage

+

Printers and Classes

-

The <cups/cups.h> header file must be included to -use the CUPS functions.

+

Printers and classes (collections of printers) are accessed through +the cups_dest_t structure which +includes the name (name), instance (instance - +a way of selecting certain saved options/settings), and the options and +attributes associated with that destination (num_options and +options). Destinations are created using the +cupsGetDests function and freed +using the cupsFreeDests function. +The cupsGetDest function finds a +specific destination for printing:

-

Programs using these functions must be linked to the CUPS -library: libcups.a, libcups.so.2, -libcups.2.dylib, libcups_s.a, or -libcups2.lib depending on the platform. The following -command compiles myprogram.c using GCC and the CUPS -library:

+
+#include <cups/cups.h>
 
-
-gcc -o myprogram myprogram.c -lcups
+cups_dest_t *dests;
+int num_dests = cupsGetDests(&dests);
+cups_dest_t *dest = cupsGetDest("name", NULL, num_dests, dests);
+
+/* do something wiith dest */
+
+cupsFreeDests(num_dests, dests);
 
-

Compatibility

+

Passing NULL to +cupsGetDest for the destination name +will return the default destination. Similarly, passing a NULL +instance will return the default instance for that destination.

-

Unless otherwise specified, the CUPS API functions require -CUPS 1.1 or higher.

-

Contents

- - -

Enumerations

- - -

cups_ptype_e

-

Description

-

Not a typedef'd enum so we can OR

-

Values

-
- +
NameDescription
+ + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1: Printer Attributes
Attribute NameDescription
CUPS_PRINTER_AUTHENTICATED  CUPS 1.2 Printer requires authentication
CUPS_PRINTER_BIND Can bind output
CUPS_PRINTER_BW Can do B&W printing
CUPS_PRINTER_CLASS Printer class
CUPS_PRINTER_COLLATE Can collage copies
CUPS_PRINTER_COLOR Can do color printing
CUPS_PRINTER_COMMANDS  CUPS 1.2 Printer supports maintenance commands
CUPS_PRINTER_COPIES Can do copies
CUPS_PRINTER_COVER Can cover output
CUPS_PRINTER_DEFAULT Default printer on network
CUPS_PRINTER_DELETE  CUPS 1.2 Delete printer
CUPS_PRINTER_DUPLEX Can do duplexing
CUPS_PRINTER_FAX Fax queue
CUPS_PRINTER_IMPLICIT Implicit class
CUPS_PRINTER_LARGE Can do D/E/A1/A0
CUPS_PRINTER_LOCAL Local printer or class
CUPS_PRINTER_MEDIUM Can do Tabloid/B/C/A3/A2
CUPS_PRINTER_NOT_SHARED  CUPS 1.2 Printer is not shared
CUPS_PRINTER_OPTIONS ~(CLASS | REMOTE | IMPLICIT)
CUPS_PRINTER_PUNCH Can punch output
CUPS_PRINTER_REJECTING Printer is rejecting jobs
CUPS_PRINTER_REMOTE Remote printer or class
CUPS_PRINTER_SMALL Can do Letter/Legal/A4
CUPS_PRINTER_SORT Can sort output
CUPS_PRINTER_STAPLE Can staple output
CUPS_PRINTER_VARIABLE Can do variable sizes
- -

Functions

- - -

cupsAddDest()

-

Description

-

Add a destination to the list of destinations. - -Use the cupsSaveDests() function to save the updated list of destinations -to the user's lpoptions file.

-

Syntax

-
-int
-cupsAddDest(
-    const char * name,
-    const char * instance,
-    int num_dests,
-    cups_dest_t ** dests);
+
+	"auth-info-required"
+	The type of authentication required for printing to this
+	destination: "none", "username,password", "domain,username,password",
+	or "negotiate" (Kerberos)
+
+
+	"printer-info"
+	The human-readable description of the destination such as "My
+	Laser Printer".
+
+
+	"printer-is-accepting-jobs"
+	"true" if the destination is accepting new jobs, "false" if
+	not.
+
+
+	"printer-is-shared"
+	"true" if the destination is being shared with other computers,
+	"false" if not.
+
+
+	"printer-location"
+	The human-readable location of the destination such as "Lab 4".
+
+
+	"printer-make-and-model"
+	The human-readable make and model of the destination such as "HP
+	LaserJet 4000 Series".
+
+
+	"printer-state"
+	"3" if the destination is idle, "4" if the destination is printing
+	a job, and "5" if the destination is stopped.
+
+
+	"printer-state-change-time"
+	The UNIX time when the destination entered the current state.
+
+
+	"printer-state-reasons"
+	Additional comma-delimited state keywords for the destination
+	such as "media-tray-empty-error" and "toner-low-warning".
+
+
+	"printer-type"
+	The cups_printer_t
+	value associated with the destination.
+
+
+
+ +

Options

+ +

Options are stored in arrays of +cups_option_t structures. Each +option has a name (name) and value (value) +associated with it. The cups_dest_t +num_options and options members contain the +default options for a particular destination, along with several informational +attributes about the destination as shown in Table 1. +The cupsGetOption function gets +the value for the named option. For example, the following code lists the +available destinations and their human-readable descriptions:

+ +
+#include <cups/cups.h>
+
+cups_dest_t *dests;
+int num_dests = cupsGetDests(&dests);
+cups_dest_t *dest;
+int i;
+const char *value;
+
+for (i = num_dests, dest = dests; i > 0; i --, dest ++)
+  if (dest->instance == NULL)
+  {
+    value = cupsGetOption("printer-info", dest->num_options, dest->options);
+    printf("%s (%s)\n", dest->name, value ? value : "no description");
+  }
+
+cupsFreeDests(num_dests, dests);
 
-

Arguments

-
- - - - - - -
NameDescription
nameName of destination
instanceInstance of destination or NULL for none/primary
num_destsNumber of destinations
destsDestinations
-

Returns

-

New number of destinations

- -

cupsAddOption()

-

Description

-

Add an option to an option array.

-

Syntax

-
-int
-cupsAddOption(
-    const char * name,
-    const char * value,
-    int num_options,
-    cups_option_t ** options);
+
+

You can create your own option arrays using the +cupsAddOption function, which +adds a single named option to an array:

+ +
+#include <cups/cups.h>
+
+int num_options = 0;
+cups_option_t *options = NULL;
+
+/* The returned num_options value is updated as needed */
+num_options = cupsAddOption("first", "value", num_options, &options);
+
+/* This adds a second option value */
+num_options = cupsAddOption("second", "value", num_options, &options);
+
+/* This replaces the first option we added */
+num_options = cupsAddOption("first", "new value", num_options, &options);
 
-

Arguments

-
- - - - - - -
NameDescription
nameName of option
valueValue of option
num_optionsNumber of options
optionsPointer to options
-

Returns

-

Number of options

- -

cupsCancelJob()

-

Description

-

Cancel a print job on the default server. - -Use the cupsLastError() and cupsLastErrorString() functions to get -the cause of any failure.

-

Syntax

-
-int
-cupsCancelJob(
-    const char * name,
-    int job);
+
+

Use a for loop to copy the options from a destination:

+ +
+#include <cups/cups.h>
+
+int i;
+int num_options = 0;
+cups_option_t *options = NULL;
+cups_dest_t *dest;
+
+for (i = 0; i < dest->num_options; i ++)
+  num_options = cupsAddOption(dest->options[i].name, dest->options[i].value,
+                              num_options, &options);
 
-

Arguments

-
- - - - -
NameDescription
nameName of printer or class
jobJob ID
-

Returns

-

1 on success, 0 on failure

- -

cupsEncryption()

-

Description

-

Get the default encryption settings. - -The default encryption setting comes from the CUPS_ENCRYPTION -environment variable, then the ~/.cupsrc file, and finally the -/etc/cups/client.conf file. If not set, the default is -HTTP_ENCRYPT_IF_REQUESTED.

-

Syntax

-
-http_encryption_t
-cupsEncryption(void);
+
+

Use the cupsFreeOptions +function to free the options array when you are done using it:

+ +
+cupsFreeOptions(num_options, options);
 
-

Arguments

-

None.

-

Returns

-

Encryption settings

- -

cupsFreeDests()

-

Description

-

Free the memory used by the list of destinations.

-

Syntax

-
-void
-cupsFreeDests(
-    int num_dests,
-    cups_dest_t * dests);
+
+

Print Jobs

+ +

Print jobs are identified by a locally-unique job ID number from 1 to +231-1 and have options and one or more files for printing to a +single destination. The cupsPrintFile +function creates a new job with one file. The following code prints the CUPS +test page file:

+ +
+#include <cups/cups.h>
+
+cups_dest_t *dest;
+int num_options;
+cups_option_t *options;
+int job_id;
+
+/* Print a single file */
+job_id = cupsPrintFile(dest->name, "/usr/share/cups/data/testprint.ps",
+                        "Test Print", num_options, options);
 
-

Arguments

-
- - - - -
NameDescription
num_destsNumber of destinations
destsDestinations
-

Returns

-

Nothing.

- -

cupsFreeJobs()

-

Description

-

Free memory used by job data.

-

Syntax

-
-void
-cupsFreeJobs(
-    int num_jobs,
-    cups_job_t * jobs);
+
+

The cupsPrintFiles function +creates a job with multiple files. The files are provided in a +char * array:

+ +
+#include <cups/cups.h>
+
+cups_dest_t *dest;
+int num_options;
+cups_option_t *options;
+int job_id;
+char *files[3] = { "file1.pdf", "file2.pdf", "file3.pdf" };
+
+/* Print three files */
+job_id = cupsPrintFiles(dest->name, 3, files, "Test Print", num_options, options);
 
-

Arguments

-
- - - - -
NameDescription
num_jobsNumber of jobs
jobsJobs
-

Returns

-

Nothing.

- -

cupsFreeOptions()

-

Description

-

Free all memory used by options.

-

Syntax

-
-void
-cupsFreeOptions(
-    int num_options,
-    cups_option_t * options);
+
+

Finally, the cupsCreateJob +function creates a new job with no files in it. Files are added using the +cupsStartDocument, +cupsWriteRequestData, +and cupsFinishDocument functions. +The following example creates a job with 10 text files for printing:

+ +
+#include <cups/cups.h>
+
+cups_dest_t *dest;
+int num_options;
+cups_option_t *options;
+int job_id;
+int i;
+char buffer[1024];
+
+/* Create the job */
+job_id = cupsCreateJob(CUPS_HTTP_DEFAULT, dest->name, "10 Text Files",
+                       num_options, options);
+
+/* If the job is created, add 10 files */
+if (job_id > 0)
+{
+  for (i = 1; i <= 10; i ++)
+  {
+    snprintf(buffer, sizeof(buffer), "file%d.txt", i);
+
+    cupsStartDocument(CUPS_HTTP_DEFAULT, dest->name, job_id, buffer,
+                      CUPS_FORMAT_TEXT, i == 10);
+
+    snprintf(buffer, sizeof(buffer),
+             "File %d\n"
+             "\n"
+             "One fish,\n"
+             "Two fish,\n
+             "Red fish,\n
+             "Blue fish\n", i);
+
+    /* cupsWriteRequestData can be called as many times as needed */
+    cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer, strlen(buffer));
+
+    cupsFinishDocument(CUPS_HTTP_DEFAULT, dest->name);
+  }
+}
 
-

Arguments

-
- - - - -
NameDescription
num_optionsNumber of options
optionsPointer to options
-

Returns

-

Nothing.

- -

 DEPRECATED cupsGetClasses()

-

Description

-

Get a list of printer classes from the default server. - -This function is deprecated - use cupsGetDests() instead. -

-

Syntax

-
-int
-cupsGetClasses(
-    char *** classes);
+

Once you have created a job, you can monitor its status using the +cupsGetJobs function, which returns +an array of cups_job_t structures. +Each contains the job ID (id), destination name +(dest), title (title), and other information +associated with the job. The job array is freed using the +cupsFreeJobs function. The following +example monitors a specific job ID, showing the current job state once every +5 seconds until the job is completed:

+ +
+#include <cups/cups.h>
+
+cups_dest_t *dest;
+int job_id;
+int num_jobs;
+cups_job_t *jobs;
+int i;
+ipp_jstate_t job_state = IPP_JOB_PENDING;
+ 
+while (job_state < IPP_JOB_STOPPED)
+{
+  /* Get my jobs (1) with any state (-1) */
+  num_jobs = cupsGetJobs(&jobs, dest->name, 1, -1);
+
+  /* Loop to find my job */
+  job_state = IPP_JOB_COMPLETED;
+
+  for (i = 0; i < num_jobs; i ++)
+    if (jobs[i].id == job_id)
+    {
+      job_state = jobs[i].state;
+      break;
+    }
+
+  /* Free the job array */
+  cupsFreeJobs(num_jobs, jobs);
+
+  /* Show the current state */
+  switch (job_state)
+  {
+    case IPP_JOB_PENDING :
+        printf("Job %d is pending.\n", job_id);
+        break;
+    case IPP_JOB_HELD :
+        printf("Job %d is held.\n", job_id);
+        break;
+    case IPP_JOB_PROCESSING :
+        printf("Job %d is processing.\n", job_id);
+        break;
+    case IPP_JOB_STOPPED :
+        printf("Job %d is stopped.\n", job_id);
+        break;
+    case IPP_JOB_CANCELED :
+        printf("Job %d is canceled.\n", job_id);
+        break;
+    case IPP_JOB_ABORTED :
+        printf("Job %d is aborted.\n", job_id);
+        break;
+    case IPP_JOB_COMPLETED :
+        printf("Job %d is completed.\n", job_id);
+        break;
+  }
+
+  /* Sleep if the job is not finished */
+  if (job_state < IPP_JOB_STOPPED)
+    sleep(5);
+}
 
-

Arguments

-
- - - -
NameDescription
classesClasses
-

Returns

-

Number of classes

- -

cupsGetDefault()

-

Description

-

Get the default printer or class for the default server. - -This function returns the default printer or class as defined by -the LPDEST or PRINTER environment variables. If these environment -variables are not set, the server default destination is returned. -Applications should use the cupsGetDests() and cupsGetDest() functions -to get the user-defined default printer, as this function does not -support the lpoptions-defined default printer.

-

Syntax

-
+
+

To cancel a job, use the +cupsCancelJob function with the +job ID:

+ +
+#include <cups/cups.h>
+
+cups_dest_t *dest;
+int job_id;
+
+cupsCancelJob(dest->name, job_id);
+
+ +

Error Handling

+ +

If any of the CUPS API printing functions returns an error, the reason for +that error can be found by calling the +cupsLastError and +cupsLastErrorString functions. +cupsLastError returns the last IPP +error code +(ipp_status_t) +that was encountered, while +cupsLastErrorString returns +a (localized) human-readable string that can be shown to the user. For example, +if any of the job creation functions returns a job ID of 0, you can use +cupsLastErrorString to show +the reason why the job could not be created:

+ +
+#include <cups/cups.h>
+
+int job_id;
+
+if (job_id == 0)
+  puts(cupsLastErrorString());
+
+ +

Passwords and Authentication

+ +

CUPS supports authentication of any request, including submission of print +jobs. The default mechanism for getting the username and password is to use the +login user and a password from the console.

+ +

To support other types of applications, in particular Graphical User +Interfaces ("GUIs"), the CUPS API provides functions to set the default +username and to register a callback function that returns a password string.

+ +

The cupsSetPasswordCB +function is used to set a password callback in your program. Only one +function can be used at any time.

+ +

The cupsSetUser function sets the +current username for authentication. This function can be called by your +password callback function to change the current username as needed.

+ +

The following example shows a simple password callback that gets a +username and password from the user:

+ +
+#include <cups/cups.h>
+
 const char *
-cupsGetDefault(void);
+my_password_cb(const char *prompt)
+{
+  char	user[65];
+
+
+  puts(prompt);
+
+  /* Get a username from the user */
+  printf("Username: ");
+  if (fgets(user, sizeof(user), stdin) == NULL)
+    return (NULL);
+
+  /* Strip the newline from the string and set the user */
+  user[strlen(user) - 1] = '\0';
+
+  cupsSetUser(user);
+
+  /* Use getpass() to ask for the password... */
+  return (getpass("Password: "));
+}
+
+cupsSetPasswordCB(my_password_cb);
 
-

Arguments

-

None.

-

Returns

-

Default printer or NULL

- -

 CUPS 1.1.21 cupsGetDefault2()

-

Description

-

Get the default printer or class for the specified server. - -This function returns the default printer or class as defined by + +

Similarly, a GUI could display the prompt string in a window with input +fields for the username and password. The username should default to the +string returned by the cupsUser +function.

+

Functions

+

appleGetPaperSize

+

Get the default paper size.

+

+char *appleGetPaperSize (
+    char *name,
+    int namesize
+);

+

Parameters

+
+
name
+
Paper size name buffer
+
namesize
+
Size of buffer
+
+

Return Value

+

Default paper size

+

cupsAddDest

+

Add a destination to the list of destinations.

+

+int cupsAddDest (
+    const char *name,
+    const char *instance,
+    int num_dests,
+    cups_dest_t **dests
+);

+

Parameters

+
+
name
+
Destination name
+
instance
+
Instance name or NULL for none/primary
+
num_dests
+
Number of destinations
+
dests
+
Destinations
+
+

Return Value

+

New number of destinations

+

Discussion

+

This function cannot be used to add a new class or printer queue, +it only adds a new container of saved options for the named +destination or instance.
+
+If the named destination already exists, the destination list is +returned unchanged. Adding a new instance of a destination creates +a copy of that destination's options.
+
+Use the cupsSaveDests function to save the updated list of +destinations to the user's lpoptions file.

+

cupsAddOption

+

Add an option to an option array.

+

+int cupsAddOption (
+    const char *name,
+    const char *value,
+    int num_options,
+    cups_option_t **options
+);

+

Parameters

+
+
name
+
Name of option
+
value
+
Value of option
+
num_options
+
Number of options
+
options
+
Pointer to options
+
+

Return Value

+

Number of options

+

Discussion

+

New option arrays can be initialized simply by passing 0 for the +"num_options" parameter.

+

 CUPS 1.2/Mac OS X 10.5 cupsAdminCreateWindowsPPD

+

Create the Windows PPD file for a printer.

+

+char *cupsAdminCreateWindowsPPD (
+    http_t *http,
+    const char *dest,
+    char *buffer,
+    int bufsize
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
dest
+
Printer or class
+
buffer
+
Filename buffer
+
bufsize
+
Size of filename buffer
+
+

Return Value

+

PPD file or NULL

+

 CUPS 1.2/Mac OS X 10.5 cupsAdminExportSamba

+

Export a printer to Samba.

+

+int cupsAdminExportSamba (
+    const char *dest,
+    const char *ppd,
+    const char *samba_server,
+    const char *samba_user,
+    const char *samba_password,
+    FILE *logfile
+);

+

Parameters

+
+
dest
+
Destination to export
+
ppd
+
PPD file
+
samba_server
+
Samba server
+
samba_user
+
Samba username
+
samba_password
+
Samba password
+
logfile
+
Log file, if any
+
+

Return Value

+

1 on success, 0 on failure

+

 CUPS 1.3/Mac OS X 10.5 cupsAdminGetServerSettings

+

Get settings from the server.

+

+int cupsAdminGetServerSettings (
+    http_t *http,
+    int *num_settings,
+    cups_option_t **settings
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
num_settings
+
Number of settings
+
settings
+
Settings
+
+

Return Value

+

1 on success, 0 on failure

+

Discussion

+

The returned settings should be freed with cupsFreeOptions() when +you are done with them. + +

+

 CUPS 1.3/Mac OS X 10.5 cupsAdminSetServerSettings

+

Set settings on the server.

+

+int cupsAdminSetServerSettings (
+    http_t *http,
+    int num_settings,
+    cups_option_t *settings
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
num_settings
+
Number of settings
+
settings
+
Settings
+
+

Return Value

+

1 on success, 0 on failure

+

cupsCancelJob

+

Cancel a print job on the default server.

+

+int cupsCancelJob (
+    const char *name,
+    int job_id
+);

+

Parameters

+
+
name
+
Name of printer or class
+
job_id
+
Job ID, CUPS_JOBID_CURRENT for the current job, or CUPS_JOBID_ALL for all jobs
+
+

Return Value

+

1 on success, 0 on failure

+

Discussion

+

Pass CUPS_JOBID_ALL to cancel all jobs or CUPS_JOBID_CURRENT +to cancel the current job on the named destination.
+
+Use the cupsLastError and cupsLastErrorString functions to get +the cause of any failure.

+

 CUPS 1.4/Mac OS X 10.6 cupsCancelJob2

+

Cancel or purge a print job.

+

+ipp_status_t cupsCancelJob2 (
+    http_t *http,
+    const char *name,
+    int job_id,
+    int purge
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
name
+
Name of printer or class
+
job_id
+
Job ID, CUPS_JOBID_CURRENT for the current job, or CUPS_JOBID_ALL for all jobs
+
purge
+
1 to purge, 0 to cancel
+
+

Return Value

+

IPP status

+

Discussion

+

Canceled jobs remain in the job history while purged jobs are removed +from the job history.
+
+Pass CUPS_JOBID_ALL to cancel all jobs or CUPS_JOBID_CURRENT +to cancel the current job on the named destination.
+
+Use the cupsLastError and cupsLastErrorString functions to get +the cause of any failure. + +

+

 CUPS 1.4/Mac OS X 10.6 cupsCreateJob

+

Create an empty job for streaming.

+

+int cupsCreateJob (
+    http_t *http,
+    const char *name,
+    const char *title,
+    int num_options,
+    cups_option_t *options
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
name
+
Destination name
+
title
+
Title of job
+
num_options
+
Number of options
+
options
+
Options
+
+

Return Value

+

Job ID or 0 on error

+

Discussion

+

Use this function when you want to stream print data using the +cupsStartDocument, cupsWriteRequestData, and +cupsFinishDocument functions. If you have one or more files to +print, use the cupsPrintFile2 or cupsPrintFiles2 function +instead. + +

+

cupsEncryption

+

Get the current encryption settings.

+

+http_encryption_t cupsEncryption (void);

+

Return Value

+

Encryption settings

+

Discussion

+

The default encryption setting comes from the CUPS_ENCRYPTION +environment variable, then the ~/.cups/client.conf file, and finally the +/etc/cups/client.conf file. If not set, the default is +HTTP_ENCRYPT_IF_REQUESTED.
+
+Note: The current encryption setting is tracked separately for each thread +in a program. Multi-threaded programs that override the setting via the +cupsSetEncryption function need to do so in each thread for the same +setting to be used.

+

 CUPS 1.4/Mac OS X 10.6 cupsFinishDocument

+

Finish sending a document.

+

+ipp_status_t cupsFinishDocument (
+    http_t *http,
+    const char *name
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
name
+
Destination name
+
+

Return Value

+

Status of document submission

+

Discussion

+

The document must have been started using cupsStartDocument. + +

+

cupsFreeDests

+

Free the memory used by the list of destinations.

+

+void cupsFreeDests (
+    int num_dests,
+    cups_dest_t *dests
+);

+

Parameters

+
+
num_dests
+
Number of destinations
+
dests
+
Destinations
+
+

cupsFreeJobs

+

Free memory used by job data.

+

+void cupsFreeJobs (
+    int num_jobs,
+    cups_job_t *jobs
+);

+

Parameters

+
+
num_jobs
+
Number of jobs
+
jobs
+
Jobs
+
+

cupsFreeOptions

+

Free all memory used by options.

+

+void cupsFreeOptions (
+    int num_options,
+    cups_option_t *options
+);

+

Parameters

+
+
num_options
+
Number of options
+
options
+
Pointer to options
+
+

 DEPRECATED cupsGetClasses

+

Get a list of printer classes from the default server.

+

+int cupsGetClasses (
+    char ***classes
+);

+

Parameters

+
+
classes
+
Classes
+
+

Return Value

+

Number of classes

+

Discussion

+

This function is deprecated - use cupsGetDests instead. + +

+

cupsGetDefault

+

Get the default printer or class for the default server.

+

+const char *cupsGetDefault (void);

+

Return Value

+

Default printer or NULL

+

Discussion

+

This function returns the default printer or class as defined by the LPDEST or PRINTER environment variables. If these environment variables are not set, the server default destination is returned. -Applications should use the cupsGetDests() and cupsGetDest() functions -to get the user-defined default printer, as this function does not -support the lpoptions-defined default printer. +Applications should use the cupsGetDests and cupsGetDest +functions to get the user-defined default printer, as this function does +not support the lpoptions-defined default printer.

+

 CUPS 1.1.21/Mac OS X 10.4 cupsGetDefault2

+

Get the default printer or class for the specified server.

+

+const char *cupsGetDefault2 (
+    http_t *http
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
+

Return Value

+

Default printer or NULL

+

Discussion

+

This function returns the default printer or class as defined by +the LPDEST or PRINTER environment variables. If these environment +variables are not set, the server default destination is returned. +Applications should use the cupsGetDests and cupsGetDest +functions to get the user-defined default printer, as this function does +not support the lpoptions-defined default printer.

-

Syntax

-
-const char *
-cupsGetDefault2(
-    http_t * http);
-
-

Arguments

-
- - - -
NameDescription
httpHTTP connection
-

Returns

-

Default printer or NULL

- -

cupsGetDest()

-

Description

-

Get the named destination from the list. - -Use the cupsGetDests() or cupsGetDests2() functions to get a +

cupsGetDest

+

Get the named destination from the list.

+

+cups_dest_t *cupsGetDest (
+    const char *name,
+    const char *instance,
+    int num_dests,
+    cups_dest_t *dests
+);

+

Parameters

+
+
name
+
Destination name or NULL for the default destination
+
instance
+
Instance name or NULL
+
num_dests
+
Number of destinations
+
dests
+
Destinations
+
+

Return Value

+

Destination pointer or NULL

+

Discussion

+

Use the cupsGetDests or cupsGetDests2 functions to get a list of supported destinations for the current user.

-

Syntax

-
-cups_dest_t *
-cupsGetDest(
-    const char * name,
-    const char * instance,
-    int num_dests,
-    cups_dest_t * dests);
-
-

Arguments

-
- - - - - - -
NameDescription
nameName of destination
instanceInstance of destination
num_destsNumber of destinations
destsDestinations
-

Returns

-

Destination pointer or NULL

- -

cupsGetDests()

-

Description

-

Get the list of destinations from the default server. - -Starting with CUPS 1.2, the returned list of destinations include the +

cupsGetDests

+

Get the list of destinations from the default server.

+

+int cupsGetDests (
+    cups_dest_t **dests
+);

+

Parameters

+
+
dests
+
Destinations
+
+

Return Value

+

Number of destinations

+

Discussion

+

Starting with CUPS 1.2, the returned list of destinations include the printer-info, printer-is-accepting-jobs, printer-is-shared, printer-make-and-model, printer-state, printer-state-change-time, -printer-state-reasons, and printer-type attributes as options.

-

Syntax

-
-int
-cupsGetDests(
-    cups_dest_t ** dests);
-
-

Arguments

-
- - - -
NameDescription
destsDestinations
-

Returns

-

Number of destinations

- -

 CUPS 1.1.21 cupsGetDests2()

-

Description

-

Get the list of destinations from the specified server. - -Starting with CUPS 1.2, the returned list of destinations include the +printer-state-reasons, and printer-type attributes as options. CUPS 1.4 +adds the marker-change-time, marker-colors, marker-high-levels, +marker-levels, marker-low-levels, marker-message, marker-names, +marker-types, and printer-commands attributes as well.
+
+Use the cupsFreeDests function to free the destination list and +the cupsGetDest function to find a particular destination.

+

 CUPS 1.1.21/Mac OS X 10.4 cupsGetDests2

+

Get the list of destinations from the specified server.

+

+int cupsGetDests2 (
+    http_t *http,
+    cups_dest_t **dests
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
dests
+
Destinations
+
+

Return Value

+

Number of destinations

+

Discussion

+

Starting with CUPS 1.2, the returned list of destinations include the printer-info, printer-is-accepting-jobs, printer-is-shared, printer-make-and-model, printer-state, printer-state-change-time, -printer-state-reasons, and printer-type attributes as options. +printer-state-reasons, and printer-type attributes as options. CUPS 1.4 +adds the marker-change-time, marker-colors, marker-high-levels, +marker-levels, marker-low-levels, marker-message, marker-names, +marker-types, and printer-commands attributes as well.
+
+Use the cupsFreeDests function to free the destination list and +the cupsGetDest function to find a particular destination.

-

Syntax

-
-int
-cupsGetDests2(
-    http_t * http,
-    cups_dest_t ** dests);
-
-

Arguments

-
- - - - -
NameDescription
httpHTTP connection
destsDestinations
-

Returns

-

Number of destinations

- -

 CUPS 1.1.20 cupsGetFd()

-

Description

-

Get a file from the server. - -This function returns HTTP_OK when the file is successfully retrieved. +

cupsGetJobs

+

Get the jobs from the default server.

+

+int cupsGetJobs (
+    cups_job_t **jobs,
+    const char *name,
+    int myjobs,
+    int whichjobs
+);

+

Parameters

+
+
jobs
+
Job data
+
name
+
NULL = all destinations, otherwise show jobs for named destination
+
myjobs
+
0 = all users, 1 = mine
+
whichjobs
+
CUPS_WHICHJOBS_ALL, CUPS_WHICHJOBS_ACTIVE, or CUPS_WHICHJOBS_COMPLETED
+
+

Return Value

+

Number of jobs

+

Discussion

+

A "whichjobs" value of CUPS_WHICHJOBS_ALL returns all jobs regardless +of state, while CUPS_WHICHJOBS_ACTIVE returns jobs that are +pending, processing, or held and CUPS_WHICHJOBS_COMPLETED returns +jobs that are stopped, canceled, aborted, or completed.

+

 CUPS 1.1.21/Mac OS X 10.4 cupsGetJobs2

+

Get the jobs from the specified server.

+

+int cupsGetJobs2 (
+    http_t *http,
+    cups_job_t **jobs,
+    const char *name,
+    int myjobs,
+    int whichjobs
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
jobs
+
Job data
+
name
+
NULL = all destinations, otherwise show jobs for named destination
+
myjobs
+
0 = all users, 1 = mine
+
whichjobs
+
CUPS_WHICHJOBS_ALL, CUPS_WHICHJOBS_ACTIVE, or CUPS_WHICHJOBS_COMPLETED
+
+

Return Value

+

Number of jobs

+

Discussion

+

A "whichjobs" value of CUPS_WHICHJOBS_ALL returns all jobs regardless +of state, while CUPS_WHICHJOBS_ACTIVE returns jobs that are +pending, processing, or held and CUPS_WHICHJOBS_COMPLETED returns +jobs that are stopped, canceled, aborted, or completed.

-

Syntax

-
-http_status_t
-cupsGetFd(
-    http_t * http,
-    const char * resource,
-    int fd);
-
-

Arguments

-
- - - - - -
NameDescription
httpHTTP connection to server
resourceResource name
fdFile descriptor
-

Returns

-

HTTP status

- -

 CUPS 1.1.20 cupsGetFile()

-

Description

-

Get a file from the server. - -This function returns HTTP_OK when the file is successfully retrieved. +

 CUPS 1.4/Mac OS X 10.6 cupsGetNamedDest

+

Get options for the named destination.

+

+cups_dest_t *cupsGetNamedDest (
+    http_t *http,
+    const char *name,
+    const char *instance
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
name
+
Destination name or NULL for the default destination
+
instance
+
Instance name or NULL
+
+

Return Value

+

Destination or NULL

+

Discussion

+

This function is optimized for retrieving a single destination and should +be used instead of cupsGetDests and cupsGetDest when you either +know the name of the destination or want to print to the default destination. +If NULL is returned, the destination does not exist or there is no +default destination.
+
+If "http" is CUPS_HTTP_DEFAULT, the connection to the default print +server will be used.
+
+If "name" is NULL, the default printer for the current user will be +returned.
+
+The returned destination must be freed using cupsFreeDests with a +"num_dests" value of 1.

-

Syntax

-
-http_status_t
-cupsGetFile(
-    http_t * http,
-    const char * resource,
-    const char * filename);
-
-

Arguments

-
- - - - - -
NameDescription
httpHTTP connection to server
resourceResource name
filenameFilename
-

Returns

-

HTTP status

- -

cupsGetJobs()

-

Description

-

Get the jobs from the default server.

-

Syntax

-
-int
-cupsGetJobs(
-    cups_job_t ** jobs,
-    const char * mydest,
-    int myjobs,
-    int completed);
-
-

Arguments

-
- - - - - - -
NameDescription
jobsJob data
mydestNULL = all destinations, * -otherwise show jobs for mydest
myjobs0 = all users, 1 = mine
completed-1 = show all, 0 = active, * -1 = completed jobs
-

Returns

-

Number of jobs

- -

 CUPS 1.1.21 cupsGetJobs2()

-

Description

-

Get the jobs from the specified server. +

cupsGetOption

+

Get an option value.

+

+const char *cupsGetOption (
+    const char *name,
+    int num_options,
+    cups_option_t *options
+);

+

Parameters

+
+
name
+
Name of option
+
num_options
+
Number of options
+
options
+
Options
+
+

Return Value

+

Option value or NULL

+

cupsGetPPD

+

Get the PPD file for a printer on the default server.

+

+const char *cupsGetPPD (
+    const char *name
+);

+

Parameters

+
+
name
+
Destination name
+
+

Return Value

+

Filename for PPD file

+

Discussion

+

For classes, cupsGetPPD returns the PPD file for the first printer +in the class.
+
+The returned filename is stored in a static buffer and is overwritten with +each call to cupsGetPPD or cupsGetPPD2. The caller "owns" the +file that is created and must unlink the returned filename.

+

 CUPS 1.1.21/Mac OS X 10.4 cupsGetPPD2

+

Get the PPD file for a printer from the specified server.

+

+const char *cupsGetPPD2 (
+    http_t *http,
+    const char *name
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
name
+
Destination name
+
+

Return Value

+

Filename for PPD file

+

Discussion

+

For classes, cupsGetPPD2 returns the PPD file for the first printer +in the class.
+
+The returned filename is stored in a static buffer and is overwritten with +each call to cupsGetPPD or cupsGetPPD2. The caller "owns" the +file that is created and must unlink the returned filename.

-

Syntax

-
-int
-cupsGetJobs2(
-    http_t * http,
-    cups_job_t ** jobs,
-    const char * mydest,
-    int myjobs,
-    int completed);
-
-

Arguments

-
- - - - - - - -
NameDescription
httpHTTP connection
jobsJob data
mydestNULL = all destinations, * -otherwise show jobs for mydest
myjobs0 = all users, 1 = mine
completed-1 = show all, 0 = active, * -1 = completed jobs
-

Returns

-

Number of jobs

- -

cupsGetOption()

-

Description

-

Get an option value.

-

Syntax

-
-const char *
-cupsGetOption(
-    const char * name,
-    int num_options,
-    cups_option_t * options);
-
-

Arguments

-
- - - - - -
NameDescription
nameName of option
num_optionsNumber of options
optionsOptions
-

Returns

-

Option value or NULL

- -

cupsGetPPD()

-

Description

-

Get the PPD file for a printer on the default server. - -For classes, cupsGetPPD() returns the PPD file for the first printer -in the class.

-

Syntax

-
-const char *
-cupsGetPPD(
-    const char * name);
-
-

Arguments

-
- - - -
NameDescription
namePrinter name
-

Returns

-

Filename for PPD file

- -

 CUPS 1.1.21 cupsGetPPD2()

-

Description

-

Get the PPD file for a printer from the specified server. - -For classes, cupsGetPPD2() returns the PPD file for the first printer +

 CUPS 1.4/Mac OS X 10.6 cupsGetPPD3

+

Get the PPD file for a printer on the specified +server if it has changed.

+

+http_status_t cupsGetPPD3 (
+    http_t *http,
+    const char *name,
+    time_t *modtime,
+    char *buffer,
+    size_t bufsize
+);

+

Parameters

+
+
http
+
HTTP connection or CUPS_HTTP_DEFAULT
+
name
+
Destination name
+
modtime
+
Modification time
+
buffer
+
Filename buffer
+
bufsize
+
Size of filename buffer
+
+

Return Value

+

HTTP status

+

Discussion

+

The "modtime" parameter contains the modification time of any +locally-cached content and is updated with the time from the PPD file on +the server.
+
+The "buffer" parameter contains the local PPD filename. If it contains +the empty string, a new temporary file is created, otherwise the existing +file will be overwritten as needed. The caller "owns" the file that is +created and must unlink the returned filename.
+
+On success, HTTP_OK is returned for a new PPD file and +HTTP_NOT_MODIFIED if the existing PPD file is up-to-date. Any other +status is an error.
+
+For classes, cupsGetPPD3 returns the PPD file for the first printer in the class.

-

Syntax

-
-const char *
-cupsGetPPD2(
-    http_t * http,
-    const char * name);
-
-

Arguments

-
- - - - -
NameDescription
httpHTTP connection
namePrinter name
-

Returns

-

Filename for PPD file

- -

cupsGetPassword()

-

Description

-

Get a password from the user. - -Uses the current password callback function. Returns NULL if the -user does not provide a password.

-

Syntax

-
-const char *
-cupsGetPassword(
-    const char * prompt);
-
-

Arguments

-
- - - -
NameDescription
promptPrompt string
-

Returns

-

Password

- -

 DEPRECATED cupsGetPrinters()

-

Description

-

Get a list of printers from the default server. +

cupsGetPassword

+

Get a password from the user.

+

+const char *cupsGetPassword (
+    const char *prompt
+);

+

Parameters

+
+
prompt
+
Prompt string
+
+

Return Value

+

Password

+

Discussion

+

Uses the current password callback function. Returns NULL if the +user does not provide a password.
+
+Note: The current password callback function is tracked separately for each +thread in a program. Multi-threaded programs that override the setting via +the cupsSetPasswordCB or cupsSetPasswordCB2 functions need to +do so in each thread for the same function to be used.

+

 CUPS 1.4/Mac OS X 10.6 cupsGetPassword2

+

Get a password from the user using the advanced +password callback.

+

+const char *cupsGetPassword2 (
+    const char *prompt,
+    http_t *http,
+    const char *method,
+    const char *resource
+);

+

Parameters

+
+
prompt
+
Prompt string
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
method
+
Request method ("GET", "POST", "PUT")
+
resource
+
Resource path
+
+

Return Value

+

Password

+

Discussion

+

Uses the current password callback function. Returns NULL if the +user does not provide a password.
+
+Note: The current password callback function is tracked separately for each +thread in a program. Multi-threaded programs that override the setting via +the cupsSetPasswordCB or cupsSetPasswordCB2 functions need to +do so in each thread for the same function to be used. -This function is deprecated - use cupsGetDests() instead. +

+

 DEPRECATED cupsGetPrinters

+

Get a list of printers from the default server.

+

+int cupsGetPrinters (
+    char ***printers
+);

+

Parameters

+
+
printers
+
Printers
+
+

Return Value

+

Number of printers

+

Discussion

+

This function is deprecated - use cupsGetDests instead.

-

Syntax

-
-int
-cupsGetPrinters(
-    char *** printers);
-
-

Arguments

-
- - - -
NameDescription
printersPrinters
-

Returns

-

Number of printers

- -

cupsLangDefault()

-

Description

-

Return the default language.

-

Syntax

-
-cups_lang_t *
-cupsLangDefault(void);
-
-

Arguments

-

None.

-

Returns

-

Language data

- -

cupsLangEncoding()

-

Description

-

Return the character encoding (us-ascii, etc.) +

 CUPS 1.3/Mac OS X 10.5 cupsGetServerPPD

+

Get an available PPD file from the server.

+

+char *cupsGetServerPPD (
+    http_t *http,
+    const char *name
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
name
+
Name of PPD file ("ppd-name")
+
+

Return Value

+

Name of PPD file or NULL on error

+

Discussion

+

This function returns the named PPD file from the server. The +list of available PPDs is provided by the IPP CUPS_GET_PPDS +operation.
+
+You must remove (unlink) the PPD file when you are finished with +it. The PPD filename is stored in a static location that will be +overwritten on the next call to cupsGetPPD, cupsGetPPD2, +or cupsGetServerPPD. + +

+

cupsLangDefault

+

Return the default language.

+

+cups_lang_t *cupsLangDefault (void);

+

Return Value

+

Language data

+

cupsLangEncoding

+

Return the character encoding (us-ascii, etc.) for the given language.

-

Syntax

-
-const char *
-cupsLangEncoding(
-    cups_lang_t * lang);
-
-

Arguments

-
- - - -
NameDescription
langLanguage data
-

Returns

-

Character encoding

- -

cupsLangFlush()

-

Description

-

Flush all language data out of the cache.

-

Syntax

-
-void
-cupsLangFlush(void);
-
-

Arguments

-

None.

-

Returns

-

Nothing.

- -

cupsLangFree()

-

Description

-

Free language data. - -This does not actually free anything; use cupsLangFlush() for that.

-

Syntax

-
-void
-cupsLangFree(
-    cups_lang_t * lang);
-
-

Arguments

-
- - - -
NameDescription
langLanguage to free
-

Returns

-

Nothing.

- -

cupsLangGet()

-

Description

-

Get a language.

-

Syntax

-
-cups_lang_t *
-cupsLangGet(
-    const char * language);
-
-

Arguments

-
- - - -
NameDescription
languageLanguage or locale
-

Returns

-

Language data

- -

cupsLastError()

-

Description

-

Return the last IPP status code.

-

Syntax

-
-ipp_status_t
-cupsLastError(void);
-
-

Arguments

-

None.

-

Returns

-

IPP status code from last request

- -

 CUPS 1.2 cupsLastErrorString()

-

Description

-

Return the last IPP status-message. +

+const char *cupsLangEncoding (
+    cups_lang_t *lang
+);

+

Parameters

+
+
lang
+
Language data
+
+

Return Value

+

Character encoding

+

cupsLangFlush

+

Flush all language data out of the cache.

+

+void cupsLangFlush (void);

+

cupsLangFree

+

Free language data.

+

+void cupsLangFree (
+    cups_lang_t *lang
+);

+

Parameters

+
+
lang
+
Language to free
+
+

Discussion

+

This does not actually free anything; use cupsLangFlush for that.

+

cupsLangGet

+

Get a language.

+

+cups_lang_t *cupsLangGet (
+    const char *language
+);

+

Parameters

+
+
language
+
Language or locale
+
+

Return Value

+

Language data

+

 CUPS 1.2/Mac OS X 10.5 cupsNotifySubject

+

Return the subject for the given notification message.

+

+char *cupsNotifySubject (
+    cups_lang_t *lang,
+    ipp_t *event
+);

+

Parameters

+
+
lang
+
Language data
+
event
+
Event data
+
+

Return Value

+

Subject string or NULL

+

Discussion

+

The returned string must be freed by the caller using free.

-

Syntax

-
-const char *
-cupsLastErrorString(void);
-
-

Arguments

-

None.

-

Returns

-

status-message text from last request

- -

cupsMarkOptions()

-

Description

-

Mark command-line options in a PPD file.

-

Syntax

-
-int
-cupsMarkOptions(
-    ppd_file_t * ppd,
-    int num_options,
-    cups_option_t * options);
-
-

Arguments

-
- - - - - -
NameDescription
ppdPPD file
num_optionsNumber of options
optionsOptions
-

Returns

-

1 if conflicting

- -

cupsParseOptions()

-

Description

-

Parse options from a command-line argument. - -This function converts space-delimited name/value pairs according +

 CUPS 1.2/Mac OS X 10.5 cupsNotifyText

+

Return the text for the given notification message.

+

+char *cupsNotifyText (
+    cups_lang_t *lang,
+    ipp_t *event
+);

+

Parameters

+
+
lang
+
Language data
+
event
+
Event data
+
+

Return Value

+

Message text or NULL

+

Discussion

+

The returned string must be freed by the caller using free. + +

+

cupsParseOptions

+

Parse options from a command-line argument.

+

+int cupsParseOptions (
+    const char *arg,
+    int num_options,
+    cups_option_t **options
+);

+

Parameters

+
+
arg
+
Argument to parse
+
num_options
+
Number of options
+
options
+
Options found
+
+

Return Value

+

Number of options found

+

Discussion

+

This function converts space-delimited name/value pairs according to the PAPI text option ABNF specification. Collection values ("name={a=... b=... c=...}") are stored with the curley brackets -intact - use cupsParseOptions() on the value to extract the collection -attributes.

-

Syntax

-
-int
-cupsParseOptions(
-    const char * arg,
-    int num_options,
-    cups_option_t ** options);
-
-

Arguments

-
- - - - - -
NameDescription
argArgument to parse
num_optionsNumber of options
optionsOptions found
-

Returns

-

Number of options found

- -

cupsPrintFile()

-

Description

-

Print a file to a printer or class on the default server.

-

Syntax

-
-int
-cupsPrintFile(
-    const char * name,
-    const char * filename,
-    const char * title,
-    int num_options,
-    cups_option_t * options);
-
-

Arguments

-
- - - - - - - -
NameDescription
namePrinter or class name
filenameFile to print
titleTitle of job
num_optionsNumber of options
optionsOptions
-

Returns

-

Job ID

- -

 CUPS 1.1.21 cupsPrintFile2()

-

Description

-

Print a file to a printer or class on the specified server. +intact - use cupsParseOptions on the value to extract the +collection attributes.

+

cupsPrintFile

+

Print a file to a printer or class on the default server.

+

+int cupsPrintFile (
+    const char *name,
+    const char *filename,
+    const char *title,
+    int num_options,
+    cups_option_t *options
+);

+

Parameters

+
+
name
+
Destination name
+
filename
+
File to print
+
title
+
Title of job
+
num_options
+
Number of options
+
options
+
Options
+
+

Return Value

+

Job ID or 0 on error

+

 CUPS 1.1.21/Mac OS X 10.4 cupsPrintFile2

+

Print a file to a printer or class on the specified +server.

+

+int cupsPrintFile2 (
+    http_t *http,
+    const char *name,
+    const char *filename,
+    const char *title,
+    int num_options,
+    cups_option_t *options
+);

+

Parameters

+
+
http
+
Connection to server
+
name
+
Destination name
+
filename
+
File to print
+
title
+
Title of job
+
num_options
+
Number of options
+
options
+
Options
+
+

Return Value

+

Job ID or 0 on error

+

cupsPrintFiles

+

Print one or more files to a printer or class on the +default server.

+

+int cupsPrintFiles (
+    const char *name,
+    int num_files,
+    const char **files,
+    const char *title,
+    int num_options,
+    cups_option_t *options
+);

+

Parameters

+
+
name
+
Destination name
+
num_files
+
Number of files
+
files
+
File(s) to print
+
title
+
Title of job
+
num_options
+
Number of options
+
options
+
Options
+
+

Return Value

+

Job ID or 0 on error

+

 CUPS 1.1.21/Mac OS X 10.4 cupsPrintFiles2

+

Print one or more files to a printer or class on the +specified server.

+

+int cupsPrintFiles2 (
+    http_t *http,
+    const char *name,
+    int num_files,
+    const char **files,
+    const char *title,
+    int num_options,
+    cups_option_t *options
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
name
+
Destination name
+
num_files
+
Number of files
+
files
+
File(s) to print
+
title
+
Title of job
+
num_options
+
Number of options
+
options
+
Options
+
+

Return Value

+

Job ID or 0 on error

+

 CUPS 1.3/Mac OS X 10.5 cupsRemoveDest

+

Remove a destination from the destination list.

+

+int cupsRemoveDest (
+    const char *name,
+    const char *instance,
+    int num_dests,
+    cups_dest_t **dests
+);

+

Parameters

+
+
name
+
Destination name
+
instance
+
Instance name or NULL
+
num_dests
+
Number of destinations
+
dests
+
Destinations
+
+

Return Value

+

New number of destinations

+

Discussion

+

Removing a destination/instance does not delete the class or printer +queue, merely the lpoptions for that destination/instance. Use the +cupsSetDests or cupsSetDests2 functions to save the new +options for the user.

-

Syntax

-
-int
-cupsPrintFile2(
-    http_t * http,
-    const char * name,
-    const char * filename,
-    const char * title,
-    int num_options,
-    cups_option_t * options);
-
-

Arguments

-
- - - - - - - - -
NameDescription
httpHTTP connection
namePrinter or class name
filenameFile to print
titleTitle of job
num_optionsNumber of options
optionsOptions
-

Returns

-

Job ID

- -

cupsPrintFiles()

-

Description

-

Print one or more files to a printer or class on the -default server.

-

Syntax

-
-int
-cupsPrintFiles(
-    const char * name,
-    int num_files,
-    const char ** files,
-    const char * title,
-    int num_options,
-    cups_option_t * options);
-
-

Arguments

-
- - - - - - - - -
NameDescription
namePrinter or class name
num_filesNumber of files
filesFile(s) to print
titleTitle of job
num_optionsNumber of options
optionsOptions
-

Returns

-

Job ID

- -

 CUPS 1.1.21 cupsPrintFiles2()

-

Description

-

Print one or more files to a printer or class on the -specified server. +

 CUPS 1.2/Mac OS X 10.5 cupsRemoveOption

+

Remove an option from an option array.

+

+int cupsRemoveOption (
+    const char *name,
+    int num_options,
+    cups_option_t **options
+);

+

Parameters

+
+
name
+
Option name
+
num_options
+
Current number of options
+
options
+
Options
+
+

Return Value

+

New number of options

+

cupsServer

+

Return the hostname/address of the current server.

+

+const char *cupsServer (void);

+

Return Value

+

Server name

+

Discussion

+

The default server comes from the CUPS_SERVER environment variable, then the +~/.cups/client.conf file, and finally the /etc/cups/client.conf file. If not +set, the default is the local system - either "localhost" or a domain socket +path.
+
+The returned value can be a fully-qualified hostname, a numeric IPv4 or IPv6 +address, or a domain socket pathname.
+
+Note: The current server is tracked separately for each thread in a program. +Multi-threaded programs that override the server via the +cupsSetServer function need to do so in each thread for the same +server to be used.

+

 CUPS 1.5 cupsSetClientCertCB

+

Set the client certificate callback.

+

+void cupsSetClientCertCB (
+    cups_client_cert_cb_t cb,
+    void *user_data
+);

+

Parameters

+
+
cb
+
Callback function
+
user_data
+
User data pointer
+
+

Discussion

+

Pass NULL to restore the default callback.
+
+Note: The current certificate callback is tracked separately for each thread +in a program. Multi-threaded programs that override the callback need to do +so in each thread for the same callback to be used.

-

Syntax

-
-int
-cupsPrintFiles2(
-    http_t * http,
-    const char * name,
-    int num_files,
-    const char ** files,
-    const char * title,
-    int num_options,
-    cups_option_t * options);
-
-

Arguments

-
- - - - - - - - - -
NameDescription
httpHTTP connection
namePrinter or class name
num_filesNumber of files
filesFile(s) to print
titleTitle of job
num_optionsNumber of options
optionsOptions
-

Returns

-

Job ID

- -

 CUPS 1.1.20 cupsPutFd()

-

Description

-

Put a file on the server. - -This function returns HTTP_CREATED when the file is stored successfully. +

 CUPS 1.5 cupsSetCredentials

+

Set the default credentials to be used for SSL/TLS +connections.

+

+int cupsSetCredentials (
+    cups_array_t *credentials
+);

+

Parameters

+
+
credentials
+
Array of credentials
+
+

Return Value

+

Status of call (0 = success)

+

Discussion

+

Note: The default credentials are tracked separately for each thread in a +program. Multi-threaded programs that override the setting need to do so in +each thread for the same setting to be used.

-

Syntax

-
-http_status_t
-cupsPutFd(
-    http_t * http,
-    const char * resource,
-    int fd);
-
-

Arguments

-
- - - - - -
NameDescription
httpHTTP connection to server
resourceResource name
fdFile descriptor
-

Returns

-

HTTP status

- -

 CUPS 1.1.20 cupsPutFile()

-

Description

-

Put a file on the server. - -This function returns HTTP_CREATED when the file is stored successfully. +

 CUPS 1.3/Mac OS X 10.5 cupsSetDefaultDest

+

Set the default destination.

+

+void cupsSetDefaultDest (
+    const char *name,
+    const char *instance,
+    int num_dests,
+    cups_dest_t *dests
+);

+

Parameters

+
+
name
+
Destination name
+
instance
+
Instance name or NULL
+
num_dests
+
Number of destinations
+
dests
+
Destinations
+
+

cupsSetDests

+

Save the list of destinations for the default server.

+

+void cupsSetDests (
+    int num_dests,
+    cups_dest_t *dests
+);

+

Parameters

+
+
num_dests
+
Number of destinations
+
dests
+
Destinations
+
+

Discussion

+

This function saves the destinations to /etc/cups/lpoptions when run +as root and ~/.cups/lpoptions when run as a normal user.

+

 CUPS 1.1.21/Mac OS X 10.4 cupsSetDests2

+

Save the list of destinations for the specified server.

+

+int cupsSetDests2 (
+    http_t *http,
+    int num_dests,
+    cups_dest_t *dests
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
num_dests
+
Number of destinations
+
dests
+
Destinations
+
+

Return Value

+

0 on success, -1 on error

+

Discussion

+

This function saves the destinations to /etc/cups/lpoptions when run +as root and ~/.cups/lpoptions when run as a normal user.

-

Syntax

-
-http_status_t
-cupsPutFile(
-    http_t * http,
-    const char * resource,
-    const char * filename);
-
-

Arguments

-
- - - - - -
NameDescription
httpHTTP connection to server
resourceResource name
filenameFilename
-

Returns

-

HTTP status

- -

 CUPS 1.2 cupsRemoveOption()

-

Description

-

Remove an option from an option array. +

cupsSetEncryption

+

Set the encryption preference.

+

+void cupsSetEncryption (
+    http_encryption_t e
+);

+

Parameters

+
+
e
+
New encryption preference
+
+

Discussion

+

The default encryption setting comes from the CUPS_ENCRYPTION +environment variable, then the ~/.cups/client.conf file, and finally the +/etc/cups/client.conf file. If not set, the default is +HTTP_ENCRYPT_IF_REQUESTED.
+
+Note: The current encryption setting is tracked separately for each thread +in a program. Multi-threaded programs that override the setting need to do +so in each thread for the same setting to be used.

+

cupsSetPasswordCB

+

Set the password callback for CUPS.

+

+void cupsSetPasswordCB (
+    cups_password_cb_t cb
+);

+

Parameters

+
+
cb
+
Callback function
+
+

Discussion

+

Pass NULL to restore the default (console) password callback, which +reads the password from the console. Programs should call either this +function or cupsSetPasswordCB2, as only one callback can be registered +by a program per thread.
+
+Note: The current password callback is tracked separately for each thread +in a program. Multi-threaded programs that override the callback need to do +so in each thread for the same callback to be used.

+

 CUPS 1.4/Mac OS X 10.6 cupsSetPasswordCB2

+

Set the advanced password callback for CUPS.

+

+void cupsSetPasswordCB2 (
+    cups_password_cb2_t cb,
+    void *user_data
+);

+

Parameters

+
+
cb
+
Callback function
+
user_data
+
User data pointer
+
+

Discussion

+

Pass NULL to restore the default (console) password callback, which +reads the password from the console. Programs should call either this +function or cupsSetPasswordCB2, as only one callback can be registered +by a program per thread.
+
+Note: The current password callback is tracked separately for each thread +in a program. Multi-threaded programs that override the callback need to do +so in each thread for the same callback to be used.

-

Syntax

-
-int
-cupsRemoveOption(
-    const char * name,
-    int num_options,
-    cups_option_t ** options);
-
-

Arguments

-
- - - - - -
NameDescription
nameOption name
num_optionsCurrent number of options
optionsOptions
-

Returns

-

New number of options

- -

cupsServer()

-

Description

-

Return the hostname/address of the default server. - -The returned value can be a fully-qualified hostname, a numeric -IPv4 or IPv6 address, or a domain socket pathname.

-

Syntax

-
-const char *
-cupsServer(void);
-
-

Arguments

-

None.

-

Returns

-

Server name

- -

cupsSetDests()

-

Description

-

Save the list of destinations for the default server. - -This function saves the destinations to /etc/cups/lpoptions when run -as root and ~/.cups/lpoptions when run as a normal user.

-

Syntax

-
-void
-cupsSetDests(
-    int num_dests,
-    cups_dest_t * dests);
-
-

Arguments

-
- - - - -
NameDescription
num_destsNumber of destinations
destsDestinations
-

Returns

-

Nothing.

- -

 CUPS 1.1.21 cupsSetDests2()

-

Description

-

Save the list of destinations for the specified server. - -This function saves the destinations to /etc/cups/lpoptions when run -as root and ~/.cups/lpoptions when run as a normal user. +

cupsSetServer

+

Set the default server name and port.

+

+void cupsSetServer (
+    const char *server
+);

+

Parameters

+
+
server
+
Server name
+
+

Discussion

+

The "server" string can be a fully-qualified hostname, a numeric +IPv4 or IPv6 address, or a domain socket pathname. Hostnames and numeric IP +addresses can be optionally followed by a colon and port number to override +the default port 631, e.g. "hostname:8631". Pass NULL to restore the +default server name and port.
+
+Note: The current server is tracked separately for each thread in a program. +Multi-threaded programs that override the server need to do so in each +thread for the same server to be used.

+

 CUPS 1.5 cupsSetServerCertCB

+

Set the server certificate callback.

+

+void cupsSetServerCertCB (
+    cups_server_cert_cb_t cb,
+    void *user_data
+);

+

Parameters

+
+
cb
+
Callback function
+
user_data
+
User data pointer
+
+

Discussion

+

Pass NULL to restore the default callback.
+
+Note: The current credentials callback is tracked separately for each thread +in a program. Multi-threaded programs that override the callback need to do +so in each thread for the same callback to be used.

-

Syntax

-
-int
-cupsSetDests2(
-    http_t * http,
-    int num_dests,
-    cups_dest_t * dests);
-
-

Arguments

-
- - - - - -
NameDescription
httpHTTP connection
num_destsNumber of destinations
destsDestinations
-

Returns

-

0 on success, -1 on error

- -

cupsSetEncryption()

-

Description

-

Set the encryption preference.

-

Syntax

-
-void
-cupsSetEncryption(
-    http_encryption_t e);
-
-

Arguments

-
- - - -
NameDescription
eNew encryption preference
-

Returns

-

Nothing.

- -

cupsSetPasswordCB()

-

Description

-

Set the password callback for CUPS. - -Pass NULL to restore the default (console) password callback.

-

Syntax

-
-void
-cupsSetPasswordCB(
-    cups_password_cb_t cb);
-
-

Arguments

-
- - - -
NameDescription
cbCallback function
-

Returns

-

Nothing.

- -

cupsSetServer()

-

Description

-

Set the default server name. - -The "server" string can be a fully-qualified hostname, a numeric -IPv4 or IPv6 address, or a domain socket pathname. Pass NULL to -restore the default server name.

-

Syntax

-
-void
-cupsSetServer(
-    const char * server);
-
-

Arguments

-
- - - -
NameDescription
serverServer name
-

Returns

-

Nothing.

- -

cupsSetUser()

-

Description

-

Set the default user name. - -Pass NULL to restore the default user name.

-

Syntax

-
-void
-cupsSetUser(
-    const char * user);
-
-

Arguments

-
- - - -
NameDescription
userUser name
-

Returns

-

Nothing.

- -

cupsTempFd()

-

Description

-

Create a temporary file. - -The temporary filename is stored in the filename buffer.

-

Syntax

-
-int
-cupsTempFd(
-    char * filename,
-    int len);
-
-

Arguments

-
- - - - -
NameDescription
filenamePointer to buffer
lenSize of buffer
-

Returns

-

New file descriptor

- -

 DEPRECATED cupsTempFile()

-

Description

-

Generate a temporary filename. - -The temporary filename is stored in the filename buffer. -This function is deprecated - use cupsTempFd() or cupsTempFile2() -instead. +

cupsSetUser

+

Set the default user name.

+

+void cupsSetUser (
+    const char *user
+);

+

Parameters

+
+
user
+
User name
+
+

Discussion

+

Pass NULL to restore the default user name.
+
+Note: The current user name is tracked separately for each thread in a +program. Multi-threaded programs that override the user name need to do so +in each thread for the same user name to be used.

+

 CUPS 1.4/Mac OS X 10.6 cupsStartDocument

+

Add a document to a job created with cupsCreateJob().

+

+http_status_t cupsStartDocument (
+    http_t *http,
+    const char *name,
+    int job_id,
+    const char *docname,
+    const char *format,
+    int last_document
+);

+

Parameters

+
+
http
+
Connection to server or CUPS_HTTP_DEFAULT
+
name
+
Destination name
+
job_id
+
Job ID from cupsCreateJob
+
docname
+
Name of document
+
format
+
MIME type or CUPS_FORMAT_foo
+
last_document
+
1 for last document in job, 0 otherwise
+
+

Return Value

+

HTTP status of request

+

Discussion

+

Use cupsWriteRequestData to write data for the document and +cupsFinishDocument to finish the document and get the submission status.
+
+The MIME type constants CUPS_FORMAT_AUTO, CUPS_FORMAT_PDF, +CUPS_FORMAT_POSTSCRIPT, CUPS_FORMAT_RAW, and +CUPS_FORMAT_TEXT are provided for the "format" argument, although +any supported MIME type string can be supplied.

-

Syntax

-
-char *
-cupsTempFile(
-    char * filename,
-    int len);
-
-

Arguments

-
- - - - -
NameDescription
filenamePointer to buffer
lenSize of buffer
-

Returns

-

Filename

- -

 CUPS 1.2 cupsTempFile2()

-

Description

-

Create a temporary CUPS file. - -The temporary filename is stored in the filename buffer. +

cupsTempFd

+

Creates a temporary file.

+

+int cupsTempFd (
+    char *filename,
+    int len
+);

+

Parameters

+
+
filename
+
Pointer to buffer
+
len
+
Size of buffer
+
+

Return Value

+

New file descriptor or -1 on error

+

Discussion

+

The temporary filename is returned in the filename buffer. +The temporary file is opened for reading and writing.

+

 DEPRECATED cupsTempFile

+

Generates a temporary filename.

+

+char *cupsTempFile (
+    char *filename,
+    int len
+);

+

Parameters

+
+
filename
+
Pointer to buffer
+
len
+
Size of buffer
+
+

Return Value

+

Filename or NULL on error

+

Discussion

+

The temporary filename is returned in the filename buffer. +This function is deprecated - use cupsTempFd or +cupsTempFile2 instead.

-

Syntax

-
-cups_file_t *
-cupsTempFile2(
-    char * filename,
-    int len);
-
-

Arguments

-
- - - - -
NameDescription
filenamePointer to buffer
lenSize of buffer
-

Returns

-

CUPS file or NULL on error

- -

cupsUser()

-

Description

-

Return the current user's name.

-

Syntax

-
-const char *
-cupsUser(void);
-
-

Arguments

-

None.

-

Returns

-

User name

- -

Structures

- - -

cups_dest_s

-

Description

-

Destination

-

Definition

-
-struct cups_dest_s
-{
-  char *name, * instance;
-  int is_default;
-  int num_options;
-  cups_option_t * options;
-};
-
-

Members

-
- - - - - - -
NameDescription
instance Local instance name or NULL
is_default Is this printer the default?
num_options Number of options
options Options
- -

cups_job_s

-

Description

-

Job

-

Definition

-
-struct cups_job_s
-{
-  time_t completed_time;
-  time_t creation_time;
-  char * dest;
-  char * format;
-  int id;
-  int priority;
-  time_t processing_time;
-  int size;
-  ipp_jstate_t state;
-  char * title;
-  char * user;
-};
-
-

Members

-
- - - - - - - - - - - - - -
NameDescription
completed_time Time the job was completed
creation_time Time the job was created
dest Printer or class name
format Document format
id The job ID
priority Priority (1-100)
processing_time Time the job was processed
size Size in kilobytes
state Job state
title Title/job name
user User the submitted the job
- -

cups_option_s

-

Description

-

Printer Options

-

Definition

-
-struct cups_option_s
-{
-  char * name;
-  char * value;
-};
-
-

Members

-
- - - - -
NameDescription
name Name of option
value Value of option
- -

Types

- - -

cups_dest_t

-

Description

-

Destination

-

Definition

-
-typedef struct cups_dest_s cups_dest_t;
-
- -

cups_job_t

-

Description

-

Job

-

Definition

-
-typedef struct cups_job_s cups_job_t;
-
- -

cups_option_t

-

Description

-

Printer Options

-

Definition

-
-typedef struct cups_option_s cups_option_t;
-
- -

cups_password_cb_t

-

Description

-

Password callback

-

Definition

-
-typedef const char * (*cups_password_cb_t)(const char *);
-
- -

cups_ptype_t

-

Description

-

Printer Type/Capability Bits

-

Definition

-
+

 CUPS 1.2/Mac OS X 10.5 cupsTempFile2

+

Creates a temporary CUPS file.

+

+cups_file_t *cupsTempFile2 (
+    char *filename,
+    int len
+);

+

Parameters

+
+
filename
+
Pointer to buffer
+
len
+
Size of buffer
+
+

Return Value

+

CUPS file or NULL on error

+

Discussion

+

The temporary filename is returned in the filename buffer. +The temporary file is opened for writing. + +

+

cupsUser

+

Return the current user's name.

+

+const char *cupsUser (void);

+

Return Value

+

User name

+

Discussion

+

Note: The current user name is tracked separately for each thread in a +program. Multi-threaded programs that override the user name with the +cupsSetUser function need to do so in each thread for the same user +name to be used.

+

Data Types

+

 CUPS 1.5 cups_client_cert_cb_t

+

Client credentials callback

+

+typedef int (*cups_client_cert_cb_t)(http_t *http, void *tls, cups_array_t *distinguished_names, void *user_data); +

+

cups_dest_t

+

Destination

+

+typedef struct cups_dest_s cups_dest_t; +

+

 CUPS 1.4/Mac OS X 10.6 cups_device_cb_t

+

Device callback

+

+typedef void (*cups_device_cb_t)(const char *device_class, const char *device_id, const char *device_info, const char *device_make_and_model, const char *device_uri, const char *device_location, void *user_data); +

+

cups_job_t

+

Job

+

+typedef struct cups_job_s cups_job_t; +

+

cups_option_t

+

Printer Options

+

+typedef struct cups_option_s cups_option_t; +

+

 CUPS 1.4/Mac OS X 10.6 cups_password_cb2_t

+

New password callback

+

+typedef const char *(*cups_password_cb2_t)(const char *prompt, http_t *http, const char *method, const char *resource, void *user_data); +

+

cups_password_cb_t

+

Password callback

+

+typedef const char *(*cups_password_cb_t)(const char *prompt); +

+

cups_ptype_t

+

Printer type/capability bits

+

typedef unsigned cups_ptype_t; -

+

+

 CUPS 1.5 cups_server_cert_cb_t

+

Server credentials callback

+

+typedef int (*cups_server_cert_cb_t)(http_t *http, void *tls, cups_array_t *certs, void *user_data); +

+

Structures

+

cups_dest_s

+

Destination

+

struct cups_dest_s {
+    char *name, *instance;
+    int is_default;
+    int num_options;
+    cups_option_t *options;
+};

+

Members

+
+
instance
+
Local instance name or NULL
+
is_default
+
Is this printer the default?
+
num_options
+
Number of options
+
options
+
Options
+
+

cups_job_s

+

Job

+

struct cups_job_s {
+    time_t completed_time;
+    time_t creation_time;
+    char *dest;
+    char *format;
+    int id;
+    int priority;
+    time_t processing_time;
+    int size;
+    ipp_jstate_t state;
+    char *title;
+    char *user;
+};

+

Members

+
+
completed_time
+
Time the job was completed
+
creation_time
+
Time the job was created
+
dest
+
Printer or class name
+
format
+
Document format
+
id
+
The job ID
+
priority
+
Priority (1-100)
+
processing_time
+
Time the job was processed
+
size
+
Size in kilobytes
+
state
+
Job state
+
title
+
Title/job name
+
user
+
User the submitted the job
+
+

cups_option_s

+

Printer Options

+

struct cups_option_s {
+    char *name;
+    char *value;
+};

+

Members

+
+
name
+
Name of option
+
value
+
Value of option
+
+

Constants

+

cups_ptype_e

+

Printer type/capability bit constants

+

Constants

+
+
CUPS_PRINTER_AUTHENTICATED  CUPS 1.2/Mac OS X 10.5 
+
Printer requires authentication
+
CUPS_PRINTER_BIND
+
Can bind output
+
CUPS_PRINTER_BW
+
Can do B&W printing
+
CUPS_PRINTER_CLASS
+
Printer class
+
CUPS_PRINTER_COLLATE
+
Can collage copies
+
CUPS_PRINTER_COLOR
+
Can do color printing
+
CUPS_PRINTER_COMMANDS  CUPS 1.2/Mac OS X 10.5 
+
Printer supports maintenance commands
+
CUPS_PRINTER_COPIES
+
Can do copies
+
CUPS_PRINTER_COVER
+
Can cover output
+
CUPS_PRINTER_DEFAULT
+
Default printer on network
+
CUPS_PRINTER_DELETE  CUPS 1.2/Mac OS X 10.5 
+
Delete printer
+
CUPS_PRINTER_DISCOVERED  CUPS 1.3/Mac OS X 10.5 
+
Printer was automatically discovered and added
+
CUPS_PRINTER_DUPLEX
+
Can do duplexing
+
CUPS_PRINTER_FAX
+
Fax queue
+
CUPS_PRINTER_IMPLICIT
+
Implicit class
+
CUPS_PRINTER_LARGE
+
Can do D/E/A1/A0
+
CUPS_PRINTER_LOCAL
+
Local printer or class
+
CUPS_PRINTER_MEDIUM
+
Can do Tabloid/B/C/A3/A2
+
CUPS_PRINTER_MFP  CUPS 1.4/Mac OS X 10.6 
+
Printer with scanning capabilities
+
CUPS_PRINTER_NOT_SHARED  CUPS 1.2/Mac OS X 10.5 
+
Printer is not shared
+
CUPS_PRINTER_PUNCH
+
Can punch output
+
CUPS_PRINTER_REJECTING
+
Printer is rejecting jobs
+
CUPS_PRINTER_REMOTE
+
Remote printer or class
+
CUPS_PRINTER_SCANNER  CUPS 1.4/Mac OS X 10.6 
+
Scanner-only device
+
CUPS_PRINTER_SMALL
+
Can do Letter/Legal/A4
+
CUPS_PRINTER_SORT
+
Can sort output
+
CUPS_PRINTER_STAPLE
+
Can staple output
+
CUPS_PRINTER_VARIABLE
+
Can do variable sizes
+
+