debian/ 0000755 0000000 0000000 00000000000 13374031076 007172 5 ustar debian/cups.install 0000644 0000000 0000000 00000001275 12317350163 011536 0 ustar etc/cups/snmp.conf
etc/cups/ppd
usr/lib/cups/backend/lpd usr/lib/cups/backend-available
usr/lib/cups/backend/socket usr/lib/cups/backend-available
usr/lib/cups/backend/usb usr/lib/cups/backend-available
usr/lib/cups/backend/dnssd usr/lib/cups/backend-available
usr/lib/cups/backend/snmp usr/lib/cups/backend-available
usr/lib/cups/cgi-bin
usr/lib/cups/monitor
usr/lib/cups/daemon/
usr/lib/cups/filter/rasterto*
usr/lib/cups/driver/
usr/sbin/cupsfilter
usr/share/man/man7/filter.7.gz
usr/share/man/man5/subscriptions.conf.5.gz
usr/share/man/man5/mime.convs.5.gz
usr/share/man/man8/cups-deviced.8.gz
usr/share/man/man8/cups-driverd.8.gz
usr/share/man/man8/cupsfilter.8.gz
../presubj usr/share/bug/cups/
debian/cups-bsd.preinst 0000644 0000000 0000000 00000001272 12317350163 012317 0 ustar #! /bin/sh
# preinst script for cups-bsd
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * Sets encryption options (only in /etc/cups/client.conf). By
+default, CUPS only supports encryption using TLS v1.0 or higher using
+known secure cipher suites. The AllowRC4 option enables the
+128-bit RC4 cipher suites, which are required for some older clients
+that do not implement newer ones. The AllowSSL3 option enables
+SSL v3.0, which is required for some older clients that do not support
+TLS v1.0.SSLOptions
+
+Examples
+
+
+SSLOptions None
+SSLOptions AllowSSL3
+SSLOptions AllowRC4
+
+
+Description
+
+CUPS 1.6/OS X 10.8User
Examples
Index: cups-1.7.2/doc/help/ref-cupsd-conf.html.in
===================================================================
--- cups-1.7.2.orig/doc/help/ref-cupsd-conf.html.in
+++ cups-1.7.2/doc/help/ref-cupsd-conf.html.in
@@ -2004,23 +2004,23 @@ SetEnv MY_ENV_VAR foo
variable that should be passed to child processes.
-SSLListen 127.0.0.1:443 -SSLListen 192.0.2.1:443 +SSLOptions 127.0.0.1:443 +SSLOptions 192.0.2.1:443
The SSLListen directive specifies a network
+
The SSLOptions directive specifies a network
address and port to listen for secure connections. Multiple
-SSLListen directives can be provided to listen on
+SSLOptions directives can be provided to listen on
multiple addresses.
The SSLListen directive is similar to the The SSLOptions directive is similar to the SSLPort directive but allows you
to restrict access to specific interfaces or networks.
SSLOptions None SSLOptions NoEmptyFragments +SSLOptions AllowSSL3 +SSLOptions AllowRC4
The SSLOptions directive specifies additional SSL/TLS
-protocol options to use for encrypted connected. Currently only two
-options are supported - None (the default) for the most
-secure mode and NoEmptyFragments to allow CUPS to work with
-Microsoft Windows with the FIPS conformance mode enabled.
NoEmptyFragments option allows CUPS to work
+with Microsoft Windows with the FIPS conformance mode
+enabled. The AllowRC4 option enables the 128-bit RC4
+cipher suites, which are required for some older clients that do not
+implement newer ones. The AllowSSL3 option enables SSL
+v3.0, which is required for some older clients that do not support TLS
+v1.0.
" >>$strfile
for file in 5*.sh; do
+ #
+ # Make sure the past jobs are done before going on.
+ #
+ ./waitjobs.sh 1800
+
echo $ac_n "Performing $file: $ac_c"
echo "" >>$strfile
echo "\"$file\":" >>$strfile
debian/patches/cups-restore-access-to-logfiles.patch 0000644 0000000 0000000 00000002237 12402404523 017752 0 ustar Description: Restore access to cupsd.conf and logfiles, fix regression
introduced by STR: #4455
Author: Tim Waugh
Bug-Upstream: https://www.cups.org/str.php?L4461
Bug-Debian: https://bugs.debian.org/757964
Last-Update: 2014-08-12
Index: cups-1.7.2/scheduler/client.c
===================================================================
--- cups-1.7.2.orig/scheduler/client.c 2014-09-05 15:04:49.126292958 -0400
+++ cups-1.7.2/scheduler/client.c 2014-09-05 15:04:49.122292958 -0400
@@ -3356,8 +3356,18 @@
if (!status && !(filestats->st_mode & S_IROTH))
{
- cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Files/directories such as \"%s\" must be world-readable.", con->http.fd, filename);
- return (NULL);
+ /*
+ * The exception is for cupsd.conf and log files for
+ * authenticated access.
+ */
+
+ if ((strncmp(con->uri, "/admin/conf/cupsd.conf", 22) &&
+ strncmp(con->uri, "/admin/log/", 11)) ||
+ cupsdIsAuthorized(con, NULL) != HTTP_OK)
+ {
+ cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Files/directories such as \"%s\" must be world-readable.", con->http.fd, filename);
+ return (NULL);
+ }
}
/*
debian/patches/cupsd-exit-on-idle-upstart.patch 0000644 0000000 0000000 00000000744 12321556525 016763 0 ustar --- a/scheduler/main.c
+++ b/scheduler/main.c
@@ -1662,6 +1662,13 @@
if (_httpAddrPort(&(lis->address)) == 443)
lis->encryption = HTTP_ENCRYPT_ALWAYS;
# endif /* HAVE_SSL */
+
+ /* As we are started on-demand, stop on idle */
+ if (!ExitOnIdleTimeout)
+ ExitOnIdleTimeout = 30;
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "As we are starting on-demand (socket-triggered), activate exit-on-idle mode, timeout: %d seconds.",
+ ExitOnIdleTimeout);
+
}
/*
debian/patches/cups-deviced-allow-device-ids-with-newline.patch 0000644 0000000 0000000 00000002407 12277464531 021765 0 ustar Description: Some printers have broken device IDs with newline
characters inside. These break the cups-deviced printer discovery
mechanism and so the printers get ignored. This patch allows newline
characters in device IDs
Bug-Ubuntu: https://bugs.launchpad.net/bugs/468701
Bug: https://www.cups.org/str.php?L4345
Author: Till Kamppeter
--- a/scheduler/cups-deviced.c
+++ b/scheduler/cups-deviced.c
@@ -577,15 +577,30 @@
if (*ptr == '\"')
{
- for (ptr ++, device_id = ptr; *ptr && *ptr != '\"'; ptr ++)
+ for (ptr ++, device_id = ptr; *ptr != '\"'; ptr ++)
{
if (*ptr == '\\' && ptr[1])
_cups_strcpy(ptr, ptr + 1);
+ if (!*ptr)
+ {
+ fprintf(stderr, "WARNING: [cups-deviced] Possible newline in device ID \"%s\": %s\n",
+ backend->name, line);
+ *ptr = ' ';
+ ptr ++;
+ *ptr = 0;
+ if (!cupsFileGets(backend->pipe, ptr, sizeof(line) - (ptr - temp)))
+ {
+ cupsFileClose(backend->pipe);
+ backend->pipe = NULL;
+ fprintf(stderr, "ERROR: [cups-deviced] Bad line from \"%s\": %s\n",
+ backend->name, line);
+ return (-1);
+ }
+ }
+ if (!*ptr)
+ goto error;
}
- if (*ptr != '\"')
- goto error;
-
for (*ptr++ = '\0'; isspace(*ptr & 255); *ptr++ = '\0');
/*
debian/patches/cupsd-upstart-support.patch 0000644 0000000 0000000 00000010134 12321556421 016166 0 ustar Description: CUPS Upstart socket activation:
Important to note:
- Run by default in foreground (-f), not Foreground (-F). With -F CUPS
closes all inherited file descriptors, which is not needed under
upstart since it does that on our behalf, furthermore closing passed
socket activation descriptors prevents us from using socket
activation.
- Force foreground (-f) mode if environment suggests that we are Upstart
socket activated (similar to "-l" flag for launchd).
- Initialize addrlen to sizeof(addr) to make getsockname() work.
- Correct environment variable name used to check event type
- Get UPSTART_FDS simply with atoi()
- Perform explicit return code checking from getsockname function call
Author: Till Kamppeter ,
Dimitri John Ledkov
Bug: https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1276713
--- a/scheduler/main.c
+++ b/scheduler/main.c
@@ -64,6 +64,7 @@
static void launchd_checkin(void);
static void launchd_checkout(void);
#endif /* HAVE_LAUNCHD */
+static void upstart_checkin(void);
static void parent_handler(int sig);
static void process_children(void);
static void sigchld_handler(int sig);
@@ -301,6 +302,14 @@
usage(1);
}
+ /* force non-disconnecting foreground mode upon upstart socket
+ * activation, as otherwise all fd's are closed before we get to use
+ * them */
+ if (getenv("UPSTART_FDS"))
+ {
+ fg = 1;
+ }
+
if (!ConfigurationFile)
cupsdSetString(&ConfigurationFile, CUPS_SERVERROOT "/cupsd.conf");
@@ -554,6 +563,11 @@
#endif /* HAVE_LAUNCHD */
/*
+ * If we were started by Upstart get the listen sockets file descriptors...
+ */
+ upstart_checkin();
+
+ /*
* Startup the server...
*/
@@ -742,6 +756,13 @@
#endif /* HAVE_LAUNCHD */
/*
+ * If we were started by Upstart get the listen sockets file
+ * descriptors...
+ */
+
+ upstart_checkin();
+
+ /*
* Startup the server...
*/
@@ -1490,6 +1511,93 @@
}
#endif /* HAVE_LAUNCHD */
+static void
+upstart_checkin(void)
+{
+ /*
+ * Example socket event environment:
+ *
+ * UPSTART_INSTANCE=
+ * PORT=34568
+ * PROTO=inet
+ * UPSTART_JOB=foo5
+ * UPSTART_FDS=43
+ * UPSTART_EVENTS=socket
+ * ADDR=127.0.0.1
+ *
+ */
+ int fd = 0;
+ const char *e;
+ http_addr_t addr;
+ socklen_t addrlen = sizeof(addr);
+ cupsd_listener_t *lis;
+ char s[256];
+
+ if (!(e = getenv("UPSTART_EVENTS")))
+ return;
+
+ if (strcasecmp(e, "socket"))
+ return;
+
+ if (!(e = getenv("UPSTART_FDS")))
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "upstart_checkin: We got started via Upstart socket event but no environment variable UPSTART_FDS is not set");
+ return;
+ }
+
+ fd = atoi(e);
+
+ if (getsockname(fd, (struct sockaddr*) &addr, &addrlen) < 0)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "upstart_checkin: Unable to get local address - %s",
+ strerror(errno));
+ return;
+ }
+
+ /*
+ * Try to match the systemd socket address to one of the listeners...
+ */
+
+ for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
+ lis;
+ lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
+ if (httpAddrEqual(&lis->address, &addr))
+ break;
+
+ if (lis)
+ {
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
+ "upstart_checkin: Matched existing listener %s with fd %d...",
+ httpAddrString(&(lis->address), s, sizeof(s)), fd);
+ }
+ else
+ {
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
+ "upstart_checkin: Adding new listener %s with fd %d...",
+ httpAddrString(&addr, s, sizeof(s)), fd);
+
+ if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "upstart_checkin: Unable to allocate listener - "
+ "%s.", strerror(errno));
+ exit(EXIT_FAILURE);
+ }
+
+ cupsArrayAdd(Listeners, lis);
+
+ memcpy(&lis->address, &addr, sizeof(lis->address));
+ }
+
+ lis->fd = fd;
+
+# ifdef HAVE_SSL
+ if (_httpAddrPort(&(lis->address)) == 443)
+ lis->encryption = HTTP_ENCRYPT_ALWAYS;
+# endif /* HAVE_SSL */
+}
/*
* 'parent_handler()' - Catch USR1/CHLD signals...
debian/patches/do-not-override-h-option-with-env-variable.patch 0000644 0000000 0000000 00000001412 12466117335 021736 0 ustar Description: do not override -h option with CUPS_SERVER variable
Author: Louis Bouchard
Origin: https://www.cups.org/str.php?L4528+P-1+S-2+C0+I0+E0+Q
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1352809
Index: cups-1.7.2/cups/usersys.c
===================================================================
--- cups-1.7.2.orig/cups/usersys.c 2014-03-05 22:22:12.000000000 +0100
+++ cups-1.7.2/cups/usersys.c 2015-02-09 11:20:39.915891295 +0100
@@ -913,6 +913,12 @@
}
/*
+ * Check if values have been provided as CLI options
+ */
+ if (cg->server[0])
+ cups_server = cg->server;
+
+ /*
* Read the configuration file and apply any environment variables; both
* functions handle NULL cups_file_t pointers...
*/
debian/patches/CVE-2017-18248.patch 0000644 0000000 0000000 00000004131 13313232747 013332 0 ustar From 49fa4983f25b64ec29d548ffa3b9782426007df3 Mon Sep 17 00:00:00 2001
From: Michael Sweet
Date: Mon, 23 Oct 2017 16:23:43 -0400
Subject: [PATCH] DBUS notifications could crash the scheduler (Issue #5143)
- scheduler/ipp.c: Make sure requesting-user-name string is valid UTF-8.
---
CHANGES.md | 5 +++--
scheduler/ipp.c | 12 ++++++++++--
2 files changed, 13 insertions(+), 4 deletions(-)
#diff --git a/CHANGES.md b/CHANGES.md
#index 2fdf93e32..86eb1dbdc 100644
#--- a/CHANGES.md
#+++ b/CHANGES.md
#@@ -1,12 +1,13 @@
#-CHANGES - 2.2.6 - 2017-10-19
#+CHANGES - 2.2.6 - 2017-10-23
# ============================
#
#
# Changes in CUPS v2.2.6
# ----------------------
#
#+- DBUS notifications could crash the scheduler (Issue #5143)
# - Added USB quirks rules for Canon MP540 and Samsung ML-2160 (Issue #5148)
#-- Fixed TLS cipher suite selection with GNU TLS (Issue #5145)
#+- Fixed TLS cipher suite selection with GNU TLS (Issue #5145, Issue #5150)
#
#
# Changes in CUPS v2.2.5
Index: cups-1.7.2/scheduler/ipp.c
===================================================================
--- cups-1.7.2.orig/scheduler/ipp.c 2018-06-22 13:46:12.935561773 -0400
+++ cups-1.7.2/scheduler/ipp.c 2018-06-22 13:46:12.931561764 -0400
@@ -1562,6 +1562,16 @@ add_job(cupsd_client_t *con, /* I - Cl
return (NULL);
}
+ attr = ippFindAttribute(con->request, "requesting-user-name", IPP_TAG_NAME);
+
+ if (attr && !ippValidateAttribute(attr))
+ {
+ send_ipp_status(con, IPP_ATTRIBUTES, _("Bad requesting-user-name value: %s"), cupsLastErrorString());
+ if ((attr = ippCopyAttribute(con->response, attr, 0)) != NULL)
+ attr->group_tag = IPP_TAG_UNSUPPORTED_GROUP;
+ return (NULL);
+ }
+
if ((job = cupsdAddJob(priority, printer->name)) == NULL)
{
send_ipp_status(con, IPP_INTERNAL_ERROR,
@@ -1580,8 +1590,6 @@ add_job(cupsd_client_t *con, /* I - Cl
add_job_uuid(job);
apply_printer_defaults(printer, job);
- attr = ippFindAttribute(job->attrs, "requesting-user-name", IPP_TAG_NAME);
-
if (con->username[0])
{
cupsdSetString(&job->username, con->username);
debian/patches/color-management-extension.patch 0000644 0000000 0000000 00000114064 12321556207 017111 0 ustar Description: Color management per queue using colord.
Author: Joe Simon
Last-Update: 2014-01-04
--- a/cgi-bin/admin.c
+++ b/cgi-bin/admin.c
@@ -27,6 +27,8 @@
* do_list_printers() - List available printers.
* do_menu() - Show the main menu.
* do_set_allowed_users() - Set the allowed/denied users for a queue.
+ * do_update_ppd() - Enable/Disable color management for a queue.
+ * do_set_timestamp() - Set the server default printer/class.
* do_set_default() - Set the server default printer/class.
* do_set_options() - Configure the default options for a queue.
* do_set_sharing() - Set printer-is-shared value.
@@ -46,6 +48,7 @@
#include
#include
#include
+#include
/*
@@ -82,6 +85,12 @@
static char *get_option_value(ppd_file_t *ppd, const char *name,
char *buffer, size_t bufsize);
static double get_points(double number, const char *uval);
+/* Per-queue extension */
+static void do_set_timestamp(http_t* http, ipp_t* request);
+static void do_update_ppd(http_t* http,
+ ipp_t *request, int is_cm,
+ const char* file);
+
/*
@@ -697,6 +706,10 @@
}
}
+ if ((attr = ippFindAttribute(response, "ppd-timestamp",
+ IPP_TAG_TEXT)) != NULL)
+ cgiSetVariable("PPD_TIMESTAMP", attr->values[0].string.text);
+
if ((attr = ippFindAttribute(response, "printer-info",
IPP_TAG_TEXT)) != NULL)
cgiSetVariable("PRINTER_INFO", attr->values[0].string.text);
@@ -852,12 +865,17 @@
*response, /* IPP response */
*oldinfo; /* Old printer information */
const cgi_file_t *file; /* Uploaded file, if any */
- const char *var; /* CGI variable */
+ const char *var, /* CGI variable */
+ *cm_var; /* Color-management variable */
char uri[HTTP_MAX_URI], /* Device or printer URI */
*uriptr; /* Pointer into URI */
- int maxrate; /* Maximum baud rate */
+ int maxrate, /* Maximum baud rate */
+ is_per_queue, /* Using per-queue interface? */
+ is_colormanaged; /* Color management on? */
char baudrate[255]; /* Baud rate string */
+ char new_makeppd[1024]; /* New make file PPD */
const char *name, /* Pointer to class name */
+ *printer, /* Pointer to class name */
*ptr; /* Pointer to CGI variable */
const char *title; /* Title of page */
static int baudrates[] = /* Baud rates */
@@ -909,14 +927,38 @@
else
oldinfo = NULL;
+ /*
+ * If asked for a per-queue job...
+ */
+ if((var = cgiGetVariable("PER_QUEUE_SUBMIT")) != NULL)
+ {
+ cgiStartHTML("Replace PPD");
+ cgiCopyTemplateLang("replace-ppd.tmpl");
+ cgiEndHTML();
+ }
+
file = cgiGetFile();
+ if ((var = cgiGetVariable("PER_QUEUE")) != NULL)
+ is_per_queue = 1;
+ else
+ is_per_queue = 0;
+
if (file)
{
fprintf(stderr, "DEBUG: file->tempfile=%s\n", file->tempfile);
fprintf(stderr, "DEBUG: file->name=%s\n", file->name);
fprintf(stderr, "DEBUG: file->filename=%s\n", file->filename);
fprintf(stderr, "DEBUG: file->mimetype=%s\n", file->mimetype);
+ }
+ else if (is_per_queue)
+ {
+ cgiSetVariable("ERROR",
+ cgiText(_("No PPD file specified.")));
+ cgiStartHTML(title);
+ cgiCopyTemplateLang("error.tmpl");
+ cgiEndHTML();
+ return;
}
if ((name = cgiGetVariable("PRINTER_NAME")) != NULL)
@@ -1128,10 +1170,19 @@
IPP_TAG_TEXT)) != NULL)
cgiSetVariable("PRINTER_LOCATION", attr->values[0].string.text);
+ if ((attr = ippFindAttribute(oldinfo, "ppd-timestamp",
+ IPP_TAG_TEXT)) != NULL)
+ cgiSetVariable("PPD_TIMESTAMP", attr->values[0].string.text);
+
if ((attr = ippFindAttribute(oldinfo, "printer-is-shared",
IPP_TAG_BOOLEAN)) != NULL)
cgiSetVariable("PRINTER_IS_SHARED",
attr->values[0].boolean ? "1" : "0");
+
+ if ((attr = ippFindAttribute(oldinfo, "printer-is-colormanaged",
+ IPP_TAG_BOOLEAN)) != NULL)
+ cgiSetVariable("PRINTER_IS_COLORMANAGED",
+ attr->values[0].boolean ? "1" : "0");
}
cgiCopyTemplateLang("modify-printer.tmpl");
@@ -1148,6 +1199,7 @@
else
#endif /* __APPLE__ */
cgiSetVariable("printer_is_shared", "0");
+ cgiSetVariable("printer_is_colormanaged", "1");
cgiCopyTemplateLang("add-printer.tmpl");
}
@@ -1169,7 +1221,6 @@
*/
int fd; /* PPD file */
- char filename[1024]; /* PPD filename */
ppd_file_t *ppd; /* PPD information */
char buffer[1024]; /* Buffer */
int bytes; /* Number of bytes */
@@ -1191,28 +1242,27 @@
fprintf(stderr, "ERROR: Unable to get PPD file %s: %d - %s\n",
uri, get_status, httpStatus(get_status));
}
- else if ((fd = cupsTempFd(filename, sizeof(filename))) >= 0)
+ else if ((fd = cupsTempFd(new_makeppd, sizeof(new_makeppd))) >= 0)
{
while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
write(fd, buffer, bytes);
close(fd);
- if ((ppd = ppdOpenFile(filename)) != NULL)
+ if ((ppd = ppdOpenFile(new_makeppd)) != NULL)
{
if (ppd->manufacturer)
cgiSetVariable("CURRENT_MAKE", ppd->manufacturer);
if (ppd->nickname)
cgiSetVariable("CURRENT_MAKE_AND_MODEL", ppd->nickname);
-
+
ppdClose(ppd);
- unlink(filename);
}
else
{
fprintf(stderr, "ERROR: Unable to open PPD file %s: %s\n",
- filename, ppdErrorString(ppdLastError(&bytes)));
+ new_makeppd, ppdErrorString(ppdLastError(&bytes)));
}
}
else
@@ -1296,7 +1346,7 @@
cgiCopyTemplateLang("choose-make.tmpl");
cgiEndHTML();
}
- else
+ else if (!cgiGetVariable("PER_QUEUE_SUBMIT"))
{
/*
* Let the user choose a model...
@@ -1336,6 +1386,7 @@
* ppd-name
* device-uri
* printer-is-accepting-jobs
+ * printer-is-colormanaged
* printer-is-shared
* printer-state
*/
@@ -1395,17 +1446,56 @@
ippAddBoolean(request, IPP_TAG_PRINTER, "printer-is-shared",
var && (!strcmp(var, "1") || !strcmp(var, "on")));
+ cm_var = cgiGetVariable("printer_is_colormanaged");
+ ippAddBoolean(request, IPP_TAG_PRINTER, "printer-is-colormanaged",
+ cm_var && (!strcmp(cm_var, "1") || !strcmp(cm_var, "on")));
+
ippAddInteger(request, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state",
IPP_PRINTER_IDLE);
+ if (cm_var && (!strcmp(cm_var, "1") || !strcmp(cm_var, "on")))
+ is_colormanaged = 1;
+ else
+ is_colormanaged = 0;
+
/*
* Do the request and get back a response...
*/
if (file)
- ippDelete(cupsDoFileRequest(http, request, "/admin/", file->tempfile));
- else
- ippDelete(cupsDoRequest(http, request, "/admin/"));
+ {
+ /*
+ * If user uploads a PPD, mark color management in file...
+ */
+ if (modify)
+ do_set_timestamp(http, request);
+
+ do_update_ppd(http, request, is_colormanaged, file->tempfile);
+ }
+ else if (cupsGetPPD2(http, new_makeppd))
+ {
+ /*
+ * Obtain a PPD from a specific make
+ */
+ if (modify)
+ do_set_timestamp(http, request);
+
+ do_update_ppd(http, request, is_colormanaged, new_makeppd);
+ unlink(new_makeppd);
+ }
+ else
+ {
+ /*
+ * If no new file is added, we only mark color management
+ * in the existing printer.
+ */
+ var = cgiGetVariable("PRINTER_NAME");
+
+ const char *filename = cupsGetPPD2(http, var);
+
+ do_update_ppd(http, request, is_colormanaged, filename);
+ unlink(filename);
+ }
if (cupsLastError() == IPP_NOT_AUTHORIZED)
{
@@ -1423,14 +1513,16 @@
/*
* Redirect successful updates back to the printer page...
*/
-
char refresh[1024]; /* Refresh URL */
-
cgiFormEncode(uri, name, sizeof(uri));
- snprintf(refresh, sizeof(refresh),
- "5;/admin/?OP=redirect&URL=/printers/%s", uri);
+ if (!is_per_queue)
+ snprintf(refresh, sizeof(refresh),
+ "5;/admin/?OP=redirect&URL=/printers/%s", uri);
+ else
+ snprintf(refresh, sizeof(refresh),
+ "5;/admin/?OP=redirect&URL=/printers/", uri);
cgiSetVariable("refresh_page", refresh);
@@ -1443,7 +1535,6 @@
/*
* Set the printer options...
*/
-
cgiSetVariable("OP", "set-printer-options");
do_set_options(http, 0);
return;
@@ -3015,6 +3106,120 @@
}
}
+/*
+ * 'do_update_ppd()' - Refreshes the PPD file for a given queue
+ */
+
+static void
+do_update_ppd(http_t* http, ipp_t* request, int is_cm, const char* file)
+{
+ char line[1024]; /* Line from PPD file */
+ cups_file_t *in, /* Input file */
+ *out; /* Output file */
+ const char *temp = "/tmp/temp.ppd";
+
+ if (!request)
+ return;
+ else if(!file)
+ {
+ ippDelete(cupsDoRequest(http, request, "/admin/"));
+ return;
+ }
+
+ in = cupsFileOpen(file, "r");
+ out = cupsFileOpen(temp, "w");
+
+ /*
+ * Here we enable or disable color management inside
+ * a PPD file.
+ */
+ while (cupsFileGets(in, line, sizeof(line)))
+ {
+ if (!strncmp(line, "*OpenUI *Resolution", 19) ||
+ !strncmp(line, "*OpenUI *ColorModel", 19) ||
+ !strncmp(line, "*OpenUI *MediaType", 18))
+ {
+ do
+ {
+ if (!is_cm)
+ cupsFilePuts(out, "*%(CM_OFF)");
+
+ cupsFilePrintf(out, "%s\n", line);
+ } while (cupsFileGets(in, line, sizeof(line)) &&
+ strncmp(line, "*CloseUI", 8) != 0);
+
+ if (!is_cm)
+ cupsFilePuts(out, "*%(CM_OFF)");
+
+ cupsFilePrintf(out, "%s\n", line);
+ }
+ else if (!strncmp(line, "*%(CM_OFF)*OpenUI *Resolution", 29) ||
+ !strncmp(line, "*%(CM_OFF)*OpenUI *ColorModel", 29) ||
+ !strncmp(line, "*%(CM_OFF)*OpenUI *MediaType", 28))
+ {
+ if(is_cm)
+ {
+ do
+ {
+ cupsFilePrintf(out, "%s\n", line+10);
+ } while (cupsFileGets(in, line, sizeof(line)) &&
+ strncmp(line, "*%(CM_OFF)*CloseUI", 18) != 0);
+ cupsFilePrintf(out, "%s\n", line+10);
+ }
+ }
+ else if (!strncmp(line, "*cupsICCProfile", 15))
+ {
+ if (!is_cm)
+ cupsFilePuts(out, "*%(CM_OFF)");
+
+ cupsFilePrintf(out, "%s\n", line);
+ }
+ else if (!strncmp(line, "*%(CM_OFF)*cupsICCProfile", 25))
+ {
+ if (is_cm)
+ cupsFilePrintf(out, "%s\n", line+10);
+ else
+ cupsFilePrintf(out, "%s\n", line);
+ }
+ else if (!strncmp(line, "*cupsICCQualifier", 17))
+ {
+ if (!is_cm)
+ cupsFilePuts(out, "*%(CM_OFF)");
+
+ cupsFilePrintf(out, "%s\n", line);
+ }
+ else if (!strncmp(line, "*%(CM_OFF)*cupsICCQualifier", 27))
+ {
+ if (is_cm)
+ cupsFilePrintf(out, "%s\n", line+10);
+ else
+ cupsFilePrintf(out, "%s\n", line);
+ }
+ else
+ cupsFilePrintf(out, "%s\n", line);
+ }
+
+ cupsFileClose(in);
+ cupsFileClose(out);
+
+ ippDelete(cupsDoFileRequest(http, request, "/admin/", temp));
+}
+
+static
+void do_set_timestamp(http_t* http, ipp_t* request)
+{
+ time_t curtime;
+ struct tm *loctime;
+
+ /*
+ * Update the PPD 'last modified' timestamp.
+ */
+ curtime = time(NULL);
+ loctime = localtime (&curtime);
+
+ ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "ppd-timestamp",
+ NULL, asctime(loctime));
+}
/*
* 'do_set_default()' - Set the server default printer/class.
--- a/cgi-bin/printers.c
+++ b/cgi-bin/printers.c
@@ -27,7 +27,7 @@
#include "cgi-private.h"
#include
-
+ const cgi_file_t *file;
/*
* Local functions...
*/
@@ -59,7 +59,6 @@
"printer-uri-supported"
};
-
/*
* Get any form variables...
*/
@@ -353,7 +352,7 @@
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, user);
- cgiGetAttributes(request, "printers.tmpl");
+ cgiGetAttributes(request, "printers.tmpl");
/*
* Do the request and get back a response...
--- a/cups/cups.h
+++ b/cups/cups.h
@@ -244,7 +244,10 @@
CUPS_PRINTER_SCANNER = 0x2000000, /* Scanner-only device
* @since CUPS 1.4/OS X 10.6@ */
CUPS_PRINTER_MFP = 0x4000000, /* Printer with scanning capabilities
- * @since CUPS 1.4/OS X 10.6@ */
+ * @since CUPS 1.4/OS X
+10.5@ */
+ CUPS_CM_OFF = 0x800000, /* Printer is not color-managed
+ * @since CUPS 1.2/OS X 10.6@ */
CUPS_PRINTER_OPTIONS = 0x6fffc /* ~(CLASS | REMOTE | IMPLICIT |
* DEFAULT | FAX | REJECTING | DELETE |
* NOT_SHARED | AUTHENTICATED |
--- a/cups/dest.c
+++ b/cups/dest.c
@@ -1433,11 +1433,13 @@
#ifdef __APPLE__
"media-supported",
#endif /* __APPLE__ */
+ "ppd-timestamp",
"printer-commands",
"printer-defaults",
"printer-info",
"printer-is-accepting-jobs",
- "printer-is-shared",
+ "printer-is-colormanaged",
+ "printer-is-shared"
"printer-location",
"printer-make-and-model",
"printer-mandatory-job-attributes",
@@ -1542,8 +1544,10 @@
!strcmp(attr->name, "marker-message") ||
!strcmp(attr->name, "marker-names") ||
!strcmp(attr->name, "marker-types") ||
+ !strcmp(attr->name, "ppd-timestamp") ||
!strcmp(attr->name, "printer-commands") ||
!strcmp(attr->name, "printer-info") ||
+ !strcmp(attr->name, "printer-is-colormanaged") ||
!strcmp(attr->name, "printer-is-shared") ||
!strcmp(attr->name, "printer-make-and-model") ||
!strcmp(attr->name, "printer-mandatory-job-attributes") ||
--- a/cups/encode.c
+++ b/cups/encode.c
@@ -294,6 +294,7 @@
{ 0, "ppd-type", IPP_TAG_KEYWORD, IPP_TAG_OPERATION,
IPP_TAG_ZERO,
cups_get_ppds },
+ { 0, "ppd-timestamp", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 0, "ppi", IPP_TAG_INTEGER, IPP_TAG_JOB },
{ 0, "ppi-default", IPP_TAG_INTEGER, IPP_TAG_PRINTER },
{ 0, "prettyprint", IPP_TAG_BOOLEAN, IPP_TAG_JOB },
@@ -305,6 +306,7 @@
{ 0, "printer-error-policy", IPP_TAG_NAME, IPP_TAG_PRINTER },
{ 0, "printer-info", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 0, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
+ { 0, "printer-is-colormanaged", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
{ 0, "printer-is-shared", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
{ 0, "printer-location", IPP_TAG_TEXT, IPP_TAG_PRINTER },
{ 0, "printer-make-and-model", IPP_TAG_TEXT, IPP_TAG_PRINTER },
--- a/cups/ipp-support.c
+++ b/cups/ipp-support.c
@@ -1533,6 +1533,7 @@
"pdf-k-octets-supported", /* CUPS extension */
"pdf-versions-supported", /* CUPS extension */
"pdl-override-supported",
+ "ppd-timestamp",
"port-monitor", /* CUPS extension */
"port-monitor-supported", /* CUPS extension */
"preferred-attributes-supported",
@@ -1556,6 +1557,7 @@
"printer-icons",
"printer-info",
"printer-is-accepting-jobs",
+ "printer-is-colormanaged",
"printer-is-shared", /* CUPS extension */
"printer-kind", /* IPP Paid Printing */
"printer-location",
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -97,6 +97,7 @@
help/network.html \
help/options.html \
help/overview.html \
+ help/perqueue.html \
help/policies.html \
help/postscript-driver.html \
help/ppd-compiler.html \
--- /dev/null
+++ b/doc/help/perqueue.html
@@ -0,0 +1,34 @@
+
+
+
+ Using the Per-Queue Interface
+
+
+
+
+This version of CUPS has been enhanced with an interface for per-queue color management, allowing a much easier way for color-savvy users to test and distribute printer drivers in order to produce precise results.
+
+In addition to a new interface, a means to disable color management for a given queue has been included as well. This makes it so that target printing can be achieved on individual queues.
+
+How Do I Use It?
+
+Click on the Printers tab at
+the top of this page. There you will see the usual interface for managing your
+printers, along with an additional "Settings" column for each of your queues.
+
+There are two buttons available for each printer. Download simply lets you save the PPD file currently associated with a queue (where available) to your computer. If want to change the currently associated driver, use Replace to upload a PPD file from your hard drive. This will update the queue and mark a time stamp in the “Last Modified” column. Note that if you added a queue, the time stamp will simply display an asterisk (*).
+
+Modifying any queue requires administrative privileges.
+
+Color Management
+
+A feature to enable/disable color management has been implemented. To use it, you will need to select a queue in Printers (listed below "Queue Name"). Once selected, click on the “Administration” combo box located below the header, and select “Modify Printer”.
+
+You will be asked to make the usual changes to a queue, but you will also see a “Color Management” check box option, where a check will enable color management for a printer. Un-check if you wish to use the queue for duties such as target printing.
+
+Color management is enabled by default whenever you add a new queue.
+
+This build was produced during the 2013 Google Summer of Code. As such, it is still experimental and a few bugs will likely need to be addressed in the future.
+
+
+
--- /dev/null
+++ b/doc/index.html
@@ -0,0 +1,109 @@
+
+
+
+
+ Home - CUPS 1.6.1
+
+
+
+
+
+
+
+
+![]()
+ Home
+ Administration
+ Classes
+ Online Help
+ Jobs
+ Printers
+
+
+
+
+
+
+
+
+CUPS 1.6.1
+
+CUPS is the standards-based, open source printing system developed by
+Apple Inc. for OS® X and
+other UNIX®-like operating systems.
+
+
+
+
+
+
+
+
+
+CUPS for Users
+
+
+
+
+
+
+
+
+
+
+
+
+
+CUPS for Administrators
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CUPS for Developers
+
+Introduction to CUPS Programming
+
+
+
+Filter and Backend Programming
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CUPS and the CUPS logo are trademarks of
+Apple Inc. CUPS is copyright 2007-2012 Apple
+Inc. All rights reserved.
+
+
+
--- a/scheduler/classes.c
+++ b/scheduler/classes.c
@@ -506,6 +506,26 @@
"Syntax error on line %d of classes.conf.",
linenum);
}
+ else if (!_cups_strcasecmp(line, "ColorManaged"))
+ {
+ /*
+ * Set the initial color-managed state...
+ */
+
+ if (value &&
+ (!_cups_strcasecmp(value, "yes") ||
+ !_cups_strcasecmp(value, "on") ||
+ !_cups_strcasecmp(value, "true")))
+ p->color_managed = 1;
+ else if (value &&
+ (!_cups_strcasecmp(value, "no") ||
+ !_cups_strcasecmp(value, "off") ||
+ !_cups_strcasecmp(value, "false")))
+ p->color_managed = 0;
+ else
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Syntax error on line %d of printers.conf.", linenum);
+ }
else if (!_cups_strcasecmp(line, "Shared"))
{
/*
@@ -772,6 +792,11 @@
else
cupsFilePuts(fp, "Accepting No\n");
+ if (pclass->color_managed)
+ cupsFilePuts(fp, "ColorManaged Yes\n");
+ else
+ cupsFilePuts(fp, "ColorManaged No\n");
+
if (pclass->shared)
cupsFilePuts(fp, "Shared Yes\n");
else
--- a/scheduler/cups-lpd.c
+++ b/scheduler/cups-lpd.c
@@ -60,7 +60,7 @@
int num_options, cups_option_t *options);
static int get_printer(http_t *http, const char *name, char *dest,
int destsize, cups_option_t **options,
- int *accepting, int *shared, ipp_pstate_t *state);
+ int *accepting, int *color_managed, int *shared, ipp_pstate_t *state);
static int print_file(http_t *http, int id, const char *filename,
const char *docname, const char *user,
const char *format, int last);
@@ -401,6 +401,7 @@
int destsize, /* I - Size of destination buffer */
cups_option_t **options, /* O - Printer options */
int *accepting, /* O - printer-is-accepting-jobs value */
+ int *color_managed, /* O - printer-is-colormanaged value */
int *shared, /* O - printer-is-shared value */
ipp_pstate_t *state) /* O - printer-state value */
{
@@ -419,6 +420,7 @@
{ /* Requested attributes */
"printer-info",
"printer-is-accepting-jobs",
+ "printer-is-colormanaged",
"printer-is-shared",
"printer-name",
"printer-state"
@@ -431,6 +433,8 @@
if (accepting)
*accepting = 0;
+ if (color_managed)
+ *color_managed = 0;
if (shared)
*shared = 0;
if (state)
@@ -477,6 +481,7 @@
*/
ipp_attribute_t *accepting_attr,/* printer-is-accepting-jobs */
+ *cm_attr, /* printer-is-colormanaged */
*info_attr, /* printer-info */
*name_attr, /* printer-name */
*shared_attr, /* printer-is-shared */
@@ -536,6 +541,7 @@
*/
accepting_attr = NULL;
+ cm_attr = NULL;
info_attr = NULL;
name_attr = NULL;
shared_attr = NULL;
@@ -552,6 +558,9 @@
else if (!strcmp(attr->name, "printer-name") &&
attr->value_tag == IPP_TAG_NAME)
name_attr = attr;
+ else if (!strcmp(attr->name, "printer-is-colormanaged") &&
+ attr->value_tag == IPP_TAG_BOOLEAN)
+ cm_attr = attr;
else if (!strcmp(attr->name, "printer-is-shared") &&
attr->value_tag == IPP_TAG_BOOLEAN)
shared_attr = attr;
@@ -574,6 +583,9 @@
if (accepting && accepting_attr)
*accepting = accepting_attr->values[0].boolean;
+ if (color_managed && cm_attr)
+ *color_managed = cm_attr->values[0].boolean;
+
if (shared && shared_attr)
*shared = shared_attr->values[0].boolean;
@@ -611,6 +623,19 @@
*accepting = attr->values[0].boolean;
}
+ if (color_managed)
+ {
+ if ((attr = ippFindAttribute(response, "printer-is-colormanaged",
+ IPP_TAG_BOOLEAN)) == NULL)
+ {
+ syslog(LOG_ERR, "No printer-is-colormanaged attribute found in "
+ "response from server!");
+ *color_managed = 1;
+ }
+ else
+ *color_managed = attr->values[0].boolean;
+ }
+
if (shared)
{
if ((attr = ippFindAttribute(response, "printer-is-shared",
@@ -643,7 +668,7 @@
num_options = 0;
- if (options && shared && accepting)
+ if (options && color_managed && shared && accepting)
{
if ((cups_serverroot = getenv("CUPS_SERVERROOT")) == NULL)
cups_serverroot = CUPS_SERVERROOT;
@@ -786,6 +811,7 @@
docname[1024], /* Document name */
dest[256]; /* Printer/class queue */
int accepting, /* printer-is-accepting */
+ color_managed, /* printer-is-colormanaged */
shared, /* printer-is-shared */
num_options; /* Number of options */
cups_option_t *options; /* Options */
@@ -813,7 +839,7 @@
*/
num_options = get_printer(http, queue, dest, sizeof(dest), &options,
- &accepting, &shared, NULL);
+ &accepting, &color_managed, &shared, NULL);
if (num_options < 0 || !accepting || !shared)
{
@@ -1362,7 +1388,7 @@
* Get the actual destination name and printer state...
*/
- if (get_printer(http, queue, dest, sizeof(dest), NULL, NULL, NULL, &state))
+ if (get_printer(http, queue, dest, sizeof(dest), NULL, NULL, NULL, NULL, &state))
{
syslog(LOG_ERR, "Unable to get printer %s: %s", queue,
cupsLastErrorString());
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
@@ -974,6 +974,10 @@
IPP_TAG_TEXT)) != NULL)
cupsdSetString(&pclass->info, attr->values[0].string.text);
+ if ((attr = ippFindAttribute(con->request, "ppd-timestamp",
+ IPP_TAG_TEXT)) != NULL)
+ cupsdSetString(&pclass->ppd_timestamp, attr->values[0].string.text);
+
if ((attr = ippFindAttribute(con->request, "printer-is-accepting-jobs",
IPP_TAG_BOOLEAN)) != NULL &&
attr->values[0].boolean != pclass->accepting)
@@ -1001,6 +1005,13 @@
pclass->shared = attr->values[0].boolean;
}
+ if ((attr = ippFindAttribute(con->request, "printer-is-colormanaged",
+ IPP_TAG_BOOLEAN)) != NULL)
+ {
+ if (pclass->color_managed && !attr->values[0].boolean)
+ pclass->color_managed = attr->values[0].boolean;
+ }
+
if ((attr = ippFindAttribute(con->request, "printer-state",
IPP_TAG_ENUM)) != NULL)
{
@@ -2332,6 +2343,10 @@
IPP_TAG_TEXT)) != NULL)
cupsdSetString(&printer->info, attr->values[0].string.text);
+ if ((attr = ippFindAttribute(con->request, "ppd-timestamp",
+ IPP_TAG_TEXT)) != NULL)
+ cupsdSetString(&printer->ppd_timestamp, attr->values[0].string.text);
+
set_device_uri = 0;
if ((attr = ippFindAttribute(con->request, "device-uri",
@@ -2491,6 +2506,12 @@
printer->accepting ? "Now" : "No longer");
}
+if ((attr = ippFindAttribute(con->request, "printer-is-colormanaged",
+ IPP_TAG_BOOLEAN)) != NULL)
+ {
+ printer->color_managed = attr->values[0].boolean;
+ }
+
if ((attr = ippFindAttribute(con->request, "printer-is-shared",
IPP_TAG_BOOLEAN)) != NULL)
{
@@ -4905,6 +4926,10 @@
ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-shared",
printer->shared);
+ if (!ra || cupsArrayFind(ra, "printer-is-colormanaged"))
+ ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-colormanaged",
+ printer->color_managed);
+
if (!ra || cupsArrayFind(ra, "printer-more-info"))
{
httpAssembleURIf(HTTP_URI_CODING_ALL, printer_uri, sizeof(printer_uri),
@@ -4953,6 +4978,9 @@
if (!printer->shared)
type |= CUPS_PRINTER_NOT_SHARED;
+ if (!printer->color_managed)
+ type |= CUPS_CM_OFF;
+
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-type",
type);
}
--- a/scheduler/printers.c
+++ b/scheduler/printers.c
@@ -94,12 +94,13 @@
cupsdSetString(&p->uuid, _httpAssembleUUID(ServerName, RemotePort, name, 0,
uuid, sizeof(uuid)));
cupsdSetDeviceURI(p, "file:///dev/null");
-
- p->state = IPP_PRINTER_STOPPED;
- p->state_time = time(NULL);
- p->accepting = 0;
- p->shared = DefaultShared;
- p->filetype = mimeAddType(MimeDatabase, "printer", name);
+ cupsdSetString(&p->ppd_timestamp, "*");
+ p->state = IPP_PRINTER_STOPPED;
+ p->state_time = time(NULL);
+ p->accepting = 0;
+ p->color_managed = 1;
+ p->shared = DefaultShared;
+ p->filetype = mimeAddType(MimeDatabase, "printer", name);
cupsdSetString(&p->job_sheets[0], "none");
cupsdSetString(&p->job_sheets[1], "none");
@@ -753,6 +754,7 @@
cupsdClearString(&p->job_sheets[0]);
cupsdClearString(&p->job_sheets[1]);
cupsdClearString(&p->device_uri);
+ cupsdClearString(&p->ppd_timestamp);
cupsdClearString(&p->sanitized_device_uri);
cupsdClearString(&p->port_monitor);
cupsdClearString(&p->op_policy);
@@ -952,6 +954,11 @@
if (value)
cupsdSetString(&p->make_model, value);
}
+ else if (!_cups_strcasecmp(line, "PPDTimeStamp"))
+ {
+ if (value)
+ cupsdSetString(&p->ppd_timestamp, value);
+ }
else if (!_cups_strcasecmp(line, "Location"))
{
if (value)
@@ -1109,6 +1116,26 @@
cupsdLogMessage(CUPSD_LOG_ERROR,
"Syntax error on line %d of printers.conf.", linenum);
}
+ else if (!_cups_strcasecmp(line, "ColorManaged"))
+ {
+ /*
+ * Set the initial color-managed state...
+ */
+
+ if (value &&
+ (!_cups_strcasecmp(value, "yes") ||
+ !_cups_strcasecmp(value, "on") ||
+ !_cups_strcasecmp(value, "true")))
+ p->color_managed = 1;
+ else if (value &&
+ (!_cups_strcasecmp(value, "no") ||
+ !_cups_strcasecmp(value, "off") ||
+ !_cups_strcasecmp(value, "false")))
+ p->color_managed = 0;
+ else
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Syntax error on line %d of printers.conf.", linenum);
+ }
else if (!_cups_strcasecmp(line, "JobSheets"))
{
/*
@@ -1415,6 +1442,9 @@
cupsFilePutConf(fp, "DeviceURI", printer->device_uri);
+ if (printer->ppd_timestamp)
+ cupsFilePutConf(fp, "PPDTimeStamp", printer->ppd_timestamp);
+
if (printer->port_monitor)
cupsFilePutConf(fp, "PortMonitor", printer->port_monitor);
@@ -1448,6 +1478,11 @@
else
cupsFilePuts(fp, "Shared No\n");
+ if (printer->color_managed)
+ cupsFilePuts(fp, "ColorManaged Yes\n");
+ else
+ cupsFilePuts(fp, "ColorManaged No\n");
+
snprintf(value, sizeof(value), "%s %s", printer->job_sheets[0],
printer->job_sheets[1]);
cupsFilePutConf(fp, "JobSheets", value);
@@ -2089,6 +2124,8 @@
NULL, p->info ? p->info : "");
ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uuid", NULL,
p->uuid);
+ ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT,
+ "ppd-timestamp", NULL, p->ppd_timestamp ? p->ppd_timestamp : "*");
if (cupsArrayCount(p->users) > 0)
{
@@ -3027,6 +3064,7 @@
"\t\t<%s/>\n"
"\t\tprinter-location \n"
"\t\t", p->accepting ? "true" : "false");
+
write_xml_string(fp, p->location);
cupsFilePuts(fp, " \n"
"\t\tprinter-make-and-model \n"
--- a/scheduler/printers.h
+++ b/scheduler/printers.h
@@ -70,6 +70,7 @@
*error_policy; /* Error policy */
cupsd_policy_t *op_policy_ptr; /* Pointer to operation policy */
int shared; /* Shared? */
+ int color_managed; /* Color Managed? */
int accepting; /* Accepting jobs? */
int holding_new_jobs; /* Holding new jobs for printing? */
int in_implicit_class; /* In an implicit class? */
@@ -81,6 +82,7 @@
char *job_sheets[2]; /* Banners/job sheets */
cups_ptype_t type; /* Printer type (color, small, etc.) */
char *device_uri; /* Device URI */
+ char *ppd_timestamp; /* Driver Modification Date */
char *sanitized_device_uri; /* Sanitized device URI */
char *port_monitor; /* Port monitor */
int raw; /* Raw queue? */
--- a/templates/Makefile
+++ b/templates/Makefile
@@ -79,6 +79,7 @@
printer-stop.tmpl \
printers.tmpl \
printers-header.tmpl \
+ replace-ppd.tmpl \
restart.tmpl \
samba-export.tmpl \
samba-exported.tmpl \
--- a/templates/add-printer.tmpl
+++ b/templates/add-printer.tmpl
@@ -38,10 +38,15 @@
Share This Printer
+Color Management:
+
+Enabled
+
+
-
\ No newline at end of file
+
--- a/templates/choose-make.tmpl
+++ b/templates/choose-make.tmpl
@@ -34,6 +34,10 @@
{?printer_is_shared=?Do Not:{?printer_is_shared=0?Do Not:}} Share This Printer
+Color Management:
+{?printer_is_colormanaged=?Not:{?printer_is_colormanaged=0?Not:}} Enabled
+
+
Make:
+Color Management:
+{?printer_is_colormanaged=?Not:{?printer_is_colormanaged=0?Not:}} Enabled
+
+
Make:
{PPD_MAKE}
@@ -57,4 +61,4 @@
-
\ No newline at end of file
+
--- a/templates/modify-printer.tmpl
+++ b/templates/modify-printer.tmpl
@@ -32,6 +32,11 @@
Share This Printer
+Color Management:
+
+Enabled
+
+
--- a/templates/printer.tmpl
+++ b/templates/printer.tmpl
@@ -3,7 +3,7 @@
{printer_name}
({printer_state=3?Idle:{printer_state=4?Processing:Paused}},
{printer_is_accepting_jobs=0?Rejecting Jobs:Accepting Jobs},
-{server_is_sharing_printers=0?Not:{printer_is_shared=0?Not:}} Shared{default_name={printer_name}?, Server Default:})
+{server_is_sharing_printers=0?Not:{printer_is_shared=0?Not:}} Shared{default_name={printer_name}?, Server Default:}, {printer_is_colormanaged=0?Not Color-Managed:Color-Managed})
-
\ No newline at end of file
+
--- /dev/null
+++ b/templates/replace-ppd.tmpl
@@ -0,0 +1,40 @@
+
+
+
+Replace {printer_name} PPD File
+
+
+
+
+
+
debian/patches/cups-snmp-oids-device-id-hp-ricoh.patch 0000644 0000000 0000000 00000003334 12277464531 020073 0 ustar Description: Let the "snmp" backend also use the manufacturer-specific
MIBs of HP and Ricoh to obtain the device IDs of network-connected
printers. This way we get more reliable information about make and model
and in addition the supported page description languages, which allow to
identify whether an optional PostScript add-on is installed or for an
unsupported printer which generic PPD is the best choice (requested by
Ricoh).
Bug: https://www.cups.org/str.php?L3552
Author: Tim Waugh
--- a/backend/snmp.c
+++ b/backend/snmp.c
@@ -187,6 +187,8 @@
static const int LexmarkProductOID[] = { 1,3,6,1,4,1,641,2,1,2,1,2,1,-1 };
static const int LexmarkProductOID2[] = { 1,3,6,1,4,1,674,10898,100,2,1,2,1,2,1,-1 };
static const int LexmarkDeviceIdOID[] = { 1,3,6,1,4,1,641,2,1,2,1,3,1,-1 };
+static const int HPDeviceIdOID[] = { 1,3,6,1,4,1,11,2,3,9,1,1,7,0,-1 };
+static const int RicohDeviceIdOID[] = { 1,3,6,1,4,1,367,3,2,1,1,1,11,0,-1 };
static const int XeroxProductOID[] = { 1,3,6,1,4,1,128,2,1,3,1,2,0,-1 };
static cups_array_t *DeviceURIs = NULL;
static int HostNameLookups = 0;
@@ -1004,8 +1006,14 @@
packet.community, CUPS_ASN1_GET_REQUEST,
DEVICE_ID, LexmarkDeviceIdOID);
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
+ packet.community, CUPS_ASN1_GET_REQUEST,
+ DEVICE_ID, RicohDeviceIdOID);
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
packet.community, CUPS_ASN1_GET_REQUEST,
DEVICE_PRODUCT, XeroxProductOID);
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
+ packet.community, CUPS_ASN1_GET_REQUEST,
+ DEVICE_ID, HPDeviceIdOID);
break;
case DEVICE_DESCRIPTION :
debian/patches/CVE-2014-9679.patch 0000644 0000000 0000000 00000002147 12473416226 013266 0 ustar Description: fix buffer overflow in cupsRasterReadPixels
Origin: upstream, https://www.cups.org/strfiles.php/3438/str4551.patch
Bug: https://www.cups.org/str.php?L4551
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=778387
Index: cups-1.7.5/filter/raster.c
===================================================================
--- cups-1.7.5.orig/filter/raster.c 2013-05-29 07:51:34.000000000 -0400
+++ cups-1.7.5/filter/raster.c 2015-02-25 13:35:19.849037604 -0500
@@ -281,7 +281,10 @@
*/
if (!cups_raster_read_header(r))
+ {
+ memset(h, 0, sizeof(cups_page_header_t));
return (0);
+ }
/*
* Copy the header to the user-supplied buffer...
@@ -310,7 +313,10 @@
*/
if (!cups_raster_read_header(r))
+ {
+ memset(h, 0, sizeof(cups_page_header2_t));
return (0);
+ }
/*
* Copy the header to the user-supplied buffer...
@@ -988,7 +994,7 @@
cups_raster_update(r);
- return (r->header.cupsBytesPerLine != 0 && r->header.cupsHeight != 0);
+ return (r->header.cupsBytesPerLine != 0 && r->header.cupsHeight != 0 && (r->header.cupsBytesPerLine % r->bpp) == 0);
}
debian/patches/ppdc-dynamic-linking.patch 0000644 0000000 0000000 00000005104 12277464531 015652 0 ustar Description: Dynamically link ppdc, to work around segfault on mipsen.
Author: Sune Vuorela
Bug-Debian: http://bugs.debian.org/548246
--- a/ppdc/Makefile
+++ b/ppdc/Makefile
@@ -239,14 +239,14 @@
# genstrings - generate GNU gettext strings.
#
-genstrings: genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \
+genstrings: genstrings.o libcupsppdc.so ../cups/$(LIBCUPSSTATIC) \
sample.drv ../data/media.defs
echo Linking $@...
$(CXX) $(ARCHFLAGS) $(LDFLAGS) -o genstrings genstrings.o \
- libcupsppdc.a ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
+ -lcupsppdc ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
$(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
echo Generating localization strings...
- ./genstrings >sample.c
+ LD_LIBRARY_PATH=.:../cups/ ./genstrings >sample.c
#
@@ -260,12 +260,12 @@
ppdc-static: ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
echo Linking $@...
- $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdc-static ppdc.o -lcupsppdc \
../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
$(COMMONLIBS) $(LIBZ)
echo Testing PPD compiler...
- ./ppdc-static -l en,fr -I ../data foo.drv
- ./ppdc-static -l en,fr -z -I ../data foo.drv
+ LD_LIBRARY_PATH=.:../cups/ ./ppdc-static -l en,fr -I ../data foo.drv
+ LD_LIBRARY_PATH=.:../cups/ ./ppdc-static -l en,fr -z -I ../data foo.drv
#
@@ -288,14 +288,14 @@
ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
- $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdi-static ppdi.o libcupsppdc.a \
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdi-static ppdi.o -lcupsppdc \
../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
$(COMMONLIBS) $(LIBZ)
echo Testing PPD importer...
$(RM) -r ppd ppd2 sample-import.drv
- ./ppdc-static -I ../data sample.drv
- ./ppdi-static -I ../data -o sample-import.drv ppd/*
- ./ppdc-static -I ../data -d ppd2 sample-import.drv
+ LD_LIBRARY_PATH=.:../cups/ ./ppdc-static -I ../data sample.drv
+ LD_LIBRARY_PATH=.:../cups/ ./ppdi-static -I ../data -o sample-import.drv ppd/*
+ LD_LIBRARY_PATH=.:../cups/ ./ppdc-static -I ../data -d ppd2 sample-import.drv
if diff -r ppd ppd2 >/dev/null; then \
echo PPD import OK; \
else \
@@ -328,7 +328,7 @@
testcatalog: testcatalog.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
- $(CXX) $(LDFLAGS) -o $@ testcatalog.o libcupsppdc.a \
+ $(CXX) $(LDFLAGS) -o $@ testcatalog.o -lcupsppdc \
../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
$(COMMONLIBS) $(LIBZ)
debian/patches/add-ipp-backend-of-cups-1.4.patch 0000644 0000000 0000000 00000145755 12277464531 016447 0 ustar Description: Add the IPP backend of CUPS 1.4.x to the current CUPS
package as independent backend "ipp14". Some devices (like the
LiveBox2) do not work with the current IPP backend.
Author: Till Kampetter
Bug-Ubuntu: https://bugs.launchpad.net/bugs/945028
Bug-Ubuntu: https://bugs.launchpad.net/bugs/973270
Bug-Ubuntu: https://bugs.launchpad.net/bugs/990734
Bug-Ubuntu: https://bugs.launchpad.net/bugs/992468
Bug-Ubuntu: https://bugs.launchpad.net/bugs/992982
Last-Update: 2012-07-27
--- a/backend/Makefile
+++ b/backend/Makefile
@@ -29,6 +29,7 @@
# See http://www.cups.org/documentation.php/api-filter.html for more info...
RBACKENDS = \
ipp \
+ ipp14 \
lpd \
$(DNSSD_BACKEND)
UBACKENDS = \
@@ -50,6 +51,7 @@
snmp-supplies.o
OBJS = \
ipp.o \
+ ipp14.o \
lpd.o \
dnssd.o \
snmp.o \
@@ -256,6 +258,17 @@
#
+# ipp14
+#
+
+ipp14: ipp14.o ../cups/$(LIBCUPS) libbackend.a
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o ipp14 ipp14.o libbackend.a $(LIBS)
+ #$(RM) http
+ #$(LN) ipp14 http
+
+
+#
# lpd
#
--- /dev/null
+++ b/backend/ipp14.c
@@ -0,0 +1,1953 @@
+/*
+ * "$Id: ipp.c 8950 2010-01-14 22:40:19Z mike $"
+ *
+ * IPP backend for the Common UNIX Printing System (CUPS).
+ *
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * "LICENSE" which should have been included with this file. If this
+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ *
+ * Contents:
+ *
+ * main() - Send a file to the printer or server.
+ * cancel_job() - Cancel a print job.
+ * check_printer_state() - Check the printer state...
+ * compress_files() - Compress print files...
+ * password_cb() - Disable the password prompt for
+ * cupsDoFileRequest().
+ * report_attr() - Report an IPP attribute value.
+ * report_printer_state() - Report the printer state.
+ * run_pictwps_filter() - Convert PICT files to PostScript when printing
+ * remotely.
+ * sigterm_handler() - Handle 'terminate' signals that stop the backend.
+ */
+
+/*
+ * Include necessary headers.
+ */
+
+#include
+#include "backend-private.h"
+#include
+#include
+#include
+
+/*
+ * Globals...
+ */
+
+static char *password = NULL; /* Password for device URI */
+static int password_tries = 0; /* Password tries */
+static const char *auth_info_required = "none";
+ /* New auth-info-required value */
+#ifdef __APPLE__
+static char pstmpname[1024] = ""; /* Temporary PostScript file name */
+#endif /* __APPLE__ */
+static char tmpfilename[1024] = ""; /* Temporary spool file name */
+static int job_cancelled = 0; /* Job cancelled? */
+
+
+/*
+ * Local functions...
+ */
+
+static void cancel_job(http_t *http, const char *uri, int id,
+ const char *resource, const char *user, int version);
+static void check_printer_state(http_t *http, const char *uri,
+ const char *resource, const char *user,
+ int version, int job_id);
+#ifdef HAVE_LIBZ
+static void compress_files(int num_files, char **files);
+#endif /* HAVE_LIBZ */
+static const char *password_cb(const char *);
+static void report_attr(ipp_attribute_t *attr);
+static int report_printer_state(ipp_t *ipp, int job_id);
+
+#ifdef __APPLE__
+static int run_pictwps_filter(char **argv, const char *filename);
+#endif /* __APPLE__ */
+static void sigterm_handler(int sig);
+
+
+/*
+ * 'main()' - Send a file to the printer or server.
+ *
+ * Usage:
+ *
+ * printer-uri job-id user title copies options [file]
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line args */
+ char *argv[]) /* I - Command-line arguments */
+{
+ int i; /* Looping var */
+ int send_options; /* Send job options? */
+ int num_options; /* Number of printer options */
+ cups_option_t *options; /* Printer options */
+ const char *device_uri; /* Device URI */
+ char scheme[255], /* Scheme in URI */
+ hostname[1024], /* Hostname */
+ username[255], /* Username info */
+ resource[1024], /* Resource info (printer name) */
+ addrname[256], /* Address name */
+ *optptr, /* Pointer to URI options */
+ *name, /* Name of option */
+ *value, /* Value of option */
+ sep; /* Separator character */
+ int snmp_fd, /* SNMP socket */
+ start_count, /* Page count via SNMP at start */
+ page_count, /* Page count via SNMP */
+ have_supplies; /* Printer supports supply levels? */
+ int num_files; /* Number of files to print */
+ char **files, /* Files to print */
+ *filename; /* Pointer to single filename */
+ int port; /* Port number (not used) */
+ char uri[HTTP_MAX_URI]; /* Updated URI without user/pass */
+ ipp_status_t ipp_status; /* Status of IPP request */
+ http_t *http; /* HTTP connection */
+ ipp_t *request, /* IPP request */
+ *response, /* IPP response */
+ *supported; /* get-printer-attributes response */
+ time_t start_time; /* Time of first connect */
+ int recoverable; /* Recoverable error shown? */
+ int contimeout; /* Connection timeout */
+ int delay; /* Delay for retries... */
+ int compression, /* Do compression of the job data? */
+ waitjob, /* Wait for job complete? */
+ waitprinter; /* Wait for printer ready? */
+ ipp_attribute_t *job_id_attr; /* job-id attribute */
+ int job_id; /* job-id value */
+ ipp_attribute_t *job_sheets; /* job-media-sheets-completed */
+ ipp_attribute_t *job_state; /* job-state */
+ ipp_attribute_t *copies_sup; /* copies-supported */
+ ipp_attribute_t *format_sup; /* document-format-supported */
+ ipp_attribute_t *printer_state; /* printer-state attribute */
+ ipp_attribute_t *printer_accepting; /* printer-is-accepting-jobs */
+ int copies, /* Number of copies for job */
+ copies_remaining; /* Number of copies remaining */
+ const char *content_type, /* CONTENT_TYPE environment variable */
+ *final_content_type; /* FINAL_CONTENT_TYPE environment var */
+#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
+ struct sigaction action; /* Actions for POSIX signals */
+#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
+ int version; /* IPP version */
+ static const char * const pattrs[] =
+ { /* Printer attributes we want */
+ "com.apple.print.recoverable-message",
+ "copies-supported",
+ "document-format-supported",
+ "marker-colors",
+ "marker-high-levels",
+ "marker-levels",
+ "marker-low-levels",
+ "marker-message",
+ "marker-names",
+ "marker-types",
+ "printer-is-accepting-jobs",
+ "printer-state",
+ "printer-state-message",
+ "printer-state-reasons",
+ };
+ static const char * const jattrs[] =
+ { /* Job attributes we want */
+ "job-media-sheets-completed",
+ "job-state"
+ };
+
+
+ /*
+ * Make sure status messages are not buffered...
+ */
+
+ setbuf(stderr, NULL);
+
+ /*
+ * Ignore SIGPIPE and catch SIGTERM signals...
+ */
+
+#ifdef HAVE_SIGSET
+ sigset(SIGPIPE, SIG_IGN);
+ sigset(SIGTERM, sigterm_handler);
+#elif defined(HAVE_SIGACTION)
+ memset(&action, 0, sizeof(action));
+ action.sa_handler = SIG_IGN;
+ sigaction(SIGPIPE, &action, NULL);
+
+ sigemptyset(&action.sa_mask);
+ sigaddset(&action.sa_mask, SIGTERM);
+ action.sa_handler = sigterm_handler;
+ sigaction(SIGTERM, &action, NULL);
+#else
+ signal(SIGPIPE, SIG_IGN);
+ signal(SIGTERM, sigterm_handler);
+#endif /* HAVE_SIGSET */
+
+ /*
+ * Check command-line...
+ */
+
+ if (argc == 1)
+ {
+ char *s;
+
+ if ((s = strrchr(argv[0], '/')) != NULL)
+ s ++;
+ else
+ s = argv[0];
+
+ printf("network %s \"Unknown\" \"%s (%s)\"\n",
+ s, _cupsLangString(cupsLangDefault(),
+ _("Internet Printing Protocol")), s);
+ return (CUPS_BACKEND_OK);
+ }
+ else if (argc < 6)
+ {
+ _cupsLangPrintf(stderr,
+ _("Usage: %s job-id user title copies options [file]\n"),
+ argv[0]);
+ return (CUPS_BACKEND_STOP);
+ }
+
+ /*
+ * Get the (final) content type...
+ */
+
+ if ((content_type = getenv("CONTENT_TYPE")) == NULL)
+ content_type = "application/octet-stream";
+
+ if ((final_content_type = getenv("FINAL_CONTENT_TYPE")) == NULL)
+ {
+ final_content_type = content_type;
+
+ if (!strncmp(final_content_type, "printer/", 8))
+ final_content_type = "application/vnd.cups-raw";
+ }
+
+ /*
+ * Extract the hostname and printer name from the URI...
+ */
+
+ if ((device_uri = cupsBackendDeviceURI(argv)) == NULL)
+ return (CUPS_BACKEND_FAILED);
+
+ httpSeparateURI(HTTP_URI_CODING_ALL, device_uri, scheme, sizeof(scheme),
+ username, sizeof(username), hostname, sizeof(hostname), &port,
+ resource, sizeof(resource));
+
+ if (!port)
+ port = IPP_PORT; /* Default to port 631 */
+
+ if (!strcmp(scheme, "https"))
+ cupsSetEncryption(HTTP_ENCRYPT_ALWAYS);
+ else
+ cupsSetEncryption(HTTP_ENCRYPT_IF_REQUESTED);
+
+ /*
+ * See if there are any options...
+ */
+
+ compression = 0;
+ version = 11;
+ waitjob = 1;
+ waitprinter = 1;
+ contimeout = 7 * 24 * 60 * 60;
+
+ if ((optptr = strchr(resource, '?')) != NULL)
+ {
+ /*
+ * Yup, terminate the device name string and move to the first
+ * character of the optptr...
+ */
+
+ *optptr++ = '\0';
+
+ /*
+ * Then parse the optptr...
+ */
+
+ while (*optptr)
+ {
+ /*
+ * Get the name...
+ */
+
+ name = optptr;
+
+ while (*optptr && *optptr != '=' && *optptr != '+' && *optptr != '&')
+ optptr ++;
+
+ if ((sep = *optptr) != '\0')
+ *optptr++ = '\0';
+
+ if (sep == '=')
+ {
+ /*
+ * Get the value...
+ */
+
+ value = optptr;
+
+ while (*optptr && *optptr != '+' && *optptr != '&')
+ optptr ++;
+
+ if (*optptr)
+ *optptr++ = '\0';
+ }
+ else
+ value = (char *)"";
+
+ /*
+ * Process the option...
+ */
+
+ if (!strcasecmp(name, "waitjob"))
+ {
+ /*
+ * Wait for job completion?
+ */
+
+ waitjob = !strcasecmp(value, "on") ||
+ !strcasecmp(value, "yes") ||
+ !strcasecmp(value, "true");
+ }
+ else if (!strcasecmp(name, "waitprinter"))
+ {
+ /*
+ * Wait for printer idle?
+ */
+
+ waitprinter = !strcasecmp(value, "on") ||
+ !strcasecmp(value, "yes") ||
+ !strcasecmp(value, "true");
+ }
+ else if (!strcasecmp(name, "encryption"))
+ {
+ /*
+ * Enable/disable encryption?
+ */
+
+ if (!strcasecmp(value, "always"))
+ cupsSetEncryption(HTTP_ENCRYPT_ALWAYS);
+ else if (!strcasecmp(value, "required"))
+ cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+ else if (!strcasecmp(value, "never"))
+ cupsSetEncryption(HTTP_ENCRYPT_NEVER);
+ else if (!strcasecmp(value, "ifrequested"))
+ cupsSetEncryption(HTTP_ENCRYPT_IF_REQUESTED);
+ else
+ {
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unknown encryption option value \"%s\"!\n"),
+ value);
+ }
+ }
+ else if (!strcasecmp(name, "version"))
+ {
+ if (!strcmp(value, "1.0"))
+ version = 10;
+ else if (!strcmp(value, "1.1"))
+ version = 11;
+ else if (!strcmp(value, "2.0"))
+ version = 20;
+ else if (!strcmp(value, "2.1"))
+ version = 21;
+ else
+ {
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unknown version option value \"%s\"!\n"),
+ value);
+ }
+ }
+#ifdef HAVE_LIBZ
+ else if (!strcasecmp(name, "compression"))
+ {
+ compression = !strcasecmp(value, "true") ||
+ !strcasecmp(value, "yes") ||
+ !strcasecmp(value, "on") ||
+ !strcasecmp(value, "gzip");
+ }
+#endif /* HAVE_LIBZ */
+ else if (!strcasecmp(name, "contimeout"))
+ {
+ /*
+ * Set the connection timeout...
+ */
+
+ if (atoi(value) > 0)
+ contimeout = atoi(value);
+ }
+ else
+ {
+ /*
+ * Unknown option...
+ */
+
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unknown option \"%s\" with value \"%s\"!\n"),
+ name, value);
+ }
+ }
+ }
+
+ /*
+ * If we have 7 arguments, print the file named on the command-line.
+ * Otherwise, copy stdin to a temporary file and print the temporary
+ * file.
+ */
+
+ if (argc == 6)
+ {
+ /*
+ * Copy stdin to a temporary file...
+ */
+
+ int fd; /* File descriptor */
+ http_addrlist_t *addrlist; /* Address list */
+ off_t tbytes; /* Total bytes copied */
+
+
+ fputs("STATE: +connecting-to-device\n", stderr);
+ fprintf(stderr, "DEBUG: Looking up \"%s\"...\n", hostname);
+
+ if ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, "1")) == NULL)
+ {
+ _cupsLangPrintf(stderr, _("ERROR: Unable to locate printer \'%s\'!\n"),
+ hostname);
+ return (CUPS_BACKEND_STOP);
+ }
+
+ snmp_fd = _cupsSNMPOpen(addrlist->addr.addr.sa_family);
+
+ if ((fd = cupsTempFd(tmpfilename, sizeof(tmpfilename))) < 0)
+ {
+ _cupsLangPrintError("ERROR", _("Unable to create temporary file"));
+ return (CUPS_BACKEND_FAILED);
+ }
+
+ _cupsLangPuts(stderr, _("INFO: Copying print data...\n"));
+
+ tbytes = backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, 0,
+ backendNetworkSideCB);
+
+ if (snmp_fd >= 0)
+ _cupsSNMPClose(snmp_fd);
+
+ httpAddrFreeList(addrlist);
+
+ close(fd);
+
+ /*
+ * Don't try printing files less than 2 bytes...
+ */
+
+ if (tbytes <= 1)
+ {
+ _cupsLangPuts(stderr, _("ERROR: Empty print file!\n"));
+ unlink(tmpfilename);
+ return (CUPS_BACKEND_FAILED);
+ }
+
+ /*
+ * Point to the single file from stdin...
+ */
+
+ filename = tmpfilename;
+ num_files = 1;
+ files = &filename;
+ send_options = 0;
+ }
+ else
+ {
+ /*
+ * Point to the files on the command-line...
+ */
+
+ num_files = argc - 6;
+ files = argv + 6;
+ send_options = 1;
+
+#ifdef HAVE_LIBZ
+ if (compression)
+ compress_files(num_files, files);
+#endif /* HAVE_LIBZ */
+ }
+
+ fprintf(stderr, "DEBUG: %d files to send in job...\n", num_files);
+
+ /*
+ * Set the authentication info, if any...
+ */
+
+ cupsSetPasswordCB(password_cb);
+
+ if (username[0])
+ {
+ /*
+ * Use authenticaion information in the device URI...
+ */
+
+ if ((password = strchr(username, ':')) != NULL)
+ *password++ = '\0';
+
+ cupsSetUser(username);
+ }
+ else if (!getuid())
+ {
+ /*
+ * Try loading authentication information from the environment.
+ */
+
+ const char *ptr = getenv("AUTH_USERNAME");
+
+ if (ptr)
+ cupsSetUser(ptr);
+
+ password = getenv("AUTH_PASSWORD");
+ }
+
+ /*
+ * Try connecting to the remote server...
+ */
+
+ delay = 5;
+ recoverable = 0;
+ start_time = time(NULL);
+
+ fputs("STATE: +connecting-to-device\n", stderr);
+
+ do
+ {
+ fprintf(stderr, "DEBUG: Connecting to %s:%d\n", hostname, port);
+ _cupsLangPuts(stderr, _("INFO: Connecting to printer...\n"));
+
+ if ((http = httpConnectEncrypt(hostname, port, cupsEncryption())) == NULL)
+ {
+ if (job_cancelled)
+ break;
+
+ if (getenv("CLASS") != NULL)
+ {
+ /*
+ * If the CLASS environment variable is set, the job was submitted
+ * to a class and not to a specific queue. In this case, we want
+ * to abort immediately so that the job can be requeued on the next
+ * available printer in the class.
+ */
+
+ _cupsLangPuts(stderr,
+ _("INFO: Unable to contact printer, queuing on next "
+ "printer in class...\n"));
+
+ if (tmpfilename[0])
+ unlink(tmpfilename);
+
+ /*
+ * Sleep 5 seconds to keep the job from requeuing too rapidly...
+ */
+
+ sleep(5);
+
+ return (CUPS_BACKEND_FAILED);
+ }
+
+ if (errno == ECONNREFUSED || errno == EHOSTDOWN ||
+ errno == EHOSTUNREACH)
+ {
+ if (contimeout && (time(NULL) - start_time) > contimeout)
+ {
+ _cupsLangPuts(stderr, _("ERROR: Printer not responding!\n"));
+ return (CUPS_BACKEND_FAILED);
+ }
+
+ recoverable = 1;
+
+ _cupsLangPrintf(stderr,
+ _("WARNING: recoverable: Network host \'%s\' is busy; "
+ "will retry in %d seconds...\n"),
+ hostname, delay);
+
+ sleep(delay);
+
+ if (delay < 30)
+ delay += 5;
+ }
+ else if (h_errno)
+ {
+ _cupsLangPrintf(stderr, _("ERROR: Unable to locate printer \'%s\'!\n"),
+ hostname);
+ return (CUPS_BACKEND_STOP);
+ }
+ else
+ {
+ recoverable = 1;
+
+ fprintf(stderr, "DEBUG: Connection error: %s\n", strerror(errno));
+ _cupsLangPuts(stderr,
+ _("ERROR: recoverable: Unable to connect to printer; will "
+ "retry in 30 seconds...\n"));
+ sleep(30);
+ }
+
+ if (job_cancelled)
+ break;
+ }
+ }
+ while (http == NULL);
+
+ if (job_cancelled || !http)
+ {
+ if (tmpfilename[0])
+ unlink(tmpfilename);
+
+ return (CUPS_BACKEND_FAILED);
+ }
+
+ fputs("STATE: -connecting-to-device\n", stderr);
+ _cupsLangPuts(stderr, _("INFO: Connected to printer...\n"));
+
+#ifdef AF_INET6
+ if (http->hostaddr->addr.sa_family == AF_INET6)
+ fprintf(stderr, "DEBUG: Connected to [%s]:%d (IPv6)...\n",
+ httpAddrString(http->hostaddr, addrname, sizeof(addrname)),
+ ntohs(http->hostaddr->ipv6.sin6_port));
+ else
+#endif /* AF_INET6 */
+ if (http->hostaddr->addr.sa_family == AF_INET)
+ fprintf(stderr, "DEBUG: Connected to %s:%d (IPv4)...\n",
+ httpAddrString(http->hostaddr, addrname, sizeof(addrname)),
+ ntohs(http->hostaddr->ipv4.sin_port));
+
+ /*
+ * See if the printer supports SNMP...
+ */
+
+ if ((snmp_fd = _cupsSNMPOpen(http->hostaddr->addr.sa_family)) >= 0)
+ have_supplies = !backendSNMPSupplies(snmp_fd, http->hostaddr, &start_count,
+ NULL);
+ else
+ have_supplies = start_count = 0;
+
+ /*
+ * Build a URI for the printer and fill the standard IPP attributes for
+ * an IPP_PRINT_FILE request. We can't use the URI in argv[0] because it
+ * might contain username:password information...
+ */
+
+ httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), scheme, NULL, hostname,
+ port, resource);
+
+ /*
+ * First validate the destination and see if the device supports multiple
+ * copies. We have to do this because some IPP servers (e.g. HP JetDirect)
+ * don't support the copies attribute...
+ */
+
+ copies_sup = NULL;
+ format_sup = NULL;
+ supported = NULL;
+
+ do
+ {
+ /*
+ * Check for side-channel requests...
+ */
+
+ backendCheckSideChannel(snmp_fd, http->hostaddr);
+
+ /*
+ * Build the IPP request...
+ */
+
+ request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
+ request->request.op.version[0] = version / 10;
+ request->request.op.version[1] = version % 10;
+
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
+ NULL, uri);
+
+ ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
+ "requested-attributes", sizeof(pattrs) / sizeof(pattrs[0]),
+ NULL, pattrs);
+
+ /*
+ * Do the request...
+ */
+
+ fputs("DEBUG: Getting supported attributes...\n", stderr);
+
+ if (http->version < HTTP_1_1)
+ httpReconnect(http);
+
+ if ((supported = cupsDoRequest(http, request, resource)) == NULL)
+ ipp_status = cupsLastError();
+ else
+ ipp_status = supported->request.status.status_code;
+
+ if (ipp_status > IPP_OK_CONFLICT)
+ {
+ if (ipp_status == IPP_PRINTER_BUSY ||
+ ipp_status == IPP_SERVICE_UNAVAILABLE)
+ {
+ if (contimeout && (time(NULL) - start_time) > contimeout)
+ {
+ _cupsLangPuts(stderr, _("ERROR: Printer not responding!\n"));
+ return (CUPS_BACKEND_FAILED);
+ }
+
+ recoverable = 1;
+
+ _cupsLangPrintf(stderr,
+ _("WARNING: recoverable: Network host \'%s\' is busy; "
+ "will retry in %d seconds...\n"),
+ hostname, delay);
+
+ report_printer_state(supported, 0);
+
+ sleep(delay);
+
+ if (delay < 30)
+ delay += 5;
+ }
+ else if ((ipp_status == IPP_BAD_REQUEST ||
+ ipp_status == IPP_VERSION_NOT_SUPPORTED) && version > 10)
+ {
+ /*
+ * Switch to IPP/1.0...
+ */
+
+ _cupsLangPrintf(stderr,
+ _("INFO: Printer does not support IPP/%d.%d, trying "
+ "IPP/1.0...\n"), version / 10, version % 10);
+ version = 10;
+ httpReconnect(http);
+ }
+ else if (ipp_status == IPP_NOT_FOUND)
+ {
+ _cupsLangPuts(stderr, _("ERROR: Destination printer does not exist!\n"));
+
+ if (supported)
+ ippDelete(supported);
+
+ return (CUPS_BACKEND_STOP);
+ }
+ else if (ipp_status == IPP_NOT_AUTHORIZED || ipp_status == IPP_FORBIDDEN)
+ {
+ if (!strncmp(httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE),
+ "Negotiate", 9))
+ auth_info_required = "negotiate";
+
+ fprintf(stderr, "ATTR: auth-info-required=%s\n", auth_info_required);
+ return (CUPS_BACKEND_AUTH_REQUIRED);
+ }
+ else
+ {
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unable to get printer status (%s)!\n"),
+ cupsLastErrorString());
+ sleep(10);
+ }
+
+ if (supported)
+ ippDelete(supported);
+
+ continue;
+ }
+ else if ((copies_sup = ippFindAttribute(supported, "copies-supported",
+ IPP_TAG_RANGE)) != NULL)
+ {
+ /*
+ * Has the "copies-supported" attribute - does it have an upper
+ * bound > 1?
+ */
+
+ if (copies_sup->values[0].range.upper <= 1)
+ copies_sup = NULL; /* No */
+ }
+
+ format_sup = ippFindAttribute(supported, "document-format-supported",
+ IPP_TAG_MIMETYPE);
+
+ if (format_sup)
+ {
+ fprintf(stderr, "DEBUG: document-format-supported (%d values)\n",
+ format_sup->num_values);
+ for (i = 0; i < format_sup->num_values; i ++)
+ fprintf(stderr, "DEBUG: [%d] = \"%s\"\n", i,
+ format_sup->values[i].string.text);
+ }
+
+ report_printer_state(supported, 0);
+ }
+ while (ipp_status > IPP_OK_CONFLICT);
+
+ /*
+ * See if the printer is accepting jobs and is not stopped; if either
+ * condition is true and we are printing to a class, requeue the job...
+ */
+
+ if (getenv("CLASS") != NULL)
+ {
+ printer_state = ippFindAttribute(supported, "printer-state",
+ IPP_TAG_ENUM);
+ printer_accepting = ippFindAttribute(supported, "printer-is-accepting-jobs",
+ IPP_TAG_BOOLEAN);
+
+ if (printer_state == NULL ||
+ (printer_state->values[0].integer > IPP_PRINTER_PROCESSING &&
+ waitprinter) ||
+ printer_accepting == NULL ||
+ !printer_accepting->values[0].boolean)
+ {
+ /*
+ * If the CLASS environment variable is set, the job was submitted
+ * to a class and not to a specific queue. In this case, we want
+ * to abort immediately so that the job can be requeued on the next
+ * available printer in the class.
+ */
+
+ _cupsLangPuts(stderr,
+ _("INFO: Unable to contact printer, queuing on next "
+ "printer in class...\n"));
+
+ ippDelete(supported);
+ httpClose(http);
+
+ if (tmpfilename[0])
+ unlink(tmpfilename);
+
+ /*
+ * Sleep 5 seconds to keep the job from requeuing too rapidly...
+ */
+
+ sleep(5);
+
+ return (CUPS_BACKEND_FAILED);
+ }
+ }
+
+ if (recoverable)
+ {
+ /*
+ * If we've shown a recoverable error make sure the printer proxies
+ * have a chance to see the recovered message. Not pretty but
+ * necessary for now...
+ */
+
+ fputs("INFO: recovered: \n", stderr);
+ sleep(5);
+ }
+
+ /*
+ * See if the printer supports multiple copies...
+ */
+
+ copies = atoi(argv[4]);
+
+ if (copies_sup || argc < 7)
+ {
+ copies_remaining = 1;
+
+ if (argc < 7)
+ copies = 1;
+ }
+ else
+ copies_remaining = copies;
+
+ /*
+ * Then issue the print-job request...
+ */
+
+ job_id = 0;
+
+ while (copies_remaining > 0)
+ {
+ /*
+ * Check for side-channel requests...
+ */
+
+ backendCheckSideChannel(snmp_fd, http->hostaddr);
+
+ /*
+ * Build the IPP request...
+ */
+
+ if (job_cancelled)
+ break;
+
+ if (num_files > 1)
+ request = ippNewRequest(IPP_CREATE_JOB);
+ else
+ request = ippNewRequest(IPP_PRINT_JOB);
+
+ request->request.op.version[0] = version / 10;
+ request->request.op.version[1] = version % 10;
+
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
+ NULL, uri);
+
+ fprintf(stderr, "DEBUG: printer-uri = \"%s\"\n", uri);
+
+ if (argv[2][0])
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
+ "requesting-user-name", NULL, argv[2]);
+
+ fprintf(stderr, "DEBUG: requesting-user-name = \"%s\"\n", argv[2]);
+
+ /*
+ * Only add a "job-name" attribute if the remote server supports
+ * copy generation - some IPP implementations like HP's don't seem
+ * to like UTF-8 job names (STR #1837)...
+ */
+
+ if (argv[3][0] && copies_sup)
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
+ argv[3]);
+
+ fprintf(stderr, "DEBUG: job-name = \"%s\"\n", argv[3]);
+
+#ifdef HAVE_LIBZ
+ if (compression)
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
+ "compression", NULL, "gzip");
+#endif /* HAVE_LIBZ */
+
+ /*
+ * Handle options on the command-line...
+ */
+
+ options = NULL;
+ num_options = cupsParseOptions(argv[5], 0, &options);
+
+#ifdef __APPLE__
+ if (!strcasecmp(final_content_type, "application/pictwps") &&
+ num_files == 1)
+ {
+ if (format_sup != NULL)
+ {
+ for (i = 0; i < format_sup->num_values; i ++)
+ if (!strcasecmp(final_content_type, format_sup->values[i].string.text))
+ break;
+ }
+
+ if (format_sup == NULL || i >= format_sup->num_values)
+ {
+ /*
+ * Remote doesn't support "application/pictwps" (i.e. it's not MacOS X)
+ * so convert the document to PostScript...
+ */
+
+ if (run_pictwps_filter(argv, files[0]))
+ {
+ if (pstmpname[0])
+ unlink(pstmpname);
+
+ if (tmpfilename[0])
+ unlink(tmpfilename);
+
+ return (CUPS_BACKEND_FAILED);
+ }
+
+ files[0] = pstmpname;
+
+ /*
+ * Change the MIME type to application/postscript and change the
+ * number of copies to 1...
+ */
+
+ final_content_type = "application/postscript";
+ copies = 1;
+ copies_remaining = 1;
+ send_options = 0;
+ }
+ }
+#endif /* __APPLE__ */
+
+ if (format_sup != NULL)
+ {
+ for (i = 0; i < format_sup->num_values; i ++)
+ if (!strcasecmp(final_content_type, format_sup->values[i].string.text))
+ break;
+
+ if (i < format_sup->num_values)
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
+ "document-format", NULL, final_content_type);
+ }
+
+ if (copies_sup && version > 10 && send_options)
+ {
+ /*
+ * Only send options if the destination printer supports the copies
+ * attribute and IPP/1.1. This is a hack for the HP and Lexmark
+ * implementations of IPP, which do not accept extension attributes
+ * and incorrectly report a client-error-bad-request error instead of
+ * the successful-ok-unsupported-attributes status. In short, at least
+ * some HP and Lexmark implementations of IPP are non-compliant.
+ */
+
+ cupsEncodeOptions(request, num_options, options);
+
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies",
+ copies);
+ }
+
+ cupsFreeOptions(num_options, options);
+
+ /*
+ * If copies aren't supported, then we are likely dealing with an HP
+ * JetDirect. The HP IPP implementation seems to close the connection
+ * after every request - that is, it does *not* implement HTTP Keep-
+ * Alive, which is REQUIRED by HTTP/1.1...
+ */
+
+ if (!copies_sup)
+ httpReconnect(http);
+
+ /*
+ * Do the request...
+ */
+
+ if (http->version < HTTP_1_1)
+ httpReconnect(http);
+
+ if (num_files > 1)
+ response = cupsDoRequest(http, request, resource);
+ else
+ response = cupsDoFileRequest(http, request, resource, files[0]);
+
+ ipp_status = cupsLastError();
+
+ if (ipp_status > IPP_OK_CONFLICT)
+ {
+ job_id = 0;
+
+ if (job_cancelled)
+ break;
+
+ if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
+ ipp_status == IPP_PRINTER_BUSY)
+ {
+ _cupsLangPuts(stderr,
+ _("INFO: Printer busy; will retry in 10 seconds...\n"));
+ sleep(10);
+ }
+ else if ((ipp_status == IPP_BAD_REQUEST ||
+ ipp_status == IPP_VERSION_NOT_SUPPORTED) && version > 10)
+ {
+ /*
+ * Switch to IPP/1.0...
+ */
+
+ _cupsLangPrintf(stderr,
+ _("INFO: Printer does not support IPP/%d.%d, trying "
+ "IPP/1.0...\n"), version / 10, version % 10);
+ version = 10;
+ httpReconnect(http);
+ }
+ else
+ {
+ /*
+ * Update auth-info-required as needed...
+ */
+
+ _cupsLangPrintf(stderr, _("ERROR: Print file was not accepted (%s)!\n"),
+ cupsLastErrorString());
+
+ if (ipp_status == IPP_NOT_AUTHORIZED || ipp_status == IPP_FORBIDDEN)
+ {
+ fprintf(stderr, "DEBUG: WWW-Authenticate=\"%s\"\n",
+ httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE));
+
+ /*
+ * Normal authentication goes through the password callback, which sets
+ * auth_info_required to "username,password". Kerberos goes directly
+ * through GSSAPI, so look for Negotiate in the WWW-Authenticate header
+ * here and set auth_info_required as needed...
+ */
+
+ if (!strncmp(httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE),
+ "Negotiate", 9))
+ auth_info_required = "negotiate";
+ }
+ }
+ }
+ else if ((job_id_attr = ippFindAttribute(response, "job-id",
+ IPP_TAG_INTEGER)) == NULL)
+ {
+ _cupsLangPuts(stderr,
+ _("NOTICE: Print file accepted - job ID unknown.\n"));
+ job_id = 0;
+ }
+ else
+ {
+ job_id = job_id_attr->values[0].integer;
+ _cupsLangPrintf(stderr, _("NOTICE: Print file accepted - job ID %d.\n"),
+ job_id);
+ }
+
+ ippDelete(response);
+
+ if (job_cancelled)
+ break;
+
+ if (job_id && num_files > 1)
+ {
+ for (i = 0; i < num_files; i ++)
+ {
+ /*
+ * Check for side-channel requests...
+ */
+
+ backendCheckSideChannel(snmp_fd, http->hostaddr);
+
+ /*
+ * Send the next file in the job...
+ */
+
+ request = ippNewRequest(IPP_SEND_DOCUMENT);
+ request->request.op.version[0] = version / 10;
+ request->request.op.version[1] = version % 10;
+
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
+ NULL, uri);
+
+ ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
+ job_id);
+
+ if (argv[2][0])
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
+ "requesting-user-name", NULL, argv[2]);
+
+ if ((i + 1) == num_files)
+ ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
+
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
+ "document-format", NULL, content_type);
+
+ if (http->version < HTTP_1_1)
+ httpReconnect(http);
+
+ ippDelete(cupsDoFileRequest(http, request, resource, files[i]));
+
+ if (cupsLastError() > IPP_OK_CONFLICT)
+ {
+ ipp_status = cupsLastError();
+
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unable to add file %d to job: %s\n"),
+ job_id, cupsLastErrorString());
+ break;
+ }
+ }
+ }
+
+ if (ipp_status <= IPP_OK_CONFLICT && argc > 6)
+ {
+ fprintf(stderr, "PAGE: 1 %d\n", copies_sup ? atoi(argv[4]) : 1);
+ copies_remaining --;
+ }
+ else if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
+ ipp_status == IPP_PRINTER_BUSY)
+ continue;
+ else
+ copies_remaining --;
+
+ /*
+ * Wait for the job to complete...
+ */
+
+ if (!job_id || !waitjob)
+ continue;
+
+ _cupsLangPuts(stderr, _("INFO: Waiting for job to complete...\n"));
+
+ for (delay = 1; !job_cancelled;)
+ {
+ /*
+ * Check for side-channel requests...
+ */
+
+ backendCheckSideChannel(snmp_fd, http->hostaddr);
+
+ /*
+ * Build an IPP_GET_JOB_ATTRIBUTES request...
+ */
+
+ request = ippNewRequest(IPP_GET_JOB_ATTRIBUTES);
+ request->request.op.version[0] = version / 10;
+ request->request.op.version[1] = version % 10;
+
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
+ NULL, uri);
+
+ ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
+ job_id);
+
+ if (argv[2][0])
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
+ "requesting-user-name", NULL, argv[2]);
+
+ ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
+ "requested-attributes", sizeof(jattrs) / sizeof(jattrs[0]),
+ NULL, jattrs);
+
+ /*
+ * Do the request...
+ */
+
+ if (!copies_sup || http->version < HTTP_1_1)
+ httpReconnect(http);
+
+ response = cupsDoRequest(http, request, resource);
+ ipp_status = cupsLastError();
+
+ if (ipp_status == IPP_NOT_FOUND)
+ {
+ /*
+ * Job has gone away and/or the server has no job history...
+ */
+
+ ippDelete(response);
+
+ ipp_status = IPP_OK;
+ break;
+ }
+
+ if (ipp_status > IPP_OK_CONFLICT)
+ {
+ if (ipp_status != IPP_SERVICE_UNAVAILABLE &&
+ ipp_status != IPP_PRINTER_BUSY)
+ {
+ ippDelete(response);
+
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unable to get job %d attributes (%s)!\n"),
+ job_id, cupsLastErrorString());
+ break;
+ }
+ }
+
+ if (response)
+ {
+ if ((job_state = ippFindAttribute(response, "job-state",
+ IPP_TAG_ENUM)) != NULL)
+ {
+ /*
+ * Stop polling if the job is finished or pending-held...
+ */
+
+ if (job_state->values[0].integer > IPP_JOB_STOPPED)
+ {
+ if ((job_sheets = ippFindAttribute(response,
+ "job-media-sheets-completed",
+ IPP_TAG_INTEGER)) != NULL)
+ fprintf(stderr, "PAGE: total %d\n",
+ job_sheets->values[0].integer);
+
+ ippDelete(response);
+ break;
+ }
+ }
+ else
+ {
+ /*
+ * If the printer does not return a job-state attribute, it does not
+ * conform to the IPP specification - break out immediately and fail
+ * the job...
+ */
+
+ fputs("DEBUG: No job-state available from printer - stopping queue.\n",
+ stderr);
+ ipp_status = IPP_INTERNAL_ERROR;
+ break;
+ }
+ }
+
+ ippDelete(response);
+
+ /*
+ * Check the printer state and report it if necessary...
+ */
+
+ check_printer_state(http, uri, resource, argv[2], version, job_id);
+
+ /*
+ * Wait 1-10 seconds before polling again...
+ */
+
+ sleep(delay);
+
+ delay ++;
+ if (delay > 10)
+ delay = 1;
+ }
+ }
+
+ /*
+ * Cancel the job as needed...
+ */
+
+ if (job_cancelled && job_id)
+ cancel_job(http, uri, job_id, resource, argv[2], version);
+
+ /*
+ * Check the printer state and report it if necessary...
+ */
+
+ check_printer_state(http, uri, resource, argv[2], version, job_id);
+
+ /*
+ * Collect the final page count as needed...
+ */
+
+ if (have_supplies &&
+ !backendSNMPSupplies(snmp_fd, http->hostaddr, &page_count, NULL) &&
+ page_count > start_count)
+ fprintf(stderr, "PAGE: total %d\n", page_count - start_count);
+
+#ifdef HAVE_GSSAPI
+ /*
+ * See if we used Kerberos at all...
+ */
+
+ if (http->gssctx)
+ auth_info_required = "negotiate";
+#endif /* HAVE_GSSAPI */
+
+ /*
+ * Free memory...
+ */
+
+ httpClose(http);
+
+ ippDelete(supported);
+
+ /*
+ * Remove the temporary file(s) if necessary...
+ */
+
+ if (tmpfilename[0])
+ unlink(tmpfilename);
+
+#ifdef HAVE_LIBZ
+ if (compression)
+ {
+ for (i = 0; i < num_files; i ++)
+ unlink(files[i]);
+ }
+#endif /* HAVE_LIBZ */
+
+#ifdef __APPLE__
+ if (pstmpname[0])
+ unlink(pstmpname);
+#endif /* __APPLE__ */
+
+ /*
+ * Return the queue status...
+ */
+
+ fprintf(stderr, "ATTR: auth-info-required=%s\n", auth_info_required);
+
+ if (ipp_status == IPP_NOT_AUTHORIZED || ipp_status == IPP_FORBIDDEN)
+ return (CUPS_BACKEND_AUTH_REQUIRED);
+ else if (ipp_status == IPP_INTERNAL_ERROR)
+ return (CUPS_BACKEND_STOP);
+ else if (ipp_status > IPP_OK_CONFLICT)
+ return (CUPS_BACKEND_FAILED);
+ else
+ {
+ _cupsLangPuts(stderr, _("INFO: Ready to print.\n"));
+ return (CUPS_BACKEND_OK);
+ }
+}
+
+
+/*
+ * 'cancel_job()' - Cancel a print job.
+ */
+
+static void
+cancel_job(http_t *http, /* I - HTTP connection */
+ const char *uri, /* I - printer-uri */
+ int id, /* I - job-id */
+ const char *resource, /* I - Resource path */
+ const char *user, /* I - requesting-user-name */
+ int version) /* I - IPP version */
+{
+ ipp_t *request; /* Cancel-Job request */
+
+
+ _cupsLangPuts(stderr, _("INFO: Canceling print job...\n"));
+
+ request = ippNewRequest(IPP_CANCEL_JOB);
+ request->request.op.version[0] = version / 10;
+ request->request.op.version[1] = version % 10;
+
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
+ NULL, uri);
+ ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id", id);
+
+ if (user && user[0])
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
+ "requesting-user-name", NULL, user);
+
+ /*
+ * Do the request...
+ */
+
+ if (http->version < HTTP_1_1)
+ httpReconnect(http);
+
+ ippDelete(cupsDoRequest(http, request, resource));
+
+ if (cupsLastError() > IPP_OK_CONFLICT)
+ _cupsLangPrintf(stderr, _("ERROR: Unable to cancel job %d: %s\n"), id,
+ cupsLastErrorString());
+}
+
+
+/*
+ * 'check_printer_state()' - Check the printer state...
+ */
+
+static void
+check_printer_state(
+ http_t *http, /* I - HTTP connection */
+ const char *uri, /* I - Printer URI */
+ const char *resource, /* I - Resource path */
+ const char *user, /* I - Username, if any */
+ int version, /* I - IPP version */
+ int job_id) /* I - Current job ID */
+{
+ ipp_t *request, /* IPP request */
+ *response; /* IPP response */
+ static const char * const attrs[] = /* Attributes we want */
+ {
+ "com.apple.print.recoverable-message",
+ "marker-colors",
+ "marker-levels",
+ "marker-message",
+ "marker-names",
+ "marker-types",
+ "printer-state-message",
+ "printer-state-reasons"
+ };
+
+
+ /*
+ * Check on the printer state...
+ */
+
+ request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
+ request->request.op.version[0] = version / 10;
+ request->request.op.version[1] = version % 10;
+
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
+ NULL, uri);
+
+ if (user && user[0])
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
+ "requesting-user-name", NULL, user);
+
+ ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
+ "requested-attributes",
+ (int)(sizeof(attrs) / sizeof(attrs[0])), NULL, attrs);
+
+ /*
+ * Do the request...
+ */
+
+ if (http->version < HTTP_1_1)
+ httpReconnect(http);
+
+ if ((response = cupsDoRequest(http, request, resource)) != NULL)
+ {
+ report_printer_state(response, job_id);
+ ippDelete(response);
+ }
+}
+
+
+#ifdef HAVE_LIBZ
+/*
+ * 'compress_files()' - Compress print files...
+ */
+
+static void
+compress_files(int num_files, /* I - Number of files */
+ char **files) /* I - Files */
+{
+ int i, /* Looping var */
+ fd; /* Temporary file descriptor */
+ ssize_t bytes; /* Bytes read/written */
+ size_t total; /* Total bytes read */
+ cups_file_t *in, /* Input file */
+ *out; /* Output file */
+ struct stat outinfo; /* Output file information */
+ char filename[1024], /* Temporary filename */
+ buffer[32768]; /* Copy buffer */
+
+
+ fprintf(stderr, "DEBUG: Compressing %d job files...\n", num_files);
+ for (i = 0; i < num_files; i ++)
+ {
+ if ((fd = cupsTempFd(filename, sizeof(filename))) < 0)
+ {
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unable to create temporary compressed print "
+ "file: %s\n"), strerror(errno));
+ exit(CUPS_BACKEND_FAILED);
+ }
+
+ if ((out = cupsFileOpenFd(fd, "w9")) == NULL)
+ {
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unable to open temporary compressed print "
+ "file: %s\n"), strerror(errno));
+ exit(CUPS_BACKEND_FAILED);
+ }
+
+ if ((in = cupsFileOpen(files[i], "r")) == NULL)
+ {
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unable to open print file \"%s\": %s\n"),
+ files[i], strerror(errno));
+ cupsFileClose(out);
+ exit(CUPS_BACKEND_FAILED);
+ }
+
+ total = 0;
+ while ((bytes = cupsFileRead(in, buffer, sizeof(buffer))) > 0)
+ if (cupsFileWrite(out, buffer, bytes) < bytes)
+ {
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unable to write %d bytes to \"%s\": %s\n"),
+ (int)bytes, filename, strerror(errno));
+ cupsFileClose(in);
+ cupsFileClose(out);
+ exit(CUPS_BACKEND_FAILED);
+ }
+ else
+ total += bytes;
+
+ cupsFileClose(out);
+ cupsFileClose(in);
+
+ files[i] = strdup(filename);
+
+ if (!stat(filename, &outinfo))
+ fprintf(stderr,
+ "DEBUG: File %d compressed to %.1f%% of original size, "
+ CUPS_LLFMT " bytes...\n",
+ i + 1, 100.0 * outinfo.st_size / total,
+ CUPS_LLCAST outinfo.st_size);
+ }
+}
+#endif /* HAVE_LIBZ */
+
+
+/*
+ * 'password_cb()' - Disable the password prompt for cupsDoFileRequest().
+ */
+
+static const char * /* O - Password */
+password_cb(const char *prompt) /* I - Prompt (not used) */
+{
+ (void)prompt;
+
+ /*
+ * Remember that we need to authenticate...
+ */
+
+ auth_info_required = "username,password";
+
+ if (password && *password && password_tries < 3)
+ {
+ password_tries ++;
+
+ return (password);
+ }
+ else
+ {
+ /*
+ * Give up after 3 tries or if we don't have a password to begin with...
+ */
+
+ return (NULL);
+ }
+}
+
+
+/*
+ * 'report_attr()' - Report an IPP attribute value.
+ */
+
+static void
+report_attr(ipp_attribute_t *attr) /* I - Attribute */
+{
+ int i; /* Looping var */
+ char value[1024], /* Value string */
+ *valptr, /* Pointer into value string */
+ *attrptr; /* Pointer into attribute value */
+
+
+ /*
+ * Convert the attribute values into quoted strings...
+ */
+
+ for (i = 0, valptr = value;
+ i < attr->num_values && valptr < (value + sizeof(value) - 10);
+ i ++)
+ {
+ if (i > 0)
+ *valptr++ = ',';
+
+ switch (attr->value_tag)
+ {
+ case IPP_TAG_INTEGER :
+ case IPP_TAG_ENUM :
+ snprintf(valptr, sizeof(value) - (valptr - value), "%d",
+ attr->values[i].integer);
+ valptr += strlen(valptr);
+ break;
+
+ case IPP_TAG_TEXT :
+ case IPP_TAG_NAME :
+ case IPP_TAG_KEYWORD :
+ *valptr++ = '\"';
+ for (attrptr = attr->values[i].string.text;
+ *attrptr && valptr < (value + sizeof(value) - 10);
+ attrptr ++)
+ {
+ if (*attrptr == '\\' || *attrptr == '\"')
+ *valptr++ = '\\';
+
+ *valptr++ = *attrptr;
+ }
+ *valptr++ = '\"';
+ break;
+
+ default :
+ /*
+ * Unsupported value type...
+ */
+
+ return;
+ }
+ }
+
+ *valptr = '\0';
+
+ /*
+ * Tell the scheduler about the new values...
+ */
+
+ fprintf(stderr, "ATTR: %s=%s\n", attr->name, value);
+}
+
+
+/*
+ * 'report_printer_state()' - Report the printer state.
+ */
+
+static int /* O - Number of reasons shown */
+report_printer_state(ipp_t *ipp, /* I - IPP response */
+ int job_id) /* I - Current job ID */
+{
+ int i; /* Looping var */
+ int count; /* Count of reasons shown... */
+ ipp_attribute_t *caprm, /* com.apple.print.recoverable-message */
+ *psm, /* printer-state-message */
+ *reasons, /* printer-state-reasons */
+ *marker; /* marker-* attributes */
+ const char *reason; /* Current reason */
+ const char *prefix; /* Prefix for STATE: line */
+ char state[1024]; /* State string */
+ int saw_caprw; /* Saw com.apple.print.recoverable-warning state */
+
+
+ if ((psm = ippFindAttribute(ipp, "printer-state-message",
+ IPP_TAG_TEXT)) != NULL)
+ fprintf(stderr, "INFO: %s\n", psm->values[0].string.text);
+
+ if ((reasons = ippFindAttribute(ipp, "printer-state-reasons",
+ IPP_TAG_KEYWORD)) == NULL)
+ return (0);
+
+ saw_caprw = 0;
+ state[0] = '\0';
+ prefix = "STATE: ";
+
+ for (i = 0, count = 0; i < reasons->num_values; i ++)
+ {
+ reason = reasons->values[i].string.text;
+
+ if (!strcmp(reason, "com.apple.print.recoverable-warning"))
+ saw_caprw = 1;
+ else if (strcmp(reason, "paused"))
+ {
+ strlcat(state, prefix, sizeof(state));
+ strlcat(state, reason, sizeof(state));
+
+ prefix = ",";
+ }
+ }
+
+ if (state[0])
+ fprintf(stderr, "%s\n", state);
+
+ /*
+ * Relay com.apple.print.recoverable-message...
+ */
+
+ if ((caprm = ippFindAttribute(ipp, "com.apple.print.recoverable-message",
+ IPP_TAG_TEXT)) != NULL)
+ fprintf(stderr, "WARNING: %s: %s\n",
+ saw_caprw ? "recoverable" : "recovered",
+ caprm->values[0].string.text);
+
+ /*
+ * Relay the current marker-* attribute values...
+ */
+
+ if ((marker = ippFindAttribute(ipp, "marker-colors", IPP_TAG_NAME)) != NULL)
+ report_attr(marker);
+ if ((marker = ippFindAttribute(ipp, "marker-high-levels",
+ IPP_TAG_INTEGER)) != NULL)
+ report_attr(marker);
+ if ((marker = ippFindAttribute(ipp, "marker-levels",
+ IPP_TAG_INTEGER)) != NULL)
+ report_attr(marker);
+ if ((marker = ippFindAttribute(ipp, "marker-low-levels",
+ IPP_TAG_INTEGER)) != NULL)
+ report_attr(marker);
+ if ((marker = ippFindAttribute(ipp, "marker-message", IPP_TAG_TEXT)) != NULL)
+ report_attr(marker);
+ if ((marker = ippFindAttribute(ipp, "marker-names", IPP_TAG_NAME)) != NULL)
+ report_attr(marker);
+ if ((marker = ippFindAttribute(ipp, "marker-types", IPP_TAG_KEYWORD)) != NULL)
+ report_attr(marker);
+
+ return (count);
+}
+
+
+#ifdef __APPLE__
+/*
+ * 'run_pictwps_filter()' - Convert PICT files to PostScript when printing
+ * remotely.
+ *
+ * This step is required because the PICT format is not documented and
+ * subject to change, so developing a filter for other OS's is infeasible.
+ * Also, fonts required by the PICT file need to be embedded on the
+ * client side (which has the fonts), so we run the filter to get a
+ * PostScript file for printing...
+ */
+
+static int /* O - Exit status of filter */
+run_pictwps_filter(char **argv, /* I - Command-line arguments */
+ const char *filename)/* I - Filename */
+{
+ struct stat fileinfo; /* Print file information */
+ const char *ppdfile; /* PPD file for destination printer */
+ int pid; /* Child process ID */
+ int fd; /* Temporary file descriptor */
+ int status; /* Exit status of filter */
+ const char *printer; /* PRINTER env var */
+ static char ppdenv[1024]; /* PPD environment variable */
+
+
+ /*
+ * First get the PPD file for the printer...
+ */
+
+ printer = getenv("PRINTER");
+ if (!printer)
+ {
+ _cupsLangPuts(stderr,
+ _("ERROR: PRINTER environment variable not defined!\n"));
+ return (-1);
+ }
+
+ if ((ppdfile = cupsGetPPD(printer)) == NULL)
+ {
+ _cupsLangPrintf(stderr,
+ _("ERROR: Unable to get PPD file for printer \"%s\" - "
+ "%s.\n"), printer, cupsLastErrorString());
+ }
+ else
+ {
+ snprintf(ppdenv, sizeof(ppdenv), "PPD=%s", ppdfile);
+ putenv(ppdenv);
+ }
+
+ /*
+ * Then create a temporary file for printing...
+ */
+
+ if ((fd = cupsTempFd(pstmpname, sizeof(pstmpname))) < 0)
+ {
+ _cupsLangPrintError("ERROR", _("Unable to create temporary file"));
+ if (ppdfile)
+ unlink(ppdfile);
+ return (-1);
+ }
+
+ /*
+ * Get the owner of the spool file - it is owned by the user we want to run
+ * as...
+ */
+
+ if (argv[6])
+ stat(argv[6], &fileinfo);
+ else
+ {
+ /*
+ * Use the OSX defaults, as an up-stream filter created the PICT
+ * file...
+ */
+
+ fileinfo.st_uid = 1;
+ fileinfo.st_gid = 80;
+ }
+
+ if (ppdfile)
+ chown(ppdfile, fileinfo.st_uid, fileinfo.st_gid);
+
+ fchown(fd, fileinfo.st_uid, fileinfo.st_gid);
+
+ /*
+ * Finally, run the filter to convert the file...
+ */
+
+ if ((pid = fork()) == 0)
+ {
+ /*
+ * Child process for pictwpstops... Redirect output of pictwpstops to a
+ * file...
+ */
+
+ dup2(fd, 1);
+ close(fd);
+
+ if (!getuid())
+ {
+ /*
+ * Change to an unpriviledged user...
+ */
+
+ if (setgid(fileinfo.st_gid))
+ return (errno);
+
+ if (setuid(fileinfo.st_uid))
+ return (errno);
+ }
+
+ execlp("pictwpstops", printer, argv[1], argv[2], argv[3], argv[4], argv[5],
+ filename, NULL);
+ _cupsLangPrintf(stderr, _("ERROR: Unable to exec pictwpstops: %s\n"),
+ strerror(errno));
+ return (errno);
+ }
+
+ close(fd);
+
+ if (pid < 0)
+ {
+ /*
+ * Error!
+ */
+
+ _cupsLangPrintf(stderr, _("ERROR: Unable to fork pictwpstops: %s\n"),
+ strerror(errno));
+ if (ppdfile)
+ unlink(ppdfile);
+ return (-1);
+ }
+
+ /*
+ * Now wait for the filter to complete...
+ */
+
+ if (wait(&status) < 0)
+ {
+ _cupsLangPrintf(stderr, _("ERROR: Unable to wait for pictwpstops: %s\n"),
+ strerror(errno));
+ close(fd);
+ if (ppdfile)
+ unlink(ppdfile);
+ return (-1);
+ }
+
+ if (ppdfile)
+ unlink(ppdfile);
+
+ close(fd);
+
+ if (status)
+ {
+ if (status >= 256)
+ _cupsLangPrintf(stderr, _("ERROR: pictwpstops exited with status %d!\n"),
+ status / 256);
+ else
+ _cupsLangPrintf(stderr, _("ERROR: pictwpstops exited on signal %d!\n"),
+ status);
+
+ return (status);
+ }
+
+ /*
+ * Return with no errors..
+ */
+
+ return (0);
+}
+#endif /* __APPLE__ */
+
+
+/*
+ * 'sigterm_handler()' - Handle 'terminate' signals that stop the backend.
+ */
+
+static void
+sigterm_handler(int sig) /* I - Signal */
+{
+ (void)sig; /* remove compiler warnings... */
+
+ if (!job_cancelled)
+ {
+ /*
+ * Flag that the job should be cancelled...
+ */
+
+ job_cancelled = 1;
+ return;
+ }
+
+ /*
+ * The scheduler already tried to cancel us once, now just terminate
+ * after removing our temp files!
+ */
+
+ if (tmpfilename[0])
+ unlink(tmpfilename);
+
+#ifdef __APPLE__
+ if (pstmpname[0])
+ unlink(pstmpname);
+#endif /* __APPLE__ */
+
+ exit(1);
+}
+
+
+/*
+ * End of "$Id: ipp.c 8950 2010-01-14 22:40:19Z mike $".
+ */
debian/patches/tests-ignore-kfreebsd-amd64-not-a-pdf.patch 0000644 0000000 0000000 00000001511 12277464531 020551 0 ustar Description: Ignore the 'loadFile failed: temp file: not a PDF file'
error that sometimes breaks the errorlines counting on kfreebsd-amd64
for some reason
Origin: vendor
Author: Didier Raboud
Last-Update: 2014-01-14
--- a/test/run-stp-tests.sh
+++ b/test/run-stp-tests.sh
@@ -897,7 +897,7 @@
fi
# Error log messages
-count=`$GREP '^E ' /tmp/cups-$user/log/error_log | $GREP -v '(usb) crashed on signal 11' | $GREP -v '(dnssd) stopped with status 1' | wc -l | awk '{print $1}'`
+count=`$GREP '^E ' /tmp/cups-$user/log/error_log | $GREP -v '(usb) crashed on signal 11' | $GREP -v '(dnssd) stopped with status 1' | $GREP -v 'loadFile failed: temp file: not a PDF file' | wc -l | awk '{print $1}'`
if test $count != 33; then
echo "FAIL: $count error messages, expected 33."
$GREP '^E ' /tmp/cups-$user/log/error_log
debian/patches/CVE-2018-4700.patch 0000644 0000000 0000000 00000001757 13373612536 013256 0 ustar Description: Fix predictable session cookies
Origin: provided by upstream
Index: cups-1.7.2/cgi-bin/var.c
===================================================================
--- cups-1.7.2.orig/cgi-bin/var.c 2018-11-16 14:07:07.181603280 -0500
+++ cups-1.7.2/cgi-bin/var.c 2018-11-16 14:07:07.173603254 -0500
@@ -1221,6 +1221,7 @@ cgi_set_sid(void)
const char *remote_addr, /* REMOTE_ADDR */
*server_name, /* SERVER_NAME */
*server_port; /* SERVER_PORT */
+ struct timeval curtime; /* Current time */
if ((remote_addr = getenv("REMOTE_ADDR")) == NULL)
@@ -1230,7 +1231,8 @@ cgi_set_sid(void)
if ((server_port = getenv("SERVER_PORT")) == NULL)
server_port = "SERVER_PORT";
- CUPS_SRAND(time(NULL));
+ gettimeofday(&curtime, NULL);
+ CUPS_SRAND(curtime.tv_sec + curtime.tv_usec);
snprintf(buffer, sizeof(buffer), "%s:%s:%s:%02X%02X%02X%02X%02X%02X%02X%02X",
remote_addr, server_name, server_port,
(unsigned)CUPS_RAND() & 255, (unsigned)CUPS_RAND() & 255,
debian/patches/default_log_settings.patch 0000644 0000000 0000000 00000001000 12277464531 016045 0 ustar Description: Deactivate CUPS' own log rotating as the system already provides a more sophisticated log rotating
Last-Update: 2012-11-27
--- a/conf/cupsd.conf.in
+++ b/conf/cupsd.conf.in
@@ -9,6 +9,10 @@
# for troubleshooting...
LogLevel @CUPS_LOG_LEVEL@
+# Deactivate CUPS' internal logrotating, as we provide a better one, especially
+# LogLevel debug2 gets usable now
+MaxLogSize 0
+
# Only listen for connections from the local machine.
Listen localhost:@DEFAULT_IPP_PORT@
@CUPS_LISTEN_DOMAINSOCKET@
debian/patches/initialize-ipp-port.patch 0000644 0000000 0000000 00000004630 13051567357 015566 0 ustar Description: Fixed processing of server overrides without port numbers
.
cups (1.7.2-0ubuntu1.8) trusty; urgency=medium
.
* Fixed processing of server overrides without port numbers (LP: #1665018)
Author: msweet
Origin: upstream, https://github.com/apple/cups/commit/4b9daaf451a59d1eb1c99aac32d4e3cb19416397
Bug: https://github.com/apple/cups/issues/4675
Bug-Debian: https://bugs.debian.org/711327
Bug-Ubuntu: https://launchpad.net/bugs/1665018
Index: cups-1.7.2/cups/usersys.c
===================================================================
--- cups-1.7.2.orig/cups/usersys.c
+++ cups-1.7.2/cups/usersys.c
@@ -55,6 +55,7 @@ static void cups_read_client_conf(cups_f
const char *cups_expiredcerts,
int ssl_options);
+static void cups_set_default_ipp_port(_cups_globals_t *cg);
/*
* 'cupsEncryption()' - Get the current encryption settings.
@@ -360,6 +361,9 @@ cupsSetServer(const char *server) /* I -
cg->ipp_port = atoi(port);
}
+ if (!cg->ipp_port)
+ cups_set_default_ipp_port(cg);
+
if (cg->server[0] == '/')
strlcpy(cg->servername, "localhost", sizeof(cg->servername));
else
@@ -370,6 +374,7 @@ cupsSetServer(const char *server) /* I -
cg->server[0] = '\0';
cg->servername[0] = '\0';
cg->server_version = 20;
+ cg->ipp_port = 0;
}
if (cg->http)
@@ -1119,17 +1124,7 @@ cups_read_client_conf(
}
if (!cg->ipp_port)
- {
- const char *ipp_port; /* IPP_PORT environment variable */
-
- if ((ipp_port = getenv("IPP_PORT")) != NULL)
- {
- if ((cg->ipp_port = atoi(ipp_port)) <= 0)
- cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
- }
- else
- cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
- }
+ cups_set_default_ipp_port(cg);
if (!cg->user[0])
{
@@ -1198,6 +1193,24 @@ cups_read_client_conf(
!_cups_strcasecmp(cups_expiredcerts, "true");
}
+/*
+ * 'cups_set_default_ipp_port()' - Set the default IPP port value.
+ */
+
+static void
+cups_set_default_ipp_port(
+ _cups_globals_t *cg) /* I - Global data */
+{
+ const char *ipp_port; /* IPP_PORT environment variable */
+
+ if ((ipp_port = getenv("IPP_PORT")) != NULL)
+ {
+ if ((cg->ipp_port = atoi(ipp_port)) <= 0)
+ cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
+ }
+ else
+ cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
+}
/*
* End of "$Id: usersys.c 11689 2014-03-05 21:22:12Z msweet $".
debian/patches/read-embedded-options-from-incoming-postscript-and-add-to-ipp-attrs.patch 0000644 0000000 0000000 00000006207 12321556614 026604 0 ustar Description: Make CUPS reading all option settings in PostScript print
jobs and add the option settings to the filter command line before
starting the filter chain. This fixes the problem that in the PDF
printing workflow (where incoming PostScript gets converted to PDF by
pstopdf) option settings embedded in the incoming PostScript code do
not get obeyed. Especially the options of jobs from Windows clients get
ignored.
Origin: vendor
Author: Till Kamppeter
Bug: https://www.cups.org/str.php?L4344
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
@@ -8271,6 +8271,11 @@
ipp_attribute_t *attr, /* Current attribute */
*attr2, /* Job attribute */
*prev2; /* Previous job attribute */
+ int foundfirstpage; /* Did we find the first page already
+ in the PostScript input? */
+ int num_copies; /* Number of copies according to
+ PostScript command in input file */
+ char *s, *t, buffer[10];
/*
@@ -8332,6 +8337,85 @@
}
/*
+ * Read option settings embedded in the file...
+ */
+
+ foundfirstpage = 0;
+
+ while (cupsFileGets(fp, line, sizeof(line)))
+ {
+ /*
+ * Stop at the second page, we read also the settings of the first PageSetup
+ * to work around a bug in OpenOffice.org. This app puts options intended
+ * for the whole document into the page setup of the first page
+ */
+
+ if (!strncmp(line, "%%Page:", 7))
+ {
+ if (foundfirstpage == 1)
+ break;
+ foundfirstpage = 1;
+ }
+
+ /*
+ * Add the embedded option settings to the option array...
+ */
+
+ s = NULL;
+ if (!strncmp(line, "%%BeginFeature:", 15))
+ s = line + 15;
+ else if (!strncmp(line, "%%IncludeFeature:", 17))
+ s = line + 17;
+ else if (!strncmp(line, "%%BeginNonPPDFeature:", 21))
+ s = line + 21;
+
+ if (s && (t = strstr(s, "NumCopies")) != NULL)
+ {
+ t += 9;
+ while ((*t == ' ') || (*t == '\t')) t++;
+ if (sscanf(t, "%9d", &num_copies) == 1)
+ {
+ sprintf(buffer, "%d", num_copies);
+ num_options = cupsAddOption("copies", buffer, num_options, &options);
+ }
+ }
+ else if (s)
+ {
+ while ((*s == ' ') || (*s == '\t')) s++;
+ if (*s == '*') s++;
+ t = s;
+ while (*t && (*t != ' ') && (*t != '\t')) t++;
+ if ((*t == ' ') || (*t == '\t')) *t = '=';
+ num_options = cupsParseOptions(s, num_options, &options);
+ }
+
+ /*
+ * Read out "/#copies XXX def" and "/NumCopies XXX def" expressions from
+ * PostScript input. Some apps insert these expressions to set the
+ * number of copies.
+ */
+
+ s = NULL;
+ if ((s = strstr(line, "/#copies")) != NULL)
+ s += 8;
+ else if ((s = strstr(line, "/NumCopies")) != NULL)
+ s += 10;
+ if (s)
+ {
+ while ((*s == ' ') || (*s == '\t')) s++;
+ if (sscanf(s, "%9d %as ", &num_copies, &t) == 2)
+ {
+ if (!strncmp(t, "def", 3))
+ {
+ sprintf(buffer, "%d", num_copies);
+ num_options = cupsAddOption("copies", buffer, num_options, &options);
+ }
+ free(t);
+ }
+ }
+ }
+
+ /*
* Done with the file; see if we have any options...
*/
debian/patches/tests-use-cupsfilters.patch 0000644 0000000 0000000 00000014572 12277464531 016157 0 ustar Description: Use cups-filter's filters, type declarations, conversions (from 1.0.38, patched)
and libraries. This fixes the tests that need those.
Origin: vendor
Author: Didier Raboud
Last-Update: 2014-01-09
--- a/test/run-stp-tests.sh
+++ b/test/run-stp-tests.sh
@@ -434,6 +434,22 @@
instfilter pstoraster pstoraster raster
instfilter texttopdf texttopdf pdf
+ # cups-filters types, filters and banners
+ ln -s /usr/share/cups/mime/cupsfilters.types /tmp/cups-$user/share/mime
+ ln -s $root/test/cupsfilters.convs /tmp/cups-$user/share/mime
+
+ instfilter gstoraster gstoraster raster
+ instfilter imagetoraster imagetoraster raster
+ instfilter pstopdf pstopdf pdf
+ instfilter urftopdf urftopdf pdf
+
+ ln -sf /usr/share/cups/banners/classified /tmp/cups-$user/share/banners/
+ ln -sf /usr/share/cups/banners/confidential /tmp/cups-$user/share/banners/
+ ln -sf /usr/share/cups/banners/secret /tmp/cups-$user/share/banners/
+ ln -sf /usr/share/cups/banners/standard /tmp/cups-$user/share/banners/
+ ln -sf /usr/share/cups/banners/topsecret /tmp/cups-$user/share/banners/
+ ln -sf /usr/share/cups/banners/unclassified /tmp/cups-$user/share/banners/
+
if test -d /usr/share/cups/charsets; then
ln -s /usr/share/cups/charsets /tmp/cups-$user/share
fi
--- /dev/null
+++ b/test/cupsfilters.convs
@@ -0,0 +1,128 @@
+#
+# "$Id: $"
+#
+# MIME conversions file for OpenPrinting CUPS Filters.
+#
+# Copyright 2007-2011 by Apple Inc.
+# Copyright 1997-2007 by Easy Software Products.
+#
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law. Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file. If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
+#
+
+########################################################################
+#
+# Format of Lines:
+#
+# source/type destination/type cost filter
+#
+# General Notes:
+#
+# The "cost" field is used to find the least costly filters to run
+# when converting a job file to a printable format.
+#
+# All filters *must* accept the standard command-line arguments
+# (job-id, user, title, copies, options, [filename or stdin]) to
+# work with CUPS.
+#
+
+########################################################################
+#
+# PDF filters
+#
+
+# CUPS file conversion rules for PostScript input when we are working with
+# the PDF printing workflow. General PostScript input should be converted to
+# PDF, so that pdftopdf is doing the page management on PDF data and the
+# renderer/driver part renders PDF. An exception is made for PostScript
+# coming from the Adobe Reader. As this PostScript cannot be converted to PDF
+# if it comes from an encrypted PDF file, we simply override pstopdf and the
+# PDF workflow.
+
+application/postscript application/pdf 0 pstopdf
+application/vnd.adobe-reader-postscript application/vnd.cups-postscript 66 pstops
+
+# Original:
+# application/pdf application/vnd.cups-pdf 66 pdftopdf
+# Patched:
+application/pdf application/vnd.cups-pdf 22 pdftopdf
+
+application/x-cshell application/pdf 32 texttopdf
+application/x-csource application/pdf 32 texttopdf
+application/x-perl application/pdf 32 texttopdf
+application/x-shell application/pdf 32 texttopdf
+text/plain application/pdf 32 texttopdf
+text/html application/pdf 32 texttopdf
+image/gif application/vnd.cups-pdf 65 imagetopdf
+image/png application/vnd.cups-pdf 65 imagetopdf
+image/jpeg application/vnd.cups-pdf 65 imagetopdf
+image/tiff application/vnd.cups-pdf 65 imagetopdf
+image/x-bitmap application/vnd.cups-pdf 65 imagetopdf
+image/x-photocd application/vnd.cups-pdf 65 imagetopdf
+image/x-portable-anymap application/vnd.cups-pdf 65 imagetopdf
+image/x-portable-bitmap application/vnd.cups-pdf 65 imagetopdf
+image/x-portable-graymap application/vnd.cups-pdf 65 imagetopdf
+image/x-portable-pixmap application/vnd.cups-pdf 65 imagetopdf
+image/x-sgi-rgb application/vnd.cups-pdf 65 imagetopdf
+image/x-xbitmap application/vnd.cups-pdf 65 imagetopdf
+image/x-xpixmap application/vnd.cups-pdf 65 imagetopdf
+image/x-xwindowdump application/vnd.cups-pdf 65 imagetopdf
+image/x-sun-raster application/vnd.cups-pdf 65 imagetopdf
+application/vnd.cups-pdf-banner application/pdf 32 bannertopdf
+image/urf application/pdf 0 urftopdf
+
+########################################################################
+#
+# PostScript filters
+#
+
+#application/pdf application/vnd.cups-postscript 66 pdftops
+
+# Original:
+# application/vnd.cups-pdf application/vnd.cups-postscript 100 pdftops
+# Patched:
+application/vnd.cups-pdf application/vnd.cups-postscript 22 pdftops
+
+#application/postscript application/vnd.cups-postscript 66 pstops
+
+########################################################################
+#
+# Raster filters...
+#
+
+application/vnd.cups-pdf application/vnd.cups-raster 99 gstoraster
+application/vnd.cups-postscript application/vnd.cups-raster 200 gstoraster
+application/vnd.cups-pdf application/vnd.cups-raster 100 pdftoraster
+image/gif application/vnd.cups-raster 100 imagetoraster
+image/png application/vnd.cups-raster 100 imagetoraster
+image/jpeg application/vnd.cups-raster 100 imagetoraster
+image/tiff application/vnd.cups-raster 100 imagetoraster
+image/x-bitmap application/vnd.cups-raster 100 imagetoraster
+image/x-photocd application/vnd.cups-raster 100 imagetoraster
+image/x-portable-anymap application/vnd.cups-raster 100 imagetoraster
+image/x-portable-bitmap application/vnd.cups-raster 100 imagetoraster
+image/x-portable-graymap application/vnd.cups-raster 100 imagetoraster
+image/x-portable-pixmap application/vnd.cups-raster 100 imagetoraster
+image/x-sgi-rgb application/vnd.cups-raster 100 imagetoraster
+image/x-xbitmap application/vnd.cups-raster 100 imagetoraster
+image/x-xpixmap application/vnd.cups-raster 100 imagetoraster
+image/x-sun-raster application/vnd.cups-raster 100 imagetoraster
+
+########################################################################
+#
+# Text filters (only for text-only printers)...
+#
+
+application/x-cshell text/plain 100 -
+application/x-csource text/plain 100 -
+application/x-perl text/plain 100 -
+application/x-shell text/plain 100 -
+text/html text/plain 100 -
+text/css text/plain 100 -
+
+#
+# End of "$Id: $".
+#
debian/patches/tests-fix-ppdLocalize-on-unclean-env.patch 0000644 0000000 0000000 00000001266 12277464531 020673 0 ustar Description: Force LC_* environment variables when testing (non) l10n'isation.
Permits building in non-"C" environments.
Author: Didier Raboud
Origin: vendor
Last-Update: 2012-09-18
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/cups/testppd.c
+++ b/cups/testppd.c
@@ -496,6 +496,14 @@
* Test localization...
*/
+ /*
+ * Enforce void localization
+ */
+ putenv("LANG=C");
+ putenv("LC_ALL=C");
+ putenv("LC_CTYPE=C");
+ putenv("LC_MESSAGES=C");
+
fputs("ppdLocalizeIPPReason(text): ", stdout);
if (ppdLocalizeIPPReason(ppd, "foo", NULL, buffer, sizeof(buffer)) &&
!strcmp(buffer, "Foo Reason"))
debian/patches/manpage-hyphen-minus.patch 0000644 0000000 0000000 00000165034 12321554334 015703 0 ustar Description: Fix all spotted hyphen-used-as-minus-sign manpage errors
Automatically generated using sed -i -s 's/^-/\\-/g;s/ -/ \\-/g' man/*.man*
Author: Didier Raboud
Origin: vendor
Bug-Upstream: https://cups.org/str.php?L4299
Last-Update: 2014-01-04
--- a/man/cups-files.conf.man.in
+++ b/man/cups-files.conf.man.in
@@ -53,7 +53,7 @@
.TP 5
FatalErrors none
.TP 5
-FatalErrors all -kind [... -kind]
+FatalErrors all \-kind [... \-kind]
.TP 5
FatalErrors kind [... kind]
.br
--- a/man/cupsd.man.in
+++ b/man/cupsd.man.in
@@ -17,9 +17,9 @@
cupsd \- cups scheduler
.SH SYNOPSIS
.B cupsd
-[ -c
+[ \-c
.I config-file
-] [ -f ] [ -F ] [ -h ] [ -l ] [ -t ]
+] [ \-f ] [ \-F ] [ \-h ] [ \-l ] [ \-t ]
.SH DESCRIPTION
\fIcupsd\fR is the scheduler for CUPS. It implements a printing system based
upon the Internet Printing Protocol, version 2.1. If no options are specified
@@ -27,31 +27,31 @@
\fI/etc/cups/cupsd.conf\fR will be used.
.SH OPTIONS
.TP 5
--c config-file
+\-c config-file
.br
Uses the named configuration file.
.TP 5
--f
+\-f
.br
Run \fIcupsd\fR in the foreground; the default is to run in the
background as a "daemon".
.TP 5
--F
+\-F
.br
Run \fIcupsd\fR in the foreground but detach the process from the
controlling terminal and current directory. This is useful for
running \fIcupsd\fR from \fIinit(8)\fR.
.TP 5
--h
+\-h
.br
Shows the program usage.
.TP 5
--l
+\-l
.br
This option is passed to \fIcupsd\fR when it is run from
\fIlaunchd(8)\fR.
.TP 5
--t
+\-t
.br
Test the configuration file for syntax errors.
.SH COMPATIBILITY
--- a/man/cupsfilter.man
+++ b/man/cupsfilter.man
@@ -16,27 +16,27 @@
cupsfilter \- convert a file to another format using cups filters
.SH SYNOPSIS
.B cupsfilter
-[ -D ] [ -U
+[ \-D ] [ \-U
.I user
-] [ -c
+] [ \-c
.I config-file
-] [ -d
+] [ \-d
.I printer
-] [ -e ] [ -i
+] [ \-e ] [ \-i
.I mime/type
-] [ -j
+] [ \-j
.I job-id[,N]
-] [ -m
+] [ \-m
.I mime/type
-] [ -n
+] [ \-n
.I copies
-] [ -o
+] [ \-o
.I name=value
-] [ -p
+] [ \-p
.I filename.ppd
-] [ -t
+] [ \-t
.I title
-] [ -u ]
+] [ \-u ]
.I filename
.SH DESCRIPTION
\fIcupsfilter\fR is a front-end to the CUPS filter subsystem which allows you
@@ -45,58 +45,58 @@
file is sent to the standard output.
.SH OPTIONS
.TP 5
--D
+\-D
.br
Delete the input file after conversion.
.TP 5
--U user
+\-U user
.br
Specifies the username passed to the filters. The default is the name of the current user.
.TP 5
--c config-file
+\-c config-file
.br
Uses the named cups-files.conf configuration file.
.TP 5
--d printer
+\-d printer
Uses information from the named printer.
.TP 5
--e
+\-e
.br
Use every filter from the PPD file.
.TP 5
--i mime/type
+\-i mime/type
.br
Specifies the source file type. The default file type is guessed using the
filename and contents of the file.
.TP 5
--j job-id[,N]
+\-j job-id[,N]
.br
Converts document N from the specified job. If N is omitted, document 1 is
converted.
.TP 5
--m mime/type
+\-m mime/type
.br
Specifies the destination file type. The default file type is application/pdf.
Use printer/foo to convert to the printer format defined by the filters in the
PPD file.
.TP 5
--n copies
+\-n copies
.br
Specifies the number of copies to generate.
.TP 5
--o name=value
+\-o name=value
.br
Specifies options to pass to the CUPS filters.
.TP 5
--p filename.ppd
+\-p filename.ppd
.br
Specifies the PPD file to use.
.TP 5
--t title
+\-t title
.br
Specifies the document title.
.TP 5
--u
+\-u
.br
Delete the PPD file after conversion.
.SH SEE ALSO
--- a/man/lpq.man
+++ b/man/lpq.man
@@ -17,13 +17,13 @@
lpq \- show printer queue status
.SH SYNOPSIS
.B lpq
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] [ -P
+] [ \-P
.I destination[/instance]
-] [ -a ] [ -l ] [
+] [ \-a ] [ \-l ] [
.I +interval
]
.SH DESCRIPTION
@@ -37,27 +37,27 @@
.SH OPTIONS
\fIlpq\fR supports the following options:
.TP 5
--E
+\-E
.br
Forces encryption when connecting to the server.
.TP 5
--P destination[/instance]
+\-P destination[/instance]
.br
Specifies an alternate printer or class name.
.TP 5
--U username
+\-U username
.br
Specifies an alternate username.
.TP 5
--a
+\-a
.br
Reports jobs on all printers.
.TP 5
--h server[:port]
+\-h server[:port]
.br
Specifies an alternate server.
.TP 5
--l
+\-l
.br
Requests a more verbose (long) reporting format.
.SH SEE ALSO
--- a/man/backend.man
+++ b/man/backend.man
@@ -53,7 +53,7 @@
Unless you are a developer and know what you are doing, please do not run
backends directly. Instead, use the \fIlp(1)\fR or \fIlpr(1)\fR programs to send
a print job or \fIlpinfo(8)\fR program to query for available printers using the
-backend. The one exception is the SNMP backend - see \fIsnmpbackend(8)\fR for
+backend. The one exception is the SNMP backend \- see \fIsnmpbackend(8)\fR for
more information.
.SH DEVICE DISCOVERY
When run with no arguments, the backend should list the devices and schemes it
@@ -151,7 +151,7 @@
6 (CUPS_BACKEND_RETRY)
.br
The print file was not successfully transmitted because of a temporary issue.
-The scheduler will retry the job at a future time - other jobs may print before
+The scheduler will retry the job at a future time \- other jobs may print before
this one.
.TP 5
7 (CUPS_BACKEND_RETRY_CURRENT)
--- a/man/cancel.man
+++ b/man/cancel.man
@@ -14,16 +14,16 @@
.\"
.TH cancel 1 "CUPS" "21 January 2013" "Apple Inc."
.SH NAME
-cancel - cancel jobs
+cancel \- cancel jobs
.SH SYNOPSIS
.B cancel
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -a ] [ -h
+] [ \-a ] [ \-h
.I hostname[:port]
-] [ -u
+] [ \-u
.I username
-] [ -x ] [
+] [ \-x ] [
.I id
] [
.I destination
@@ -36,28 +36,28 @@
.SH OPTIONS
The following options are recognized by \fIcancel\fR:
.TP 5
--E
+\-E
.br
Forces encryption when connecting to the server.
.TP 5
--U username
+\-U username
.br
Specifies the username to use when connecting to the server.
.TP 5
--a
+\-a
.br
Cancel all jobs on the named destination, or all jobs on all
destinations if none is provided.
.TP 5
--h hostname[:port]
+\-h hostname[:port]
.br
Chooses an alternate server.
.TP 5
--u username
+\-u username
.br
Cancels jobs owned by \fIusername\fR.
.TP 5
--x
+\-x
.br
Deletes job data files in addition to canceling.
.SH COMPATIBILITY
--- a/man/cups-config.man
+++ b/man/cups-config.man
@@ -17,38 +17,38 @@
cups-config \- get cups api, compiler, directory, and link information.
.SH SYNOPSIS
.B cups-config
---api-version
+\--api-version
.br
.B cups-config
---build
+\--build
.br
.B cups-config
---cflags
+\--cflags
.br
.B cups-config
---datadir
+\--datadir
.br
.B cups-config
---help
+\--help
.br
.B cups-config
---ldflags
+\--ldflags
.br
.B cups-config
[
-.I --image
+.I \--image
] [
-.I --static
-] --libs
+.I \--static
+] \--libs
.br
.B cups-config
---serverbin
+\--serverbin
.br
.B cups-config
---serverroot
+\--serverroot
.br
.B cups-config
---version
+\--version
.br
.SH DESCRIPTION
\fBcups-config\fR is the CUPS program configuration utility. It should be
@@ -57,54 +57,54 @@
directories for filters, configuration files, and drivers.
.SH OPTIONS
.TP 5
---api-version
+\--api-version
.br
Displays the current API version (major.minor).
.TP 5
---build
+\--build
.br
Displays a system-specific build number.
.TP 5
---cflags
+\--cflags
.br
Displays the necessary compiler options.
.TP 5
---datadir
+\--datadir
.br
Displays the default CUPS data directory.
.TP 5
---help
+\--help
.br
Displays the program usage message.
.TP 5
---image
+\--image
.br
When used with \fI--libs\fR, adds the CUPS imaging library to the
list of displayed libraries.
.TP 5
---ldflags
+\--ldflags
.br
Displays the necessary linker options.
.TP 5
---libs
+\--libs
.br
Displays the necessary librarys to link to.
.TP 5
---serverbin
+\--serverbin
.br
Displays the default CUPS binary directory,
where filters and backends are stored.
.TP 5
---serverroot
+\--serverroot
.br
Displays the default CUPS configuration file directory.
.TP 5
---static
+\--static
.br
When used with \fI--libs\fR, shows the static libraries instead
of the default (shared) libraries.
.TP 5
---version
+\--version
.br
Displays the full version number of the CUPS installation
(major.minor.patch).
--- a/man/cups-deviced.man.in
+++ b/man/cups-deviced.man.in
@@ -25,7 +25,7 @@
\fICUPS-Get-Devices\fR request. The output format is an IPP
response message. The \fIrequest-id\fR argument is the request ID
from the original IPP request, typically 1. The \fIlimit\fR
-argument is the limit value from the original IPP request - 0
+argument is the limit value from the original IPP request \- 0
means no limit. The \fIuser-id\fR argument is the
requesting-user-name value from the original IPP request.
Finally, the \fIoptions\fR argument is a space-delimited list of
--- a/man/cups-driverd.man.in
+++ b/man/cups-driverd.man.in
@@ -34,7 +34,7 @@
format is an IPP response message. The \fIrequest_id\fR argument
is the request ID from the original IPP request, typically 1. The
\fIlimit\fR argument is the limit value from the original IPP
-request - 0 means no limit. Finally, the \fIoptions\fR argument
+request \- 0 means no limit. Finally, the \fIoptions\fR argument
is a space-delimited list of attributes ("name=value name=value
\&...") that were passed in with the request. Currently
\fIcups-driverd\fR looks for the \fIppd-make\fR and
--- a/man/cups-lpd.man.in
+++ b/man/cups-lpd.man.in
@@ -17,9 +17,9 @@
cups-lpd \- receive print jobs and report printer status to lpd clients
.SH SYNOPSIS
.B cups-lpd
-[ -h
+[ \-h
.I hostname[:port]
-] [ -n ] [ -o
+] [ \-n ] [ \-o
.I option=value
]
.SH DESCRIPTION
@@ -34,7 +34,7 @@
.nf
printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd \\
- -o document-format=application/octet-stream
+ \-o document-format=application/octet-stream
.fi
.LP
.LP
@@ -56,22 +56,22 @@
group = sys
passenv =
server = /usr/lib/cups/daemon/cups-lpd
- server_args = -o document-format=application/octet-stream
+ server_args = \-o document-format=application/octet-stream
}
.fi
.SH OPTIONS
.TP 5
--h hostname[:port]
+\-h hostname[:port]
.br
Sets the CUPS server (and port) to use.
.TP 5
--n
+\-n
.br
Disables reverse address lookups; normally \fIcups-lpd\fR will
try to discover the hostname of the client via a reverse DNS
lookup.
.TP 5
--o name=value
+\-o name=value
.br
Inserts options for all print queues. Most often this is used to
disable the "l" filter so that remote print jobs are filtered as
--- a/man/cups-snmp.man.in
+++ b/man/cups-snmp.man.in
@@ -21,7 +21,7 @@
.B /usr/libexec/cups/backend/snmp
.I ip-address-or-hostname
.br
-.B lpinfo -v --include-schemes snmp
+.B lpinfo \-v \--include-schemes snmp
.SH DESCRIPTION
The CUPS SNMP backend provides legacy discovery and identification of network
printers using SNMPv1. When used for discovery through the scheduler, the
--- a/man/cupsaccept.man
+++ b/man/cupsaccept.man
@@ -17,18 +17,18 @@
cupsaccept/cupsreject \- accept/reject jobs sent to a destination
.SH SYNOPSIS
.B cupsaccept
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I hostname[:port]
] destination(s)
.br
.B cupsreject
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I hostname[:port]
-] [ -r
+] [ \-r
.I reason
] destination(s)
.SH DESCRIPTION
@@ -42,19 +42,19 @@
The following options are supported by both \fIcupsaccept\fR and
\fIcupsreject\fR:
.TP 5
--E
+\-E
.br
Forces encryption when connecting to the server.
.TP 5
--U username
+\-U username
.br
Sets the username that is sent when connecting to the server.
.TP 5
--h hostname[:port]
+\-h hostname[:port]
.br
Chooses an alternate server.
.TP 5
--r "reason"
+\-r "reason"
.br
Sets the reason string that is shown for a printer that is
rejecting jobs.
--- a/man/cupsaddsmb.man.in
+++ b/man/cupsaddsmb.man.in
@@ -18,22 +18,22 @@
.SH SYNOPSIS
.B cupsaddsmb
-[ -H
+[ \-H
.I samba-server
-] [ -U
+] [ \-U
.I samba-user[%samba-password]
-] [ -h
+] [ \-h
.I cups-server[:port]
-] [ -v ] -a
+] [ \-v ] \-a
.br
.B cupsaddsmb
-[ -H
+[ \-H
.I samba-server
-] [ -U
+] [ \-U
.I samba-user[%samba-password]
-] [ -h
+] [ \-h
.I cups-server[:port]
-] [ -v ] printer [ ... printer ]
+] [ \-v ] printer [ ... printer ]
.SH DESCRIPTION
\fIcupsaddsmb\fR exports printers to the SAMBA software (version
@@ -45,27 +45,27 @@
.SH OPTIONS
\fIcupsaddsmb\fR supports the following options:
.TP 5
--H samba-server
+\-H samba-server
.br
Specifies the SAMBA server which defaults to the CUPS server.
.TP 5
--U samba-user[%samba-password]
+\-U samba-user[%samba-password]
.br
Specifies the SAMBA print admin username which defaults to your
current username. If the username contains a percent (%)
character, then the text following the percent is treated as the
SAMBA password to use.
.TP 5
--a
+\-a
.br
Exports all known printers. Otherwise only the named printers are
exported.
.TP 5
--h cups-server[:port]
+\-h cups-server[:port]
.br
Specifies a different CUPS server to use.
.TP 5
--v
+\-v
.br
Specifies that verbose information should be shown. This is
useful for debugging SAMBA configuration problems.
@@ -133,7 +133,7 @@
pscript5.dll
.fi
.LP
-\fBNote:\fR Unlike Windows, case is significant - make sure that
+\fBNote:\fR Unlike Windows, case is significant \- make sure that
you use the lowercase filenames shown above, otherwise
\fIcupsaddsmb\fR will fail to export the drivers.
@@ -158,7 +158,7 @@
PSMON.DLL
.fi
.LP
-\fBNote:\fR Unlike Windows, case is significant - make sure that
+\fBNote:\fR Unlike Windows, case is significant \- make sure that
you use the UPPERCASE filenames shown above, otherwise
\fIcupsaddsmb\fR will fail to export the drivers.
--- a/man/cupsctl.man
+++ b/man/cupsctl.man
@@ -17,12 +17,12 @@
cupsctl \- configure cupsd.conf options
.SH SYNOPSIS
.B cupsctl
-[ -E ] [-U
+[ \-E ] [\-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] [ --[no-]debug-logging ] [ --[no-]remote-admin ] [ --[no-]remote-any ]
-[ --[no-]share-printers ] [ --[no-]user-cancel-any ]
+] [ \-\-[no-]debug-logging ] [ \-\-[no-]remote-admin ] [ \-\-[no-]remote-any ]
+[ \-\-[no-]share-printers ] [ \-\-[no-]user-cancel-any ]
[
.I name=value
]
@@ -33,35 +33,35 @@
.SH OPTIONS
The following options are recognized:
.TP 5
--E
+\-E
.br
Enables encryption on the connection to the scheduler.
.TP 5
--U \fIusername\fR
+\-U \fIusername\fR
.br
Specifies an alternate username to use when authenticating with the scheduler.
.TP 5
--h \fIserver[:port]\fR
+\-h \fIserver[:port]\fR
.br
Specifies the server address.
.TP 5
---[no-]debug-logging
+\--[no-]debug-logging
.br
Enables or disables debug logging in the \fBerror_log\fR file.
.TP 5
---[no-]remote-admin
+\--[no-]remote-admin
.br
Enables or disables remote administration.
.TP 5
---[no-]remote-any
+\--[no-]remote-any
.br
Enables or disables printing from any address, e.g. the Internet.
.TP 5
---[no-]share-printers
+\--[no-]share-printers
.br
Enables or disables sharing of local printers with other computers.
.TP 5
---[no-]user-cancel-any
+\--[no-]user-cancel-any
.br
Allows or prevents users from canceling jobs owned by others.
.SH EXAMPLES
@@ -72,17 +72,17 @@
.LP
Enable debug logging:
.nf
- cupsctl --debug-logging
+ cupsctl \--debug-logging
.fi
.LP
Get the current debug logging state:
.nf
- cupsctl | grep '^_debug_logging' | awk -F= '{print $2}'
+ cupsctl | grep '^_debug_logging' | awk \-F= '{print $2}'
.fi
.LP
Disable printer sharing:
.nf
- cupsctl --no-share-printers
+ cupsctl \--no-share-printers
.fi
.SH KNOWN ISSUES
You cannot set the Listen or Port directives using \fIcupsctl\fR.
--- a/man/cupsenable.man
+++ b/man/cupsenable.man
@@ -17,53 +17,53 @@
cupsdisable, cupsenable \- stop/start printers and classes
.SH SYNOPSIS
.B cupsdisable
-[ -E ] [-U
+[ \-E ] [\-U
.I username
-] [ -c ] [ -h
+] [ \-c ] [ \-h
.I server[:port]
-] [ -r
+] [ \-r
.I reason
-] [ --hold ] destination(s)
+] [ \-\-hold ] destination(s)
.br
.B cupsenable
-[ -E ] [-U
+[ \-E ] [\-U
.I username
-] [ -c ] [ -h
+] [ \-c ] [ \-h
.I server[:port]
-] [ --release ] destination(s)
+] [ \--release ] destination(s)
.SH DESCRIPTION
\fIcupsenable\fR starts the named printers or classes.
.LP
\fIcupsdisable\fR stops the named printers or classes. The
following options may be used:
.TP 5
--E
+\-E
.br
Forces encryption of the connection to the server.
.TP 5
--U username
+\-U username
.br
Uses the specified username when connecting to the server.
.TP 5
--c
+\-c
.br
Cancels all jobs on the named destination.
.TP 5
--h server[:port]
+\-h server[:port]
.br
Uses the specified server and port.
.TP 5
---hold
+\--hold
.br
Holds remaining jobs on the named printer. Useful for allowing the current
job to complete before performing maintenance.
.TP 5
--r "reason"
+\-r "reason"
.br
Sets the message associated with the stopped state. If no reason is specified
then the message is set to "Reason Unknown".
.TP 5
---release
+\--release
.br
Releases pending jobs for printing. Use after running \fIcupsdisable\fR with
the \fI--hold\fR option to resume printing.
--- a/man/cupstestdsc.man
+++ b/man/cupstestdsc.man
@@ -17,12 +17,12 @@
cupstestdsc \- test conformance of postscript files
.SH SYNOPSIS
.B cupstestdsc
-[ -h ] filename.ps [ ...
+[ \-h ] filename.ps [ ...
.I filenameN.ps
]
.br
.B cupstestdsc
-[ -h ] -
+[ \-h ] \-
.SH DESCRIPTION
\fIcupstestdsc\fR tests the conformance of PostScript files to
the Adobe PostScript Language Document Structuring Conventions
--- a/man/cupstestppd.man
+++ b/man/cupstestppd.man
@@ -17,20 +17,20 @@
cupstestppd \- test conformance of ppd files
.SH SYNOPSIS
.B cupstestppd
-[ -I
+[ \-I
.I category
-] [ -R
+] [ \-R
.I rootdir
-] [ -W
+] [ \-W
.I category
-] [ -q ] [-r] [ -v[v] ] filename.ppd[.gz] [ ... filenameN.ppd[.gz] ]
+] [ \-q ] [\-r] [ \-v[v] ] filename.ppd[.gz] [ ... filenameN.ppd[.gz] ]
.br
.B cupstestppd
-[ -R
+[ \-R
.I rootdir
-] [ -W
+] [ \-W
.I category
-] [ -q ] [-r] [ -v[v] ] -
+] [ \-q ] [\-r] [ \-v[v] ] \-
.SH DESCRIPTION
\fIcupstestppd\fR tests the conformance of PPD files to the
Adobe PostScript Printer Description file format specification
@@ -44,71 +44,71 @@
.SH OPTIONS
\fIcupstestppd\fR supports the following options:
.TP 5
--I filename
+\-I filename
.br
Ignores all PCFileName warnings.
.TP 5
--I filters
+\-I filters
.br
Ignores all filter errors.
.TP 5
--I profiles
+\-I profiles
.br
Ignores all profile errors.
.TP 5
--R rootdir
+\-R rootdir
.br
Specifies an alternate root directory for the filter, pre-filter,
and other support file checks.
.TP 5
--W constraints
+\-W constraints
.br
Report all UIConstraint errors as warnings.
.TP 5
--W defaults
+\-W defaults
.br
Except for size-related options, report all default option errors as warnings.
.TP 5
--W filters
+\-W filters
.br
Report all filter errors as warnings.
.TP 5
--W profiles
+\-W profiles
.br
Report all profile errors as warnings.
.TP 5
--W sizes
+\-W sizes
.br
Report all media size errors as warnings.
.TP 5
--W translations
+\-W translations
.br
Report all translation errors as warnings.
.TP 5
--W all
+\-W all
.br
Report all of the previous errors as warnings.
.TP 5
--W none
+\-W none
.br
Report all of the previous errors as errors.
.TP 5
--q
+\-q
.br
Specifies that no information should be displayed.
.TP 5
--r
+\-r
.br
Relaxes the PPD conformance requirements so that common
whitespace, control character, and formatting problems are not
treated as hard errors.
.TP 5
--v
+\-v
.br
Specifies that detailed conformance testing results should be
displayed rather than the concise PASS/FAIL/ERROR status.
.TP 5
--vv
+\-vv
.br
Specifies that all information in the PPD file should be
displayed in addition to the detailed conformance testing
@@ -140,7 +140,7 @@
conform:
.nf
- find . -name \\*.ppd \\! -exec cupstestppd -q '{}' \\; -print
+ find . \-name \\*.ppd \\! \-exec cupstestppd \-q '{}' \\; \-print
.fi
The next command tests all PPD files under the current directory
@@ -148,8 +148,8 @@
that do not conform:
.nf
- find . -name \\*.ppd \\! -exec cupstestppd -q '{}' \\; \\
- -exec cupstestppd -v '{}' \\;
+ find . \-name \\*.ppd \\! \-exec cupstestppd \-q '{}' \\; \\
+ \-exec cupstestppd \-v '{}' \\;
.fi
.SH SEE ALSO
--- a/man/filter.man
+++ b/man/filter.man
@@ -44,10 +44,10 @@
.SH OPTIONS
Options passed on the command-line typically do not include the default choices
the printer's PPD file. In addition, some options may be specified in multiple
-ways - "landscape" is a synonym for "orientation-requested=4", "media" is a
+ways \- "landscape" is a synonym for "orientation-requested=4", "media" is a
synonym for "PageSize", "PageRegion", "InputSlot", and "MediaType", and "sides"
is a synonym for the various "Duplex" options. Non-raster filters \fBmust\fR
-support both explicit and implicit specification of PPD options - use the
+support both explicit and implicit specification of PPD options \- use the
ppdMarkDefaults and cupsMarkOptions functions in the CUPS library to use the
correct mapping, and ppdFindMarkedChoice to get the user-selected choice.
.LP
@@ -127,7 +127,7 @@
.TP 5
STATE: + printer-state-reason [printer-state-reason ...]
.TP 5
-STATE: - printer-state-reason [printer-state-reason ...]
+STATE: \- printer-state-reason [printer-state-reason ...]
.br
Sets, adds, or removes printer-state-reason keywords to the
current queue. Typically this is used to indicate media, ink, and
--- a/man/ipptool.man
+++ b/man/ipptool.man
@@ -13,23 +13,23 @@
.\"
.TH ipptool 1 "CUPS" "20 February 2014" "Apple Inc."
.SH NAME
-ipptool - perform internet printing protocol requests
+ipptool \- perform internet printing protocol requests
.SH SYNOPSIS
.B ipptool
-[ --help ] [ --stop-after-include-error ] [ --version ]
-[ -4 ] [ -6 ] [ -C ] [ -E ] [ -I ] [ -L ] [ -S ] [ -T
+[ \--help ] [ \--stop-after-include-error ] [ \--version ]
+[ \-4 ] [ \-6 ] [ \-C ] [ \-E ] [ \-I ] [ \-L ] [ \-S ] [ \-T
.I seconds
-] [ -V
+] [ \-V
.I version
-] [ -X ] [ -c ] [ -d
+] [ \-X ] [ \-c ] [ \-d
.I name=value
-] [ -f
+] [ \-f
.I filename
-] [ -i
+] [ \-i
.I seconds
-] [ -n
+] [ \-n
.I repeat-count
-] [ -q ] [ -t ] [ -v ]
+] [ \-q ] [ \-t ] [ \-v ]
.I URI
.I filename
[
@@ -40,67 +40,67 @@
.SH OPTIONS
The following options are recognized by \fIipptool\fR:
.TP 5
---help
+\--help
Shows program help.
.TP 5
---stop-after-include-error
+\--stop-after-include-error
Tells \fIipptool\fR to stop if an error occurs in an included file. Normally \fIipptool\fR will continue with subsequent tests after the INCLUDE directive.
.TP 5
---version
+\--version
Shows the version of \fIipptool\fR being used.
.TP 5
--4
+\-4
Specifies that \fIipptool\fR must connect to the printer or server using IPv4.
.TP 5
--6
+\-6
Specifies that \fIipptool\fR must connect to the printer or server using IPv6.
.TP 5
--C
+\-C
Specifies that requests should be sent using the HTTP/1.1 "Transfer-Encoding: chunked" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
.TP 5
--E
+\-E
Forces TLS encryption when connecting to the server using the HTTP "Upgrade" header.
.TP 5
--I
+\-I
Specifies that \fIipptool\fR will continue past errors.
.TP 5
--L
+\-L
Specifies that requests should be sent using the HTTP/1.0 "Content-Length:" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
.TP 5
--S
+\-S
Forces (dedicated) SSL encryption when connecting to the server.
.TP 5
--T seconds
+\-T seconds
Specifies a timeout for IPP requests in seconds.
.TP 5
--V version
+\-V version
Specifies the default IPP version to use: 1.0, 1.1, 2.0, 2.1, or 2.2. If not specified, version 1.1 is used.
.TP 5
--X
+\-X
Specifies that XML (Apple plist) output is desired instead of the plain text report. This option is incompatible with the \fI-i\fR (interval) and \fI-n\fR (repeat-count) options.
.TP 5
--c
+\-c
Specifies that CSV (comma-separated values) output is desired instead of the plain text output.
.TP 5
--d name=value
+\-d name=value
Defines the named variable.
.TP 5
--f filename
+\-f filename
Defines the default request filename for tests.
.TP 5
--i seconds
+\-i seconds
Specifies that the (last) file should be repeated at the specified interval. This option is incompatible with the \fI-X\fR (XML plist output) option.
.TP 5
--l
+\-l
Specifies that plain text output is desired.
.TP 5
--n repeat-count
+\-n repeat-count
Specifies that the (last) file should be repeated the specified number of times. This option is incompatible with the \fI-X\fR (XML plist output) option.
.TP 5
--t
+\-t
Specifies that CUPS test report output is desired instead of the plain text output.
.TP 5
--v
+\-v
Specifies that all request and response attributes should be output in CUPS test mode (\fI-t\fR). This is the default for XML output.
.SH EXIT CODE
The \fIipptool\fR program returns 0 if all tests were sucessful and 1 otherwise.
@@ -114,7 +114,7 @@
.LP
Send email notifications to "user@example.com" when "myprinter" changes:
.nf
- ipptool -d recipient=mailto:user@example.com \
+ ipptool \-d recipient=mailto:user@example.com \
ipp://localhost/printers/myprinter create-printer-subscription.test
.fi
.SH STANDARD FILES
--- a/man/ipptoolfile.man
+++ b/man/ipptoolfile.man
@@ -72,7 +72,7 @@
.TP 5
DEFINE variable-name value
Defines the named variable to the given value. This is equivalent to specifying
-"-d variable-name=value" on the \fIipptool\fR command-line.
+"\-d variable-name=value" on the \fIipptool\fR command-line.
.TP 5
DEFINE-DEFAULT variable-name value
Defines the named variable to the given value if it does not already have a
@@ -126,13 +126,13 @@
.TP 5
TRANSFER chunked
Specifies that tests will, by default, use the HTTP/1.1 "Transfer-Encoding:
-chunked" header. This is the default and is equivalent to specifying "-c" on the
+chunked" header. This is the default and is equivalent to specifying "\-c" on the
\fIipptool\fR command-line. Support for chunked requests is required for
conformance with all versions of IPP.
.TP 5
TRANSFER length
Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:"
-header. This is equivalent to specifying "-l" on the \fIipptool\fR command-line.
+header. This is equivalent to specifying "\-l" on the \fIipptool\fR command-line.
Support for content length requests is required for conformance with all
versions of IPP.
.TP 5
@@ -152,7 +152,7 @@
.TP 5
ATTR tag attribute-name value(s)
Adds an attribute to the test request. Values are separated by the comma (",")
-character - escape commas using the "\" character. Common attributes and values are listed in the IANA IPP registry - see references below.
+character \- escape commas using the "\\" character. Common attributes and values are listed in the IANA IPP registry - see references below.
.TP 5
ATTR collection attribute-name { MEMBER tag member-name value(s) ... } [ ... { ... } ]
Adds a collection attribute to the test request. Member attributes follow the
@@ -181,7 +181,7 @@
.TP 5
EXPECT !attribute-name
Specifies that the response must/may/must not include the named attribute.
-Additional requirements can be added as predicates - see the "EXPECT PREDICATES"
+Additional requirements can be added as predicates \- see the "EXPECT PREDICATES"
section for more information on predicates.
.TP 5
FILE filename
@@ -227,7 +227,7 @@
.TP 5
STATUS status-code [ predicate ]
Specifies an expected response status-code value. Additional requirements can be
-added as predicates - see the "STATUS PREDICATES" section for more information
+added as predicates \- see the "STATUS PREDICATES" section for more information
on predicates.
.TP 5
TEST-ID "identifier"
@@ -567,7 +567,7 @@
.SH VARIABLES
The \fIipptool\fR program maintains a list of variables that can be used in any
literal string or attribute value by specifying "$variable-name". Aside from
-variables defined using the "-d" option or "DEFINE" directive, the following
+variables defined using the "\-d" option or "DEFINE" directive, the following
pre-defined variables are available:
.TP 5
$$
@@ -578,7 +578,7 @@
environment variable is not defined.
.TP 5
$filename
-Inserts the filename provided to \fIipptool\fR with the "-f" option.
+Inserts the filename provided to \fIipptool\fR with the "\-f" option.
.TP 5
$hostname
Inserts the hostname from the URI provided to \fIipptool\fR.
--- a/man/lp.man
+++ b/man/lp.man
@@ -14,49 +14,49 @@
.\"
.TH lp 1 "CUPS" "16 July 2012" "Apple Inc."
.SH NAME
-lp - print files
+lp \- print files
.SH SYNOPSIS
.B lp
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -c ] [ -d
+] [ \-c ] [ \-d
.I destination[/instance]
-] [ -h
+] [ \-h
.I hostname[:port]
-] [ -m ] [ -n
+] [ \-m ] [ \-n
.I num-copies
-] [ -o
+] [ \-o
.I option[=value]
-] [ -q
+] [ \-q
.I priority
-] [ -s ] [ -t
+] [ \-s ] [ \-t
.I title
-] [ -H
+] [ \-H
.I handling
-] [ -P
+] [ \-P
.I page-list
-] [ -- ] [
+] [ \-- ] [
.I file(s)
]
.br
.B lp
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -c ] [ -h
+] [ \-c ] [ \-h
.I hostname[:port]
-] [ -i
+] [ \-i
.I job-id
-] [ -n
+] [ \-n
.I num-copies
-] [ -o
+] [ \-o
.I option[=value]
-] [ -q
+] [ \-q
.I priority
-] [ -t
+] [ \-t
.I title
-] [ -H
+] [ \-H
.I handling
-] [ -P
+] [ \-P
.I page-list
]
.SH DESCRIPTION
@@ -70,20 +70,20 @@
.SH OPTIONS
The following options are recognized by \fIlp\fR:
.TP 5
---
+\--
.br
Marks the end of options; use this to print a file whose name
begins with a dash (-).
.TP 5
--E
+\-E
.br
Forces encryption when connecting to the server.
.TP 5
--U username
+\-U username
.br
Specifies the username to use when connecting to the server.
.TP 5
--c
+\-c
.br
This option is provided for backwards-compatibility only. On
systems that support it, this option forces the print file to be
@@ -91,52 +91,52 @@
files are always sent to the scheduler via IPP which has the
same effect.
.TP 5
--d destination
+\-d destination
.br
Prints files to the named printer.
.TP 5
--h hostname[:port]
+\-h hostname[:port]
.br
Chooses an alternate server.
.TP 5
--i job-id
+\-i job-id
.br
Specifies an existing job to modify.
.TP 5
--m
+\-m
.br
Sends an email when the job is completed.
.TP 5
--n copies
+\-n copies
.br
Sets the number of copies to print from 1 to 100.
.TP 5
--o "name=value [name=value ...]"
+\-o "name=value [name=value ...]"
.br
Sets one or more job options.
.TP 5
--q priority
+\-q priority
.br
Sets the job priority from 1 (lowest) to 100 (highest). The
default priority is 50.
.TP 5
--s
+\-s
.br
Do not report the resulting job IDs (silent mode.)
.TP 5
--t "name"
+\-t "name"
.br
Sets the job name.
.TP 5
--H hh:mm
+\-H hh:mm
.TP 5
--H hold
+\-H hold
.TP 5
--H immediate
+\-H immediate
.TP 5
--H restart
+\-H restart
.TP 5
--H resume
+\-H resume
.br
Specifies when the job should be printed. A value of \fIimmediate\fR will print
the file immediately, a value of \fIhold\fR will hold the job indefinitely, and
@@ -145,91 +145,91 @@
Use a value of \fIrestart\fR with the \fI-i\fR option to restart
a completed job.
.TP 5
--P page-list
+\-P page-list
.br
Specifies which pages to print in the document. The list can
contain a list of numbers and ranges (#-#) separated by commas
(e.g. 1,3-5,16). The page numbers refer to the output pages and
-not the document's original pages - options like "number-up" can
+not the document's original pages \- options like "number-up" can
affect the numbering of the pages.
.SH COMMON JOB OPTIONS
Aside from the printer-specific options reported by the
\fIlpoptions(1)\fR command, the following generic options are
available:
.TP 5
--o media=size
+\-o media=size
.br
Sets the page size to \fIsize\fR. Most printers support at least
the size names "a4", "letter", and "legal".
.TP 5
--o landscape
+\-o landscape
.TP 5
--o orientation-requested=4
+\-o orientation-requested=4
.br
Prints the job in landscape (rotated 90 degrees).
.TP 5
--o sides=one-sided
+\-o sides=one-sided
.TP 5
--o sides=two-sided-long-edge
+\-o sides=two-sided-long-edge
.TP 5
--o sides=two-sided-short-edge
+\-o sides=two-sided-short-edge
.br
Prints on one or two sides of the paper. The value
"two-sided-long-edge" is normally used when printing portrait
(unrotated) pages, while "two-sided-short-edge" is used for
landscape pages.
.TP 5
--o fit-to-page
+\-o fit-to-page
.br
Scales the print file to fit on the page.
.TP 5
--o number-up=2
+\-o number-up=2
.TP 5
--o number-up=4
+\-o number-up=4
.TP 5
--o number-up=6
+\-o number-up=6
.TP 5
--o number-up=9
+\-o number-up=9
.TP 5
--o number-up=16
+\-o number-up=16
.br
Prints multiple document pages on each output page.
.TP 5
--o cpi=N
+\-o cpi=N
.br
Sets the number of characters per inch to use when printing a
text file. The default is 10.
.TP 5
--o lpi=N
+\-o lpi=N
.br
Sets the number of lines per inch to use when printing a text
file. The default is 6.
.TP 5
--o page-bottom=N
+\-o page-bottom=N
.TP 5
--o page-left=N
+\-o page-left=N
.TP 5
--o page-right=N
+\-o page-right=N
.TP 5
--o page-top=N
+\-o page-top=N
.br
Sets the page margins when printing text files. The values are in
-points - there are 72 points to the inch.
+points \- there are 72 points to the inch.
.SH EXAMPLES
Print a double-sided legal document to a printer called "foo":
.nf
- lp -d foo -o media=legal -o sides=two-sided-long-edge filename
+ lp \-d foo \-o media=legal \-o sides=two-sided-long-edge filename
.fi
.LP
Print an image across 4 pages:
.nf
- lp -d bar -o scaling=200 filename
+ lp \-d bar \-o scaling=200 filename
.fi
.LP
Print a text file with 12 characters per inch, 8 lines per inch, and
a 1 inch left margin:
.nf
- lp -d bar -o cpi=12 -o lpi=8 -o page-left=72 filename
+ lp \-d bar \-o cpi=12 \-o lpi=8 \-o page-left=72 filename
.fi
.SH COMPATIBILITY
Unlike the System V printing system, CUPS allows printer names to
--- a/man/lpadmin.man
+++ b/man/lpadmin.man
@@ -17,31 +17,31 @@
lpadmin \- configure cups printers and classes
.SH SYNOPSIS
.B lpadmin
-[ -E ] [-U
+[ \-E ] [\-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] -d
+] \-d
.I destination
.br
.B lpadmin
-[ -E ] [-U
+[ \-E ] [\-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] -p
+] \-p
.I destination
-[ -R
+[ \-R
.I name-default
]
.I option(s)
.br
.B lpadmin
-[ -E ] [-U
+[ \-E ] [\-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] -x
+] \-x
.I destination
.SH DESCRIPTION
\fIlpadmin\fR configures printer and class queues provided by
@@ -69,75 +69,75 @@
The following options are recognized when configuring a printer
queue:
.TP 5
--c class
+\-c class
.br
Adds the named \fIprinter\fR to \fIclass\fR. If \fIclass\fR does
not exist it is created automatically.
.TP 5
--i interface
+\-i interface
.br
Sets a System V style interface script for the printer. This
option cannot be specified with the \fI-P\fR option (PPD file)
and is intended for providing support for legacy printer drivers.
.TP 5
--m model
+\-m model
.br
Sets a standard System V interface script or PPD file for the printer from the
\fImodel\fR directory or using one of the driver interfaces. Use the \fI-m\fR
option with the \fIlpinfo(8)\fR command to get a list of supported models.
.TP 5
--o cupsIPPSupplies=true
+\-o cupsIPPSupplies=true
.TP 5
--o cupsIPPSupplies=false
+\-o cupsIPPSupplies=false
.br
Specifies whether IPP supply level values should be reported.
.TP 5
--o cupsSNMPSupplies=true
+\-o cupsSNMPSupplies=true
.TP 5
--o cupsSNMPSupplies=false
+\-o cupsSNMPSupplies=false
.br
Specifies whether SNMP supply level (RFC 3805) values should be reported.
.TP 5
--o job-k-limit=value
+\-o job-k-limit=value
.br
Sets the kilobyte limit for per-user quotas. The value is an
integer number of kilobytes; one kilobyte is 1024 bytes.
.TP 5
--o job-page-limit=value
+\-o job-page-limit=value
.br
Sets the page limit for per-user quotas. The value is the integer
number of pages that can be printed; double-sided pages are
counted as two pages.
.TP 5
--o job-quota-period=value
+\-o job-quota-period=value
.br
Sets the accounting period for per-user quotas. The value is an
integer number of seconds; 86,400 seconds are in one day.
.TP 5
--o job-sheets-default=banner
+\-o job-sheets-default=banner
.TP 5
--o job-sheets-default=banner,banner
+\-o job-sheets-default=banner,banner
.br
Sets the default banner page(s) to use for print jobs.
.TP 5
--o name=value
+\-o name=value
.br
Sets a PPD option for the printer. PPD options can be listed using the \fI-l\fR
option with the \fIlpoptions(1)\fR command.
.TP 5
--o name-default=value
+\-o name-default=value
.br
Sets a default server-side option for the destination. Any print-time
-option can be defaulted, e.g. "-o cpi-default=17" to set the default
+option can be defaulted, e.g. "\-o cpi-default=17" to set the default
"cpi" option value to 17.
.TP 5
--o port-monitor=name
+\-o port-monitor=name
.br
Sets the binary communications program to use when printing,
"none", "bcp", or "tbcp". The default program is "none". The
specified port monitor must be listed in the printer's PPD file.
.TP 5
--o printer-error-policy=name
+\-o printer-error-policy=name
.br
Sets the error policy to be used when the printer backend is
unable to send the job to the printer. The name must be one of
@@ -145,7 +145,7 @@
error policy is "stop-printer" for printers and "retry-current-job" for
classes.
.TP 5
--o printer-is-shared=true/false
+\-o printer-is-shared=true/false
.br
Sets the destination to shared/published or unshared/unpublished.
Shared/published destinations are publicly announced by the server
@@ -153,53 +153,53 @@
\fBcupsd.conf\fR, while unshared/unpublished destinations are not
announced. The default value is "true".
.TP 5
--o printer-op-policy=name
+\-o printer-op-policy=name
.br
Sets the IPP operation policy associated with the destination. The
name must be defined in the \fBcupsd.conf\fR in a Policy section.
The default operation policy is "default".
.TP 5
--R name-default
+\-R name-default
.br
Deletes the named option from \fIprinter\fR.
.TP 5
--r class
+\-r class
.br
Removes the named \fIprinter\fR from \fIclass\fR. If the
resulting class becomes empty it is removed.
.TP 5
--u allow:user,user,@group
+\-u allow:user,user,@group
.TP 5
--u deny:user,user,@group
+\-u deny:user,user,@group
.TP 5
--u allow:all
+\-u allow:all
.TP 5
--u deny:none
+\-u deny:none
.br
Sets user-level access control on a destination. Names starting with
"@" are interpreted as UNIX groups. The latter two forms turn
user-level access control off.
.TP 5
--v "device-uri"
+\-v "device-uri"
.br
Sets the \fIdevice-uri\fR attribute of the printer queue. Use the \fI-v\fR
option with the \fIlpinfo(8)\fR command to get a list of supported device URIs
and schemes.
.TP 5
--D "info"
+\-D "info"
.br
Provides a textual description of the destination.
.TP 5
--E
+\-E
.br
Enables the destination and accepts jobs; this is the same as running the
\fIcupsaccept(8)\fR and \fIcupsenable(8)\fR programs on the destination.
.TP 5
--L "location"
+\-L "location"
.br
Provides a textual location of the destination.
.TP 5
--P ppd-file
+\-P ppd-file
.br
Specifies a PostScript Printer Description file to use with the
printer. If specified, this option overrides the \fI-i\fR option
--- a/man/lpinfo.man
+++ b/man/lpinfo.man
@@ -17,36 +17,36 @@
lpinfo \- show available devices or drivers
.SH SYNOPSIS
.B lpinfo
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] [ -l ] [ --device-id
+] [ \-l ] [ \--device-id
.I device-id-string
-] [ --exclude-schemes
+] [ \--exclude-schemes
.I scheme-list
-] [ --include-schemes
+] [ \--include-schemes
.I scheme-list
-] [ --language
+] [ \--language
.I locale
-] [ --make-and-model
+] [ \--make-and-model
.I name
-] [ --product
+] [ \--product
.I name
-] -m
+] \-m
.br
.B lpinfo
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] [ -l ] [ --exclude-schemes
+] [ \-l ] [ \--exclude-schemes
.I scheme-list
-] [ --include-schemes
+] [ \--include-schemes
.I scheme-list
-] [ --timeout
+] [ \--timeout
.I seconds
-] -v
+] \-v
.SH DESCRIPTION
\fIlpinfo\fR lists the available devices or drivers known to the
CUPS server. The first form (\fI-m\fR) lists the available
@@ -55,51 +55,51 @@
.SH OPTIONS
\fIlpinfo\fR accepts the following options:
.TP 5
--E
+\-E
.br
Forces encryption when connecting to the server.
.TP 5
--U username
+\-U username
.br
Sets the username to use when connecting to the server.
.TP 5
--h server[:port]
+\-h server[:port]
.br
Selects an alternate server.
.TP 5
--l
+\-l
.br
Shows a "long" listing of devices or drivers.
.TP 5
---device-id device-id-string
+\--device-id device-id-string
.br
Specifies the IEEE-1284 device ID to match when listing drivers with the
\fI-m\fR option.
.TP 5
---exclude-schemes scheme-list
+\--exclude-schemes scheme-list
.br
Specifies a comma-separated list of device or PPD schemes that should be
excluded from the results. Static PPD files use the "file" scheme.
.TP 5
---include-schemes scheme-list
+\--include-schemes scheme-list
.br
Specifies a comma-separated list of device or PPD schemes that should be
included in the results. Static PPD files use the "file" scheme.
.TP 5
---language locale
+\--language locale
.br
Specifies the language to match when listing drivers with the \fI-m\fR option.
.TP 5
---make-and-model name
+\--make-and-model name
.br
Specifies the make and model to match when listing drivers with the \fI-m\fR
option.
.TP 5
---product name
+\--product name
.br
Specifies the product to match when listing drivers with the \fI-m\fR option.
.TP 5
---timeout seconds
+\--timeout seconds
.br
Specifies the timeout when listing devices with the \fI-v\fR option.
.SH COMPATIBILITY
--- a/man/lpmove.man
+++ b/man/lpmove.man
@@ -17,17 +17,17 @@
lpmove \- move a job or all jobs to a new destination
.SH SYNOPSIS
.B lpmove
-[ -E ] [ -h
+[ \-E ] [ \-h
.I server[:port]
-] [ -U
+] [ \-U
.I username
]
.I job destination
.br
.B lpmove
-[ -E ] [ -h
+[ \-E ] [ \-h
.I server[:port]
-] [ -U
+] [ \-U
.I username
]
.I source destination
@@ -44,15 +44,15 @@
.SH OPTIONS
The \fIlpmove\fR command supports the following options:
.TP 5
--E
+\-E
.br
Forces encryption when connecting to the server.
.TP 5
--U username
+\-U username
.br
Specifies an alternate username.
.TP 5
--h server[:port]
+\-h server[:port]
.br
Specifies an alternate server.
.SH SEE ALSO
--- a/man/lpoptions.man.in
+++ b/man/lpoptions.man.in
@@ -17,90 +17,90 @@
lpoptions \- display or set printer options and defaults
.SH SYNOPSIS
.B lpoptions
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] -d
+] \-d
.I destination[/instance]
-[ -o
+[ \-o
.I option[=value]
-] ... [ -o
+] ... [ \-o
.I option[=value]
]
.br
.B lpoptions
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] [ -p
+] [ \-p
.I destination[/instance]
-] -l
+] \-l
.br
.B lpoptions
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] [ -o
+] [ \-o
.I option[=value]
-] ... [ -o
+] ... [ \-o
.I option[=value]
-] [ -p
+] [ \-p
.I destination[/instance]
-] -r
+] \-r
.I option
.br
.B lpoptions
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] -x
+] \-x
.I destination[/instance]
.SH DESCRIPTION
\fIlpoptions\fR displays or sets printer options and defaults.
\fIlpoptions\fR shows the default printer options when run with no
arguments. Other options include:
.TP 5
--E
+\-E
.br
Enables encryption when communicating with the CUPS server.
.TP 5
--U username
+\-U username
.br
Uses an alternate username.
.TP 5
--d destination[/instance]
+\-d destination[/instance]
.br
Sets the user default printer to \fIdestination\fR. If \fIinstance\fR
is supplied then that particular instance is used. This option
overrides the system default printer for the current user.
.TP 5
--h server[:port]
+\-h server[:port]
.br
Uses an alternate server.
.TP 5
--l
+\-l
.br
Lists the printer specific options and their current settings.
.TP 5
--o option[=value]
+\-o option[=value]
.br
Specifies a new option for the named destination.
.TP 5
--p destination[/instance]
+\-p destination[/instance]
.br
Sets the destination and instance, if specified, for any options
that follow. If the named instance does not exist then it is
created.
.TP 5
--r option
+\-r option
.br
Removes the specified option for the named destination.
.TP 5
--x destination[/instance]
+\-x destination[/instance]
.br
Removes the options for the named destination and instance, if
specified. If the named instance does not exist then this does
@@ -119,10 +119,10 @@
.SH COMPATIBILITY
The \fIlpoptions\fR command is unique to CUPS.
.SH FILES
-~/.cups/lpoptions - user defaults and instances created by non-root
+~/.cups/lpoptions \- user defaults and instances created by non-root
users.
.br
-/etc/cups/lpoptions - system-wide defaults and instances
+/etc/cups/lpoptions \- system-wide defaults and instances
created by the root user.
.SH SEE ALSO
\fIcancel(1)\fR, \fIlp(1)\fR, \fIlpadmin(8)\fR, \fIlpr(1)\fR,
--- a/man/lppasswd.man
+++ b/man/lppasswd.man
@@ -22,13 +22,13 @@
]
.br
.B lppasswd
--a [ -g
+\-a [ \-g
.I groupname
]
.I username
.br
.B lppasswd
--x
+\-x
.I username
.SH DESCRIPTION
\fIlppasswd\fR adds, changes, or deletes passwords in the CUPS
@@ -41,7 +41,7 @@
.SH OPTIONS
\fIlppasswd\fR supports the following options:
.TP 5
--g groupname
+\-g groupname
.br
Specifies a group other than the default system group.
.SH SECURITY ISSUES
--- a/man/lpr.man
+++ b/man/lpr.man
@@ -17,17 +17,17 @@
lpr \- print files
.SH SYNOPSIS
.B lpr
-[ -E ] [ -H
+[ \-E ] [ \-H
.I server[:port]
-] [ -U
+] [ \-U
.I username
-] [ -P
+] [ \-P
.I destination[/instance]
-] [ -#
+] [ \-#
.I num-copies
-[ -h ] [ -l ] [ -m ] [ -o
+[ \-h ] [ \-l ] [ \-m ] [ \-o
.I option[=value]
-] [ -p] [ -q ] [ -r ] [ -C/J/T
+] [ \-p] [ \-q ] [ \-r ] [ \-C/J/T
.I title
] [
.I file(s)
@@ -45,65 +45,65 @@
.SH OPTIONS
The following options are recognized by \fIlpr\fR:
.TP 5
--E
+\-E
.br
Forces encryption when connecting to the server.
.TP 5
--H server[:port]
+\-H server[:port]
.br
Specifies an alternate server.
.TP 5
--C "name"
+\-C "name"
.TP 5
--J "name"
+\-J "name"
.TP 5
--T "name"
+\-T "name"
.br
Sets the job name.
.TP 5
--P destination[/instance]
+\-P destination[/instance]
.br
Prints files to the named printer.
.TP 5
--U username
+\-U username
.br
Specifies an alternate username.
.TP 5
--# \fIcopies\fR
+\-# \fIcopies\fR
.br
Sets the number of copies to print from 1 to 100.
.TP 5
--h
+\-h
.br
-Disables banner printing. This option is equivalent to "-o
+Disables banner printing. This option is equivalent to "\-o
job-sheets=none".
.TP 5
--l
+\-l
.br
Specifies that the print file is already formatted for the
destination and should be sent without filtering. This option is
-equivalent to "-o raw".
+equivalent to "\-o raw".
.TP 5
--m
+\-m
.br
Send an email on job completion.
.TP 5
--o option[=value]
+\-o option[=value]
.br
Sets a job option.
.TP 5
--p
+\-p
.br
Specifies that the print file should be formatted with a shaded
header with the date, time, job name, and page number. This
-option is equivalent to "-o prettyprint" and is only useful when
+option is equivalent to "\-o prettyprint" and is only useful when
printing text files.
.TP 5
--q
+\-q
.br
Hold job for printing.
.TP 5
--r
+\-r
.br
Specifies that the named print files should be deleted after
printing them.
--- a/man/lprm.man
+++ b/man/lprm.man
@@ -17,13 +17,13 @@
lprm \- cancel print jobs
.SH SYNOPSIS
.B lprm
-[ -E ] [ -U
+[ \-E ] [ \-U
.I username
-] [ -h
+] [ \-h
.I server[:port]
-] [ -P
+] [ \-P
.I destination[/instance]
-] [ - ] [
+] [ \- ] [
.I job ID(s)
]
.SH DESCRIPTION
@@ -35,19 +35,19 @@
.SH OPTIONS
The \fIlprm\fR command supports the following options:
.TP 5
--E
+\-E
.br
Forces encryption when connecting to the server.
.TP 5
--P destination[/instance]
+\-P destination[/instance]
.br
Specifies the destination printer or class.
.TP 5
--U username
+\-U username
.br
Specifies an alternate username.
.TP 5
--h server[:port]
+\-h server[:port]
.br
Specifies an alternate server.
.SH COMPATIBILITY
--- a/man/lpstat.man
+++ b/man/lpstat.man
@@ -17,23 +17,23 @@
lpstat \- print cups status information
.SH SYNOPSIS
.B lpstat
-[ -E ] [ -H ] [ -U
+[ \-E ] [ \-H ] [ \-U
.I username
-] [ -h
+] [ \-h
.I hostname[:port]
-] [ -l ] [ -W
+] [ \-l ] [ \-W
.I which-jobs
-] [ -a [
+] [ \-a [
.I destination(s)
-] ] [ -c [
+] ] [ \-c [
.I class(es)
-] ] [ -d ] [ -o [
+] ] [ \-d ] [ \-o [
.I destination(s)
-] ] [ -p [
+] ] [ \-p [
.I printer(s)
-] ] [ -r ] [ -R ] [ -s ] [ -t ] [ -u [
+] ] [ \-r ] [ \-R ] [ \-s ] [ \-t ] [ \-u [
.I user(s)
-] ] [ -v [
+] ] [ \-v [
.I printer(s)
] ]
.SH DESCRIPTION
@@ -43,23 +43,23 @@
.SH OPTIONS
The \fIlpstat\fR command supports the following options:
.TP 5
--E
+\-E
.br
Forces encryption when connecting to the server.
.TP 5
--H
+\-H
.br
Shows the server hostname and port.
.TP 5
--R
+\-R
.br
Shows the ranking of print jobs.
.TP 5
--U username
+\-U username
.br
Specifies an alternate username.
.TP 5
--W which-jobs
+\-W which-jobs
.br
Specifies which jobs to show, \fIcompleted\fR or
\fInot-completed\fR (the default). This option \fImust\fR appear
@@ -67,60 +67,60 @@
the default (not-completed) value will be used in the request to
the scheduler.
.TP 5
--a [printer(s)]
+\-a [printer(s)]
.br
Shows the accepting state of printer queues. If no printers are
specified then all printers are listed.
.TP 5
--c [class(es)]
+\-c [class(es)]
.br
Shows the printer classes and the printers that belong to them.
If no classes are specified then all classes are listed.
.TP 5
--d
+\-d
.br
Shows the current default destination.
.TP 5
--h server[:port]
+\-h server[:port]
.br
Specifies an alternate server.
.TP 5
--l
+\-l
.br
Shows a long listing of printers, classes, or jobs.
.TP 5
--o [destination(s)]
+\-o [destination(s)]
.br
Shows the jobs queue on the specified destinations. If no destinations are
specified all jobs are shown.
.TP 5
--p [printer(s)]
+\-p [printer(s)]
.br
Shows the printers and whether or not they are enabled for printing. If
no printers are specified then all printers are listed.
.TP 5
--r
+\-r
.br
Shows whether the CUPS server is running.
.TP 5
--s
+\-s
.br
Shows a status summary, including the default destination, a
list of classes and their member printers, and a list of printers and
-their associated devices. This is equivalent to using the "-d", "-c",
-and "-v" options.
+their associated devices. This is equivalent to using the "\-d", "\-c",
+and "\-v" options.
.TP 5
--t
+\-t
.br
-Shows all status information. This is equivalent to using the "-r",
-"-d", "-c", "-v", "-a", "-p", and "-o" options.
+Shows all status information. This is equivalent to using the "\-r",
+"\-d", "\-c", "\-v", "\-a", "\-p", and "\-o" options.
.TP 5
--u [user(s)]
+\-u [user(s)]
.br
Shows a list of print jobs queued by the specified users. If no users
are specified, lists the jobs queued by the current user.
.TP 5
--v [printer(s)]
+\-v [printer(s)]
.br
Shows the printers and what device they are attached to. If no printers
are specified then all printers are listed.
@@ -129,9 +129,9 @@
contain any printable character except SPACE, TAB, "/", and "#".
Also, printer and class names are \fInot\fR case-sensitive.
.LP
-The "-h", "-E", "-U", and "-W" options are unique to CUPS.
+The "\-h", "\-E", "\-U", and "\-W" options are unique to CUPS.
.LP
-The Solaris "-f", "-P", and "-S" options are silently ignored.
+The Solaris "\-f", "\-P", and "\-S" options are silently ignored.
.SH SEE ALSO
\fIcancel(1)\fR, \fIlp(1)\fR,
.br
--- a/man/mime.types.man
+++ b/man/mime.types.man
@@ -40,7 +40,7 @@
logical AND and "," or whitespace for a logical OR, and negated using
"!".
.SH RULES
-Rules take two forms - a filename extension by itself and functions with test
+Rules take two forms \- a filename extension by itself and functions with test
values inside parenthesis. The following functions are available:
.TP 5
match("pattern")
--- a/man/ppdc.man
+++ b/man/ppdc.man
@@ -17,17 +17,17 @@
ppdc \- cups ppd compiler
.SH SYNOPSIS
.B ppdc
-[ -D
+[ \-D
.I name[=value]
-] [ -I
+] [ \-I
.I include-directory
-] [ -c
+] [ \-c
.I message-catalog
-] [ -d
+] [ \-d
.I output-directory
-] [ -l
+] [ \-l
.I language(s)
-] [-m] [-t] [ -v ] [ -z ] [ --cr ] [ --crlf ] [ --lf ]
+] [\-m] [\-t] [ \-v ] [ \-z ] [ \-\-cr ] [ \-\-crlf ] [ \-\-lf ]
.I source-file
.SH DESCRIPTION
\fIppdc\fR compiles PPDC source files into one or more PPD
@@ -68,7 +68,7 @@
The default is to generate uncompressed PPD files.
.PP
The \fI--cr\fR, \fI--crlf\fR, and \fI--lf\fR options specify the
-line ending to use - carriage return, carriage return and line feed,
+line ending to use \- carriage return, carriage return and line feed,
or line feed. The default is to use the line feed character alone.
.SH SEE ALSO
ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1), ppdcfile(5)
--- a/man/ppdhtml.man
+++ b/man/ppdhtml.man
@@ -17,9 +17,9 @@
ppdhtml \- cups html summary generator
.SH SYNOPSIS
.B ppdhtml
-[ -D
+[ \-D
.I name[=value]
-] [ -I
+] [ \-I
.I include-directory
]
.I source-file
--- a/man/ppdpo.man
+++ b/man/ppdpo.man
@@ -17,11 +17,11 @@
ppdpo \- ppd message catalog generator
.SH SYNOPSIS
.B ppdpo
-[ -D
+[ \-D
.I name[=value]
-] [ -I
+] [ \-I
.I include-directory
-] [ -o
+] [ \-o
.I output-file
]
.I source-file
--- a/man/ippfind.man
+++ b/man/ippfind.man
@@ -13,7 +13,7 @@
.\"
.TH ippfind 1 "CUPS" "6 June 2013" "Apple Inc."
.SH NAME
-ippfind - find internet printing protocol printers
+ippfind \- find internet printing protocol printers
.SH SYNOPSIS
.B ippfind
[
@@ -28,38 +28,38 @@
.I expression ...
]
.B ippfind
---help
+\--help
.B ippfind
---version
+\--version
.SH OPTIONS
.TP 5
---help
+\--help
Show program help
.TP 5
---version
+\--version
Show program version
.TP 5
--4
+\-4
Use IPv4 when listing
.TP 5
--6
+\-6
Use IPv6 when listing
.TP 5
--T seconds
+\-T seconds
Specify find timeout in seconds. If 1 or less, \fIippfind\fR stops as soon as it thinks it has found everything. The default is 1 second.
.TP 5
--V version
+\-V version
Specifies the IPP version when listing. Supported values are 1.1, 2.0, 2.1, and 2.2.
.SH DESCRIPTION
\fIippfind\fR finds services registered with a DNS server or available through local devices. Its primary purpose is to find IPP printers and show their URIs, show their current status, or run commands. For example, to show the status of all registered IPP printers on your network, run:
.nf
- ippfind --ls
+ ippfind \--ls
.fi
Similarly, to send a PostScript test page to every PostScript printer, run:
.nf
- ippfind --txt-pdl application/postscript --exec ipptool \\
- -f onepage-letter.ps '{}' print-job.test \\;
+ ippfind \--txt-pdl application/postscript \--exec ipptool \\
+ \-f onepage-letter.ps '{}' print-job.test \\;
.fi
.SH REGISTRATION TYPES
@@ -81,83 +81,83 @@
Line Printer Daemon (LPD, RFC 1179)
.SH EXPRESSIONS
-\fIippfind\fR supports expressions much like the \fIfind(1)\fR utility. However, unlike \fIfind\fR, \fIippfind\fR uses POSIX regular expressions instead of shell filename matching patterns. If --exec, -l, --ls, -p, --print, --print-name, -q, --quiet, -s, or -x is not specified, \fIippfind\fR adds --print to print the service URI of anything it finds. The following expressions are supported:
+\fIippfind\fR supports expressions much like the \fIfind(1)\fR utility. However, unlike \fIfind\fR, \fIippfind\fR uses POSIX regular expressions instead of shell filename matching patterns. If \--exec, \-l, \--ls, \-p, \--print, \--print-name, \-q, \--quiet, \-s, or \-x is not specified, \fIippfind\fR adds \--print to print the service URI of anything it finds. The following expressions are supported:
.TP 5
--d regex
+\-d regex
.TP 5
---domain regex
+\--domain regex
True if the domain matches the given regular expression.
.TP 5
---false
+\--false
Always false.
.TP 5
--h regex
+\-h regex
.TP 5
---host regex
+\--host regex
True is the hostname matches the given regular expression.
.TP 5
--l
+\-l
.TP 5
---ls
-Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional \fIfind\fR "-ls" output for HTTP URLs. The result is true if the URI is accessible, false otherwise.
+\--ls
+Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional \fIfind\fR "\-ls" output for HTTP URLs. The result is true if the URI is accessible, false otherwise.
.TP 5
---local
+\--local
True if the service is local to this computer.
.TP 5
--n regex
+\-n regex
.TP 5
---name regex
+\--name regex
True if the service instance name matches the given regular expression.
.TP 5
---path regex
+\--path regex
True if the URI resource path matches the given regular expression.
.TP 5
--P number[-number]
+\-P number[\-number]
.TP 5
---port number[-number]
+\--port number[\-number]
True if the port matches the given number or range.
.TP 5
--p
+\-p
.TP 5
---print
+\--print
Prints the URI if the result of previous expressions is true. The result is always true.
.TP 5
--q
+\-q
.TP 5
---quiet
-Quiet mode - just returns the exit codes below.
+\--quiet
+Quiet mode \- just returns the exit codes below.
.TP 5
--r
+\-r
.TP 5
---remote
+\--remote
True if the service is not local to this computer.
.TP 5
--s
+\-s
.TP 5
---print-name
+\--print-name
Prints the service instance name if the result of previous expressions is true. The result is always true.
.TP 5
---true
+\--true
Always true.
.TP 5
--t key
+\-t key
.TP 5
---txt key
+\--txt key
True if the TXT record contains the named key.
.TP 5
---txt-\fIkey\fR regex
+\--txt-\fIkey\fR regex
True if the TXT record contains the named key and matches the given regular
expression.
.TP 5
--u regex
+\-u regex
.TP 5
---uri regex
+\--uri regex
True if the URI matches the given regular expression.
.TP 5
--x utility [argument ...] ;
+\-x utility [argument ...] ;
.TP 5
---exec utility [argument ...] ;
-Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
+\--exec utility [argument ...] ;
+Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value \- see SUBSTITUTIONS below.
.PP
Expressions may also contain modifiers:
.TP 5
@@ -166,19 +166,19 @@
.TP 5
! expression
.TP 5
---not expression
+\--not expression
Unary NOT of the expression.
.TP 5
expression expression
.TP 5
-expression --and expression
+expression \--and expression
Logical AND of expressions.
.TP 5
-expression --or expression
+expression \--or expression
Logical OR of expressions.
.SH SUBSTITUTIONS
-The substitutions for "{foo}" in -e and --exec are:
+The substitutions for "{foo}" in \-e and \--exec are:
.TP 5
{}
URI
debian/patches/airprint-support.patch 0000644 0000000 0000000 00000004660 12321556653 015216 0 ustar Description: Patch to support Apple AirPrint (printing from iPhone, iPad, iPod Touch to a CUPS server)
Author: Till Kamppeter
Bug-Ubuntu: https://bugs.launchpad.net/bugs/711779
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1054495
Bug-Debian: http://bugs.debian.org/700961
Bug: https://cups.org/str.php?L4341
Last-Update: 2013-02-20
--- a/scheduler/dirsvc.c
+++ b/scheduler/dirsvc.c
@@ -414,6 +414,12 @@
keyvalue[count ][0] = "pdl";
keyvalue[count++][1] = p->pdl ? p->pdl : "application/postscript";
+ /* iOS 6 does not accept this printer as AirPrint printer if there is
+ no URF txt record or "URF=none", "DM3" is the minimum needed found
+ by try and error */
+ keyvalue[count ][0] = "URF";
+ keyvalue[count++][1] = "DM3";
+
if (get_auth_info_required(p, air_str, sizeof(air_str)))
{
keyvalue[count ][0] = "air";
--- a/conf/mime.convs.in
+++ b/conf/mime.convs.in
@@ -48,6 +48,9 @@
# PWG Raster filter for IPP Everywhere...
application/vnd.cups-raster image/pwg-raster 100 rastertopwg
+# Needed for printing from iOS (AirPrint) clients
+image/urf application/pdf 100 -
+
########################################################################
#
# Raw filter...
--- a/conf/mime.types
+++ b/conf/mime.types
@@ -110,6 +110,9 @@
image/x-bitmap bmp string(0,BM) + !printable(2,14)
image/x-icon ico
+# Needed for printing from iOS (AirPrint) clients
+image/urf urf string(0,UNIRAST<00>)
+
########################################################################
#
# Text files...
--- a/scheduler/printers.c
+++ b/scheduler/printers.c
@@ -3538,7 +3538,9 @@
}
else if (!_cups_strcasecmp(type->super, "image"))
{
- if (!_cups_strcasecmp(type->type, "jpeg"))
+ if (!_cups_strcasecmp(type->type, "urf"))
+ strlcat(pdl, "image/urf,", sizeof(pdl));
+ else if (!_cups_strcasecmp(type->type, "jpeg"))
strlcat(pdl, "image/jpeg,", sizeof(pdl));
else if (!_cups_strcasecmp(type->type, "png"))
strlcat(pdl, "image/png,", sizeof(pdl));
--- a/scheduler/conf.c
+++ b/scheduler/conf.c
@@ -723,7 +723,7 @@
DefaultShared = CUPS_DEFAULT_DEFAULT_SHARED;
#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
- cupsdSetString(&DNSSDSubTypes, "_cups,_print");
+ cupsdSetString(&DNSSDSubTypes, "_cups,_print,_universal");
#endif /* HAVE_DNSSD || HAVE_AVAHI */
cupsdSetString(&LPDConfigFile, CUPS_DEFAULT_LPD_CONFIG_FILE);
debian/patches/cupsd-set-default-for-SyncOnClose-to-Yes.patch 0000644 0000000 0000000 00000003764 12303151062 021331 0 ustar Description: Set the default for SyncOnClose to Yes
Author: Tim Waugh
Last-Update: 2013-10-31
--- a/conf/cups-files.conf.in
+++ b/conf/cups-files.conf.in
@@ -9,7 +9,7 @@
#FatalErrors @CUPS_FATAL_ERRORS@
# Do we call fsync() after writing configuration or status files?
-#SyncOnClose No
+#SyncOnClose Yes
# Default user and group for filters/backends/helper programs; this cannot be
# any user or group that resolves to ID 0 for security reasons...
--- a/doc/help/man-cups-files.conf.html
+++ b/doc/help/man-cups-files.conf.html
@@ -146,7 +146,7 @@
SyncOnClose No
Specifies whether the scheduler calls fsync(2) after writing configuration
-or state files. The default is No.
+or state files. The default is Yes.
SystemGroup group-name [group-name ...]
--- a/doc/help/ref-cups-files-conf.html.in
+++ b/doc/help/ref-cups-files-conf.html.in
@@ -442,8 +442,8 @@
The SyncOnClose directive determines whether the scheduler
flushes changes to configuration and state files to disk. The default is
-No which relies on the operating system to schedule a suitable
-time to write changes to disk.
+Yes. The option No relies on the operating
+system to schedule a suitable time to write changes to disk.
Note:
--- a/man/cups-files.conf.man.in
+++ b/man/cups-files.conf.man.in
@@ -126,7 +126,7 @@
.TP 5
SyncOnClose No
Specifies whether the scheduler calls \fIfsync(2)\fR after writing configuration
-or state files. The default is No.
+or state files. The default is Yes.
.TP 5
SystemGroup group-name [group-name ...]
.br
--- a/scheduler/conf.c
+++ b/scheduler/conf.c
@@ -715,7 +715,7 @@
ReloadTimeout = DEFAULT_KEEPALIVE;
RootCertDuration = 300;
StrictConformance = FALSE;
- SyncOnClose = FALSE;
+ SyncOnClose = TRUE;
Timeout = DEFAULT_TIMEOUT;
WebInterface = CUPS_DEFAULT_WEBIF;
debian/cups-daemon.lintian-overrides 0000644 0000000 0000000 00000000105 12277464531 014770 0 ustar cups-daemon: init.d-script-possible-missing-stop etc/init.d/cups 0 6
debian/presubj 0000644 0000000 0000000 00000000332 12277464531 010574 0 ustar Please note that CUPS is never affected by Poppler or XPDF bugs, because
the Debian package relies upon external tools to generate PostScript.
Therefore, avoid filing bugs related to PDF security issues against CUPS.
debian/libcups2.install 0000644 0000000 0000000 00000000027 12277464531 012313 0 ustar usr/lib/*/libcups.so.*
debian/libcupsmime1.symbols 0000644 0000000 0000000 00000001163 12277464531 013206 0 ustar libcupsmime.so.1 libcupsmime1 #MINVER#
_mimeError@Base 1.5.0
mimeAddFilter@Base 1.4.0
mimeAddType@Base 1.4.0
mimeAddTypeRule@Base 1.4.0
mimeDelete@Base 1.4.0
mimeDeleteFilter@Base 1.4.0
mimeDeleteType@Base 1.4.0
mimeFileType@Base 1.4.0
mimeFilter2@Base 1.5.0
mimeFilter@Base 1.4.0
mimeFilterLookup@Base 1.4.0
mimeFirstFilter@Base 1.4.0
mimeFirstType@Base 1.4.0
mimeLoad@Base 1.4.0
mimeLoadFilters@Base 1.4.0
mimeLoadTypes@Base 1.4.0
mimeNew@Base 1.5.0
mimeNextFilter@Base 1.4.0
mimeNextType@Base 1.4.0
mimeNumFilters@Base 1.4.0
mimeNumTypes@Base 1.4.0
mimeSetErrorCallback@Base 1.5.0
mimeType@Base 1.4.0
debian/cups-bsd.templates 0000644 0000000 0000000 00000001042 12277464531 012636 0 ustar # These templates have been reviewed by debian-l10n-english
# Please do not modify them without asking for a review
Template: cups-bsd/setuplpd
Type: boolean
Default: false
_Description: Do you want to set up the BSD lpd compatibility server?
The CUPS package contains a server that can accept BSD-style print
jobs and submit them to CUPS. It should only be set up if other
computers are likely to submit jobs over the network via the "BSD" or
"LPR" services, and these computers cannot be converted to use the
IPP protocol that CUPS uses.
debian/README.source 0000644 0000000 0000000 00000000630 12277464531 011357 0 ustar cups packaging for Debian
-------------------------
cups is maintained with git-buildpackage on git.debian.org (see Vcs-Git: control
field). git-buildpackage is documented at /usr/share/doc/git-buildpackage/ (in
particular the comprehensive manual-html/).
It uses a standard 3.0 (quilt) patch system.
The really short path to get a buildable source tree is:
debcheckout cups
cd cups
quilt push -af
debian/cups-bsd.config 0000644 0000000 0000000 00000000166 12277464531 012113 0 ustar #!/bin/sh
set -e
# Debconf library
. /usr/share/debconf/confmodule
db_input medium cups-bsd/setuplpd || true
db_go
debian/libcupsmime1-dev.install 0000644 0000000 0000000 00000000111 12277464531 013730 0 ustar usr/lib/*/libcupsmime.so
usr/lib/*/libcupsmime.a
usr/include/cups/mime.h
debian/local/ 0000755 0000000 0000000 00000000000 13313233607 010261 5 ustar debian/local/cups-daemon.cups.upstart 0000644 0000000 0000000 00000003427 12317350163 015077 0 ustar # cups - CUPS Printing spooler and server
description "CUPS printing spooler/server"
author "Michael Sweet "
start on (filesystem
and (started dbus or runlevel [2345]))
stop on runlevel [016]
respawn
respawn limit 3 12
pre-start script
[ -x /usr/sbin/cupsd ]
# load modules for parallel port support
if [ -r /etc/default/cups ]; then
. /etc/default/cups
fi
if [ "$LOAD_LP_MODULE" = "yes" -a -f /usr/lib/cups/backend/parallel \
-a -f /proc/modules -a -x /sbin/modprobe ]; then
modprobe -q -b lp || true
modprobe -q -b ppdev || true
modprobe -q -b parport_pc || true
fi
mkdir -p /var/run/cups/certs
if [ -x /lib/init/apparmor-profile-load ]; then
/lib/init/apparmor-profile-load usr.sbin.cupsd
fi
end script
exec /usr/sbin/cupsd -f
post-start script
# wait until daemon is ready
timeout=60
while [ ! -e /var/run/cups/cups.sock ]; do
sleep 0.5
timeout=$((timeout-1))
if [ "$timeout" -eq 0 ]; then
echo "cupsd failed to create /var/run/cups/cups.sock, skipping automatic printer configuration" >&2
exit 0
fi
done
# coldplug USB printers
if ! /lib/udev/udev-configure-printer enumerate 2>/dev/null; then
if type udevadm > /dev/null 2>&1 && [ -x /lib/udev/udev-configure-printer ]; then
for printer in `udevadm trigger --verbose --dry-run --subsystem-match=usb \
--attr-match=bInterfaceClass=07 --attr-match=bInterfaceSubClass=01 2>/dev/null || true; \
udevadm trigger --verbose --dry-run --subsystem-match=usb \
--sysname-match='lp[0-9]*' 2>/dev/null || true`; do
/lib/udev/udev-configure-printer add "${printer#/sys}"
done
fi
fi
end script
debian/local/apparmor-profile 0000644 0000000 0000000 00000010654 13313233607 013471 0 ustar # vim:syntax=apparmor
# Last Modified: Thu Aug 2 12:54:46 2007
# Author: Martin Pitt
#include
/usr/sbin/cupsd {
#include
#include
#include
#include
#include
#include
#include
#include
capability chown,
capability fowner,
capability fsetid,
capability kill,
capability net_bind_service,
capability setgid,
capability setuid,
capability audit_write,
deny capability block_suspend,
# nasty, but we limit file access pretty tightly, and cups chowns a
# lot of files to 'lp' which it cannot read/write afterwards any
# more
capability dac_override,
# the bluetooth backend needs this
network bluetooth,
# the dnssd backend uses those
network x25 seqpacket,
network ax25 dgram,
network netrom seqpacket,
network rose dgram,
network ipx dgram,
network appletalk dgram,
network econet dgram,
network ash dgram,
/bin/bash ixr,
/bin/dash ixr,
/bin/hostname ixr,
/dev/lp* rw,
deny /dev/tty rw, # silence noise
/dev/ttyS* rw,
/dev/ttyUSB* rw,
/dev/usb/lp* rw,
/dev/bus/usb/ r,
/dev/bus/usb/** rw,
/dev/parport* rw,
/etc/cups/ rw,
/etc/cups/** rw,
/etc/cups/interfaces/* ixrw,
/etc/foomatic/* r,
/etc/gai.conf r,
/etc/papersize r,
/etc/pnm2ppa.conf r,
/etc/printcap rwl,
/etc/ssl/** r,
@{PROC}/net/ r,
@{PROC}/net/* r,
@{PROC}/sys/dev/parport/** r,
@{PROC}/*/net/ r,
@{PROC}/*/net/** r,
@{PROC}/*/auxv r,
@{PROC}/sys/crypto/** r,
/sys/** r,
/usr/bin/* ixr,
/usr/sbin/* ixr,
/bin/* ixr,
/sbin/* ixr,
/usr/lib/** rm,
# backends which come with CUPS can be confined
/usr/lib/cups/backend/bluetooth ixr,
/usr/lib/cups/backend/dnssd ixr,
/usr/lib/cups/backend/http ixr,
/usr/lib/cups/backend/ipp ixr,
/usr/lib/cups/backend/lpd ixr,
/usr/lib/cups/backend/mdns ixr,
/usr/lib/cups/backend/parallel ixr,
/usr/lib/cups/backend/serial ixr,
/usr/lib/cups/backend/snmp ixr,
/usr/lib/cups/backend/socket ixr,
/usr/lib/cups/backend/usb ixr,
# we treat cups-pdf specially, since it needs to write into /home
# and thus needs extra paranoia
/usr/lib/cups/backend/cups-pdf Px,
# third party backends get no restrictions as they often need high
# privileges and this is beyond our control
/usr/lib/cups/backend/* Ux,
/usr/lib/cups/cgi-bin/* ixr,
/usr/lib/cups/daemon/* ixr,
/usr/lib/cups/monitor/* ixr,
/usr/lib/cups/notifier/* ixr,
# filters and drivers (PPD generators) are always run as non-root,
# and there are a lot of third-party drivers which we cannot predict
/usr/lib/cups/filter/** Uxr,
/usr/lib/cups/driver/* Uxr,
/usr/local/** rm,
/usr/local/lib/cups/** rix,
/usr/share/** r,
/{,var/}run/** rm,
/{,var/}run/avahi-daemon/socket rw,
deny /{,var/}run/samba/ rw,
/{,var/}run/samba/** rw,
/{,var/}run/cups/ rw,
/{,var/}run/cups/** rw,
/var/cache/cups/ rw,
/var/cache/cups/** rwk,
/var/log/cups/ rw,
/var/log/cups/* rw,
/var/spool/cups/ rw,
/var/spool/cups/** rw,
# third-party printer drivers; no known structure here
/opt/** rix,
# FIXME: no policy ATM for hplip and Brother drivers
/usr/bin/hpijs Ux,
/usr/Brother/** Ux,
# Kerberos authentication
/etc/krb5.conf r,
deny /etc/krb5.conf w,
/etc/krb5.keytab rk,
/etc/cups/krb5.keytab rwk,
/tmp/krb5cc* k,
# likewise authentication
/etc/likewise r,
/etc/likewise/* r,
# silence noise
deny /etc/udev/udev.conf r,
# Site-specific additions and overrides. See local/README for details.
#include
}
# separate profile since this needs to write into /home
/usr/lib/cups/backend/cups-pdf {
#include
#include
#include
#include
capability chown,
capability fowner,
capability fsetid,
capability setgid,
capability setuid,
# unfortunate, but required for when $HOME is 700
capability dac_override,
capability dac_read_search,
@{PROC}/*/auxv r,
/bin/dash ixr,
/bin/bash ixr,
/bin/cp ixr,
/etc/papersize r,
/etc/cups/cups-pdf.conf r,
@{HOME}/PDF/ rw,
@{HOME}/PDF/* rw,
/usr/bin/gs ixr,
/usr/lib/cups/backend/cups-pdf mr,
/usr/lib/ghostscript/** mr,
/usr/share/** r,
/var/log/cups/cups-pdf_log w,
/var/spool/cups/** r,
/var/spool/cups-pdf/** rw,
}
debian/local/cups.ufw.profile 0000644 0000000 0000000 00000000230 12277464531 013422 0 ustar [CUPS]
title=Common UNIX Printing System server
description=CUPS is a printing system with support for IPP, samba, lpd, and other protocols.
ports=631
debian/local/apport-hook.py 0000644 0000000 0000000 00000000510 12277464531 013104 0 ustar '''apport package hook for cups
(c) 2009 Canonical Ltd.
Author: Brian Murray
'''
from apport.hookutils import *
def add_info(report):
attach_hardware(report)
attach_printing(report)
attach_mac_events(report, ['/usr/sbin/cupsd',
'/usr/lib/cups/backend/cups-pdf'])
debian/cups-server-common.doc-base 0000644 0000000 0000000 00000000535 12277464531 014347 0 ustar Document: cups
Title: CUPS Documentation
Author: Easy Software Products
Abstract: This documentation covers the use and administration of a CUPS
printing system, and the programming interface for the libcups API.
Section: System/Hardware
Format: HTML
Index: /usr/share/doc/cups/online-docs/index.html
Files: /usr/share/doc/cups/online-docs/*.html
debian/libcupsmime1.install 0000644 0000000 0000000 00000000033 12277464531 013157 0 ustar usr/lib/*/libcupsmime.so.*
debian/compat 0000644 0000000 0000000 00000000002 12277464531 010377 0 ustar 9
debian/manpage-po4a/ 0000755 0000000 0000000 00000000000 12277464531 011452 5 ustar debian/manpage-po4a/cups.cfg 0000644 0000000 0000000 00000004014 12277464531 013104 0 ustar [po_directory] ../debian/manpage-po4a/po/
[type: man] cupsaccept.man $lang:$lang/cupsaccept.man
[type: man] backend.man $lang:$lang/backend.man
[type: man] cancel.man $lang:$lang/cancel.man
[type: man] classes.conf.man $lang:$lang/classes.conf.man
[type: man] client.conf.man.in $lang:$lang/client.conf.man.in
[type: man] cupsaddsmb.man.in $lang:$lang/cupsaddsmb.man.in
[type: man] cups-config.man $lang:$lang/cups-config.man
[type: man] cupsctl.man $lang:$lang/cupsctl.man
[type: man] cupsd.conf.man.in $lang:$lang/cupsd.conf.man.in
[type: man] cups-files.conf.man.in $lang:$lang/cups-files.conf.man.in
[type: man] cups-deviced.man.in $lang:$lang/cups-deviced.man.in
[type: man] cupsd.man.in $lang:$lang/cupsd.man.in
[type: man] cups-driverd.man.in $lang:$lang/cups-driverd.man.in
[type: man] cupsenable.man $lang:$lang/cupsenable.man
[type: man] cupsfilter.man $lang:$lang/cupsfilter.man
[type: man] cups-lpd.man.in $lang:$lang/cups-lpd.man.in
[type: man] cups-snmp.conf.man $lang:$lang/cups-snmp.conf.man
[type: man] cupstestdsc.man $lang:$lang/cupstestdsc.man
[type: man] cupstestppd.man $lang:$lang/cupstestppd.man
[type: man] filter.man $lang:$lang/filter.man
[type: man] ipptool.man $lang:$lang/ipptool.man
[type: man] ipptoolfile.man $lang:$lang/ipptoolfile.man
[type: man] lpadmin.man $lang:$lang/lpadmin.man
[type: man] lpc.man $lang:$lang/lpc.man
[type: man] lpinfo.man $lang:$lang/lpinfo.man
[type: man] lp.man $lang:$lang/lp.man
[type: man] lpmove.man $lang:$lang/lpmove.man
[type: man] lpoptions.man.in $lang:$lang/lpoptions.man.in
[type: man] lppasswd.man $lang:$lang/lppasswd.man
[type: man] lpq.man $lang:$lang/lpq.man
[type: man] lpr.man $lang:$lang/lpr.man
[type: man] lprm.man $lang:$lang/lprm.man
[type: man] lpstat.man $lang:$lang/lpstat.man
[type: man] mailto.conf.man $lang:$lang/mailto.conf.man
[type: man] mime.convs.man $lang:$lang/mime.convs.man
[type: man] mime.types.man $lang:$lang/mime.types.man
[type: man] printers.conf.man $lang:$lang/printers.conf.man
[type: man] subscriptions.conf.man $lang:$lang/subscriptions.conf.man
debian/manpage-po4a/README 0000644 0000000 0000000 00000000776 12277464531 012344 0 ustar # README for CUPS manpages translation
As the manpage translations patch using po4a has not been accepted by
upstream, they have been moved out of the patch to the
debian/manpage-po4a/ directory. This should ease shared maintenance and
enhance the visibility of these translations.
## How to update .pot and .po files
1. Apply the patches upto manpage-translations.patch:
$ quilt push manpage-translations.patch
2. Launch po4a from the correct directory:
$ cd man; po4a ../debian/manpage-po4a/cups.cfg
debian/manpage-po4a/po/ 0000755 0000000 0000000 00000000000 12317350163 012056 5 ustar debian/manpage-po4a/po/cups.pot 0000644 0000000 0000000 00000644476 12317350163 013601 0 ustar # SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-01-04 13:31+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: TH
#: cupsaccept.man:15
#, no-wrap
msgid "cupsaccept"
msgstr ""
#. type: TH
#: cupsaccept.man:15 backend.man:15 cancel.man:15 classes.conf.man:15 client.conf.man.in:15 cupsaddsmb.man.in:15 cups-config.man:15 cupsctl.man:15 cupsd.conf.man.in:15 cups-files.conf.man.in:15 cups-deviced.man.in:15 cupsd.man.in:15 cups-driverd.man.in:15 cupsenable.man:15 cupsfilter.man:14 cups-lpd.man.in:15 cups-snmp.conf.man:15 cupstestdsc.man:15 cupstestppd.man:15 filter.man:15 ipptool.man:14 ipptoolfile.man:14 lpadmin.man:15 lpc.man:15 lpinfo.man:15 lp.man:15 lpmove.man:15 lpoptions.man.in:15 lppasswd.man:15 lpq.man:15 lpr.man:15 lprm.man:15 lpstat.man:15 mailto.conf.man:15 mime.convs.man:15 mime.types.man:15 printers.conf.man:15 subscriptions.conf.man:15
#, no-wrap
msgid "CUPS"
msgstr ""
#. type: TH
#: cupsaccept.man:15 lpmove.man:15
#, no-wrap
msgid "12 February 2006"
msgstr ""
#. type: TH
#: cupsaccept.man:15 backend.man:15 cancel.man:15 classes.conf.man:15 client.conf.man.in:15 cupsaddsmb.man.in:15 cups-config.man:15 cupsctl.man:15 cupsd.conf.man.in:15 cups-files.conf.man.in:15 cups-deviced.man.in:15 cupsd.man.in:15 cups-driverd.man.in:15 cupsenable.man:15 cupsfilter.man:14 cups-lpd.man.in:15 cups-snmp.conf.man:15 cupstestdsc.man:15 cupstestppd.man:15 filter.man:15 ipptool.man:14 ipptoolfile.man:14 lpadmin.man:15 lpc.man:15 lpinfo.man:15 lp.man:15 lpmove.man:15 lpoptions.man.in:15 lppasswd.man:15 lpq.man:15 lpr.man:15 lprm.man:15 lpstat.man:15 mailto.conf.man:15 mime.convs.man:15 mime.types.man:15 printers.conf.man:15 subscriptions.conf.man:15
#, no-wrap
msgid "Apple Inc."
msgstr ""
#. type: SH
#: cupsaccept.man:16 backend.man:17 cancel.man:16 classes.conf.man:16 client.conf.man.in:16 cupsaddsmb.man.in:16 cups-config.man:16 cupsctl.man:16 cupsd.conf.man.in:16 cups-files.conf.man.in:16 cups-deviced.man.in:16 cupsd.man.in:16 cups-driverd.man.in:16 cupsenable.man:16 cupsfilter.man:15 cups-lpd.man.in:16 cups-snmp.conf.man:17 cupstestdsc.man:16 cupstestppd.man:16 filter.man:16 ipptool.man:15 ipptoolfile.man:15 lpadmin.man:16 lpc.man:16 lpinfo.man:16 lp.man:16 lpmove.man:16 lpoptions.man.in:16 lppasswd.man:16 lpq.man:16 lpr.man:16 lprm.man:16 lpstat.man:16 mailto.conf.man:16 mime.convs.man:16 mime.types.man:16 printers.conf.man:16 subscriptions.conf.man:16
#, no-wrap
msgid "NAME"
msgstr ""
#. type: Plain text
#: cupsaccept.man:18
msgid "cupsaccept/cupsreject - accept/reject jobs sent to a destination"
msgstr ""
#. type: SH
#: cupsaccept.man:18 backend.man:19 cancel.man:18 cupsaddsmb.man.in:19 cups-config.man:18 cupsctl.man:18 cups-deviced.man.in:18 cupsd.man.in:18 cups-driverd.man.in:18 cupsenable.man:18 cupsfilter.man:17 cups-lpd.man.in:18 cupstestdsc.man:18 cupstestppd.man:18 filter.man:18 ipptool.man:17 lpadmin.man:18 lpc.man:18 lpinfo.man:18 lp.man:18 lpmove.man:18 lpoptions.man.in:18 lppasswd.man:18 lpq.man:18 lpr.man:18 lprm.man:18 lpstat.man:18
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
#. type: Plain text
#: cupsaccept.man:25
msgid ""
"B [ -E ] [ -U I ] [ -h I ] "
"destination(s)"
msgstr ""
#. type: Plain text
#: cupsaccept.man:34
msgid ""
"B [ -E ] [ -U I ] [ -h I ] [ -r "
"I ] destination(s)"
msgstr ""
#. type: SH
#: cupsaccept.man:34 backend.man:26 cancel.man:33 classes.conf.man:18 client.conf.man.in:18 cupsaddsmb.man.in:38 cups-config.man:53 cupsctl.man:29 cupsd.conf.man.in:18 cups-files.conf.man.in:18 cups-deviced.man.in:21 cupsd.man.in:23 cups-driverd.man.in:26 cupsenable.man:34 cupsfilter.man:41 cups-lpd.man.in:25 cups-snmp.conf.man:19 cupstestdsc.man:26 cupstestppd.man:34 filter.man:23 ipptool.man:38 ipptoolfile.man:18 lpadmin.man:46 lpc.man:25 lpinfo.man:50 lp.man:62 lpmove.man:34 lpoptions.man.in:62 lppasswd.man:33 lpq.man:29 lpr.man:35 lprm.man:29 lpstat.man:39 mailto.conf.man:18 mime.convs.man:18 mime.types.man:18 printers.conf.man:18 subscriptions.conf.man:18
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: Plain text
#: cupsaccept.man:37
msgid ""
"I instructs the printing system to accept print jobs to the "
"specified destinations."
msgstr ""
#. type: Plain text
#: cupsaccept.man:41
msgid ""
"I instructs the printing system to reject print jobs to the "
"specified destinations. The I<-r> option sets the reason for rejecting print "
"jobs. If not specified the reason defaults to \"Reason Unknown\"."
msgstr ""
#. type: SH
#: cupsaccept.man:41 cancel.man:36 cupsaddsmb.man.in:45 cups-config.man:58 cupsctl.man:33 cupsd.man.in:28 cupsfilter.man:45 cups-lpd.man.in:62 cupstestppd.man:44 filter.man:44 ipptool.man:40 lpinfo.man:55 lp.man:70 lpmove.man:44 lppasswd.man:41 lpq.man:37 lpr.man:45 lprm.man:35 lpstat.man:43
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: Plain text
#: cupsaccept.man:44
msgid "The following options are supported by both I and I:"
msgstr ""
#. type: TP
#: cupsaccept.man:44 cancel.man:38 cupsctl.man:35 cupsenable.man:39 ipptool.man:58 lpadmin.man:192 lpinfo.man:57 lp.man:77 lpmove.man:46 lpoptions.man.in:66 lpq.man:39 lpr.man:47 lprm.man:37 lpstat.man:45
#, no-wrap
msgid "-E"
msgstr ""
#. type: Plain text
#: cupsaccept.man:48 cancel.man:42 lpinfo.man:61 lp.man:81 lpmove.man:50 lpq.man:43 lpr.man:51 lprm.man:41 lpstat.man:49
msgid "Forces encryption when connecting to the server."
msgstr ""
#. type: TP
#: cupsaccept.man:48 cancel.man:42 cupsenable.man:43 lpinfo.man:61 lp.man:81 lpmove.man:50 lpoptions.man.in:70 lpq.man:47 lpr.man:67 lprm.man:45 lpstat.man:57
#, no-wrap
msgid "-U username"
msgstr ""
#. type: Plain text
#: cupsaccept.man:52
msgid "Sets the username that is sent when connecting to the server."
msgstr ""
#. type: TP
#: cupsaccept.man:52 cancel.man:51 cups-lpd.man.in:63 lp.man:97
#, no-wrap
msgid "-h hostname[:port]"
msgstr ""
#. type: Plain text
#: cupsaccept.man:56 cancel.man:55 lp.man:101
msgid "Chooses an alternate server."
msgstr ""
#. type: TP
#: cupsaccept.man:56 cupsenable.man:60
#, no-wrap
msgid "-r \"reason\""
msgstr ""
#. type: Plain text
#: cupsaccept.man:61
msgid "Sets the reason string that is shown for a printer that is rejecting jobs."
msgstr ""
#. type: SH
#: cupsaccept.man:61 cancel.man:63 cupsd.man.in:57 cupsenable.man:70 cups-lpd.man.in:104 filter.man:225 ipptool.man:105 lpadmin.man:207 lpc.man:59 lpinfo.man:105 lp.man:234 lpoptions.man.in:119 lpr.man:110 lprm.man:53 lpstat.man:127
#, no-wrap
msgid "COMPATIBILITY"
msgstr ""
#. type: Plain text
#: cupsaccept.man:65 cancel.man:67 cupsenable.man:74 lp.man:238
msgid ""
"Unlike the System V printing system, CUPS allows printer names to contain "
"any printable character except SPACE, TAB, \"/\", or \"#\". Also, printer "
"and class names are I case-sensitive."
msgstr ""
#. type: Plain text
#: cupsaccept.man:70
msgid ""
"The CUPS versions of I and I may ask the user for an access "
"password depending on the printing system configuration. This differs from "
"the System V versions which require the root user to execute these commands."
msgstr ""
#. type: SH
#: cupsaccept.man:70 backend.man:163 cancel.man:71 classes.conf.man:101 client.conf.man.in:59 cupsaddsmb.man.in:168 cups-config.man:111 cupsctl.man:89 cupsd.conf.man.in:515 cups-files.conf.man.in:142 cups-deviced.man.in:36 cupsd.man.in:61 cups-driverd.man.in:114 cupsenable.man:83 cupsfilter.man:101 cups-lpd.man.in:115 cups-snmp.conf.man:70 cupstestdsc.man:41 cupstestppd.man:155 filter.man:230 ipptool.man:152 ipptoolfile.man:616 lpadmin.man:218 lpc.man:62 lpinfo.man:107 lp.man:243 lpmove.man:58 lpoptions.man.in:127 lppasswd.man:60 lpq.man:63 lpr.man:113 lprm.man:56 lpstat.man:135 mailto.conf.man:51 mime.convs.man:37 mime.types.man:106 printers.conf.man:115 subscriptions.conf.man:80
#, no-wrap
msgid "SEE ALSO"
msgstr ""
#. type: Plain text
#: cupsaccept.man:73
msgid "I, I, I, I, I,"
msgstr ""
#. type: Plain text
#: cupsaccept.man:75 backend.man:168 cancel.man:75 classes.conf.man:106 client.conf.man.in:61 cups-config.man:113 cupsctl.man:93 cupsd.conf.man.in:521 cups-files.conf.man.in:148 cups-deviced.man.in:40 cupsd.man.in:68 cups-driverd.man.in:118 cupsenable.man:88 cupsfilter.man:105 cups-lpd.man.in:120 cups-snmp.conf.man:74 cupstestdsc.man:43 cupstestppd.man:159 filter.man:234 ipptool.man:156 ipptoolfile.man:620 lpadmin.man:223 lpc.man:67 lpinfo.man:111 lp.man:248 lpmove.man:62 lpoptions.man.in:131 lppasswd.man:64 lpq.man:68 lpr.man:118 lprm.man:61 lpstat.man:139 mailto.conf.man:56 mime.convs.man:42 mime.types.man:111 printers.conf.man:120 subscriptions.conf.man:85
msgid "http://localhost:631/help"
msgstr ""
#. type: SH
#: cupsaccept.man:75 backend.man:168 cancel.man:75 classes.conf.man:106 client.conf.man.in:61 cupsaddsmb.man.in:172 cups-config.man:113 cupsctl.man:93 cupsd.conf.man.in:521 cups-files.conf.man.in:148 cups-deviced.man.in:40 cupsd.man.in:68 cups-driverd.man.in:118 cupsenable.man:88 cupsfilter.man:105 cups-lpd.man.in:120 cups-snmp.conf.man:74 cupstestdsc.man:46 cupstestppd.man:161 filter.man:234 ipptool.man:156 ipptoolfile.man:623 lpadmin.man:223 lpc.man:67 lpinfo.man:111 lp.man:248 lpmove.man:62 lpoptions.man.in:131 lppasswd.man:64 lpq.man:68 lpr.man:118 lprm.man:61 lpstat.man:139 mailto.conf.man:56 mime.convs.man:42 mime.types.man:111 printers.conf.man:120 subscriptions.conf.man:85
#, no-wrap
msgid "COPYRIGHT"
msgstr ""
#. type: Plain text
#: cupsaccept.man:76 backend.man:169 cancel.man:76 classes.conf.man:107 client.conf.man.in:62 cupsaddsmb.man.in:173 cups-config.man:114 cupsctl.man:94 cupsd.conf.man.in:522 cups-files.conf.man.in:149 cups-deviced.man.in:41 cupsd.man.in:69 cups-driverd.man.in:119 cupsenable.man:90 cupsfilter.man:106 cups-lpd.man.in:121 cups-snmp.conf.man:75 cupstestdsc.man:47 cupstestppd.man:162 filter.man:235 ipptool.man:157 ipptoolfile.man:624 lpadmin.man:224 lpc.man:68 lpinfo.man:112 lp.man:249 lpmove.man:63 lpoptions.man.in:132 lppasswd.man:65 lpq.man:69 lpr.man:119 lprm.man:62 lpstat.man:140 mailto.conf.man:57 mime.convs.man:43 mime.types.man:112 printers.conf.man:121 subscriptions.conf.man:86
msgid "Copyright 2007-2013 by Apple Inc."
msgstr ""
#. type: TH
#: backend.man:15
#, no-wrap
msgid "backend"
msgstr ""
#. type: TH
#: backend.man:15 cups-snmp.conf.man:15
#, no-wrap
msgid "23 April 2012"
msgstr ""
#. type: Plain text
#: backend.man:19
msgid "backend - cups backend transmission interfaces"
msgstr ""
#. type: Plain text
#: backend.man:21
msgid "B"
msgstr ""
#. type: Plain text
#: backend.man:26
msgid "B job user title num-copies options [ I ]"
msgstr ""
#. type: Plain text
#: backend.man:29
msgid ""
"Backends are a special type of I which is used to send print data "
"to and discover different devices on the system."
msgstr ""
#. type: Plain text
#: backend.man:33
msgid ""
"Like filters, backends must be capable of reading from a filename on the "
"command-line or from the standard input, copying the standard input to a "
"temporary file as required by the physical interface."
msgstr ""
#. type: Plain text
#: backend.man:39
msgid ""
"The command name (argv[0]) is set to the device URI of the destination "
"printer. Starting with CUPS 1.1.22, any authentication information in "
"argv[0] is removed, so backend developers are urged to use the DEVICE_URI "
"environment variable whenever authentication information is required. The "
"CUPS API includes a I function for retrieving the "
"correct device URI."
msgstr ""
#. type: Plain text
#: backend.man:43
msgid ""
"Back-channel data from the device should be relayed to the job filters by "
"writing to file descriptor 3. The CUPS API includes the "
"I function for this purpose."
msgstr ""
#. type: SH
#: backend.man:43 filter.man:36
#, no-wrap
msgid "WARNING"
msgstr ""
#. type: Plain text
#: backend.man:52
msgid ""
"CUPS backends are not generally design to be run directly by the user. Aside "
"from the device URI issue (argv[0] and DEVICE_URI environment variable "
"contain the device URI), CUPS backends also expect specific environment "
"variables and file descriptors, and typically run in a user session that (on "
"OS X) has additional restrictions that affect how it runs. Backends can also "
"be installed with restricted permissions (0500 or 0700) that tell the "
"scheduler to run them as the \"root\" user instead of an unprivileged user "
"(typically \"lp\") on the system."
msgstr ""
#. type: Plain text
#: backend.man:58
msgid ""
"Unless you are a developer and know what you are doing, please do not run "
"backends directly. Instead, use the I or I programs to send a "
"print job or I program to query for available printers using the "
"backend. The one exception is the SNMP backend - see I for "
"more information."
msgstr ""
#. type: SH
#: backend.man:58
#, no-wrap
msgid "DEVICE DISCOVERY"
msgstr ""
#. type: Plain text
#: backend.man:62
msgid ""
"When run with no arguments, the backend should list the devices and schemes "
"it supports or is advertising to stdout. The output consists of zero or more "
"lines consisting of any of the following forms:"
msgstr ""
#. type: Plain text
#: backend.man:68
#, no-wrap
msgid ""
" device-class scheme \"Unknown\" \"device-info\"\n"
" device-class device-uri \"device-make-and-model\" \"device-info\"\n"
" device-class device-uri \"device-make-and-model\" \"device-info\" "
"\"device-id\"\n"
" device-class device-uri \"device-make-and-model\" \"device-info\" "
"\"device-id\" \"device-location\"\n"
msgstr ""
#. type: Plain text
#: backend.man:71
msgid "The I field is one of the following values:"
msgstr ""
#. type: TP
#: backend.man:71
#, no-wrap
msgid "direct"
msgstr ""
#. type: Plain text
#: backend.man:76
msgid ""
"The device-uri refers to a specific direct-access device with no options, "
"such as a parallel, USB, or SCSI device."
msgstr ""
#. type: TP
#: backend.man:76
#, no-wrap
msgid "file"
msgstr ""
#. type: Plain text
#: backend.man:80
msgid "The device-uri refers to a file on disk."
msgstr ""
#. type: TP
#: backend.man:80
#, no-wrap
msgid "network"
msgstr ""
#. type: Plain text
#: backend.man:85
msgid ""
"The device-uri refers to a networked device and conforms to the general form "
"for network URIs."
msgstr ""
#. type: TP
#: backend.man:85
#, no-wrap
msgid "serial"
msgstr ""
#. type: Plain text
#: backend.man:91
msgid ""
"The device-uri refers to a serial device with configurable baud rate and "
"other options. If the device-uri contains a baud value, it represents the "
"maximum baud rate supported by the device."
msgstr ""
#. type: Plain text
#: backend.man:96
msgid ""
"The I field provides the URI scheme that is supported by the "
"backend. Backends should use this form only when the backend supports any "
"URI using that scheme. The I field specifies the full URI to use "
"when communicating with the device."
msgstr ""
#. type: Plain text
#: backend.man:100
msgid ""
"The I field specifies the make and model of the "
"device, e.g. \"Example Foojet 2000\". If the make and model is not known, "
"you must report \"Unknown\"."
msgstr ""
#. type: Plain text
#: backend.man:104
msgid ""
"The I field specifies additional information about the device. "
"Typically this includes the make and model along with the port number or "
"network address, e.g. \"Example Foojet 2000 USB #1\"."
msgstr ""
#. type: Plain text
#: backend.man:107
msgid ""
"The optional I field specifies the IEEE-1284 device ID string for "
"the device, which is used to select a matching driver."
msgstr ""
#. type: Plain text
#: backend.man:111
msgid ""
"The optional I field specifies the physical location of the "
"device, which is often used to pre-populate the printer-location attribute "
"when adding a printer."
msgstr ""
#. type: SH
#: backend.man:111
#, no-wrap
msgid "PERMISSIONS"
msgstr ""
#. type: Plain text
#: backend.man:114
msgid ""
"Backends without world execute permissions are run as the root "
"user. Otherwise, the backend is run using an unprivileged user account, "
"typically \"lp\"."
msgstr ""
#. type: SH
#: backend.man:114
#, no-wrap
msgid "EXIT CODES"
msgstr ""
#. type: Plain text
#: backend.man:117
msgid ""
"The following exit codes are defined for backends; C API constants defined "
"in the Ecups/backend.hE header file are defined in parenthesis:"
msgstr ""
#. type: TP
#: backend.man:117
#, no-wrap
msgid "0 (CUPS_BACKEND_OK)"
msgstr ""
#. type: Plain text
#: backend.man:121
msgid "The print file was successfully transmitted to the device or remote server."
msgstr ""
#. type: TP
#: backend.man:121
#, no-wrap
msgid "1 (CUPS_BACKEND_FAILED)"
msgstr ""
#. type: Plain text
#: backend.man:127
msgid ""
"The print file was not successfully transmitted to the device or remote "
"server. The scheduler will respond to this by canceling the job, retrying "
"the job, or stopping the queue depending on the state of the error-policy "
"attribute."
msgstr ""
#. type: TP
#: backend.man:127
#, no-wrap
msgid "2 (CUPS_BACKEND_AUTH_REQUIRED)"
msgstr ""
#. type: Plain text
#: backend.man:134
msgid ""
"The print file was not successfully transmitted because valid authentication "
"information is required. The scheduler will respond to this by holding the "
"job and adding the \"cups-held-for-authentication\" keyword to the "
"\"job-reasons\" attribute."
msgstr ""
#. type: TP
#: backend.man:134
#, no-wrap
msgid "3 (CUPS_BACKEND_HOLD)"
msgstr ""
#. type: Plain text
#: backend.man:139
msgid ""
"The print file was not successfully transmitted because it cannot be printed "
"at this time. The scheduler will respond to this by holding the job."
msgstr ""
#. type: TP
#: backend.man:139
#, no-wrap
msgid "4 (CUPS_BACKEND_STOP)"
msgstr ""
#. type: Plain text
#: backend.man:144
msgid ""
"The print file was not successfully transmitted because it cannot be printed "
"at this time. The scheduler will respond to this by stopping the queue."
msgstr ""
#. type: TP
#: backend.man:144
#, no-wrap
msgid "5 (CUPS_BACKEND_CANCEL)"
msgstr ""
#. type: Plain text
#: backend.man:150
msgid ""
"The print file was not successfully transmitted because one or more "
"attributes are not supported or the job was canceled at the printer. The "
"scheduler will respond to this by canceling the job."
msgstr ""
#. type: TP
#: backend.man:150
#, no-wrap
msgid "6 (CUPS_BACKEND_RETRY)"
msgstr ""
#. type: Plain text
#: backend.man:156
msgid ""
"The print file was not successfully transmitted because of a temporary "
"issue. The scheduler will retry the job at a future time - other jobs may "
"print before this one."
msgstr ""
#. type: TP
#: backend.man:156
#, no-wrap
msgid "7 (CUPS_BACKEND_RETRY_CURRENT)"
msgstr ""
#. type: Plain text
#: backend.man:161
msgid ""
"The print file was not successfully transmitted because of a temporary "
"issue. The scheduler will retry the job immediately without allowing "
"intervening jobs."
msgstr ""
#. type: Plain text
#: backend.man:163
msgid "All other exit code values are reserved."
msgstr ""
#. type: Plain text
#: backend.man:166
msgid "I, I, I, I, I,"
msgstr ""
#. type: TH
#: cancel.man:15
#, no-wrap
msgid "cancel"
msgstr ""
#. type: TH
#: cancel.man:15
#, no-wrap
msgid "21 January 2013"
msgstr ""
#. type: Plain text
#: cancel.man:18
msgid "cancel - cancel jobs"
msgstr ""
#. type: Plain text
#: cancel.man:33
msgid ""
"B [ -E ] [ -U I ] [ -a ] [ -h I ] [ -u "
"I ] [ -x ] [ I ] [ I ] [ I ]"
msgstr ""
#. type: Plain text
#: cancel.man:36
msgid ""
"I cancels existing print jobs. The I<-a> option will remove all jobs "
"from the specified destination."
msgstr ""
#. type: Plain text
#: cancel.man:38
msgid "The following options are recognized by I:"
msgstr ""
#. type: Plain text
#: cancel.man:46 lp.man:85
msgid "Specifies the username to use when connecting to the server."
msgstr ""
#. type: TP
#: cancel.man:46 cupsaddsmb.man.in:58 lpq.man:51
#, no-wrap
msgid "-a"
msgstr ""
#. type: Plain text
#: cancel.man:51
msgid ""
"Cancel all jobs on the named destination, or all jobs on all destinations if "
"none is provided."
msgstr ""
#. type: TP
#: cancel.man:55
#, no-wrap
msgid "-u username"
msgstr ""
#. type: Plain text
#: cancel.man:59
msgid "Cancels jobs owned by I."
msgstr ""
#. type: TP
#: cancel.man:59
#, no-wrap
msgid "-x"
msgstr ""
#. type: Plain text
#: cancel.man:63
msgid "Deletes job data files in addition to canceling."
msgstr ""
#. type: SH
#: cancel.man:67 cups-driverd.man.in:109
#, no-wrap
msgid "NOTES"
msgstr ""
#. type: Plain text
#: cancel.man:71
msgid ""
"Administrators wishing to prevent unauthorized cancellation of jobs via the "
"I<-u> option should require authentication for Cancel-Jobs operations in "
"I."
msgstr ""
#. type: Plain text
#: cancel.man:73
msgid "I, I, I,"
msgstr ""
#. type: TH
#: classes.conf.man:15
#, no-wrap
msgid "classes.conf"
msgstr ""
#. type: TH
#: classes.conf.man:15 printers.conf.man:15
#, no-wrap
msgid "29 April 2009"
msgstr ""
#. type: Plain text
#: classes.conf.man:18
msgid "classes.conf - class configuration file for cups"
msgstr ""
#. type: Plain text
#: classes.conf.man:23
msgid ""
"The I file defines the local printer classes that are "
"available. It is normally located in the I directory and is "
"generated automatically by the I program when printer classes are "
"added or deleted."
msgstr ""
#. type: Plain text
#: classes.conf.man:26 cups-files.conf.man.in:25 mailto.conf.man:24 printers.conf.man:26 subscriptions.conf.man:26
msgid ""
"Each line in the file can be a configuration directive, a blank line, or a "
"comment. Comment lines start with the # character."
msgstr ""
#. type: SH
#: classes.conf.man:26 client.conf.man.in:24 cupsd.conf.man.in:29 cups-files.conf.man.in:25 cups-snmp.conf.man:28 mailto.conf.man:24 printers.conf.man:26 subscriptions.conf.man:26
#, no-wrap
msgid "DIRECTIVES"
msgstr ""
#. type: TP
#: classes.conf.man:27
#, no-wrap
msgid "EClass nameE ... E/ClassE"
msgstr ""
#. type: Plain text
#: classes.conf.man:31
msgid "Defines a specific printer class."
msgstr ""
#. type: TP
#: classes.conf.man:31
#, no-wrap
msgid "EDefaultClass nameE ... E/ClassE"
msgstr ""
#. type: Plain text
#: classes.conf.man:35
msgid "Defines a default printer class."
msgstr ""
#. type: TP
#: classes.conf.man:35 printers.conf.man:35
#, no-wrap
msgid "Accepting Yes"
msgstr ""
#. type: TP
#: classes.conf.man:37 printers.conf.man:37
#, no-wrap
msgid "Accepting No"
msgstr ""
#. type: Plain text
#: classes.conf.man:41 printers.conf.man:41
msgid "Specifies whether the printer is accepting new jobs."
msgstr ""
#. type: TP
#: classes.conf.man:41 printers.conf.man:41
#, no-wrap
msgid "AllowUser [ user @group ... ]"
msgstr ""
#. type: Plain text
#: classes.conf.man:45 printers.conf.man:45
msgid "Allows specific users and groups to print to the printer."
msgstr ""
#. type: TP
#: classes.conf.man:45 printers.conf.man:45
#, no-wrap
msgid "DenyUser [ user @group ... ]"
msgstr ""
#. type: Plain text
#: classes.conf.man:49 printers.conf.man:49
msgid "Prevents specific users and groups from printing to the printer."
msgstr ""
#. type: TP
#: classes.conf.man:49 printers.conf.man:63
#, no-wrap
msgid "Info text"
msgstr ""
#. type: Plain text
#: classes.conf.man:53 printers.conf.man:67
msgid "Specifies human-readable text describing the printer."
msgstr ""
#. type: TP
#: classes.conf.man:53 printers.conf.man:67
#, no-wrap
msgid "JobSheets banner banner"
msgstr ""
#. type: Plain text
#: classes.conf.man:57 printers.conf.man:71
msgid "Specifies the banner pages to use for the printer."
msgstr ""
#. type: TP
#: classes.conf.man:57 printers.conf.man:71
#, no-wrap
msgid "KLimit number"
msgstr ""
#. type: Plain text
#: classes.conf.man:61 printers.conf.man:75
msgid "Specifies the job-k-limit value for the printer."
msgstr ""
#. type: TP
#: classes.conf.man:61 printers.conf.man:75
#, no-wrap
msgid "Location text"
msgstr ""
#. type: Plain text
#: classes.conf.man:65 printers.conf.man:79
msgid "Specifies human-readable text describing the location of the printer."
msgstr ""
#. type: TP
#: classes.conf.man:65 printers.conf.man:79
#, no-wrap
msgid "OpPolicy name"
msgstr ""
#. type: Plain text
#: classes.conf.man:69 printers.conf.man:83
msgid "Specifies the operation policy for the printer."
msgstr ""
#. type: TP
#: classes.conf.man:69 printers.conf.man:83
#, no-wrap
msgid "PageLimit number"
msgstr ""
#. type: Plain text
#: classes.conf.man:73 printers.conf.man:87
msgid "Specifies the job-page-limit value for the printer."
msgstr ""
#. type: TP
#: classes.conf.man:73
#, no-wrap
msgid "Printer"
msgstr ""
#. type: Plain text
#: classes.conf.man:77
msgid "Specifies a printer that is a member of the printer class."
msgstr ""
#. type: TP
#: classes.conf.man:77 printers.conf.man:91
#, no-wrap
msgid "QuotaPeriod seconds"
msgstr ""
#. type: Plain text
#: classes.conf.man:81 printers.conf.man:95
msgid "Specifies the job-quota-period value for the printer."
msgstr ""
#. type: TP
#: classes.conf.man:81 printers.conf.man:95
#, no-wrap
msgid "Shared Yes"
msgstr ""
#. type: TP
#: classes.conf.man:83 printers.conf.man:97
#, no-wrap
msgid "Shared No"
msgstr ""
#. type: Plain text
#: classes.conf.man:87 printers.conf.man:101
msgid "Specifies whether the printer is shared."
msgstr ""
#. type: TP
#: classes.conf.man:87 printers.conf.man:101
#, no-wrap
msgid "State idle"
msgstr ""
#. type: TP
#: classes.conf.man:89 printers.conf.man:103
#, no-wrap
msgid "State stopped"
msgstr ""
#. type: Plain text
#: classes.conf.man:93 printers.conf.man:107
msgid "Specifies the initial state of the printer (Idle or Stopped)"
msgstr ""
#. type: TP
#: classes.conf.man:93 printers.conf.man:107
#, no-wrap
msgid "StateMessage text"
msgstr ""
#. type: Plain text
#: classes.conf.man:97 printers.conf.man:111
msgid "Specifies the message associated with the state."
msgstr ""
#. type: TP
#: classes.conf.man:97 printers.conf.man:111
#, no-wrap
msgid "StateTime seconds"
msgstr ""
#. type: Plain text
#: classes.conf.man:101 printers.conf.man:115
msgid "Specifies the date/time associated with the state."
msgstr ""
#. type: Plain text
#: classes.conf.man:104
msgid ""
"I, I, I, I, "
"I,"
msgstr ""
#. type: TH
#: client.conf.man.in:15
#, no-wrap
msgid "client.conf"
msgstr ""
#. type: TH
#: client.conf.man.in:15 cupsaddsmb.man.in:15 cupsd.conf.man.in:15 cups-deviced.man.in:15 cupsd.man.in:15 cups-driverd.man.in:15 cups-lpd.man.in:15 lpoptions.man.in:15
#, no-wrap
msgid "8 July 2013"
msgstr ""
#. type: Plain text
#: client.conf.man.in:18
msgid "client.conf - client configuration file for cups"
msgstr ""
#. type: Plain text
#: client.conf.man.in:24
msgid ""
"The I file configures the CUPS client and is normally located "
"in the I or I<~/.cups> directory. Each line in the file can be a "
"configuration directive, a blank line, or a comment. Comment lines start "
"with the # character."
msgstr ""
#. type: Plain text
#: client.conf.man.in:27
msgid ""
"The following directives are understood by the client. Consult the on-line "
"help for detailed descriptions:"
msgstr ""
#. type: TP
#: client.conf.man.in:27 cupsd.conf.man.in:173
#, no-wrap
msgid "Encryption IfRequested"
msgstr ""
#. type: TP
#: client.conf.man.in:29 cupsd.conf.man.in:175
#, no-wrap
msgid "Encryption Never"
msgstr ""
#. type: TP
#: client.conf.man.in:31 cupsd.conf.man.in:177
#, no-wrap
msgid "Encryption Required"
msgstr ""
#. type: Plain text
#: client.conf.man.in:36 cupsd.conf.man.in:182
msgid ""
"Specifies the level of encryption that is required for a particular "
"location."
msgstr ""
#. type: TP
#: client.conf.man.in:36 cupsd.conf.man.in:191
#, no-wrap
msgid "GSSServiceName name"
msgstr ""
#. type: Plain text
#: client.conf.man.in:42
msgid ""
"Specifies the Kerberos service name that is used for authentication, "
"typically \"host\", \"http\", or \"ipp\". CUPS adds the remote hostname "
"(\"name@server.example.com\") for you. The default name is \"http\"."
msgstr ""
#. type: TP
#: client.conf.man.in:42
#, no-wrap
msgid "ServerName hostname-or-ip-address[:port]"
msgstr ""
#. type: TP
#: client.conf.man.in:44
#, no-wrap
msgid "ServerName /domain/socket"
msgstr ""
#. type: Plain text
#: client.conf.man.in:49
msgid ""
"Specifies the address and optionally the port to use when connecting to the "
"server. B"
msgstr ""
#. type: TP
#: client.conf.man.in:49
#, no-wrap
msgid "ServerName hostname-or-ip-address[:port]/version=1.1"
msgstr ""
#. type: Plain text
#: client.conf.man.in:55
msgid ""
"Specifies the address and optionally the port to use when connecting to a "
"server running CUPS 1.3.12 and earlier. B"
msgstr ""
#. type: TP
#: client.conf.man.in:55
#, no-wrap
msgid "User name"
msgstr ""
#. type: Plain text
#: client.conf.man.in:59
msgid "Specifies the default user name to use for requests."
msgstr ""
#. type: TH
#: cupsaddsmb.man.in:15
#, no-wrap
msgid "cupsaddsmb"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:18
msgid "cupsaddsmb - export printers to samba for windows clients"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:28
msgid ""
"B [ -H I ] [ -U I ] [ "
"-h I ] [ -v ] -a"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:37
msgid ""
"B [ -H I ] [ -U I ] [ "
"-h I ] [ -v ] printer [ ... printer ]"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:44
msgid ""
"I exports printers to the SAMBA software (version 2.2.0 or "
"higher) for use with Windows clients. Depending on the SAMBA configuration, "
"you may need to provide a password to export the printers. This program "
"requires the Windows printer driver files described below."
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:47
msgid "I supports the following options:"
msgstr ""
#. type: TP
#: cupsaddsmb.man.in:47
#, no-wrap
msgid "-H samba-server"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:51
msgid "Specifies the SAMBA server which defaults to the CUPS server."
msgstr ""
#. type: TP
#: cupsaddsmb.man.in:51
#, no-wrap
msgid "-U samba-user[%samba-password]"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:58
msgid ""
"Specifies the SAMBA print admin username which defaults to your current "
"username. If the username contains a percent (%) character, then the text "
"following the percent is treated as the SAMBA password to use."
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:63
msgid "Exports all known printers. Otherwise only the named printers are exported."
msgstr ""
#. type: TP
#: cupsaddsmb.man.in:63
#, no-wrap
msgid "-h cups-server[:port]"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:67
msgid "Specifies a different CUPS server to use."
msgstr ""
#. type: TP
#: cupsaddsmb.man.in:67 cupstestppd.man:105 ipptool.man:100
#, no-wrap
msgid "-v"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:72
msgid ""
"Specifies that verbose information should be shown. This is useful for "
"debugging SAMBA configuration problems."
msgstr ""
#. type: SH
#: cupsaddsmb.man.in:73
#, no-wrap
msgid "SAMBA CONFIGURATION"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:80
msgid ""
"I uses the new RPC-based printing support in SAMBA 2.2.x to "
"provide printer drivers and PPD files to Windows client machines. In order "
"to use this functionality, you must first configure the SAMBA I "
"file to support printing through CUPS and provide a printer driver download "
"share, as follows:"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:86
#, no-wrap
msgid ""
" [global]\n"
"\tload printers = yes\n"
"\tprinting = cups\n"
"\tprintcap name = cups\n"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:95
#, no-wrap
msgid ""
" [printers]\n"
"\tcomment = All Printers\n"
"\tpath = /var/spool/samba\n"
"\tbrowseable = no\n"
"\tpublic = yes\n"
"\tguest ok = yes\n"
"\twritable = no\n"
"\tprintable = yes\n"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:103
#, no-wrap
msgid ""
" [print$]\n"
"\tcomment = Printer Drivers\n"
"\tpath = /etc/samba/drivers\n"
"\tbrowseable = yes\n"
"\tguest ok = no\n"
"\tread only = yes\n"
"\twrite list = root\n"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:108
msgid ""
"This configuration assumes a FHS-compliant installation of SAMBA; adjust the "
"[printers] and [print$] share paths accordingly on your system as needed."
msgstr ""
#. type: SH
#: cupsaddsmb.man.in:109
#, no-wrap
msgid "MICROSOFT POSTSCRIPT DRIVERS FOR WINDOWS"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:117
msgid ""
"The base driver for Windows 2000 and higher is the Microsoft PostScript "
"driver, which is available on any system running Windows 2000 or higher in "
"the %WINDIR%\\eSYSTEM32\\eSPOOL\\eDRIVERS\\eW32X86\\e3 folder for 32-bit "
"drivers and %WINDIR%\\eSYSTEM32\\eSPOOL\\eDRIVERS\\eX64\\e3 folder for "
"64-bit drivers."
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:122
msgid ""
"However, currently only Windows 2000 and higher is supported by the "
"Microsoft driver, so you will also need to get the Adobe driver to support "
"Windows 95, 98, and Me clients. The Adobe and Microsoft drivers for Windows "
"2000 are identical."
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:127
msgid ""
"Once you have extracted the driver files, copy the 32-bit drivers to the "
"I directory and the 64-bit drivers to the "
"I directory exactly as named below:"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:134
#, no-wrap
msgid ""
" [Windows 2000 and higher]\n"
" ps5ui.dll\n"
" pscript.hlp\n"
" pscript.ntf\n"
" pscript5.dll\n"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:139
msgid ""
"B Unlike Windows, case is significant - make sure that you use the "
"lowercase filenames shown above, otherwise I will fail to export "
"the drivers."
msgstr ""
#. type: SH
#: cupsaddsmb.man.in:140
#, no-wrap
msgid "ADOBE POSTSCRIPT DRIVERS FOR WINDOWS 95, 98, AND ME"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:144
msgid ""
"I can use the Adobe PostScript printer driver for Windows 95, "
"98, and ME, which are available for download from the Adobe web site "
"(http://www.adobe.com)."
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:147
msgid ""
"The Adobe driver does not support the page-label, job-billing, or "
"job-hold-until options."
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:151
msgid ""
"Once you have installed the driver on a Windows system, copy the following "
"files to the I directory exactly as named below:"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:159
#, no-wrap
msgid ""
" [Windows 95, 98, and Me]\n"
" ADFONTS.MFM\n"
" ADOBEPS4.DRV\n"
" ADOBEPS4.HLP\n"
" ICONLIB.DLL\n"
" PSMON.DLL\n"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:164
msgid ""
"B Unlike Windows, case is significant - make sure that you use the "
"UPPERCASE filenames shown above, otherwise I will fail to export "
"the drivers."
msgstr ""
#. type: SH
#: cupsaddsmb.man.in:165 cupsctl.man:87
#, no-wrap
msgid "KNOWN ISSUES"
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:167
msgid "Getting the full set of Windows driver files should be easier."
msgstr ""
#. type: Plain text
#: cupsaddsmb.man.in:171
msgid "I, I, http://localhost:631/help"
msgstr ""
#. type: TH
#: cups-config.man:15
#, no-wrap
msgid "cups-config"
msgstr ""
#. type: TH
#: cups-config.man:15
#, no-wrap
msgid "23 October 2008"
msgstr ""
#. type: Plain text
#: cups-config.man:18
msgid "cups-config - get cups api, compiler, directory, and link information."
msgstr ""
#. type: Plain text
#: cups-config.man:21
msgid "B --api-version"
msgstr ""
#. type: Plain text
#: cups-config.man:24
msgid "B --build"
msgstr ""
#. type: Plain text
#: cups-config.man:27
msgid "B --cflags"
msgstr ""
#. type: Plain text
#: cups-config.man:30
msgid "B --datadir"
msgstr ""
#. type: Plain text
#: cups-config.man:33
msgid "B --help"
msgstr ""
#. type: Plain text
#: cups-config.man:36
msgid "B --ldflags"
msgstr ""
#. type: Plain text
#: cups-config.man:43
msgid "B [ I<--image> ] [ I<--static> ] --libs"
msgstr ""
#. type: Plain text
#: cups-config.man:46
msgid "B --serverbin"
msgstr ""
#. type: Plain text
#: cups-config.man:49
msgid "B --serverroot"
msgstr ""
#. type: Plain text
#: cups-config.man:52
msgid "B --version"
msgstr ""
#. type: Plain text
#: cups-config.man:58
msgid ""
"B is the CUPS program configuration utility. It should be used "
"by application developers to determine the necessary command-line options "
"for the compiler and linker, as well as determining installation directories "
"for filters, configuration files, and drivers."
msgstr ""
#. type: TP
#: cups-config.man:59
#, no-wrap
msgid "--api-version"
msgstr ""
#. type: Plain text
#: cups-config.man:63
msgid "Displays the current API version (major.minor)."
msgstr ""
#. type: TP
#: cups-config.man:63
#, no-wrap
msgid "--build"
msgstr ""
#. type: Plain text
#: cups-config.man:67
msgid "Displays a system-specific build number."
msgstr ""
#. type: TP
#: cups-config.man:67
#, no-wrap
msgid "--cflags"
msgstr ""
#. type: Plain text
#: cups-config.man:71
msgid "Displays the necessary compiler options."
msgstr ""
#. type: TP
#: cups-config.man:71
#, no-wrap
msgid "--datadir"
msgstr ""
#. type: Plain text
#: cups-config.man:75
msgid "Displays the default CUPS data directory."
msgstr ""
#. type: TP
#: cups-config.man:75 ipptool.man:42
#, no-wrap
msgid "--help"
msgstr ""
#. type: Plain text
#: cups-config.man:79
msgid "Displays the program usage message."
msgstr ""
#. type: TP
#: cups-config.man:79
#, no-wrap
msgid "--image"
msgstr ""
#. type: Plain text
#: cups-config.man:84
msgid ""
"When used with I<--libs>, adds the CUPS imaging library to the list of "
"displayed libraries."
msgstr ""
#. type: TP
#: cups-config.man:84
#, no-wrap
msgid "--ldflags"
msgstr ""
#. type: Plain text
#: cups-config.man:88
msgid "Displays the necessary linker options."
msgstr ""
#. type: TP
#: cups-config.man:88
#, no-wrap
msgid "--libs"
msgstr ""
#. type: Plain text
#: cups-config.man:92
msgid "Displays the necessary librarys to link to."
msgstr ""
#. type: TP
#: cups-config.man:92
#, no-wrap
msgid "--serverbin"
msgstr ""
#. type: Plain text
#: cups-config.man:97
msgid ""
"Displays the default CUPS binary directory, where filters and backends are "
"stored."
msgstr ""
#. type: TP
#: cups-config.man:97
#, no-wrap
msgid "--serverroot"
msgstr ""
#. type: Plain text
#: cups-config.man:101
msgid "Displays the default CUPS configuration file directory."
msgstr ""
#. type: TP
#: cups-config.man:101
#, no-wrap
msgid "--static"
msgstr ""
#. type: Plain text
#: cups-config.man:106
msgid ""
"When used with I<--libs>, shows the static libraries instead of the default "
"(shared) libraries."
msgstr ""
#. type: TP
#: cups-config.man:106
#, no-wrap
msgid "--version"
msgstr ""
#. type: Plain text
#: cups-config.man:111
msgid ""
"Displays the full version number of the CUPS installation "
"(major.minor.patch)."
msgstr ""
#. type: TH
#: cupsctl.man:15
#, no-wrap
msgid "cupsctl"
msgstr ""
#. type: TH
#: cupsctl.man:15
#, no-wrap
msgid "11 January 2013"
msgstr ""
#. type: Plain text
#: cupsctl.man:18
msgid "cupsctl - configure cupsd.conf options"
msgstr ""
#. type: Plain text
#: cupsctl.man:29
msgid ""
"B [ -E ] [-U I ] [ -h I ] [ "
"--[no-]debug-logging ] [ --[no-]remote-admin ] [ --[no-]remote-any ] [ "
"--[no-]share-printers ] [ --[no-]user-cancel-any ] [ I ]"
msgstr ""
#. type: Plain text
#: cupsctl.man:33
msgid ""
"I updates or queries the B file for a server. When no "
"changes are requested, the current configuration values are written to the "
"standard output in the format \"name=value\", one per line."
msgstr ""
#. type: Plain text
#: cupsctl.man:35
msgid "The following options are recognized:"
msgstr ""
#. type: Plain text
#: cupsctl.man:39
msgid "Enables encryption on the connection to the scheduler."
msgstr ""
#. type: TP
#: cupsctl.man:39
#, no-wrap
msgid "-U I"
msgstr ""
#. type: Plain text
#: cupsctl.man:43
msgid ""
"Specifies an alternate username to use when authenticating with the "
"scheduler."
msgstr ""
#. type: TP
#: cupsctl.man:43
#, no-wrap
msgid "-h I"
msgstr ""
#. type: Plain text
#: cupsctl.man:47
msgid "Specifies the server address."
msgstr ""
#. type: TP
#: cupsctl.man:47
#, no-wrap
msgid "--[no-]debug-logging"
msgstr ""
#. type: Plain text
#: cupsctl.man:51
msgid "Enables or disables debug logging in the B file."
msgstr ""
#. type: TP
#: cupsctl.man:51
#, no-wrap
msgid "--[no-]remote-admin"
msgstr ""
#. type: Plain text
#: cupsctl.man:55
msgid "Enables or disables remote administration."
msgstr ""
#. type: TP
#: cupsctl.man:55
#, no-wrap
msgid "--[no-]remote-any"
msgstr ""
#. type: Plain text
#: cupsctl.man:59
msgid "Enables or disables printing from any address, e.g. the Internet."
msgstr ""
#. type: TP
#: cupsctl.man:59
#, no-wrap
msgid "--[no-]share-printers"
msgstr ""
#. type: Plain text
#: cupsctl.man:63
msgid "Enables or disables sharing of local printers with other computers."
msgstr ""
#. type: TP
#: cupsctl.man:63
#, no-wrap
msgid "--[no-]user-cancel-any"
msgstr ""
#. type: Plain text
#: cupsctl.man:67
msgid "Allows or prevents users from canceling jobs owned by others."
msgstr ""
#. type: SH
#: cupsctl.man:67 cupstestppd.man:137 ipptool.man:107 lp.man:218
#, no-wrap
msgid "EXAMPLES"
msgstr ""
#. type: Plain text
#: cupsctl.man:69
msgid "Display the current settings:"
msgstr ""
#. type: Plain text
#: cupsctl.man:71
#, no-wrap
msgid " cupsctl\n"
msgstr ""
#. type: Plain text
#: cupsctl.man:74
msgid "Enable debug logging:"
msgstr ""
#. type: Plain text
#: cupsctl.man:76
#, no-wrap
msgid " cupsctl --debug-logging\n"
msgstr ""
#. type: Plain text
#: cupsctl.man:79
msgid "Get the current debug logging state:"
msgstr ""
#. type: Plain text
#: cupsctl.man:81
#, no-wrap
msgid " cupsctl | grep '^_debug_logging' | awk -F= '{print $2}'\n"
msgstr ""
#. type: Plain text
#: cupsctl.man:84
msgid "Disable printer sharing:"
msgstr ""
#. type: Plain text
#: cupsctl.man:86
#, no-wrap
msgid " cupsctl --no-share-printers\n"
msgstr ""
#. type: Plain text
#: cupsctl.man:89
msgid "You cannot set the Listen or Port directives using I."
msgstr ""
#. type: Plain text
#: cupsctl.man:91
msgid "I, I,"
msgstr ""
#. type: TH
#: cupsd.conf.man.in:15
#, no-wrap
msgid "cupsd.conf"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:18
msgid "cupsd.conf - server configuration file for cups"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:24
msgid ""
"The I file configures the CUPS scheduler, I. It is "
"normally located in the I directory. B File, directory, "
"and user configuration directives that used to be allowed in the "
"I file are now stored in the I instead in "
"order to prevent certain types of privilege escalation attacks."
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:29
msgid ""
"Each line in the file can be a configuration directive, a blank line, or a "
"comment. Comment lines start with the # character. The configuration "
"directives are intentionally similar to those used by the popular Apache web "
"server software and are described below."
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:32 cups-files.conf.man.in:28
msgid ""
"The following directives are understood by I. Consult the on-line "
"help for detailed descriptions:"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:32
#, no-wrap
msgid "AccessLogLevel config"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:34
#, no-wrap
msgid "AccessLogLevel actions"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:36
#, no-wrap
msgid "AccessLogLevel all"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:40
msgid "Specifies the logging level for the AccessLog file."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:40
#, no-wrap
msgid "Allow all"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:42
#, no-wrap
msgid "Allow none"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:44
#, no-wrap
msgid "Allow host.domain.com"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:46
#, no-wrap
msgid "Allow *.domain.com"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:48
#, no-wrap
msgid "Allow ip-address"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:50
#, no-wrap
msgid "Allow ip-address/netmask"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:52
#, no-wrap
msgid "Allow ip-address/mm"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:54
#, no-wrap
msgid "Allow @IF(name)"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:56
#, no-wrap
msgid "Allow @LOCAL"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:60
msgid "Allows access from the named hosts or addresses."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:60
#, no-wrap
msgid "AuthType None"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:62
#, no-wrap
msgid "AuthType Basic"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:64
#, no-wrap
msgid "AuthType BasicDigest"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:66
#, no-wrap
msgid "AuthType Digest"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:68
#, no-wrap
msgid "AuthType Negotiate"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:72
msgid ""
"Specifies the authentication type (None, Basic, BasicDigest, Digest, "
"Negotiate)"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:72
#, no-wrap
msgid "AutoPurgeJobs Yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:74
#, no-wrap
msgid "AutoPurgeJobs No"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:79
msgid ""
"Specifies whether to purge job history data automatically when it is no "
"longer required for quotas."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:79
#, no-wrap
msgid "BrowseLocalProtocols [All] [DNSSD]"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:83
msgid "Specifies the protocols to use for local printer sharing."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:83
#, no-wrap
msgid "BrowseWebIF Yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:85
#, no-wrap
msgid "BrowseWebIF No"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:89
msgid "Specifies whether the CUPS web interface is advertised via DNS-SD."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:89
#, no-wrap
msgid "Browsing Yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:91
#, no-wrap
msgid "Browsing No"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:95
msgid "Specifies whether or not shared printers should be advertised."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:95
#, no-wrap
msgid "Classification banner"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:99
msgid "Specifies the security classification of the server."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:99
#, no-wrap
msgid "ClassifyOverride Yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:101
#, no-wrap
msgid "ClassifyOverride No"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:106
msgid ""
"Specifies whether to allow users to override the classification of "
"individual print jobs."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:106
#, no-wrap
msgid "DefaultAuthType Basic"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:108
#, no-wrap
msgid "DefaultAuthType BasicDigest"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:110
#, no-wrap
msgid "DefaultAuthType Digest"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:112
#, no-wrap
msgid "DefaultAuthType Negotiate"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:116
msgid "Specifies the default type of authentication to use."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:116
#, no-wrap
msgid "DefaultEncryption Never"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:118
#, no-wrap
msgid "DefaultEncryption IfRequested"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:120
#, no-wrap
msgid "DefaultEncryption Required"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:124
msgid "Specifies the type of encryption to use for authenticated requests."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:124
#, no-wrap
msgid "DefaultLanguage locale"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:128
msgid "Specifies the default language to use for text and web content."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:128
#, no-wrap
msgid "DefaultPaperSize Auto"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:130
#, no-wrap
msgid "DefaultPaperSize None"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:132
#, no-wrap
msgid "DefaultPaperSize sizename"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:137
msgid ""
"Specifies the default paper size for new print queues. \"Auto\" uses a "
"locale- specific default, while \"None\" specifies there is no default paper "
"size."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:137
#, no-wrap
msgid "DefaultPolicy policy-name"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:141
msgid "Specifies the default access policy to use."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:141
#, no-wrap
msgid "DefaultShared Yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:143
#, no-wrap
msgid "DefaultShared No"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:147
msgid "Specifies whether local printers are shared by default."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:147
#, no-wrap
msgid "Deny all"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:149
#, no-wrap
msgid "Deny none"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:151
#, no-wrap
msgid "Deny host.domain.com"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:153
#, no-wrap
msgid "Deny *.domain.com"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:155
#, no-wrap
msgid "Deny ip-address"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:157
#, no-wrap
msgid "Deny ip-address/netmask"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:159
#, no-wrap
msgid "Deny ip-address/mm"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:161
#, no-wrap
msgid "Deny @IF(name)"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:163
#, no-wrap
msgid "Deny @LOCAL"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:167
msgid "Denies access to the named host or address."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:167
#, no-wrap
msgid "DirtyCleanInterval seconds"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:173
msgid ""
"Specifies the delay for updating of configuration and state files. A value "
"of 0 causes the update to happen as soon as possible, typically within a few "
"milliseconds."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:182
#, no-wrap
msgid "FilterLimit limit"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:186
msgid "Specifies the maximum cost of filters that are run concurrently."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:186
#, no-wrap
msgid "FilterNice nice-value"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:191
msgid ""
"Specifies the scheduling priority (\"nice\" value) of filters that are run "
"to print a job."
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:196
msgid ""
"Specifies the service name when using Kerberos authentication. The default "
"service name is \"http\"."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:196
#, no-wrap
msgid "HostNameLookups On"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:198
#, no-wrap
msgid "HostNameLookups Off"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:200
#, no-wrap
msgid "HostNameLookups Double"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:204
msgid "Specifies whether or not to do reverse lookups on client addresses."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:204
#, no-wrap
msgid "Include filename"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:208
msgid "Includes the named file."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:208
#, no-wrap
msgid "JobKillDelay seconds"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:213
msgid ""
"Specifies the number of seconds to wait before killing the filters and "
"backend associated with a canceled or held job."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:213
#, no-wrap
msgid "JobPrivateAccess all"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:215
#, no-wrap
msgid "JobPrivateAccess default"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:217
#, no-wrap
msgid "JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:223
msgid ""
"Specifies an access list for a job's private values. The \"default\" access "
"list is \"@OWNER @SYSTEM\". \"@ACL\" maps to the printer's "
"requesting-user-name-allowed or requesting-user-name-denied values."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:223
#, no-wrap
msgid "JobPrivateValues all"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:225
#, no-wrap
msgid "JobPrivateValues default"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:227
#, no-wrap
msgid "JobPrivateValues none"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:229
#, no-wrap
msgid "JobPrivateValues attribute-name-1 [ ... attribute-name-N ]"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:233
msgid ""
"Specifies the list of job values to make private. The \"default\" values are "
"\"job-name\", \"job-originating-host-name\", and "
"\"job-originating-user-name\"."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:233
#, no-wrap
msgid "JobRetryInterval seconds"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:237
msgid "Specifies the interval between retries of jobs in seconds."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:237
#, no-wrap
msgid "JobRetryLimit count"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:241
msgid "Specifies the number of retries that are done for jobs."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:241
#, no-wrap
msgid "KeepAlive Yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:243
#, no-wrap
msgid "KeepAlive No"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:247
msgid "Specifies whether to support HTTP keep-alive connections."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:247
#, no-wrap
msgid "KeepAliveTimeout seconds"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:251
msgid "Specifies the amount of time that connections are kept alive."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:251
#, no-wrap
msgid "ELimit operationsE ... E/LimitE"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:255
msgid "Specifies the IPP operations that are being limited inside a policy."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:255
#, no-wrap
msgid "ELimit methodsE ... E/LimitE"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:257
#, no-wrap
msgid "ELimitExcept methodsE ... E/LimitExceptE"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:261
msgid "Specifies the HTTP methods that are being limited inside a location."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:261
#, no-wrap
msgid "LimitRequestBody"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:265
msgid "Specifies the maximum size of any print job request."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:265
#, no-wrap
msgid "Listen ip-address:port"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:267
#, no-wrap
msgid "Listen *:port"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:269
#, no-wrap
msgid "Listen /path/to/domain/socket"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:273
msgid "Listens to the specified address and port or domain socket path."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:273
#, no-wrap
msgid "ELocation /pathE ... E/LocationE"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:277
msgid "Specifies access control for the named location."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:277
#, no-wrap
msgid "LogDebugHistory #-messages"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:282
msgid ""
"Specifies the number of debugging messages that are logged when an error "
"occurs in a print job."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:282
#, no-wrap
msgid "LogLevel alert"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:284
#, no-wrap
msgid "LogLevel crit"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:286
#, no-wrap
msgid "LogLevel debug2"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:288
#, no-wrap
msgid "LogLevel debug"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:290
#, no-wrap
msgid "LogLevel emerg"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:292
#, no-wrap
msgid "LogLevel error"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:294
#, no-wrap
msgid "LogLevel info"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:296
#, no-wrap
msgid "LogLevel none"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:298
#, no-wrap
msgid "LogLevel notice"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:300
#, no-wrap
msgid "LogLevel warn"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:304
msgid "Specifies the logging level for the ErrorLog file."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:304
#, no-wrap
msgid "LogTimeFormat standard"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:306
#, no-wrap
msgid "LogTimeFormat usecs"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:310
msgid "Specifies the format of the date and time in the log files."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:310
#, no-wrap
msgid "MaxClients number"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:314
msgid "Specifies the maximum number of simultaneous clients to support."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:314
#, no-wrap
msgid "MaxClientsPerHost number"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:319
msgid ""
"Specifies the maximum number of simultaneous clients to support from a "
"single address."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:319
#, no-wrap
msgid "MaxCopies number"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:323
msgid "Specifies the maximum number of copies that a user can print of each job."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:323
#, no-wrap
msgid "MaxHoldTime seconds"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:328
msgid ""
"Specifies the maximum time a job may remain in the \"indefinite\" hold state "
"before it is canceled. Set to 0 to disable cancellation of held jobs."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:328
#, no-wrap
msgid "MaxJobs number"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:332
msgid "Specifies the maximum number of simultaneous jobs to support."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:332
#, no-wrap
msgid "MaxJobsPerPrinter number"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:336
msgid "Specifies the maximum number of simultaneous jobs per printer to support."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:336
#, no-wrap
msgid "MaxJobsPerUser number"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:340
msgid "Specifies the maximum number of simultaneous jobs per user to support."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:340
#, no-wrap
msgid "MaxJobTime seconds"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:346
msgid ""
"Specifies the maximum time a job may take to print before it is "
"canceled. The default is 10800 seconds (3 hours). Set to 0 to disable "
"cancellation of \"stuck\" jobs."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:346
#, no-wrap
msgid "MaxLogSize number-bytes"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:351
msgid ""
"Specifies the maximum size of the log files before they are rotated (0 to "
"disable rotation)"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:351
#, no-wrap
msgid "MaxRequestSize number-bytes"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:355
msgid "Specifies the maximum request/file size in bytes (0 for no limit)"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:355
#, no-wrap
msgid "MultipleOperationTimeout seconds"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:360
msgid ""
"Specifies the maximum amount of time to allow between files in a multiple "
"file print job."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:360
#, no-wrap
msgid "Order allow,deny"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:362
#, no-wrap
msgid "Order deny,allow"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:366
msgid "Specifies the order of HTTP access control (allow,deny or deny,allow)"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:366
#, no-wrap
msgid "PageLogFormat format string"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:370
msgid "Specifies the format of page log lines."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:370
#, no-wrap
msgid "PassEnv variable [... variable]"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:374
msgid "Passes the specified environment variable(s) to child processes."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:374
#, no-wrap
msgid "EPolicy nameE ... E/PolicyE"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:378
msgid "Specifies access control for the named policy."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:378
#, no-wrap
msgid "Port number"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:382
msgid "Specifies a port number to listen to for HTTP requests."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:382
#, no-wrap
msgid "PreserveJobFiles Yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:384
#, no-wrap
msgid "PreserveJobFiles No"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:388
msgid "Specifies whether or not to preserve job files after they are printed."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:388
#, no-wrap
msgid "PreserveJobHistory Yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:390
#, no-wrap
msgid "PreserveJobHistory No"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:395
msgid "Specifies whether or not to preserve the job history after they are printed."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:395
#, no-wrap
msgid "PrintcapFormat bsd"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:397
#, no-wrap
msgid "PrintcapFormat plist"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:399
#, no-wrap
msgid "PrintcapFormat solaris"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:403
msgid "Specifies the format of the printcap file."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:403
#, no-wrap
msgid "ReloadTimeout seconds"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:408
msgid ""
"Specifies the amount of time to wait for job completion before restarting "
"the scheduler."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:408
#, no-wrap
msgid "Require group group-name-list"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:410
#, no-wrap
msgid "Require user user-name-list"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:412
#, no-wrap
msgid "Require valid-user"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:416
msgid "Specifies that user or group authentication is required."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:416
#, no-wrap
msgid "RIPCache bytes"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:421
msgid ""
"Specifies the maximum amount of memory to use when converting images and "
"PostScript files to bitmaps for a printer."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:421
#, no-wrap
msgid "Satisfy all"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:423
#, no-wrap
msgid "Satisfy any"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:428
msgid ""
"Specifies whether all or any limits set for a Location must be satisfied to "
"allow access."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:428
#, no-wrap
msgid "ServerAdmin user@domain.com"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:432
msgid "Specifies the email address of the server administrator."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:432
#, no-wrap
msgid "ServerAlias hostname [... hostname]"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:434
#, no-wrap
msgid "ServerAlias *"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:439
msgid ""
"Specifies an alternate name that the server is known by. The special name "
"\"*\" allows any name to be used."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:439
#, no-wrap
msgid "ServerName hostname-or-ip-address"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:443
msgid "Specifies the fully-qualified hostname of the server."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:443
#, no-wrap
msgid "ServerTokens Full"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:445
#, no-wrap
msgid "ServerTokens Major"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:447
#, no-wrap
msgid "ServerTokens Minimal"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:449
#, no-wrap
msgid "ServerTokens Minor"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:451
#, no-wrap
msgid "ServerTokens None"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:453
#, no-wrap
msgid "ServerTokens OS"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:455
#, no-wrap
msgid "ServerTokens ProductOnly"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:460
msgid ""
"Specifies what information is included in the Server header of HTTP "
"responses."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:460
#, no-wrap
msgid "SetEnv variable value"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:464
msgid "Set the specified environment variable to be passed to child processes."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:464
#, no-wrap
msgid "SSLListen"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:468
msgid "Listens on the specified address and port for encrypted connections."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:468
#, no-wrap
msgid "SSLOptions None"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:470
#, no-wrap
msgid "SSLOptions NoEmptyFragments"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:474
msgid "Sets SSL/TLS protocol options for encrypted connections."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:474
#, no-wrap
msgid "SSLPort"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:478
msgid "Listens on the specified port for encrypted connections."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:478
#, no-wrap
msgid "StrictConformance Yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:480
#, no-wrap
msgid "StrictConformance No"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:485
msgid ""
"Specifies whether the scheduler requires clients to strictly adhere to the "
"IPP specifications. The default is No."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:485
#, no-wrap
msgid "SubscriptionPrivateAccess all"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:487
#, no-wrap
msgid "SubscriptionPrivateAccess default"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:489
#, no-wrap
msgid "SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:495
msgid ""
"Specifies an access list for a subscription's private values. The "
"\"default\" access list is \"@OWNER @SYSTEM\". \"@ACL\" maps to the "
"printer's requesting-user-name-allowed or requesting-user-name-denied "
"values."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:495
#, no-wrap
msgid "SubscriptionPrivateValues all"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:497
#, no-wrap
msgid "SubscriptionPrivateValues default"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:499
#, no-wrap
msgid "SubscriptionPrivateValues none"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:501
#, no-wrap
msgid "SubscriptionPrivateValues attribute-name-1 [ ... attribute-name-N ]"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:506
msgid ""
"Specifies the list of job values to make private. The \"default\" values are "
"\"notify-events\", \"notify-pull-method\", \"notify-recipient-uri\", "
"\"notify-subscriber-user-name\", and \"notify-user-data\"."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:506
#, no-wrap
msgid "Timeout seconds"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:510
msgid "Specifies the HTTP request timeout in seconds."
msgstr ""
#. type: TP
#: cupsd.conf.man.in:510
#, no-wrap
msgid "WebInterface yes"
msgstr ""
#. type: TP
#: cupsd.conf.man.in:512
#, no-wrap
msgid "WebInterface no"
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:515
msgid "Specifies whether the web interface is enabled."
msgstr ""
#. type: Plain text
#: cupsd.conf.man.in:519
msgid ""
"I, I, I, I, "
"I, I, I,"
msgstr ""
#. type: TH
#: cups-files.conf.man.in:15
#, no-wrap
msgid "cups-files.conf"
msgstr ""
#. type: TH
#: cups-files.conf.man.in:15
#, no-wrap
msgid "26 July 2013"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:18
msgid "cups-files.conf - file and directory configuration file for cups"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:22
msgid ""
"The I file configures the files and directories used by the "
"CUPS scheduler, I. It is normally located in the I "
"directory."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:28
#, no-wrap
msgid "AccessLog filename"
msgstr ""
#. type: TP
#: cups-files.conf.man.in:30
#, no-wrap
msgid "AccessLog syslog"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:34
msgid "Defines the access log filename."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:34
#, no-wrap
msgid "ConfigFilePerm mode"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:39
msgid ""
"Specifies the permissions for all configuration files that the scheduler "
"writes."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:39
#, no-wrap
msgid "DataDir path"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:43
msgid "Specified the directory where data files can be found."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:43
#, no-wrap
msgid "DocumentRoot directory"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:47
msgid "Specifies the root directory for the internal web server documents."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:47
#, no-wrap
msgid "ErrorLog filename"
msgstr ""
#. type: TP
#: cups-files.conf.man.in:49
#, no-wrap
msgid "ErrorLog syslog"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:53
msgid "Specifies the error log filename."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:53
#, no-wrap
msgid "FatalErrors none"
msgstr ""
#. type: TP
#: cups-files.conf.man.in:55
#, no-wrap
msgid "FatalErrors all -kind [... -kind]"
msgstr ""
#. type: TP
#: cups-files.conf.man.in:57
#, no-wrap
msgid "FatalErrors kind [... kind]"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:62
msgid ""
"Specifies which errors are fatal, causing the scheduler to exit. \"Kind\" is "
"\"browse\", \"config\", \"listen\", \"log\", or \"permissions\"."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:62
#, no-wrap
msgid "FileDevice Yes"
msgstr ""
#. type: TP
#: cups-files.conf.man.in:64
#, no-wrap
msgid "FileDevice No"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:69
msgid "Specifies whether the file pseudo-device can be used for new printer queues."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:69
#, no-wrap
msgid "FontPath directory[:directory:...]"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:73
msgid "Specifies the search path for fonts."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:73
#, no-wrap
msgid "Group group-name-or-number"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:78
msgid ""
"Specifies the group name or ID that will be used when executing external "
"programs."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:78
#, no-wrap
msgid "LogFilePerm mode"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:82
msgid "Specifies the permissions for all log files that the scheduler writes."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:82
#, no-wrap
msgid "PageLog filename"
msgstr ""
#. type: TP
#: cups-files.conf.man.in:84
#, no-wrap
msgid "PageLog syslog"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:88
msgid "Specifies the page log filename."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:88
#, no-wrap
msgid "Printcap"
msgstr ""
#. type: TP
#: cups-files.conf.man.in:90
#, no-wrap
msgid "Printcap filename"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:97
msgid ""
"Specifies the filename for a printcap file that is updated automatically "
"with a list of available printers (needed for legacy applications); "
"specifying Printcap with no filename disables printcap generation."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:97
#, no-wrap
msgid "RemoteRoot user-name"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:102
msgid ""
"Specifies the username that is associated with unauthenticated root "
"accesses."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:102
#, no-wrap
msgid "RequestRoot directory"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:107
msgid "Specifies the directory to store print jobs and other HTTP request data."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:107
#, no-wrap
msgid "ServerBin directory"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:112
msgid ""
"Specifies the directory where backends, CGIs, daemons, and filters may be "
"found."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:112
#, no-wrap
msgid "ServerCertificate filename"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:116
msgid "Specifies the encryption certificate to use."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:116
#, no-wrap
msgid "ServerKey filename"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:120
msgid "Specifies the encryption key to use."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:120
#, no-wrap
msgid "ServerRoot directory"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:124
msgid "Specifies the directory where the server configuration files can be found."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:124
#, no-wrap
msgid "SyncOnClose Yes"
msgstr ""
#. type: TP
#: cups-files.conf.man.in:126
#, no-wrap
msgid "SyncOnClose No"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:130
msgid ""
"Specifies whether the scheduler calls I after writing "
"configuration or state files. The default is Yes."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:130
#, no-wrap
msgid "SystemGroup group-name [group-name ...]"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:134
msgid "Specifies the group(s) to use for System class authentication."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:134
#, no-wrap
msgid "TempDir directory"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:138
msgid "Specifies the directory where temporary files are stored."
msgstr ""
#. type: TP
#: cups-files.conf.man.in:138
#, no-wrap
msgid "User user-name"
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:142
msgid "Specifies the user name or ID that is used when running external programs."
msgstr ""
#. type: Plain text
#: cups-files.conf.man.in:146
msgid ""
"I, I, I, I, "
"I, I, I,"
msgstr ""
#. type: TH
#: cups-deviced.man.in:15
#, no-wrap
msgid "cups-deviced"
msgstr ""
#. type: Plain text
#: cups-deviced.man.in:18
msgid "cups-deviced - cups device daemon"
msgstr ""
#. type: Plain text
#: cups-deviced.man.in:21
msgid "B I"
msgstr ""
#. type: Plain text
#: cups-deviced.man.in:36
msgid ""
"I polls the backends in I or "
"I (OS X) for a list of available devices. It is "
"run by I in response to a I request. The output "
"format is an IPP response message. The I argument is the request "
"ID from the original IPP request, typically 1. The I argument is the "
"limit value from the original IPP request - 0 means no limit. The I "
"argument is the requesting-user-name value from the original IPP request. "
"Finally, the I argument is a space-delimited list of attributes "
"(\"name=value name=value ...\") that were passed in with the "
"request. Currently I looks for the I "
"attribute and tailors the output accordingly."
msgstr ""
#. type: Plain text
#: cups-deviced.man.in:38
msgid "backend(7), cupsd(8), cupsd.conf(5),"
msgstr ""
#. type: TH
#: cupsd.man.in:15
#, no-wrap
msgid "cupsd"
msgstr ""
#. type: Plain text
#: cupsd.man.in:18
msgid "cupsd - cups scheduler"
msgstr ""
#. type: Plain text
#: cupsd.man.in:23
msgid "B [ -c I ] [ -f ] [ -F ] [ -h ] [ -l ] [ -t ]"
msgstr ""
#. type: Plain text
#: cupsd.man.in:28
msgid ""
"I is the scheduler for CUPS. It implements a printing system based "
"upon the Internet Printing Protocol, version 2.1. If no options are "
"specified on the command-line then the default configuration file "
"I will be used."
msgstr ""
#. type: TP
#: cupsd.man.in:29 cupsfilter.man:54
#, no-wrap
msgid "-c config-file"
msgstr ""
#. type: Plain text
#: cupsd.man.in:33
msgid "Uses the named configuration file."
msgstr ""
#. type: TP
#: cupsd.man.in:33
#, no-wrap
msgid "-f"
msgstr ""
#. type: Plain text
#: cupsd.man.in:38
msgid ""
"Run I in the foreground; the default is to run in the background as a "
"\"daemon\"."
msgstr ""
#. type: TP
#: cupsd.man.in:38
#, no-wrap
msgid "-F"
msgstr ""
#. type: Plain text
#: cupsd.man.in:44
msgid ""
"Run I in the foreground but detach the process from the controlling "
"terminal and current directory. This is useful for running I from "
"I."
msgstr ""
#. type: TP
#: cupsd.man.in:44 lpr.man:75
#, no-wrap
msgid "-h"
msgstr ""
#. type: Plain text
#: cupsd.man.in:48
msgid "Shows the program usage."
msgstr ""
#. type: TP
#: cupsd.man.in:48 ipptool.man:91 lpinfo.man:69 lpoptions.man.in:84 lpq.man:59 lpr.man:80 lpstat.man:87
#, no-wrap
msgid "-l"
msgstr ""
#. type: Plain text
#: cupsd.man.in:53
msgid "This option is passed to I when it is run from I."
msgstr ""
#. type: TP
#: cupsd.man.in:53 ipptool.man:97 lpstat.man:112
#, no-wrap
msgid "-t"
msgstr ""
#. type: Plain text
#: cupsd.man.in:57
msgid "Test the configuration file for syntax errors."
msgstr ""
#. type: Plain text
#: cupsd.man.in:61
msgid ""
"I implements all of the required IPP/2.1 attributes and "
"operations. It also implements several CUPS-specific administration "
"operations."
msgstr ""
#. type: Plain text
#: cupsd.man.in:66
msgid ""
"I, I, I, I, "
"I, I, I, I, "
"I, I, I, I,"
msgstr ""
#. type: TH
#: cups-driverd.man.in:15
#, no-wrap
msgid "cups-driverd"
msgstr ""
#. type: Plain text
#: cups-driverd.man.in:18
msgid "cups-driverd - cups driver daemon"
msgstr ""
#. type: Plain text
#: cups-driverd.man.in:22
msgid "B cat I"
msgstr ""
#. type: Plain text
#: cups-driverd.man.in:26
msgid "B list I"
msgstr ""
#. type: Plain text
#: cups-driverd.man.in:31
msgid ""
"I shows or lists PPD files. It is run in response to "
"CUPS-Add-Modify-Printer or CUPS-Get-Devices requests. The first form "
"(\"cups-driverd cat ppd-name\") writes the named PPD file to stdout. The "
"output format is an uncompressed PPD file."
msgstr ""
#. type: Plain text
#: cups-driverd.man.in:43
msgid ""
"The second form lists the available manufacturers or PPD files to stdout as "
"indicated by the I argument. The output format is an IPP response "
"message. The I argument is the request ID from the original IPP "
"request, typically 1. The I argument is the limit value from the "
"original IPP request - 0 means no limit. Finally, the I argument is "
"a space-delimited list of attributes (\"name=value name=value \\&...\") that "
"were passed in with the request. Currently I looks for the "
"I and I